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@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)
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@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)
Dave Hatton wrote:
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
cobbler mailing list cobbler@lists.fedorahosted.org https://fedorahosted.org/mailman/listinfo/cobbler
Can you make "cobbler import" auto assign this? It should be detected during the part that figures out which kickstart can use.
If you add that, I'll apply it.
Also, for consistency, the command line option should be --os-version, though "os_version" is the proper syntax for the field name.
Thanks!
--Michael
cobbler@lists.fedorahosted.org