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 <dave(a)starground.it>
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