From a46b12d50678cb5b0940c1d641f865ac6bf44cc0 Mon Sep 17 00:00:00 2001 From: Dennis Gilmore Date: Mar 21 2017 17:16:34 +0000 Subject: Merge #6691 `Updating scripts to use koji profiles` --- diff --git a/scripts/block_retired.py b/scripts/block_retired.py index 8f02487..b07c48d 100755 --- a/scripts/block_retired.py +++ b/scripts/block_retired.py @@ -27,6 +27,8 @@ PRODUCTION_KOJI = "https://koji.fedoraproject.org/kojihub" STAGING_KOJI = "https://koji.stg.fedoraproject.org/kojihub" + + class ReleaseMapper(object): BRANCHNAME = 0 KOJI_TAG = 1 @@ -79,8 +81,9 @@ def get_packages(tag, staging=False): """ Get a list of all blocked and unblocked packages in a branch. """ - url = PRODUCTION_KOJI if not staging else STAGING_KOJI - kojisession = koji.ClientSession(url, {'krb_rdns': False}) + profile = PRODUCTION_KOJI_PROFILE if not staging else STAGING_KOJI_PROFILE + koji_module = koji.get_profile_module(profile) + kojisession = koji_module.ClientSession(koji_module.config.server) kojisession.krb_login() pkglist = kojisession.listPackages(tagID=tag, inherited=True) blocked = [] @@ -325,10 +328,15 @@ if __name__ == "__main__": parser.add_argument( "--staging", default=False, action="store_true", help="Talk to staging services (pkgdb), instead of production") + parser.add_argument( + "-p", "--profile", default="compose_koji", + help="Koji profile to use, default: %(default)s") args = parser.parse_args() setup_logging(args.debug) + PRODUCTION_KOJI_PROFILE = args.profile + STAGING_KOJI_PROFILE = "stg" if not args.packages: block_all_retired(staging=args.staging) else: diff --git a/scripts/build-current.py b/scripts/build-current.py index 016d3f5..d847061 100755 --- a/scripts/build-current.py +++ b/scripts/build-current.py @@ -15,8 +15,6 @@ import string import rpm import operator -LOCALKOJIHUB = 'http://arm.koji.fedoraproject.org/kojihub' -REMOTEKOJIHUB = 'http://koji.fedoraproject.org/kojihub' PACKAGEURL = 'http://kojipkgs.fedoraproject.org/' workpath = '/tmp/build-recent' @@ -134,8 +132,10 @@ def importBuild(build, rpms, buildinfo, tag=None): # setup the koji session logging.info('Setting up koji session') -localkojisession = koji.ClientSession(LOCALKOJIHUB, {'krb_rdns': False}) -remotekojisession = koji.ClientSession(REMOTEKOJIHUB) +local_koji_module = koji.get_profile_module("arm") +localkojisession = local_koji_module.ClientSession(local_koji_module.config.server) +remote_koji_module = koji.get_profile_module("koji") +remotekojisession = remote_koji_module.ClientSession(remote_koji_module.config.server) localkojisession.krb_login() tag = 'f18-rebuild' diff --git a/scripts/build-previous.py b/scripts/build-previous.py index 3525425..df41e54 100644 --- a/scripts/build-previous.py +++ b/scripts/build-previous.py @@ -16,8 +16,6 @@ import string import rpm import shutil -LOCALKOJIHUB = 'http://sparc.koji.fedoraproject.org/kojihub' -REMOTEKOJIHUB = 'http://koji.fedoraproject.org/kojihub' PACKAGEURL = 'http://kojipkgs.fedoraproject.org/' workpath = '/tmp/build-recent' @@ -125,8 +123,10 @@ def importBuild(build, rpms, buildinfo, tag=None): # setup the koji session logging.info('Setting up koji session') -localkojisession = koji.ClientSession(LOCALKOJIHUB, {'krb_rdns': False}) -remotekojisession = koji.ClientSession(REMOTEKOJIHUB) +local_koji_module = koji.get_profile_module("arm") +remote_koji_module = koji.get_profile_module("fedora") +localkojisession = local_koji_module.ClientSession(local_koji_module.config.server) +remotekojisession = remote_koji_module.ClientSession(remote_koji_module.config.server) localkojisession.krb_login() tag = 'dist-f16' diff --git a/scripts/check-latest-build.py b/scripts/check-latest-build.py index d55d2cb..964b2bd 100755 --- a/scripts/check-latest-build.py +++ b/scripts/check-latest-build.py @@ -35,9 +35,9 @@ if args.debug: log.debug("tag=%s arch=%s pkgs=%s", args.tag, args.arch, args.package) if args.arch is None: - KOJIHUB = 'http://koji.fedoraproject.org/kojihub' + KOJIHUB = 'fedora' else: - KOJIHUB = 'http://%s.koji.fedoraproject.org/kojihub' % (args.arch) + KOJIHUB = args.arch def _rpmvercmp((e1, v1, r1), (e2, v2, r2)): @@ -57,8 +57,8 @@ def _rpmvercmp((e1, v1, r1), (e2, v2, r2)): # second evr wins return -1 - -kojisession = koji.ClientSession(KOJIHUB, {'krb_rdns': False}) +koji_module = koji.get_profile_module(KOJIHUB) +kojisession = koji_module.ClientSession(koji_module.config.server) kojisession.krb_login() if args.package == []: diff --git a/scripts/isolate-tag.py b/scripts/isolate-tag.py index 03704dc..fe10beb 100755 --- a/scripts/isolate-tag.py +++ b/scripts/isolate-tag.py @@ -12,11 +12,18 @@ import koji import os +import argparse tag = 'f25' oldtag = 'f24' # Create a koji session -kojisession = koji.ClientSession('http://ppc.koji.fedoraproject.org/kojihub', {'krb_rdns': False}) +parser = argparse.ArgumentParser() +parser.add_argument('-p','--koji-profile', help='Select a koji profile to use',required=True) +args = parser.parse_args() +koji_profile = args.koji_profile + +koji_module = koji.get_profile_module(koji_profile) +kojisession = koji_module.ClientSession(koji_module.config.server) # Log into koji kojisession.krb_login() diff --git a/scripts/koji-build-srpm.py b/scripts/koji-build-srpm.py index bd0cd4c..a25d448 100755 --- a/scripts/koji-build-srpm.py +++ b/scripts/koji-build-srpm.py @@ -31,8 +31,8 @@ parser.add_argument('tag', help='build to this tag') parser.add_argument('build', nargs='+', help='NVR') args = parser.parse_args() -LOCALKOJIHUB = 'https://%s.koji.fedoraproject.org/kojihub' % (args.arch) -REMOTEKOJIHUB = 'https://koji.fedoraproject.org/kojihub' +LOCALKOJIHUB = args.arch +REMOTEKOJIHUB = 'fedora' PACKAGEURL = 'http://kojipkgs.fedoraproject.org/' # Should probably set these from a koji config file @@ -69,8 +69,10 @@ def _unique_path(prefix): # setup the koji session logging.info('Setting up koji session') -localkojisession = koji.ClientSession(LOCALKOJIHUB, session_opts) -remotekojisession = koji.ClientSession(REMOTEKOJIHUB) +local_koji_module = koji.get_profile_module(LOCALKOJIHUB) +remote_koji_module = koji.get_profile_module(REMOTEKOJIHUB) +localkojisession = local_koji_module.ClientSession(local_koji_module.config.server, session_opts) +remotekojisession = remote_koji_module.ClientSession(remote_koji_module.config.server) if os.path.isfile(CLIENTCERT): localkojisession.ssl_login(CLIENTCERT, CLIENTCA, SERVERCA) else: diff --git a/scripts/koji-import.py b/scripts/koji-import.py index adf77cb..d95bbf8 100755 --- a/scripts/koji-import.py +++ b/scripts/koji-import.py @@ -29,8 +29,8 @@ parser.add_argument("tag", help="import to this tag") parser.add_argument("build", nargs="*", help="build to import") args = parser.parse_args() -LOCALKOJIHUB = 'https://%s.koji.fedoraproject.org/kojihub' % (args.arch) -REMOTEKOJIHUB = 'https://koji.fedoraproject.org/kojihub' +LOCALKOJIHUB = args.arch +REMOTEKOJIHUB = 'fedora' PACKAGEURL = 'http://kojipkgs.fedoraproject.org/' # Should probably set these from a koji config file @@ -148,8 +148,10 @@ def importBuild(rpms, buildinfo, tag=None): # setup the koji session logging.info('Setting up koji session') -localkojisession = koji.ClientSession(LOCALKOJIHUB, session_opts) -remotekojisession = koji.ClientSession(REMOTEKOJIHUB) +local_koji_module = koji.get_profile_module(LOCALKOJIHUB) +remote_koji_module = koji.get_profile_module(REMOTEKOJIHUB) +localkojisession = local_koji_module.ClientSession(local_koji_module.config.server, session_opts) +remotekojisession = remote_koji_module.ClientSession(remote_koji_module.config.server) if os.path.isfile(CLIENTCERT): localkojisession.ssl_login(CLIENTCERT, CLIENTCA, SERVERCA) else: diff --git a/scripts/koji-reimport.py b/scripts/koji-reimport.py index df90f77..7469e97 100755 --- a/scripts/koji-reimport.py +++ b/scripts/koji-reimport.py @@ -15,6 +15,7 @@ import subprocess import koji import tempfile import shutil +import argparse # fill these in: # pkgs to re-import: @@ -22,11 +23,16 @@ pkgs = [''] # tag to tag them with: tag = '' -# setup koji sessions: -primarykoji = 'https://koji.fedoraproject.org/kojihub' -secondarykoji = 'https://ppc.koji.fedoraproject.org/kojihub' -primary = koji.ClientSession(primarykoji) -secondary = koji.ClientSession(secondarykoji, {'krb_rdns': False}) +# setup koji sessions: +parser = argparse.ArgumentParser() +parser.add_argument('-p','--koji-profile', help='Koji profile for alternate arches',required=True) +args = parser.parse_args() +sec_profile = args.koji_profile + +primarykoji = koji.get_profile_module("fedora") +secondarykoji = koji.get_profile_module(sec_profile) +primary = primarykoji.ClientSession(primarykoji.config.server) +secondary = secondarykoji.ClientSession(secondarykoji.config.server) secondary.krb_login() # do the thing: @@ -46,7 +52,7 @@ for pkg in pkgs: subprocess.call(['koji', 'download-build', pkg], cwd=tempdir) # verify RPMs are good, if so, import them: subprocess.check_call(['rpm -K *.rpm'], cwd=tempdir, shell=True) - subprocess.call(['ppc-koji import *.rpm'], cwd=tempdir, shell=True) + subprocess.call(['%s import *.rpm'%(sec_profile)], cwd=tempdir, shell=True) # Tag: secondary.tagBuild(tag, pkg) # Remove the temp dir diff --git a/scripts/mass-tag.py b/scripts/mass-tag.py index f65cfcf..f01c8f8 100755 --- a/scripts/mass-tag.py +++ b/scripts/mass-tag.py @@ -26,7 +26,8 @@ newbuilds = {} # dict of packages that have a newer build attempt tasks = {} # dict of new build task info # Create a koji session -kojisession = koji.ClientSession('https://koji.fedoraproject.org/kojihub', {'krb_rdns': False}) +koji_module = koji.get_profile_module("fedora") +kojisession = koji_module.ClientSession(koji_module.config.server) # Log into koji kojisession.krb_login() diff --git a/scripts/prune-tag.py b/scripts/prune-tag.py index a02e6b2..9b4f4c6 100755 --- a/scripts/prune-tag.py +++ b/scripts/prune-tag.py @@ -11,7 +11,7 @@ # This program requires koji installed, as well as configured. import os -import optparse +import argparse import sys import koji import logging @@ -20,25 +20,25 @@ status = 0 builds = {} untag = [] loglevel = '' -KOJIHUB = 'https://koji.fedoraproject.org/kojihub' # Setup a dict of our key names as sigul knows them to the actual key ID # that koji would use. We should get this from sigul somehow. -# Define our usage -usage = 'usage: %prog [options] tag' # Create a parser to parse our arguments -parser = optparse.OptionParser(usage=usage) -parser.add_option('-v', '--verbose', action='count', default=0, +parser = argparse.ArgumentParser(usage = '%(prog)s [options] tag') +parser.add_argument('-v', '--verbose', action='count', default=0, help='Be verbose, specify twice for debug') -parser.add_option('-n', '--dry-run', action='store_true', default=False, +parser.add_argument('-n', '--dry-run', action='store_true', default=False, help='Perform a dry run without untagging') +parser.add_argument('-p', '--koji-profile', default="fedora", + help='Select a koji profile to use') +KOJIHUB = args.koji_profile # Get our options and arguments -(opts, args) = parser.parse_args() +args, extras = parser.parse_known_args() -if opts.verbose <= 0: +if args.verbose <= 0: loglevel = logging.WARNING -elif opts.verbose == 1: +elif args.verbose == 1: loglevel = logging.INFO else: # options.verbose >= 2 loglevel = logging.DEBUG @@ -48,15 +48,16 @@ logging.basicConfig(format='%(levelname)s: %(message)s', level=loglevel) # Check to see if we got any arguments -if not args: +if not extras: parser.print_help() sys.exit(1) -tag = args[0] +tag = extras[0] # setup the koji session logging.info('Setting up koji session') -kojisession = koji.ClientSession(KOJIHUB, {'krb_rdns': False}) +koji_module = koji.get_profile_module(KOJIHUB) +kojisession = koji_module.ClientSession(koji_module.config.server) if not kojisession.krb_login(): logging.error('Unable to log into koji') sys.exit(1) @@ -81,14 +82,14 @@ for pkg in sorted(builds.keys()): # Now untag all the builds logging.info('Untagging %s builds' % len(untag)) -if not opts.dry_run: +if not args.dry_run: kojisession.multicall = True for build in untag: - if not opts.dry_run: + if not args.dry_run: kojisession.untagBuildBypass(tag, build, force=True) logging.debug('Untagging %s' % build) -if not opts.dry_run: +if not args.dry_run: results = kojisession.multiCall() for build, result in zip(untag, results): diff --git a/scripts/sign_unsigned.py b/scripts/sign_unsigned.py index 7268734..e5c0fed 100755 --- a/scripts/sign_unsigned.py +++ b/scripts/sign_unsigned.py @@ -312,14 +312,15 @@ class KojiTool(AbstractTool): self.options.debug_xmlrpc = False self.options.password = None self.options.user = None - self.options.kojihub = 'http://koji.fedoraproject.org/kojihub' + self.options.kojihub = 'koji' self.options.regex = False self.options.ignore = [] self.options.krb_rdns = False def create_koji_session(self): # used options: debug, debug_xmlrpc, user, password - self.koji_session = koji.ClientSession(self.options.kojihub, self.options.__dict__) + self.koji_module = koji.get_profile_module(self.kojihub) + self.koji_session = self.koji_module.ClientSession(self.koji_module.config.server, self.options.__dict__) def close_koji_session(self): self.koji_session.logout() diff --git a/scripts/sigulsign_unsigned.py b/scripts/sigulsign_unsigned.py index 7ea64fb..c65fb5c 100755 --- a/scripts/sigulsign_unsigned.py +++ b/scripts/sigulsign_unsigned.py @@ -106,12 +106,11 @@ def get_gpg_agent_passphrase(cache_id, ask=False, error_message="X", class KojiHelper(object): def __init__(self, arch=None): if arch: - self.kojihub = \ - 'https://{arch}.koji.fedoraproject.org/kojihub'.format( - arch=arch) + self.kojihub = arch else: - self.kojihub = 'https://koji.fedoraproject.org/kojihub' - self.kojisession = koji.ClientSession(self.kojihub, {'krb_rdns': False}) + self.kojihub = "koji" + self.koji_module = koji.get_profile_module(self.kojihub) + self.kojisession = self.koji_module.ClientSession(self.koji_module.config.server) self.kojisession.krb_login() def listTagged(self, tag, inherit=False): diff --git a/scripts/sync-blocked-primary.py b/scripts/sync-blocked-primary.py index f3892c0..c9fb0e2 100755 --- a/scripts/sync-blocked-primary.py +++ b/scripts/sync-blocked-primary.py @@ -21,7 +21,8 @@ tags = ['f26', 'f25', 'f24', 'f23'] # tag to check in koji arches = ['arm', 'ppc', 's390'] -kojisession = koji.ClientSession('https://koji.fedoraproject.org/kojihub') +koji_module = koji.get_profile_module("fedora") +kojisession = koji_module.ClientSession(koji_module.config.server) def getBlocked(kojisession, tag): blocked = [] # holding for blocked pkgs @@ -46,7 +47,8 @@ def getUnBlocked(kojisession, tag): for arch in arches: print "== Working on Arch: %s" % arch # Create a koji session - seckojisession = koji.ClientSession('https://%s.koji.fedoraproject.org/kojihub' % arch , {'krb_rdns': False}) + sec_koji_module = koji.get_profile_module(args.arch) + seckojisession = sec_koji_module.ClientSession(sec_koji_module.config.server) seckojisession.krb_login() for tag in tags: diff --git a/scripts/sync-tagged-primary.py b/scripts/sync-tagged-primary.py index 15749a2..ff3b46e 100755 --- a/scripts/sync-tagged-primary.py +++ b/scripts/sync-tagged-primary.py @@ -64,8 +64,10 @@ def rpmvercmp ((e1, v1, r1), (e2, v2, r2)): print "=== Working on arch: %s ====" % args.arch # Create a koji session -kojisession = koji.ClientSession('https://koji.fedoraproject.org/kojihub') -seckojisession = koji.ClientSession('https://%s.koji.fedoraproject.org/kojihub' % args.arch, session_opts) +koji_module = koji.get_profile_module("fedora") +kojisession = koji_module.ClientSession(koji_module.config.server) +sec_koji_module = koji.get_profile_module(args.arch) +seckojisession = sec_koji_module.ClientSession(sec_koji_module.config.server, session_opts) if os.path.isfile(CLIENTCERT): seckojisession.ssl_login(CLIENTCERT, CLIENTCA, SERVERCA) else: