From 1fa29a9f56d48623a51cfb1b60fc0381d81d1e1d Mon Sep 17 00:00:00 2001 From: Pierre-Yves Chibon Date: Sep 01 2020 09:08:04 +0000 Subject: [PATCH 1/2] retire_packagers: Use the dist-git's specific endpoint to orphan packages This endpoint is specific to dist-git and does more than the usual endpoint by ensuring that the former main admin is removed from the project as well as resetting their watch status (so we no longer have to make an extra request for this). It also announces that the package was orphaned on fedora-messaging and we are working on automatically notifying the devel list when a package is orphaned so people are aware of it as soon as possible and can decide if they want to pick it up or not. Signed-off-by: Pierre-Yves Chibon --- diff --git a/scripts/distgit/retire_packagers.py b/scripts/distgit/retire_packagers.py index 564e637..d3a4ef3 100644 --- a/scripts/distgit/retire_packagers.py +++ b/scripts/distgit/retire_packagers.py @@ -182,22 +182,25 @@ def orphan_package(namespace, name, username): session = retry_session() # Orphan the package - url = f"{base_url}/api/0/{namespace}/{name}" + url = f"{base_url}/_dg/orphan/{namespace}/{name}" headers = {"Authorization": f"token {pagure_token}"} - data = {"main_admin": "orphan", "retain_access": False} + data = { + "orphan_reason": "other", + "orphan_reason_info": "Orphaned by releng", + } - req = session.patch(url, data=data, headers=headers) + req = self.requests_session.post(url, data=data, headers=headers) if not req.ok: print("**** REQUEST FAILED") print(" - Orphan package") print(req.url) print(data) + print(headers) print(req.text) else: print(f" {username} is no longer the main admin of {namespace}/{name}") - session.close() - unwatch_package(namespace, name, username) + session.close() def remove_access(namespace, name, username, usertype): From a6ec4011b82685727924235ec29959373dda710d Mon Sep 17 00:00:00 2001 From: Pierre-Yves Chibon Date: Sep 01 2020 09:08:05 +0000 Subject: [PATCH 2/2] retired_packagers: Be flexible with the information returned by dist-git Signed-off-by: Pierre-Yves Chibon --- diff --git a/scripts/distgit/retire_packagers.py b/scripts/distgit/retire_packagers.py index d3a4ef3..cc8e49e 100644 --- a/scripts/distgit/retire_packagers.py +++ b/scripts/distgit/retire_packagers.py @@ -340,7 +340,7 @@ def main(args): while url: req = session.get(url) data = req.json() - for repo in data["repos"]: + for repo in data.get("repos", []): maintainers = set(repo["user"]["name"]) for acl in repo["access_users"]: maintainers.update(set(repo["access_users"][acl])) @@ -348,7 +348,9 @@ def main(args): namespace = repo["namespace"] package = repo["name"] packages_per_user[username].add(f"{namespace}/{package}") - url = data["repos_pagination"]["next"] + url = data.get("repos_pagination", {}).get("next") + if not url: + break for username in sorted(usernames): _log.debug("Processing user: %s", username)