This patch adds a free format option --os_version=  to a cobbler distro.

This produces a variable $os_version that can be used in cobbler snippets.

This would be useful in scripts that work with different OS versions

eg

#if $os_version == "rhel5.1"
do some stuff
#end if

Hope this is helpful.

Dave Hatton
>From b41575b419fb7a76b9fa1b5ca83c6c627b20e7f5 Mon Sep 17 00:00:00 2001
From: root <[EMAIL PROTECTED]>
Date: Tue, 12 Aug 2008 19:40:43 +0100
Subject: [PATCH] added os_version to distro

---
 cobbler/action_validate.py    |    1 +
 cobbler/item_distro.py        |   29 ++++++++++++++++++++---------
 cobbler/modules/cli_distro.py |    3 +++
 3 files changed, 24 insertions(+), 9 deletions(-)

diff --git a/cobbler/action_validate.py b/cobbler/action_validate.py
index c0b1f4a..e020e0d 100644
--- a/cobbler/action_validate.py
+++ b/cobbler/action_validate.py
@@ -60,6 +60,7 @@ class Validate:
         if breed != "redhat":
             print "%s has a breed of %s, skipping" % (obj.name, breed)
             return True
+        os_version = blended["os_version"] 
         if ks is None or ks == "":
             print "%s has no kickstart, skipping" % obj.name
             return True
diff --git a/cobbler/item_distro.py b/cobbler/item_distro.py
index 744bb6d..41caeb9 100644
--- a/cobbler/item_distro.py
+++ b/cobbler/item_distro.py
@@ -37,8 +37,9 @@ class Distro(item.Item):
         self.initrd         = (None,     '<<inherit>>')[is_subobject]
         self.kernel_options = ({},       '<<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
 
@@ -68,6 +69,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)
 
@@ -101,6 +103,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 nonexistant manpage"))
+
     def set_initrd(self,initrd):
         """
        Specifies an initrd image.  Path search works as in set_kernel.
@@ -167,6 +175,7 @@ class Distro(item.Item):
            '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,
@@ -181,6 +190,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
@@ -191,14 +201,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,
-            '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,
+            '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 853b51d..4baed41 100644
--- a/cobbler/modules/cli_distro.py
+++ b/cobbler/modules/cli_distro.py
@@ -40,6 +40,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: some 
numbers")
         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"]):
@@ -89,6 +90,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.5.1

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

Reply via email to