75 lines
2.3 KiB
Python
75 lines
2.3 KiB
Python
#!/usr/bin/python3
|
|
#
|
|
# failed_composes_cleanup.py - A utility to clean all the older issues in the releng/failed-compose tracker.
|
|
#
|
|
#
|
|
# Authors:
|
|
# Samyak Jain <samyak.jn11@gmail.com>
|
|
# Copyright (C) 2024 Red Hat Inc,
|
|
# SPDX-License-Identifier: GPL-2.0+
|
|
|
|
import requests
|
|
|
|
API_TOKEN = 'YOUR_API_TOKEN'
|
|
|
|
def get_open_issues(repo):
|
|
base_url = 'https://pagure.io/api/0/'
|
|
endpoint = f'{repo}/issues'
|
|
url = base_url + endpoint
|
|
|
|
# Include API token in headers for authentication
|
|
headers = {'Authorization': f'token {API_TOKEN}'}
|
|
|
|
open_issues = []
|
|
page = 1
|
|
while True:
|
|
# Make the GET request to retrieve open issues for the current page
|
|
params = {'page': page}
|
|
response = requests.get(url, headers=headers, params=params)
|
|
|
|
# Check if the request was successful
|
|
if response.status_code == 200:
|
|
page_issues = response.json()['issues']
|
|
open_issues.extend(issue['id'] for issue in page_issues if issue['status'] == 'Open')
|
|
# Check if there are more pages
|
|
if not page_issues:
|
|
break
|
|
else:
|
|
page += 1
|
|
else:
|
|
print(f"Failed to retrieve open issues for {repo}.")
|
|
print(f"Response: {response.text}")
|
|
return []
|
|
|
|
return open_issues
|
|
|
|
def close_pagure_issue(repo, issue_id, close_status=None):
|
|
base_url = 'https://pagure.io/api/0/'
|
|
endpoint = f'{repo}/issue/{issue_id}/status'
|
|
url = base_url + endpoint
|
|
|
|
# Include API token in headers for authentication
|
|
headers = {'Authorization': f'token {API_TOKEN}'}
|
|
|
|
# Set the new status of the issue
|
|
payload = {'status': 'Closed'}
|
|
|
|
# Make the POST request to change the status of the issue
|
|
response = requests.post(url, headers=headers, data=payload)
|
|
|
|
# Check if the request was successful
|
|
if response.status_code == 200:
|
|
print(f"Issue #{issue_id} closed successfully.")
|
|
else:
|
|
print(f"Failed to close issue #{issue_id}.")
|
|
print(f"Response: {response.text}")
|
|
|
|
repo = 'releng/failed-composes'
|
|
# Get list of open issues
|
|
open_issues = get_open_issues(repo)
|
|
|
|
print("Open Issues:", open_issues)
|
|
#
|
|
# Close each open issue
|
|
for issue_id in open_issues:
|
|
close_pagure_issue(repo, issue_id)
|