[Fedora-livecd-list] [PATCH] Allow for http://, ftp://, or file:// urls to be passed in to the image creators using urlgrabber.
Bryan Kearney
bkearney at redhat.com
Wed Nov 19 14:32:11 UTC 2008
From: bkearney <bkearney at redhat.com>
---
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..ced9bf5 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..c327915 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 7ab1468..215b576 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.6.5
More information about the Fedora-livecd-list
mailing list