From 95e5a65993da2d0b008222501c6a132bb8a3daa2 Mon Sep 17 00:00:00 2001 From: Michael DeHaan Date: Thu, 1 Nov 2007 17:48:21 -0400 Subject: Added a --server-override parameter, which will be used to specify a different server address for when the server may need to provision boxen on different subnets that therefore need different source URLs and so on. This means cobbler will now be able to represent more than one server address for the same cobbler machine. WUI parts and backend changes to utilize this TBA shortly. --- cobbler/cobbler.py | 6 ++++-- cobbler/item_profile.py | 13 +++++++++++-- cobbler/item_system.py | 40 ++++++++++++++++++++++++++-------------- 3 files changed, 41 insertions(+), 18 deletions(-) (limited to 'cobbler') diff --git a/cobbler/cobbler.py b/cobbler/cobbler.py index 4b035a1..78351f6 100755 --- a/cobbler/cobbler.py +++ b/cobbler/cobbler.py @@ -447,7 +447,8 @@ class BootCLI: '--repos' : lambda(a) : profile.set_repos(a), '--virt-path' : lambda(a) : profile.set_virt_path(a), '--virt-type' : lambda(a) : profile.set_virt_type(a), - '--dhcp-tag' : lambda(a) : profile.set_dhcp_tag(a) + '--dhcp-tag' : lambda(a) : profile.set_dhcp_tag(a), + '--server-override' : lambda(a) : profile.set_server(a) } def on_ok(): if newname is not None: @@ -578,7 +579,8 @@ class BootCLI: '--kickstart' : lambda(a) : sys.set_kickstart(a), '--netboot-enabled' : lambda(a) : sys.set_netboot_enabled(a), '--virt-path' : lambda(a) : sys.set_virt_path(a), - '--virt-type' : lambda(a) : sys.set_virt_type(a) + '--virt-type' : lambda(a) : sys.set_virt_type(a), + '--server-override' : lambda(a) : sys.set_server(a) } def on_ok(): diff --git a/cobbler/item_profile.py b/cobbler/item_profile.py index 47750ad..4e1c7c1 100644 --- a/cobbler/item_profile.py +++ b/cobbler/item_profile.py @@ -48,6 +48,7 @@ class Profile(item.Item): self.virt_bridge = (self.settings.default_virt_bridge, '<>')[is_subobject] self.dhcp_tag = ("default", '<>')[is_subobject] self.parent = '' + self.server = "<>" def from_datastruct(self,seed_data): """ @@ -63,6 +64,7 @@ class Profile(item.Item): self.repos = self.load_item(seed_data,'repos', []) self.depth = self.load_item(seed_data,'depth', 1) self.dhcp_tag = self.load_item(seed_data,'dhcp_tag', 'default') + self.server = self.load_item(seed_data,'server', '<>') # backwards compatibility if type(self.repos) != list: @@ -128,6 +130,10 @@ class Profile(item.Item): self.dhcp_tag = dhcp_tag return True + def set_server(self,server): + self.server = server + return True + def set_repos(self,repos): # allow the magic inherit string to persist @@ -333,7 +339,8 @@ class Profile(item.Item): 'depth' : self.depth, 'virt_type' : self.virt_type, 'virt_path' : self.virt_path, - 'dhcp_tag' : self.dhcp_tag + 'dhcp_tag' : self.dhcp_tag, + 'server' : self.server } def printable(self): @@ -356,6 +363,7 @@ class Profile(item.Item): buf = buf + _("virt cpus : %s\n") % self.virt_cpus buf = buf + _("repos : %s\n") % self.repos buf = buf + _("dhcp tag : %s\n") % self.dhcp_tag + buf = buf + _("server : %s\n") % self.server return buf def remote_methods(self): @@ -374,6 +382,7 @@ class Profile(item.Item): 'virt-type' : self.set_virt_type, 'virt-bridge' : self.set_virt_bridge, 'virt-cpus' : self.set_virt_cpus, - 'dhcp-tag' : self.set_dhcp_tag + 'dhcp-tag' : self.set_dhcp_tag, + 'server' : self.server } diff --git a/cobbler/item_system.py b/cobbler/item_system.py index 749919a..9fa4504 100644 --- a/cobbler/item_system.py +++ b/cobbler/item_system.py @@ -37,8 +37,9 @@ class System(item.Item): self.netboot_enabled = (1, '<>')[is_subobject] self.depth = 2 self.kickstart = "<>" # use value in profile - self.virt_path = "<>" # use value in profile - self.virt_type = "<>" # use value in profile + self.virt_path = "<>" # "" + self.virt_type = "<>" # "" + self.server = "<>" # "" (or settings) def delete_interface(self,name): """ @@ -87,6 +88,7 @@ class System(item.Item): self.virt_path = self.load_item(seed_data, 'virt_path', '<>') self.virt_type = self.load_item(seed_data, 'virt_type', '<>') self.netboot_enabled = self.load_item(seed_data, 'netboot_enabled', 1) + self.server = self.load_item(seed_data, 'server', '<>') # backwards compat, these settings are now part of the interfaces data structure # and will contain data only in upgrade scenarios. @@ -152,6 +154,14 @@ class System(item.Item): return True + def set_server(self,server): + """ + If a system can't reach the boot server at the value configured in settings + because it doesn't have the same name on it's subnet this is there for an override. + """ + self.server = server + return True + def get_mac_address(self,interface="intf0"): """ Get the mac address, which may be implicit in the object name or explicit with --mac-address. @@ -332,8 +342,8 @@ class System(item.Item): 'kickstart' : self.kickstart, 'virt_type' : self.virt_type, 'virt_path' : self.virt_path, - #'dhcp_tag' : self.dhcp_tag, - 'interfaces' : self.interfaces + 'interfaces' : self.interfaces, + 'server' : self.server } def printable(self): @@ -346,6 +356,7 @@ class System(item.Item): buf = buf + _("kickstart : %s\n") % self.kickstart buf = buf + _("virt type : %s\n") % self.virt_type buf = buf + _("virt path : %s\n") % self.virt_path + buf = buf + _("server : %s\n") % self.server counter = 0 for (name,x) in self.interfaces.iteritems(): @@ -380,16 +391,17 @@ class System(item.Item): def remote_methods(self): return { - 'name' : self.set_name, - 'profile' : self.set_profile, - 'kopts' : self.set_kernel_options, - 'ksmeta' : self.set_ksmeta, - 'hostname' : self.set_hostname, - 'kickstart' : self.set_kickstart, - 'netboot-enabled' : self.set_netboot_enabled, - 'virt-path' : self.set_virt_path, - 'virt-type' : self.set_virt_type, + 'name' : self.set_name, + 'profile' : self.set_profile, + 'kopts' : self.set_kernel_options, + 'ksmeta' : self.set_ksmeta, + 'hostname' : self.set_hostname, + 'kickstart' : self.set_kickstart, + 'netboot-enabled' : self.set_netboot_enabled, + 'virt-path' : self.set_virt_path, + 'virt-type' : self.set_virt_type, 'modify-interface' : self.modify_interface, - 'delete-interface' : self.delete_interface + 'delete-interface' : self.delete_interface, + 'server' : self.set_server } -- cgit