From 7d2e4ae326081db306ea5a92fd0404c1f559add0 Mon Sep 17 00:00:00 2001 From: Iryna Shcherbina Date: Dec 06 2017 14:59:30 +0000 Subject: [PATCH 1/2] 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 From e5f4f7304e414e662b5914bb6b1d0f26a5a32825 Mon Sep 17 00:00:00 2001 From: Iryna Shcherbina Date: Dec 06 2017 15:20:30 +0000 Subject: [PATCH 2/2] Remove branch argument Pagure API does not provide information on the project for each branch. --- diff --git a/find-package-maintainers b/find-package-maintainers index ac3b49c..00820b4 100755 --- a/find-package-maintainers +++ b/find-package-maintainers @@ -16,7 +16,7 @@ def vprint(*a, **k): print(*a, file=sys.stderr, **k) -def get_maintainers(pkg, branch): +def get_maintainers(pkg): url = 'https://src.fedoraproject.org/api/0/rpms/{}'.format(pkg) resp = requests.get(url) data = resp.json() @@ -45,8 +45,6 @@ def options_parse(): p.add_argument('infile', type=argparse.FileType('r'), nargs='?', default=sys.stdin, help='file containing package names') - p.add_argument('-b', '--branch', default='master', - help='Branch to use') p.add_argument('-v', '--verbose', action='store_true', help='Be verbose') @@ -67,7 +65,7 @@ def main(): for package in opts.infile: package = package.strip() try: - by_package[package] = get_maintainers(package, opts.branch) + by_package[package] = get_maintainers(package) except PkgdbError as e: print('ERR: {}'.format(e), file=sys.stderr) continue