From 0b630365152639119432292aef215c7940096372 Mon Sep 17 00:00:00 2001 From: Mohan Boddu Date: Aug 16 2017 21:35:55 +0000 Subject: Merge #6858 `Adjust the get-critpath script to get the list of critpath packages from PDC.` --- diff --git a/scripts/get-critpath b/scripts/get-critpath index 0ded15e..fc6c6f0 100755 --- a/scripts/get-critpath +++ b/scripts/get-critpath @@ -1,85 +1,52 @@ #!/usr/bin/python # # Copyright (C) 20111-2013 Red Hat Inc, -# SPDX-License-Identifier: GPL-2.0+ +# SPDX-License-Identifier: GPL-2.0+ # # Authors: Bill Nottingham # Toshio Kuratomi +from __future__ import print_function import argparse -import getpass -import os -import string import sys -from configobj import ConfigObj, flatten_errors -from validate import Validator +import pdc_client -import fedora_cert -from fedora.client import pkgdb - -def get_branches(p): - ret = [] - try: - list = p.get_collection_list(eol = False) - for item in list: - ret.append(item[0].branchname) - except: - pass - return ret +def get_branches(pdc): + for branch in pdc.get_paged(pdc['component-branches'], active=True): + yield branch def setup_args(): - usage = "\nget-critpath " - parser = argparse.ArgumentParser( - usage="\nget_critpath ") - parser.add_argument('branch') - parser.add_argument('--user', dest="username", help="FAS username") - parser.add_argument('--password', dest="password", help="FAS password") - return parser - -def setup_cfg(cfg_file='/etc/update-critpath.cfg'): - config_spec = ''' - [global] - pkgdb.url = string(default = 'https://admin.fedoraproject.org/pkgdb') - pkgdb.username = string(default = 'critpathbot') - pkgdb.password = string(default='') - '''.splitlines() - cfg = ConfigObj(cfg_file, configspec=config_spec) - user_cfg = ConfigObj(os.path.expanduser('~/.fedora/update-critpath.cfg'), - configspec=config_spec) - cfg.merge(user_cfg) - results = cfg.validate(Validator(), preserve_errors=True) - - for entry in flatten_errors(cfg, results): - section_list, key, error = entry - section_list.append(key) - if error == False: - error = 'Missing value or section' - print '%s: %s' % ('::'.join(section_list), error) - sys.exit(1) - return cfg['global'] - -def merge_options(cfg, args): - args.username = getattr(args, 'username') or cfg['pkgdb.username'] - args.password = getattr(args, 'password') or cfg['pkgdb.password'] - args.pkgdb_url = cfg['pkgdb.url'] - return args + usage = "\nget-critpath " + parser = argparse.ArgumentParser(usage=usage) + parser.add_argument('branch') + return parser def main(): - cfg = setup_cfg() - parser = setup_args() - args = parser.parse_args() - args = merge_options(cfg, args) - p = pkgdb.PackageDB(args.pkgdb_url) - branches = get_branches(p) - if args.branch not in branches: - print "%s not a valid branch. Valid branches: %s." % (args.branch, branches) - sys.exit(1) - critpath = p.get_critpath_pkgs([args.branch]) - critpath_pkgs = critpath[args.branch] - critpath_pkgs.sort() - for item in critpath_pkgs: - print item + parser = setup_args() + args = parser.parse_args() + + pdc = pdc_client.PDCClient('fedora') + + endpoint = pdc['component-branches'] + kwargs = dict(name=args.branch, active=True) + existing = pdc.get_paged(endpoint, **kwargs) + try: + existing.next() + except StopIteration: + print("%s not a valid branch." % args.branch, file=sys.stderr) + sys.exit(1) + + critpath_packages = pdc.get_paged(endpoint, critical_path=True, **kwargs) + + # De-duplicate and print the list. + seen = set() + for package in critpath_packages: + name = package['global_component'] + if name in seen: + continue + print(name) + seen.add(name) if __name__ == '__main__': - main() + main()