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(a)kanarip.com wrote:
> From: Jeroen van Meeuwen (Fedora Unity) <kanarip(a)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(a)lists.fedorahosted.org
https://fedorahosted.org/mailman/listinfo/cobbler