def select_bootstrap(repomd, cachedir, bootstrapdir): cfgmgr = configmgr lvl = msger.get_loglevel() msger.set_loglevel('quiet') repo_rpmver = misc.get_rpmver_in_repo(repomd) if not repo_rpmver: msger.set_loglevel(lvl) return (None, None) # Check avaliable bootstrap bootstrap_env = bootstrap.Bootstrap(homedir=bootstrapdir) for bs in bootstrap_env.list(): if compare_rpmversion(repo_rpmver, bs['rpm']): return (bs['name'], {}) for bsname, bsrepo in list(cfgmgr.bootstraps.items()): repolist = [] for repo in list(bsrepo.keys()): repolist.append(bsrepo[repo]) rpmver = None try: repomd = misc.get_metadata_from_repos(repolist, cachedir) rpmver = misc.get_rpmver_in_repo(repomd) except errors.CreatorError as e: msger.set_loglevel(lvl) raise if not rpmver: continue if compare_rpmversion(repo_rpmver, rpmver): msger.set_loglevel(lvl) return (bsname, bsrepo) msger.set_loglevel(lvl) return (None, None)
def select_bootstrap(repomd, cachedir, bootstrapdir): cfgmgr = configmgr lvl = msger.get_loglevel() msger.set_loglevel('quiet') repo_rpmver = misc.get_rpmver_in_repo(repomd) if not repo_rpmver: msger.set_loglevel(lvl) return (None, None) # Check avaliable bootstrap bootstrap_env = bootstrap.Bootstrap(homedir = bootstrapdir) for bs in bootstrap_env.list(): if compare_rpmversion(repo_rpmver, bs['rpm']): return (bs['name'], {}) for bsname, bsrepo in cfgmgr.bootstraps.items(): repolist = [] for repo in bsrepo.keys(): repolist.append(bsrepo[repo]) rpmver = None try: repomd = misc.get_metadata_from_repos(repolist, cachedir) rpmver = misc.get_rpmver_in_repo(repomd) except errors.CreatorError, e: msger.set_loglevel(lvl) raise if not rpmver: continue if compare_rpmversion(repo_rpmver, rpmver): msger.set_loglevel(lvl) return (bsname, bsrepo)
def _parse_kickstart(self, ksconf=None): if not ksconf: return ksconf = misc.normalize_ksfile(ksconf, self.create['release'], self.create['arch']) ks = kickstart.read_kickstart(ksconf) self.create['ks'] = ks self.create['name'] = os.path.splitext(os.path.basename(ksconf))[0] self.create['name'] = misc.build_name(ksconf, self.create['release'], self.create['name_prefix'], self.create['name_suffix']) msger.info("Retrieving repo metadata:") ksrepos = misc.get_repostrs_from_ks(ks) if not ksrepos: raise errors.KsError('no valid repos found in ks file') for repo in ksrepos: if 'baseurl' in repo and repo['baseurl'].startswith("file:"): repourl = repo['baseurl'].replace('file:', '') repourl = "/%s" % repourl.lstrip('/') self.create['localrepos'].append(repourl) self.create['repomd'] = misc.get_metadata_from_repos( ksrepos, self.create['cachedir']) msger.raw(" DONE") target_archlist, archlist = misc.get_arch(self.create['repomd']) if self.create['arch']: if self.create['arch'] not in archlist: raise errors.ConfigError("Invalid arch %s for repository. " "Valid arches: %s" \ % (self.create['arch'], ', '.join(archlist))) else: if len(target_archlist) == 1: self.create['arch'] = str(target_archlist[0]) msger.info("\nUse detected arch %s." % target_archlist[0]) else: raise errors.ConfigError("Please specify a valid arch, " "the choice can be: %s" \ % ', '.join(archlist)) kickstart.resolve_groups(self.create, self.create['repomd']) # check selinux, it will block arm and btrfs image creation misc.selinux_check(self.create['arch'], [p.fstype for p in ks.handler.partition.partitions])
def _parse_kickstart(self, ksconf=None): if not ksconf: return ksconf = misc.normalize_ksfile(ksconf, self.create['release'], self.create['arch']) ks = kickstart.read_kickstart(ksconf) self.create['ks'] = ks self.create['name'] = os.path.splitext(os.path.basename(ksconf))[0] self.create['name'] = misc.build_name(ksconf, self.create['release'], self.create['name_prefix'], self.create['name_suffix']) self.create['destdir'] = self.create['outdir'] if self.create['release'] is not None: self.create['destdir'] = "%s/%s/images/%s/" % (self.create['outdir'], self.create['release'], self.create['name']) self.create['name'] = self.create['release'] + '_' + self.create['name'] if not self.create['logfile']: self.create['logfile'] = os.path.join(self.create['destdir'], self.create['name'] + ".log") self.create['releaselog'] = True self.set_logfile() msger.info("Retrieving repo metadata:") ksrepos = kickstart.get_repos(ks, self.create['extrarepos'], self.create['ignore_ksrepo']) if not ksrepos: raise errors.KsError('no valid repos found in ks file') for repo in ksrepos: if hasattr(repo, 'baseurl') and repo.baseurl.startswith("file:"): repourl = repo.baseurl.replace('file:', '') repourl = "/%s" % repourl.lstrip('/') self.create['localrepos'].append(repourl) self.create['repomd'] = misc.get_metadata_from_repos( ksrepos, self.create['cachedir']) msger.raw(" DONE") target_archlist, archlist = misc.get_arch(self.create['repomd']) if self.create['arch']: if self.create['arch'] not in archlist: raise errors.ConfigError("Invalid arch %s for repository. " "Valid arches: %s" \ % (self.create['arch'], ', '.join(archlist))) else: if len(target_archlist) == 1: self.create['arch'] = str(target_archlist[0]) msger.info("Use detected arch %s." % target_archlist[0]) else: raise errors.ConfigError("Please specify a valid arch, " "the choice can be: %s" \ % ', '.join(archlist)) kickstart.resolve_groups(self.create, self.create['repomd']) # check selinux, it will block arm and btrfs image creation misc.selinux_check(self.create['arch'], [p.fstype for p in ks.handler.partition.partitions])
def _parse_kickstart(self, ksconf=None): if not ksconf: return ksconf = misc.normalize_ksfile(ksconf, self.create['release'], self.create['arch']) ks = kickstart.read_kickstart(ksconf) self.create['ks'] = ks self.create['name'] = os.path.splitext(os.path.basename(ksconf))[0] self.create['name'] = misc.build_name(ksconf, self.create['release'], self.create['name_prefix'], self.create['name_suffix']) self.create['destdir'] = self.create['outdir'] if self.create['release'] is not None: self.create['destdir'] = "%s/%s/images/%s/" % (self.create['outdir'], self.create['release'], self.create['name']) self.create['name'] = self.create['release'] + '_' + self.create['name'] if self.create['pack_to'] is not None: if '@NAME@' in self.create['pack_to']: self.create['pack_to'] = self.create['pack_to'].replace('@NAME@', self.create['name']) self.create['name'] = misc.strip_archive_suffix(self.create['pack_to']) if self.create['name'] is None: raise errors.CreatorError("Not supported archive file format: %s" % self.create['pack_to']) if not self.create['logfile']: self.create['logfile'] = os.path.join(self.create['destdir'], self.create['name'] + ".log") self.create['releaselog'] = True self.set_logfile() elif self.create['pack_to'] is not None: if '@NAME@' in self.create['pack_to']: self.create['pack_to'] = self.create['pack_to'].replace('@NAME@', self.create['name']) self.create['name'] = misc.strip_archive_suffix(self.create['pack_to']) if self.create['name'] is None: raise errors.CreatorError("Not supported archive file format: %s" % self.create['pack_to']) msger.info("Retrieving repo metadata:") ksrepos = kickstart.get_repos(ks, self.create['extrarepos'], self.create['ignore_ksrepo']) if not ksrepos: raise errors.KsError('no valid repos found in ks file') for repo in ksrepos: if hasattr(repo, 'baseurl') and repo.baseurl.startswith("file:"): repourl = repo.baseurl.replace('file:', '') repourl = "/%s" % repourl.lstrip('/') self.create['localrepos'].append(repourl) self.create['repomd'] = misc.get_metadata_from_repos( ksrepos, self.create['cachedir']) kstpkrepos = kickstart.get_tpkrepos(ks) if kstpkrepos: for tpk_repo in kstpkrepos: if hasattr(tpk_repo,'baseurl') and tpk_repo.baseurl.startswith("file:"): tpk_repourl = tpk_repo.baseurl.replace('file:','') tpk_repourl = "/%s" % tpk_repourl.lstrip('/') self.create['localtpkrepos'].append(tpk_repourl) msger.raw(" DONE") target_archlist, archlist = misc.get_arch(self.create['repomd']) if self.create['arch']: if self.create['arch'] not in archlist: raise errors.ConfigError("Invalid arch %s for repository. " "Valid arches: %s" \ % (self.create['arch'], ', '.join(archlist))) else: if len(target_archlist) == 1: self.create['arch'] = str(target_archlist[0]) msger.info("Use detected arch %s." % target_archlist[0]) else: raise errors.ConfigError("Please specify a valid arch, " "the choice can be: %s" \ % ', '.join(archlist)) kickstart.resolve_groups(self.create, self.create['repomd']) # check selinux, it will block arm and btrfs image creation misc.selinux_check(self.create['arch'], [p.fstype for p in ks.handler.partition.partitions])