diff options
author | Michael DeHaan <mdehaan@mdehaan.rdu.redhat.com> | 2007-06-15 14:17:56 -0400 |
---|---|---|
committer | Michael DeHaan <mdehaan@mdehaan.rdu.redhat.com> | 2007-06-15 14:17:56 -0400 |
commit | c85f740ddeb5518d8486237aa4448b7abc981787 (patch) | |
tree | 048719d4c723b96e1496368e0e3dbb46c4583052 /cobbler/item_system.py | |
parent | 5eaa46b5af9e89c881645eab69abfa787a6f7e29 (diff) | |
download | third_party-cobbler-c85f740ddeb5518d8486237aa4448b7abc981787.tar.gz third_party-cobbler-c85f740ddeb5518d8486237aa4448b7abc981787.tar.xz third_party-cobbler-c85f740ddeb5518d8486237aa4448b7abc981787.zip |
Optional override of --kickstart on a per-system basis.
Diffstat (limited to 'cobbler/item_system.py')
-rw-r--r-- | cobbler/item_system.py | 36 |
1 files changed, 30 insertions, 6 deletions
diff --git a/cobbler/item_system.py b/cobbler/item_system.py index 0152411..479430e 100644 --- a/cobbler/item_system.py +++ b/cobbler/item_system.py @@ -38,16 +38,18 @@ class System(item.Item): self.netboot_enabled = (1, '<<inherit>>')[is_subobject] self.hostname = ("", '<<inheirt>>')[is_subobject] self.depth = 2 + self.kickstart = "<<inherit>>" # use value in profile def from_datastruct(self,seed_data): self.parent = self.load_item(seed_data, 'parent') self.name = self.load_item(seed_data, 'name') self.profile = self.load_item(seed_data, 'profile') - self.kernel_options = self.load_item(seed_data, 'kernel_options') - self.ks_meta = self.load_item(seed_data, 'ks_meta') - self.depth = self.load_item(seed_data, 'depth') - + self.kernel_options = self.load_item(seed_data, 'kernel_options', {}) + self.ks_meta = self.load_item(seed_data, 'ks_meta', {}) + self.depth = self.load_item(seed_data, 'depth', 2) + self.kickstart = self.load_item(seed_data, 'kickstart', '<<inherit>>') + # backwards compat, load --ip-address from two possible sources. # the old --pxe-address was a bit of a misnomer, new value is --ip-address @@ -166,7 +168,7 @@ class System(item.Item): return True raise CX(_("invalid format for MAC address")) - def set_ip_address(self,address): + def set_pxe_address(self,address): # backwards compatibility for API users: return self.set_ip_address(address) @@ -210,11 +212,31 @@ class System(item.Item): # NOTE: this validation code does not support inheritable distros at this time. # this is by design as inheritable systems don't make sense. if self.name is None: + raise CX(_("need to specify a name for this object")) return False if self.profile is None: + raise CX(_("need to specify a profile for this system")) return False return True + def set_kickstart(self,kickstart): + """ + Sets the kickstart. This must be a NFS, HTTP, or FTP URL. + Or filesystem path. Minor checking of the URL is performed here. + + NOTE -- usage of the --kickstart parameter in the profile + is STRONGLY encouraged. This is only for exception cases + where a user already has kickstarts made for each system + and can't leverage templating. Profiles provide an important + abstraction layer -- assigning systems to defined and repeatable + roles. + """ + if utils.find_kickstart(kickstart): + self.kickstart = kickstart + return True + raise CX(_("kickstart not found")) + + def to_datastruct(self): return { 'name' : self.name, @@ -226,7 +248,8 @@ class System(item.Item): 'hostname' : self.hostname, 'mac_address' : self.mac_address, 'parent' : self.parent, - 'depth' : self.depth + 'depth' : self.depth, + 'kickstart' : self.kickstart } def printable(self): @@ -240,5 +263,6 @@ class System(item.Item): buf = buf + _("pxe info set? : %s\n") % self.is_pxe_supported() buf = buf + _("config id : %s\n") % utils.get_config_filename(self) buf = buf + _("netboot enabled? : %s\n") % self.netboot_enabled + buf = buf + _("kickstart : %s\n") % self.kickstart return buf |