Jeroen van Meeuwen wrote:
Sorry for the trailing whitespace foo in this patch, a sane patch would look like this:
Jeroen,
Can you supply more in-depth information about what this patch does, specifically?
Examples would be good.
Thanks,
--Michael
kanarip@kanarip.com wrote:
From: Jeroen van Meeuwen (Fedora Unity) kanarip@fedoraunity.org
cobbler/action_import.py | 212 +++++++++++++++++++++++++++------------------- 1 files changed, 126 insertions(+), 86 deletions(-)
diff --git a/cobbler/action_import.py b/cobbler/action_import.py index a0a515e..bf4818c 100644 --- a/cobbler/action_import.py +++ b/cobbler/action_import.py @@ -475,48 +475,82 @@ class Importer: except: print _("- error launching createrepo, ignoring...") traceback.print_exc()
# ========================================================================
def distro_adder(self,foo,dirname,fnames):
""" This is an os.path.walk routine that finds distributions in the directory to be scanned and then creates them. """
# FIXME: If there are more than one kernel or initrd image on the same directory,
# FIXME: If there are more than one kernel or initrd image on the same directory, # results are unpredictable
initrd = None
kernel = None
initrd = {}
kernel = {}
counter = 0
for x in fnames: fullname = os.path.join(dirname,x)
if os.path.islink(fullname) and os.path.isdir(fullname):
if os.path.realpath(fullname) == os.path.realpath(dirname):
# Prevent infinite loops importing debian media
continue
print "- following symlink: %s" % fullname
os.path.walk(fullname, self.distro_adder, foo)
if x.startswith("initrd"):
initrd = os.path.join(dirname,x)
if ( x.startswith("vmlinuz") or x.startswith("kernel.img") ) and x.find("initrd") == -1:
kernel = os.path.join(dirname,x)
if initrd is not None and kernel is not None and dirname.find("isolinux") == -1:
adtl = self.add_entry(dirname,kernel,initrd)
if adtl != None:
foo.extend(adtl)
# Not resetting these values causes problems importing debian media because there are remaining items in fnames
initrd = None
kernel = None
if os.path.realpath(fullname) == os.path.realpath(dirname):
# Prevent infinite loops importing debian media
continue
print "- following symlink: %s" % fullname
os.path.walk(fullname, self.distro_adder, foo)
if x.startswith("initrd") and not initrd.has_key(x):
initrd[counter] = os.path.join(dirname,x)
print "Found initrd for %s" % x
if kernel.has_key(counter): counter += 1
if ( x.startswith("vmlinuz") or x.startswith("kernel.img") ) and x.find("initrd") == -1 and not kernel.has_key(x):
kernel[counter] = os.path.join(dirname,x)
print "Found kernel for %s" % x
if initrd.has_key(counter): counter += 1
if initrd.keys() > 0 and kernel.keys() > 0 and dirname.find("isolinux") == -1:
for key in initrd.keys():
kernel_type = None
if kernel.has_key(key):
kernel_type = self.find_me_kernel_type(initrd[key], kernel[key])
else:
print "kernel[%s] does not exist" % key
continue
adtl = self.add_entry(dirname,kernel[key],initrd[key],kernel_type=kernel_type)
if adtl != None:
foo.extend(adtl)
# Not resetting these values causes problems importing debian media because there are remaining items in fnames
initrd = {}
kernel = {}
- # ========================================================================
- def find_me_kernel_type(self,initrd, kernel):
"""
From the initrd and kernel passed, find out a name for this kernel
"""
print "Got initrd %s and kernel %s" % (initrd,kernel)
if initrd.find("PAE") >= 0:
print "Found kernel type PAE"
return "PAE"
print "No particular kernel type found"
return None
- # ========================================================================
- def add_entry(self,dirname,kernel,initrd):
def add_entry(self,dirname,kernel,initrd,kernel_type=None):
""" When we find a directory with a valid kernel/initrd in it, create the distribution objects
@@ -553,7 +587,13 @@ class Importer:
for pxe_arch in archs:
name = proposed_name + "-" + pxe_arch
if kernel_type:
proposed_name_append = "-%s" % kernel_type
else:
proposed_name_append = ""
name = proposed_name + "-" + pxe_arch + proposed_name_append
existing_distro = self.distros.find(name=name) if existing_distro is not None:
cobbler mailing list cobbler@lists.fedorahosted.org https://fedorahosted.org/mailman/listinfo/cobbler