def read_kickstart(path): """Parse a kickstart file and return a KickstartParser instance. This is a simple utility function which takes a path to a kickstart file, parses it and returns a pykickstart KickstartParser instance which can be then passed to an ImageCreator constructor. If an error occurs, a CreatorError exception is thrown. """ version = ksversion.makeVersion() ks = ksparser.KickstartParser(version) try: ksfile = urlgrabber.urlgrab(path) ks.readKickstart(ksfile) # Fallback to e.args[0] is a workaround for bugs in urlgragger and pykickstart. except IOError as e: raise errors.KickstartError("Failed to read kickstart file " "'%s' : %s" % (path, e.strerror or e.args[0])) except kserrors.KickstartError as e: raise errors.KickstartError("Failed to parse kickstart file " "'%s' : %s" % (path, e)) return ks
def read_kickstart(path): """Parse a kickstart file and return a KickstartParser instance. This is a simple utility function which takes a path to a kickstart file, parses it and returns a pykickstart KickstartParser instance which can be then passed to an ImageCreator constructor. If an error occurs, a CreatorError exception is thrown. """ version = ksversion.makeVersion() ks = ksparser.KickstartParser(version) try: if "://" not in path: path = "file://%s" % (urllib.request.pathname2url( os.path.abspath(path))) ksdata = urllib.request.urlopen(path).read().decode("utf-8") ks.readKickstartFromString(ksdata, reset=False) # Fallback to e.args[0] is a workaround for bugs in urlgragger and pykickstart. except IOError as e: raise errors.KickstartError("Failed to read kickstart file " "'%s' : %s" % (path, e.strerror or e.args[0])) except kserrors.KickstartError as e: raise errors.KickstartError("Failed to parse kickstart file " "'%s' : %s" % (path, e)) return ks
def read_kickstart(path): """Parse a kickstart file and return a KickstartParser instance. This is a simple utility function which takes a path to a kickstart file, parses it and returns a pykickstart KickstartParser instance which can be then passed to an ImageCreator constructor. If an error occurs, a CreatorError exception is thrown. """ #version = ksversion.makeVersion() #ks = ksparser.KickstartParser(version) using_version = ksversion.DEVEL commandMap[using_version]["bootloader"] = wicboot.Wic_Bootloader commandMap[using_version]["part"] = partition.Wic_Partition commandMap[using_version]["partition"] = partition.Wic_Partition dataMap[using_version]["PartData"] = partition.Wic_PartData superclass = ksversion.returnClassForVersion(version=using_version) class KSHandlers(superclass): def __init__(self): superclass.__init__(self, mapping=commandMap[using_version]) kickstart = ksparser.KickstartParser(KSHandlers(), errorsAreFatal=True) try: kickstart.readKickstart(path) except (kserrors.KickstartParseError, kserrors.KickstartError), err: msger.warning("Errors occurred when parsing kickstart file: %s\n" % path) msger.error("%s" % err)
def read_kickstart(path): """Parse a kickstart file and return a KickstartParser instance. This is a simple utility function which takes a path to a kickstart file, parses it and returns a pykickstart KickstartParser instance which can be then passed to an ImageCreator constructor. If an error occurs, a CreatorError exception is thrown. """ #version = ksversion.makeVersion() #ks = ksparser.KickstartParser(version) using_version = ksversion.DEVEL commandMap[using_version]["desktop"] = desktop.Moblin_Desktop commandMap[using_version]["repo"] = moblinrepo.Moblin_Repo commandMap[using_version]["bootloader"] = micboot.Moblin_Bootloader dataMap[using_version]["RepoData"] = moblinrepo.Moblin_RepoData superclass = ksversion.returnClassForVersion(version=using_version) class KSHandlers(superclass): def __init__(self, mapping={}): superclass.__init__(self, mapping=commandMap[using_version]) ks = ksparser.KickstartParser(KSHandlers()) try: ks.readKickstart(path) except kserrors.KickstartError, e: raise errors.KsError("'%s': %s" % (path, str(e)))
def build_kickstart(base_ks, packages=[], groups=[], projects=[]): """Build a kickstart file using the handler class, with custom kickstart, packages, groups and projects. :param base_ks: Full path to the original kickstart file :param packages: list of packagenames :param groups: list of groupnames :param projects: list of rpm repository URLs :returns: Validated kickstart with any extra packages, groups or repourls added """ ver = ksversion.DEVEL commandMap[ver]["desktop"] = Moblin_Desktop commandMap[ver]["repo"] = Moblin_Repo commandMap[ver]["bootloader"] = Moblin_Bootloader commandMap[ver]["btrfs"] = BTRFS dataMap[ver]["RepoData"] = Moblin_RepoData dataMap[ver]["PartData"] = MeeGo_PartData dataMap[ver]["BTRFSData"] = BTRFSData superclass = ksversion.returnClassForVersion(version=ver) class KSHandlers(superclass): def __init__(self, mapping={}): superclass.__init__(self, mapping=commandMap[ver], dataMapping=dataMap[ver]) self.prepackages = PrePackages() self.attachment = Attachment() def __str__(self): retval = superclass.__str__(self) if self.prepackages: retval += self.prepackages.__str__() if self.attachment: retval += self.attachment.__str__() return retval ks = ksparser.KickstartParser(KSHandlers(), errorsAreFatal=False) ks.registerSection(PackScriptSection(ks.handler, dataObj=PackScript)) ks.registerSection(PrepackageSection(ks.handler)) ks.registerSection(AttachmentSection(ks.handler)) ks.readKickstart(str(base_ks)) ks.handler.packages.add(packages) ks.handler.packages.add(groups) for prj in projects: name = urlparse(prj).path name = name.replace(":/", "_") name = name.replace("/", "_") name = re.sub('@[A-Z]*@', '_', name) repo = Moblin_RepoData(baseurl=prj, name=name, save=True) ks.handler.repo.repoList.append(repo) ks_txt = str(ks.handler) return ks_txt
def read_kickstart(path): """Parse a kickstart file and return a KickstartParser instance. This is a simple utility function which takes a path to a kickstart file, parses it and returns a pykickstart KickstartParser instance which can be then passed to an ImageCreator constructor. If an error occurs, a CreatorError exception is thrown. """ #version = ksversion.makeVersion() #ks = ksparser.KickstartParser(version) using_version = ksversion.DEVEL commandMap[using_version]["desktop"] = desktop.Moblin_Desktop commandMap[using_version]["repo"] = moblinrepo.Moblin_Repo commandMap[using_version]["bootloader"] = micboot.Moblin_Bootloader commandMap[using_version]["part"] = partition.MeeGo_Partition commandMap[using_version]["partition"] = partition.MeeGo_Partition commandMap[using_version]["btrfs"] = btrfs.BTRFS dataMap[using_version]["RepoData"] = moblinrepo.Moblin_RepoData dataMap[using_version]["PartData"] = partition.MeeGo_PartData dataMap[using_version]["BTRFSData"] = btrfs.BTRFSData superclass = ksversion.returnClassForVersion(version=using_version) class KSHandlers(superclass): def __init__(self, mapping={}): superclass.__init__(self, mapping=commandMap[using_version]) self.prepackages = PrePackages() self.attachment = Attachment() def __str__(self): retval = superclass.__str__(self) if self.prepackages: retval += self.prepackages.__str__() if self.attachment: retval += self.attachment.__str__() return retval ks = ksparser.KickstartParser(KSHandlers(), errorsAreFatal=False) ks.registerSection(PackScriptSection(ks.handler, dataObj=PackScript)) ks.registerSection(PrepackageSection(ks.handler)) ks.registerSection(AttachmentSection(ks.handler)) try: ks.readKickstart(path) except (kserrors.KickstartParseError, kserrors.KickstartError) as err: if msger.ask("Errors occured on kickstart file, skip and continue?"): msger.warning("%s" % err) pass else: raise errors.KsError("%s" % err) return ks
def read_kickstart(path): """Parse a kickstart file and return a KickstartParser instance. This is a simple utility function which takes a path to a kickstart file, parses it and returns a pykickstart KickstartParser instance which can be then passed to an ImageCreator constructor. If an error occurs, a CreatorError exception is thrown. """ #version = ksversion.makeVersion() #ks = ksparser.KickstartParser(version) using_version = ksversion.DEVEL commandMap[using_version]["desktop"] = desktop.Mic_Desktop commandMap[using_version]["repo"] = micrepo.Mic_Repo commandMap[using_version]["tpk_repo"] = micrepo.Mic_Tpk_Repo commandMap[using_version]["bootloader"] = micboot.Mic_Bootloader commandMap[using_version]["part"] = partition.Mic_Partition commandMap[using_version]["partition"] = partition.Mic_Partition commandMap[using_version][ "installerfw_plugins"] = installerfw.Mic_installerfw dataMap[using_version]["RepoData"] = micrepo.Mic_RepoData dataMap[using_version]["Tpk_RepoData"] = micrepo.Mic_Tpk_RepoData dataMap[using_version]["PartData"] = partition.Mic_PartData superclass = ksversion.returnClassForVersion(version=using_version) class KSHandlers(superclass): def __init__(self): superclass.__init__(self, mapping=commandMap[using_version]) self.prepackages = ksparser.Packages() self.attachment = ksparser.Packages() ks = ksparser.KickstartParser(KSHandlers(), errorsAreFatal=False) ks.registerSection(PrepackageSection(ks.handler)) ks.registerSection(AttachmentSection(ks.handler)) try: ks.readKickstart(path) except (kserrors.KickstartParseError, kserrors.KickstartError), err: if msger.ask("Errors occured on kickstart file, skip and continue?"): msger.warning("%s" % err) pass else: raise errors.KsError("%s" % err)
def read_kickstart(path): """Parse a kickstart file and return a KickstartParser instance. This is a simple utility function which takes a path to a kickstart file, parses it and returns a pykickstart KickstartParser instance which can be then passed to an ImageCreator constructor. If an error occurs, a CreatorError exception is thrown. """ #version = ksversion.makeVersion() #ks = ksparser.KickstartParser(version) using_version = ksversion.DEVEL commandMap[using_version]["desktop"] = desktop.Moblin_Desktop commandMap[using_version]["repo"] = moblinrepo.Moblin_Repo commandMap[using_version]["bootloader"] = micboot.Moblin_Bootloader dataMap[using_version]["RepoData"] = moblinrepo.Moblin_RepoData superclass = ksversion.returnClassForVersion(version=using_version) class KSHandlers(superclass): def __init__(self, mapping={}): superclass.__init__(self, mapping=commandMap[using_version]) ks = ksparser.KickstartParser(KSHandlers()) try: ks.readKickstart(path) except kserrors.KickstartParseError, e: msgptn = re.compile("^\D*(\d+).*(Section does not end with.*)$", re.S) m = msgptn.match(str(e)) if m: lineno = m.group(1) wrnmsg = m.group(2) msger.warning("'%s:%s': %s" % (path, lineno, wrnmsg)) else: raise errors.KsError("'%s': %s" % (path, str(e)))