From 7d2e4ae326081db306ea5a92fd0404c1f559add0 Mon Sep 17 00:00:00 2001 From: Iryna Shcherbina Date: Dec 06 2017 14:59:30 +0000 Subject: Query Pagure instead of PkgDB to get maintainers PkgDB is in read-only mode since August, and it does not contain information on maintainers for a lot of newly added packages. As it was moved to Pagure, use Pagure API. --- diff --git a/find-package-maintainers b/find-package-maintainers index b4f14d1..ac3b49c 100755 --- a/find-package-maintainers +++ b/find-package-maintainers @@ -17,24 +17,23 @@ def vprint(*a, **k): def get_maintainers(pkg, branch): - url = 'https://admin.fedoraproject.org/pkgdb/api/package/{}?branches={}'.format( - pkg, branch) + url = 'https://src.fedoraproject.org/api/0/rpms/{}'.format(pkg) resp = requests.get(url) data = resp.json() - if 'packages' not in data: - raise PkgdbError('Could not find maintainers for {}. Not in pkgdb?'.format(pkg)) + if 'access_users' not in data or 'access_groups' not in data: + raise PkgdbError('Could not find maintainers for {}. Not in Pagure?'.format(pkg)) - if 'acls' not in data['packages'][0]: - raise PkgdbError('No maintainers found for {}. Perhaps it is retired?'.format(pkg)) + access_users = data['access_users'] + access_groups = data['access_groups'] + maintainer_acls = ('owner', 'admin', 'commit') maintainers = [] - for acl in data['packages'][0]['acls']: - if (acl['status'] != 'Approved' or - acl['acl'] != 'commit' or - acl['fas_name'] == 'group::provenpackager'): - continue - maintainers.append(acl['fas_name']) + + for acl in maintainer_acls: + maintainers.extend(access_users.get(acl, [])) + maintainers.extend(access_groups.get(acl, [])) + vprint('Fetched maintainers of {}: {}'.format(pkg, ', '.join(maintainers))) return maintainers