From 0b5b9a1b2eeeb472613c8d1d38d467a361432e6d Mon Sep 17 00:00:00 2001 From: Mike McLean Date: Feb 12 2021 16:48:01 +0000 Subject: koji-clean-repos: options --topdir and --test --- diff --git a/src/bin/koji-clean-repos b/src/bin/koji-clean-repos index dff7fad..0b91c54 100755 --- a/src/bin/koji-clean-repos +++ b/src/bin/koji-clean-repos @@ -29,11 +29,15 @@ queue = multiprocessing.Queue() def main(): global koji + global options parser = optparse.OptionParser(usage='%prog [options]') parser.add_option('-p', '--profile', default='koji', help='pick a profile') parser.add_option('-j', '--jobs', default=5, type='int', help='worker count') + parser.add_option('-n', '--test', default=False, action='store_true', + help='test mode: no deletions') + parser.add_option('--topdir', help='set topdir') # verbosity options parser.add_option("-d", "--debug", action="store_true", @@ -43,12 +47,14 @@ def main(): parser.add_option("-q", "--quiet", action="store_true", default=False, help="run quietly") - opts, args = parser.parse_args() + options, args = parser.parse_args() if args: parser.error('This command takes no arguments. See --help for options') - koji = _koji.get_profile_module(opts.profile) + koji = _koji.get_profile_module(options.profile) + if options.topdir: + koji.pathinfo.topdir = options.topdir for name in ('cert', 'serverca'): value = os.path.expanduser(getattr(koji.config, name)) @@ -59,17 +65,17 @@ def main(): handler.setLevel(logging.DEBUG) handler.setFormatter(logging.Formatter('%(asctime)s [%(levelname)s] %(process)s %(name)s: %(message)s')) top_logger.addHandler(handler) - if opts.debug: + if options.debug: top_logger.setLevel(logging.DEBUG) - elif opts.quiet: + elif options.quiet: top_logger.setLevel(logging.ERROR) - elif opts.verbose: + elif options.verbose: top_logger.setLevel(logging.INFO) else: top_logger.setLevel(logging.WARN) logger.info('Starting pool') - pool = multiprocessing.Pool(opts.jobs) + pool = multiprocessing.Pool(options.jobs) jobs = [] maxqueue = 1000 @@ -78,6 +84,7 @@ def main(): while len(jobs) > maxqueue: jobs = [j for j in jobs if not j.ready()] + logger.debug('Queuing job for %s', path) jobs.append(pool.apply_async(check_repo, [repo_id, path])) logger.info('Waiting on remaining jobs') @@ -124,6 +131,9 @@ def check_repo(repo_id, path): def do_delete(path): + if options.test: + logger.warning('Test mode: skipping delete for %s', path) + return logger.info('Removing repo: %s', path) try: rmtree(path)