From: root <[EMAIL PROTECTED]> --- imgcreate/__init__.py | 2 ++ imgcreate/kickstart.py | 22 +++++++++++++++++++++- livecd-tools.spec | 1 + tools/livecd-creator | 4 ++-- 4 files changed, 26 insertions(+), 3 deletions(-)
diff --git a/imgcreate/__init__.py b/imgcreate/__init__.py index bcfb40e..7cf30b8 100644 --- a/imgcreate/__init__.py +++ b/imgcreate/__init__.py @@ -34,6 +34,7 @@ Also exported are: - CreatorError - all exceptions throw are of this type - FSLABEL_MAXLEN - the length to which LoopImageCreator.fslabel is truncated - read_kickstart() - a utility function for kickstart parsing + - verify_kickstart() - a utility function to verify the existence of a kickstart file - build_name() - a utility to construct an image name Each of the creator classes are designed to be subclassable, allowing the user @@ -63,6 +64,7 @@ __all__ = ( 'LoopImageCreator', 'FSLABEL_MAXLEN', 'read_kickstart', + 'verify_kickstart', 'construct_name', 'setup_logging', ) diff --git a/imgcreate/kickstart.py b/imgcreate/kickstart.py index 01359e7..a6993ad 100644 --- a/imgcreate/kickstart.py +++ b/imgcreate/kickstart.py @@ -22,6 +22,7 @@ import shutil import subprocess import time import logging +import urlgrabber import rhpl.keyboard @@ -34,6 +35,21 @@ import pykickstart.version as ksversion import imgcreate.errors as errors import imgcreate.fs as fs +def path_is_url(path): + pupper = path.upper() + return (pupper.startswith("HTTP://")) \ + or (pupper.startswith("FTP://")) \ + or (pupper.startswith("FILE://")) + +def verify_kickstart(path): + verified = False + if not path is None: + if path_is_url(path): + verified = True + else: + verified = os.path.isfile(path) + return verified + def read_kickstart(path): """Parse a kickstart file and return a KickstartParser instance. @@ -47,7 +63,11 @@ def read_kickstart(path): version = ksversion.makeVersion() ks = ksparser.KickstartParser(version) try: - ks.readKickstart(path) + if path_is_url(path): + ksfile = urlgrabber.urlgrab(path) + ks.readKickstart(ksfile) + else: + ks.readKickstart(path) except IOError, (err, msg): raise errors.KickstartError("Failed to read kickstart file " "'%s' : %s" % (path, msg)) diff --git a/livecd-tools.spec b/livecd-tools.spec index 681f6cf..99c6d99 100644 --- a/livecd-tools.spec +++ b/livecd-tools.spec @@ -21,6 +21,7 @@ Requires: pykickstart >= 0.96 Requires: dosfstools >= 2.11-8 Requires: isomd5sum Requires: rhpl +Requires: python-urlgrabber %ifarch %{ix86} x86_64 Requires: syslinux %endif diff --git a/tools/livecd-creator b/tools/livecd-creator index b401190..137aecd 100755 --- a/tools/livecd-creator +++ b/tools/livecd-creator @@ -36,7 +36,7 @@ def parse_options(args): imgopt = optparse.OptionGroup(parser, "Image options", "These options define the created image.") imgopt.add_option("-c", "--config", type="string", dest="kscfg", - help="Path to kickstart config file") + help="Path or url to kickstart config file") imgopt.add_option("-b", "--base-on", type="string", dest="base_on", help="Add packages to an existing live CD iso9660 image.") imgopt.add_option("-f", "--fslabel", type="string", dest="fs_label", @@ -67,7 +67,7 @@ def parse_options(args): help=optparse.SUPPRESS_HELP) (options, args) = parser.parse_args() - if not options.kscfg or not os.path.isfile(options.kscfg): + if not options.kscfg or not imgcreate.verify_kickstart(options.kscfg): raise Usage("Kickstart config '%s' does not exist" %(options.kscfg,)) if options.base_on and not os.path.isfile(options.base_on): raise Usage("Live CD ISO '%s' does not exist" %(options.base_on,)) -- 1.5.5.2 -- Fedora-livecd-list mailing list Fedora-livecd-list@redhat.com https://www.redhat.com/mailman/listinfo/fedora-livecd-list