From b8c59e00777437cc9ac4e6c0ee00d26aa7916776 Mon Sep 17 00:00:00 2001 From: Brendan Reilly Date: Nov 09 2020 14:19:34 +0000 Subject: Add option to use repos from kickstart for livemedia builds Fixes: https://pagure.io/koji/issue/2260 --- diff --git a/builder/kojid b/builder/kojid index 9d95511..ce2c297 100755 --- a/builder/kojid +++ b/builder/kojid @@ -3023,25 +3023,26 @@ class ImageTask(BaseTaskHandler): # in the kickstart file. If --repo wasn't specified, then we use the # repo associated with the target passed in initially. repo_class = kscontrol.dataMap[self.ks.version]['RepoData'] - self.ks.handler.repo.repoList = [] # delete whatever the ks file told us - if opts.get('repo'): - user_repos = opts['repo'] - if isinstance(user_repos, six.string_types): - user_repos = user_repos.split(',') - index = 0 - for user_repo in user_repos: + if not opts.get('ksrepo'): + self.ks.handler.repo.repoList = [] # delete whatever the ks file told us + if opts.get('repo'): + user_repos = opts['repo'] + if isinstance(user_repos, six.string_types): + user_repos = user_repos.split(',') + index = 0 + for user_repo in user_repos: + self.ks.handler.repo.repoList.append(repo_class( + baseurl=user_repo, name='koji-override-%i' % index)) + index += 1 + else: + path_info = koji.PathInfo(topdir=self.options.topurl) + repopath = path_info.repo(repo_info['id'], + target_info['build_tag_name']) + baseurl = '%s/%s' % (repopath, arch) + self.logger.debug('BASEURL: %s' % baseurl) self.ks.handler.repo.repoList.append(repo_class( - baseurl=user_repo, name='koji-override-%i' % index)) - index += 1 - else: - path_info = koji.PathInfo(topdir=self.options.topurl) - repopath = path_info.repo(repo_info['id'], - target_info['build_tag_name']) - baseurl = '%s/%s' % (repopath, arch) - self.logger.debug('BASEURL: %s' % baseurl) - self.ks.handler.repo.repoList.append(repo_class( - baseurl=baseurl, name='koji-%s-%i' % (target_info['build_tag_name'], - repo_info['id']))) + baseurl=baseurl, name='koji-%s-%i' % (target_info['build_tag_name'], + repo_info['id']))) # inject url if provided if opts.get('install_tree_url'): self.ks.handler.url(url=opts['install_tree_url']) diff --git a/cli/koji_cli/commands.py b/cli/koji_cli/commands.py index b43745e..9dd2367 100644 --- a/cli/koji_cli/commands.py +++ b/cli/koji_cli/commands.py @@ -5703,6 +5703,8 @@ def handle_spin_livemedia(options, session, args): 'default templates.')) parser.add_option('--nomacboot', action="store_true", help=_("Pass the nomacboot option to livemedia-creator")) + parser.add_option('--ksrepo', action="store_true", + help=_("Do not overwrite repos in the kickstart")) (task_options, args) = parser.parse_args(args) # Make sure the target and kickstart is specified. @@ -6085,7 +6087,7 @@ def _build_image(options, task_opts, session, args, img_type): 'format', 'install_tree_url', 'isoname', 'ksurl', 'ksversion', 'release', 'repo', 'scratch', 'skip_tag', 'specfile', 'vcpu', 'vmem', 'volid', 'optional_arches', - 'lorax_dir', 'lorax_url', 'nomacboot', + 'lorax_dir', 'lorax_url', 'nomacboot', 'ksrepo', ] for opt in passthru_opts: val = getattr(task_opts, opt, None) diff --git a/tests/test_cli/test_spin_commands.py b/tests/test_cli/test_spin_commands.py index 034387f..66ce447 100644 --- a/tests/test_cli/test_spin_commands.py +++ b/tests/test_cli/test_spin_commands.py @@ -38,6 +38,7 @@ LIVEMEDIA_OPTIONS = { "lorax_dir": None, "lorax_url": None, "nomacboot": False, + "ksrepo": False, "optional_arches": None, "volid": None, } @@ -424,6 +425,7 @@ Options: templates that are to be used to override the default templates. --nomacboot Pass the nomacboot option to livemedia-creator + --ksrepo Do not overwrite repos in the kickstart """ % (self.progname))