Hi Michael,

Here is the code you asked for adding --os-version..

I didn't get around to adding the initial setup during an import yet.

(I also see I got a little carried away fixing up some whitespace)

Regards

Dave Hatton
>From 97f17ed35b7235c2da2161efe8eef447a12ad22f Mon Sep 17 00:00:00 2001
From: Dave Hatton <[EMAIL PROTECTED]>
Date: Mon, 25 Aug 2008 17:53:07 +0100
Subject: [PATCH] os-version code

---
 cobbler/action_validate.py    |   10 +++++--
 cobbler/item_distro.py        |   56 ++++++++++++++++++++++++-----------------
 cobbler/modules/cli_distro.py |    3 ++
 3 files changed, 43 insertions(+), 26 deletions(-)

diff --git a/cobbler/action_validate.py b/cobbler/action_validate.py
index f9645f3..2229e09 100644
--- a/cobbler/action_validate.py
+++ b/cobbler/action_validate.py
@@ -63,14 +63,18 @@ class Validate:
 
     def checkfile(self,obj,is_profile):
         blended = utils.blender(self.config.api, False, obj)
+
+        os_version = blended["os_version"]
+
         ks = blended["kickstart"]
+        if ks is None or ks == "":
+            print "%s has no kickstart, skipping" % obj.name
+            return True
+
         breed = blended["breed"]
         if breed != "redhat":
             print "%s has a breed of %s, skipping" % (obj.name, breed)
             return True
-        if ks is None or ks == "":
-            print "%s has no kickstart, skipping" % obj.name
-            return True
 
         server = blended["server"] 
         if not ks.startswith("/"):
diff --git a/cobbler/item_distro.py b/cobbler/item_distro.py
index abdd85b..d11b6ae 100644
--- a/cobbler/item_distro.py
+++ b/cobbler/item_distro.py
@@ -46,8 +46,9 @@ class Distro(item.Item):
         self.kernel_options         = ({},       '<<inherit>>')[is_subobject]
         self.kernel_options_post    = ({},       '<<inherit>>')[is_subobject]
         self.ks_meta                = ({},       '<<inherit>>')[is_subobject]
-        self.arch                   = ('i386',    '<<inherit>>')[is_subobject]
+        self.arch                   = ('i386',   '<<inherit>>')[is_subobject]
         self.breed                  = ('redhat', '<<inherit>>')[is_subobject]
+        self.os_version             = ('',       '<<inherit>>')[is_subobject]
         self.source_repos           = ([],       '<<inherit>>')[is_subobject]
         self.depth                  = 0
 
@@ -78,6 +79,7 @@ class Distro(item.Item):
         self.ks_meta                = self.load_item(seed_data,'ks_meta')
         self.arch                   = self.load_item(seed_data,'arch','i386')
         self.breed                  = 
self.load_item(seed_data,'breed','redhat')
+        self.os_version             = self.load_item(seed_data,'os_version','')
         self.source_repos           = 
self.load_item(seed_data,'source_repos',[])
         self.depth                  = self.load_item(seed_data,'depth',0)
 
@@ -113,6 +115,12 @@ class Distro(item.Item):
             return True
         raise CX(_("invalid value for --breed, see manpage"))
 
+    def set_os_version(self, os_version):
+        if os_version is not None:
+            self.os_version = os_version.lower()
+            return True
+        raise CX(_("invalid value for --os-version, see manpage"))
+
     def set_initrd(self,initrd):
         """
        Specifies an initrd image.  Path search works as in set_kernel.
@@ -172,18 +180,19 @@ class Distro(item.Item):
         Return a serializable datastructure representation of this object.
         """
         return {
-           'name'                   : self.name,
-           'kernel'                 : self.kernel,
-           'initrd'                 : self.initrd,
-           'kernel_options'         : self.kernel_options,
-           'kernel_options_post'    : self.kernel_options_post,
-           'ks_meta'                : self.ks_meta,
-           'arch'                   : self.arch,
-           'breed'                  : self.breed,
-           'source_repos'           : self.source_repos,
-           'parent'                 : self.parent,
-           'depth'                  : self.depth,
-           'owners'                 : self.owners
+            'name'                   : self.name,
+            'kernel'                 : self.kernel,
+            'initrd'                 : self.initrd,
+            'kernel_options'         : self.kernel_options,
+            'kernel_options_post'    : self.kernel_options_post,
+            'ks_meta'                : self.ks_meta,
+            'arch'                   : self.arch,
+            'breed'                  : self.breed,
+            'os_version'             : self.os_version,
+            'source_repos'           : self.source_repos,
+            'parent'                 : self.parent,
+            'depth'                  : self.depth,
+            'owners'                 : self.owners
         }
 
     def printable(self):
@@ -194,6 +203,7 @@ class Distro(item.Item):
         istr = utils.find_initrd(self.initrd)
         buf =       _("distro               : %s\n") % self.name
         buf = buf + _("breed                : %s\n") % self.breed
+        buf = buf + _("os_version           : %s\n") % self.os_version
         buf = buf + _("architecture         : %s\n") % self.arch
         buf = buf + _("initrd               : %s\n") % istr
         buf = buf + _("kernel               : %s\n") % kstr
@@ -205,15 +215,15 @@ class Distro(item.Item):
 
     def remote_methods(self):
         return {
-            'name'          :  self.set_name,
-            'kernel'        :  self.set_kernel,
-            'initrd'        :  self.set_initrd,
-            'kopts'         :  self.set_kernel_options,
-            'kopts_post'    :  self.set_kernel_options_post,
-            'arch'          :  self.set_arch,
-            'ksmeta'        :  self.set_ksmeta,
-            'breed'         :  self.set_breed,
-            'owners'        :  self.set_owners
+            'name'          : self.set_name,
+            'kernel'        : self.set_kernel,
+            'initrd'        : self.set_initrd,
+            'kopts'         : self.set_kernel_options,
+            'kopts_post'    : self.set_kernel_options_post,
+            'arch'          : self.set_arch,
+            'ksmeta'        : self.set_ksmeta,
+            'breed'         : self.set_breed,
+            'os_version'    : self.set_os_version,
+            'owners'        : self.set_owners
         }
 
-
diff --git a/cobbler/modules/cli_distro.py b/cobbler/modules/cli_distro.py
index e541c6f..d647294 100644
--- a/cobbler/modules/cli_distro.py
+++ b/cobbler/modules/cli_distro.py
@@ -48,6 +48,7 @@ class DistroFunction(commands.CobblerFunction):
         if not self.matches_args(args,["dumpvars","remove","report","list"]):
             p.add_option("--arch",   dest="arch",   help="ex: x86, x86_64, 
ia64")
             p.add_option("--breed",  dest="breed",  help="ex: redhat, debian, 
suse")
+            p.add_option("--os-version",  dest="os_version",  help="ex: free 
format os version string")
         if self.matches_args(args,["add"]):
             p.add_option("--clobber", dest="clobber", help="allow add to 
overwrite existing objects", action="store_true")
         if not self.matches_args(args,["dumpvars","remove","report","list"]):
@@ -100,6 +101,8 @@ class DistroFunction(commands.CobblerFunction):
                 obj.set_ksmeta(self.options.ksmeta,self.options.inplace)
             if self.options.breed:
                 obj.set_breed(self.options.breed)
+            if self.options.os_version:
+                obj.set_os_version(self.options.os_version)
             if self.options.owners:
                 obj.set_owners(self.options.owners)
 
-- 
1.5.4.1

_______________________________________________
cobbler mailing list
[email protected]
https://fedorahosted.org/mailman/listinfo/cobbler

Reply via email to