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 <root(a)cobbler.starground.co.uk>
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