diff options
author | Rob Lazzurs <rob@lazzurs.net> | 2009-03-06 13:11:54 +0000 |
---|---|---|
committer | Rob Lazzurs <rob@lazzurs.net> | 2009-03-06 13:11:54 +0000 |
commit | 2df64c1b0764f682d04596d3c88716b63eda951a (patch) | |
tree | e7cde412250b391741472f9c2d9ae261d3e86b4b /cobbler | |
parent | 7653a96c3997d0beb92267a103c071c311ca899a (diff) | |
download | cobbler-2df64c1b0764f682d04596d3c88716b63eda951a.tar.gz cobbler-2df64c1b0764f682d04596d3c88716b63eda951a.tar.xz cobbler-2df64c1b0764f682d04596d3c88716b63eda951a.zip |
Adding option to define a Spacewalk management server at the distro/profile/system level
Diffstat (limited to 'cobbler')
-rw-r--r-- | cobbler/item_distro.py | 156 | ||||
-rw-r--r-- | cobbler/item_profile.py | 238 | ||||
-rw-r--r-- | cobbler/item_system.py | 251 | ||||
-rw-r--r-- | cobbler/modules/cli_distro.py | 3 | ||||
-rw-r--r-- | cobbler/modules/cli_profile.py | 3 | ||||
-rw-r--r-- | cobbler/modules/cli_system.py | 3 | ||||
-rw-r--r-- | cobbler/remote.py | 3 | ||||
-rw-r--r-- | cobbler/utils.py | 4 | ||||
-rw-r--r-- | cobbler/webui/CobblerWeb.py | 3 |
9 files changed, 353 insertions, 311 deletions
diff --git a/cobbler/item_distro.py b/cobbler/item_distro.py index 9b34d2e7..9be4f7d3 100644 --- a/cobbler/item_distro.py +++ b/cobbler/item_distro.py @@ -41,24 +41,25 @@ class Distro(item.Item): """ Reset this object. """ - self.name = None - self.uid = "" - self.owners = self.settings.default_ownership - self.kernel = None - self.initrd = None - self.kernel_options = {} - self.kernel_options_post = {} - self.ks_meta = {} - self.arch = 'i386' - self.breed = 'redhat' - self.os_version = '' - self.source_repos = [] - self.mgmt_classes = [] - self.depth = 0 - self.template_files = {} - self.comment = "" - self.tree_build_time = 0 - self.redhat_management_key = "<<inherit>>" + self.name = None + self.uid = "" + self.owners = self.settings.default_ownership + self.kernel = None + self.initrd = None + self.kernel_options = {} + self.kernel_options_post = {} + self.ks_meta = {} + self.arch = 'i386' + self.breed = 'redhat' + self.os_version = '' + self.source_repos = [] + self.mgmt_classes = [] + self.depth = 0 + self.template_files = {} + self.comment = "" + self.tree_build_time = 0 + self.redhat_management_key = "<<inherit>>" + self.redhat_management_server = "<<inherit>>" def make_clone(self): ds = self.to_datastruct() @@ -77,23 +78,24 @@ class Distro(item.Item): """ Modify this object to take on values in seed_data """ - self.parent = self.load_item(seed_data,'parent') - self.name = self.load_item(seed_data,'name') - self.owners = self.load_item(seed_data,'owners',self.settings.default_ownership) - self.kernel = self.load_item(seed_data,'kernel') - self.initrd = self.load_item(seed_data,'initrd') - self.kernel_options = self.load_item(seed_data,'kernel_options') - self.kernel_options_post = self.load_item(seed_data,'kernel_options_post') - 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) - self.mgmt_classes = self.load_item(seed_data,'mgmt_classes',[]) - self.template_files = self.load_item(seed_data,'template_files',{}) - self.comment = self.load_item(seed_data,'comment') - self.redhat_management_key = self.load_item(seed_data,'redhat_management_key',"<<inherit>>") + self.parent = self.load_item(seed_data,'parent') + self.name = self.load_item(seed_data,'name') + self.owners = self.load_item(seed_data,'owners',self.settings.default_ownership) + self.kernel = self.load_item(seed_data,'kernel') + self.initrd = self.load_item(seed_data,'initrd') + self.kernel_options = self.load_item(seed_data,'kernel_options') + self.kernel_options_post = self.load_item(seed_data,'kernel_options_post') + 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) + self.mgmt_classes = self.load_item(seed_data,'mgmt_classes',[]) + self.template_files = self.load_item(seed_data,'template_files',{}) + self.comment = self.load_item(seed_data,'comment') + self.redhat_management_key = self.load_item(seed_data,'redhat_management_key',"<<inherit>>") + self.redhat_management_server = self.load_item(seed_data,'redhat_management_server',"<<inherit>>") # backwards compatibility enforcement self.set_arch(self.arch) @@ -159,6 +161,9 @@ class Distro(item.Item): def set_redhat_management_key(self,key): return utils.set_redhat_management_key(self,key) + + def set_redhat_management_server(self,server): + return utils.set_redhat_management_server(self,server) def set_source_repos(self, repos): """ @@ -209,27 +214,28 @@ 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, - 'mgmt_classes' : self.mgmt_classes, - 'template_files' : self.template_files, - '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, - 'comment' : self.comment, - 'tree_build_time' : self.tree_build_time, - 'ctime' : self.ctime, - 'mtime' : self.mtime, - 'uid' : self.uid, - 'redhat_management_key' : self.redhat_management_key + '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, + 'mgmt_classes' : self.mgmt_classes, + 'template_files' : self.template_files, + '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, + 'comment' : self.comment, + 'tree_build_time' : self.tree_build_time, + 'ctime' : self.ctime, + 'mtime' : self.mtime, + 'uid' : self.uid, + 'redhat_management_key' : self.redhat_management_key, + 'redhat_management_server' : self.redhat_management_server } def printable(self): @@ -257,28 +263,30 @@ class Distro(item.Item): buf = buf + _("owners : %s\n") % self.owners buf = buf + _("post kernel options : %s\n") % self.kernel_options_post buf = buf + _("redhat mgmt key : %s\n") % self.redhat_management_key + buf = buf + _("redhat mgmt server : %s\n") % self.redhat_management_server buf = buf + _("template files : %s\n") % self.template_files return buf 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, - '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, - 'os_version' : self.set_os_version, - 'owners' : self.set_owners, - 'mgmt-classes' : self.set_mgmt_classes, - 'mgmt_classes' : self.set_mgmt_classes, - 'template-files': self.set_template_files, - 'template_files': self.set_template_files, - 'comment' : self.set_comment, - 'redhat_management_key' : self.set_redhat_management_key + 'name' : self.set_name, + 'kernel' : self.set_kernel, + 'initrd' : self.set_initrd, + 'kopts' : self.set_kernel_options, + 'kopts-post' : self.set_kernel_options_post, + '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, + 'os_version' : self.set_os_version, + 'owners' : self.set_owners, + 'mgmt-classes' : self.set_mgmt_classes, + 'mgmt_classes' : self.set_mgmt_classes, + 'template-files' : self.set_template_files, + 'template_files' : self.set_template_files, + 'comment' : self.set_comment, + 'redhat_management_key' : self.set_redhat_management_key, + 'redhat_management_server' : self.set_redhat_management_server } diff --git a/cobbler/item_profile.py b/cobbler/item_profile.py index 9396e3cb..3f9e9460 100644 --- a/cobbler/item_profile.py +++ b/cobbler/item_profile.py @@ -42,62 +42,64 @@ class Profile(item.Item): """ Reset this object. """ - self.name = None - self.uid = "" - self.random_id = "" - self.owners = self.settings.default_ownership - self.distro = (None, '<<inherit>>')[is_subobject] - self.enable_menu = (self.settings.enable_menu, '<<inherit>>')[is_subobject] - self.kickstart = (self.settings.default_kickstart , '<<inherit>>')[is_subobject] - self.kernel_options = ({}, '<<inherit>>')[is_subobject] - self.kernel_options_post = ({}, '<<inherit>>')[is_subobject] - self.ks_meta = ({}, '<<inherit>>')[is_subobject] - self.template_files = ({}, '<<inherit>>')[is_subobject] - self.virt_cpus = (1, '<<inherit>>')[is_subobject] - self.virt_file_size = (self.settings.default_virt_file_size, '<<inherit>>')[is_subobject] - self.virt_ram = (self.settings.default_virt_ram, '<<inherit>>')[is_subobject] - self.repos = ([], '<<inherit>>')[is_subobject] - self.depth = 1 - self.virt_type = (self.settings.default_virt_type, '<<inherit>>')[is_subobject] - self.virt_path = ("", '<<inherit>>')[is_subobject] - self.virt_bridge = (self.settings.default_virt_bridge, '<<inherit>>')[is_subobject] - self.dhcp_tag = ("default", '<<inherit>>')[is_subobject] - self.mgmt_classes = ([], '<<inherit>>')[is_subobject] - self.parent = '' - self.server = "<<inherit>>" - self.comment = "" - self.ctime = 0 - self.mtime = 0 - self.name_servers = (self.settings.default_name_servers,[])[is_subobject] - self.name_servers_search = (self.settings.default_name_servers_search,[])[is_subobject] - self.redhat_management_key = "<<inherit>>" + self.name = None + self.uid = "" + self.random_id = "" + self.owners = self.settings.default_ownership + self.distro = (None, '<<inherit>>')[is_subobject] + self.enable_menu = (self.settings.enable_menu, '<<inherit>>')[is_subobject] + self.kickstart = (self.settings.default_kickstart , '<<inherit>>')[is_subobject] + self.kernel_options = ({}, '<<inherit>>')[is_subobject] + self.kernel_options_post = ({}, '<<inherit>>')[is_subobject] + self.ks_meta = ({}, '<<inherit>>')[is_subobject] + self.template_files = ({}, '<<inherit>>')[is_subobject] + self.virt_cpus = (1, '<<inherit>>')[is_subobject] + self.virt_file_size = (self.settings.default_virt_file_size, '<<inherit>>')[is_subobject] + self.virt_ram = (self.settings.default_virt_ram, '<<inherit>>')[is_subobject] + self.repos = ([], '<<inherit>>')[is_subobject] + self.depth = 1 + self.virt_type = (self.settings.default_virt_type, '<<inherit>>')[is_subobject] + self.virt_path = ("", '<<inherit>>')[is_subobject] + self.virt_bridge = (self.settings.default_virt_bridge, '<<inherit>>')[is_subobject] + self.dhcp_tag = ("default", '<<inherit>>')[is_subobject] + self.mgmt_classes = ([], '<<inherit>>')[is_subobject] + self.parent = '' + self.server = "<<inherit>>" + self.comment = "" + self.ctime = 0 + self.mtime = 0 + self.name_servers = (self.settings.default_name_servers,[])[is_subobject] + self.name_servers_search = (self.settings.default_name_servers_search,[])[is_subobject] + self.redhat_management_key = "<<inherit>>" + self.redhat_management_server = "<<inherit>>" def from_datastruct(self,seed_data): """ Load this object's properties based on seed_data """ - self.parent = self.load_item(seed_data,'parent','') - self.name = self.load_item(seed_data,'name') - self.owners = self.load_item(seed_data,'owners',self.settings.default_ownership) - self.distro = self.load_item(seed_data,'distro') - self.enable_menu = self.load_item(seed_data,'enable_menu', self.settings.enable_menu) - self.kickstart = self.load_item(seed_data,'kickstart') - self.kernel_options = self.load_item(seed_data,'kernel_options') - self.kernel_options_post = self.load_item(seed_data,'kernel_options_post') - self.ks_meta = self.load_item(seed_data,'ks_meta') - self.template_files = self.load_item(seed_data,'template_files', {}) - 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', '<<inherit>>') - self.mgmt_classes = self.load_item(seed_data,'mgmt_classes', []) - self.comment = self.load_item(seed_data,'comment','') - self.ctime = self.load_item(seed_data,'ctime',0) - self.mtime = self.load_item(seed_data,'mtime',0) - self.name_servers = self.load_item(seed_data,'name_servers',[]) - self.name_servers_search = self.load_item(seed_data,'name_servers_search',[]) - self.redhat_management_key = self.load_item(seed_data,'redhat_management_key', '<<inherit>>') + self.parent = self.load_item(seed_data,'parent','') + self.name = self.load_item(seed_data,'name') + self.owners = self.load_item(seed_data,'owners',self.settings.default_ownership) + self.distro = self.load_item(seed_data,'distro') + self.enable_menu = self.load_item(seed_data,'enable_menu', self.settings.enable_menu) + self.kickstart = self.load_item(seed_data,'kickstart') + self.kernel_options = self.load_item(seed_data,'kernel_options') + self.kernel_options_post = self.load_item(seed_data,'kernel_options_post') + self.ks_meta = self.load_item(seed_data,'ks_meta') + self.template_files = self.load_item(seed_data,'template_files', {}) + 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', '<<inherit>>') + self.mgmt_classes = self.load_item(seed_data,'mgmt_classes', []) + self.comment = self.load_item(seed_data,'comment','') + self.ctime = self.load_item(seed_data,'ctime',0) + self.mtime = self.load_item(seed_data,'mtime',0) + self.name_servers = self.load_item(seed_data,'name_servers',[]) + self.name_servers_search = self.load_item(seed_data,'name_servers_search',[]) + self.redhat_management_key = self.load_item(seed_data,'redhat_management_key', '<<inherit>>') + self.redhat_management_server = self.load_item(seed_data,'redhat_management_server', '<<inherit>>') # backwards compatibility if type(self.repos) != list: @@ -181,6 +183,9 @@ class Profile(item.Item): def set_redhat_management_key(self,key): return utils.set_redhat_management_key(self,key) + def set_redhat_management_server(self,server): + return utils.set_redhat_management_server(self,server) + def set_name_servers(self,data): # FIXME: move to utils since shared with system data = utils.input_string_or_list(data, delim=" ") @@ -287,35 +292,36 @@ class Profile(item.Item): Return hash representation for the serializer """ return { - 'name' : self.name, - 'owners' : self.owners, - 'distro' : self.distro, - 'enable_menu' : self.enable_menu, - 'kickstart' : self.kickstart, - 'kernel_options' : self.kernel_options, - 'kernel_options_post' : self.kernel_options_post, - 'virt_file_size' : self.virt_file_size, - 'virt_ram' : self.virt_ram, - 'virt_bridge' : self.virt_bridge, - 'virt_cpus' : self.virt_cpus, - 'ks_meta' : self.ks_meta, - 'template_files' : self.template_files, - 'repos' : self.repos, - 'parent' : self.parent, - 'depth' : self.depth, - 'virt_type' : self.virt_type, - 'virt_path' : self.virt_path, - 'dhcp_tag' : self.dhcp_tag, - 'server' : self.server, - 'mgmt_classes' : self.mgmt_classes, - 'comment' : self.comment, - 'ctime' : self.ctime, - 'mtime' : self.mtime, - 'name_servers' : self.name_servers, - 'name_servers_search' : self.name_servers_search, - 'uid' : self.uid, - 'random_id' : self.random_id, - 'redhat_management_key' : self.redhat_management_key + 'name' : self.name, + 'owners' : self.owners, + 'distro' : self.distro, + 'enable_menu' : self.enable_menu, + 'kickstart' : self.kickstart, + 'kernel_options' : self.kernel_options, + 'kernel_options_post' : self.kernel_options_post, + 'virt_file_size' : self.virt_file_size, + 'virt_ram' : self.virt_ram, + 'virt_bridge' : self.virt_bridge, + 'virt_cpus' : self.virt_cpus, + 'ks_meta' : self.ks_meta, + 'template_files' : self.template_files, + 'repos' : self.repos, + 'parent' : self.parent, + 'depth' : self.depth, + 'virt_type' : self.virt_type, + 'virt_path' : self.virt_path, + 'dhcp_tag' : self.dhcp_tag, + 'server' : self.server, + 'mgmt_classes' : self.mgmt_classes, + 'comment' : self.comment, + 'ctime' : self.ctime, + 'mtime' : self.mtime, + 'name_servers' : self.name_servers, + 'name_servers_search' : self.name_servers_search, + 'uid' : self.uid, + 'random_id' : self.random_id, + 'redhat_management_key' : self.redhat_management_key, + 'redhat_management_server' : self.redhat_management_server } def printable(self): @@ -341,6 +347,7 @@ class Profile(item.Item): buf = buf + _("owners : %s\n") % self.owners buf = buf + _("post kernel options : %s\n") % self.kernel_options_post buf = buf + _("redhat mgmt key : %s\n") % self.redhat_management_key + buf = buf + _("redhat mgmt server : %s\n") % self.redhat_management_server buf = buf + _("repos : %s\n") % self.repos buf = buf + _("server : %s\n") % self.server buf = buf + _("template_files : %s\n") % self.template_files @@ -355,41 +362,42 @@ class Profile(item.Item): def remote_methods(self): return { - 'name' : self.set_name, - 'parent' : self.set_parent, - 'profile' : self.set_name, - 'distro' : self.set_distro, - 'enable-menu' : self.set_enable_menu, - 'enable_menu' : self.set_enable_menu, - 'kickstart' : self.set_kickstart, - 'kopts' : self.set_kernel_options, - 'kopts-post' : self.set_kernel_options_post, - 'kopts_post' : self.set_kernel_options_post, - 'virt-file-size' : self.set_virt_file_size, - 'virt_file_size' : self.set_virt_file_size, - 'virt-ram' : self.set_virt_ram, - 'virt_ram' : self.set_virt_ram, - 'ksmeta' : self.set_ksmeta, - 'template-files' : self.set_template_files, - 'template_files' : self.set_template_files, - 'repos' : self.set_repos, - 'virt-path' : self.set_virt_path, - 'virt_path' : self.set_virt_path, - 'virt-type' : self.set_virt_type, - 'virt_type' : self.set_virt_type, - 'virt-bridge' : self.set_virt_bridge, - 'virt_bridge' : self.set_virt_bridge, - 'virt-cpus' : self.set_virt_cpus, - 'virt_cpus' : self.set_virt_cpus, - 'dhcp-tag' : self.set_dhcp_tag, - 'dhcp_tag' : self.set_dhcp_tag, - 'server' : self.set_server, - 'owners' : self.set_owners, - 'mgmt-classes' : self.set_mgmt_classes, - 'mgmt_classes' : self.set_mgmt_classes, - 'comment' : self.set_comment, - 'name_servers' : self.set_name_servers, - 'name_servers_search' : self.set_name_servers_search, - 'redhat_management_key' : self.set_redhat_management_key + 'name' : self.set_name, + 'parent' : self.set_parent, + 'profile' : self.set_name, + 'distro' : self.set_distro, + 'enable-menu' : self.set_enable_menu, + 'enable_menu' : self.set_enable_menu, + 'kickstart' : self.set_kickstart, + 'kopts' : self.set_kernel_options, + 'kopts-post' : self.set_kernel_options_post, + 'kopts_post' : self.set_kernel_options_post, + 'virt-file-size' : self.set_virt_file_size, + 'virt_file_size' : self.set_virt_file_size, + 'virt-ram' : self.set_virt_ram, + 'virt_ram' : self.set_virt_ram, + 'ksmeta' : self.set_ksmeta, + 'template-files' : self.set_template_files, + 'template_files' : self.set_template_files, + 'repos' : self.set_repos, + 'virt-path' : self.set_virt_path, + 'virt_path' : self.set_virt_path, + 'virt-type' : self.set_virt_type, + 'virt_type' : self.set_virt_type, + 'virt-bridge' : self.set_virt_bridge, + 'virt_bridge' : self.set_virt_bridge, + 'virt-cpus' : self.set_virt_cpus, + 'virt_cpus' : self.set_virt_cpus, + 'dhcp-tag' : self.set_dhcp_tag, + 'dhcp_tag' : self.set_dhcp_tag, + 'server' : self.set_server, + 'owners' : self.set_owners, + 'mgmt-classes' : self.set_mgmt_classes, + 'mgmt_classes' : self.set_mgmt_classes, + 'comment' : self.set_comment, + 'name_servers' : self.set_name_servers, + 'name_servers_search' : self.set_name_servers_search, + 'redhat_management_key' : self.set_redhat_management_key, + 'redhat_management_server' : self.set_redhat_management_server } diff --git a/cobbler/item_system.py b/cobbler/item_system.py index baa8980b..ce35817e 100644 --- a/cobbler/item_system.py +++ b/cobbler/item_system.py @@ -38,47 +38,48 @@ class System(item.Item): return cloned def clear(self,is_subobject=False): - self.name = None - self.uid = "" - self.owners = self.settings.default_ownership - self.profile = None - self.image = None - self.kernel_options = {} - self.kernel_options_post = {} - self.ks_meta = {} - self.interfaces = {} - self.netboot_enabled = True - self.depth = 2 - self.mgmt_classes = [] - self.template_files = {} - self.kickstart = "<<inherit>>" # use value in profile - self.server = "<<inherit>>" # "" (or settings) - self.virt_path = "<<inherit>>" # "" - self.virt_type = "<<inherit>>" # "" - self.virt_cpus = "<<inherit>>" # "" - self.virt_file_size = "<<inherit>>" # "" - self.virt_ram = "<<inherit>>" # "" - self.virt_type = "<<inherit>>" # "" - self.virt_path = "<<inherit>>" # "" - self.virt_bridge = "<<inherit>>" # "" - self.comment = "" - self.ctime = 0 - self.mtime = 0 - self.uid = "" - self.random_id = "" - self.power_type = self.settings.power_management_default_type - self.power_address = "" - self.power_user = "" - self.power_pass = "" - self.power_id = "" - self.hostname = "" - self.gateway = "" - self.name_servers = [] - self.name_servers_search = [] - self.bonding = "" - self.bonding_master = "" - self.bonding_opts = "" - self.redhat_management_key = "<<inherit>>" + self.name = None + self.uid = "" + self.owners = self.settings.default_ownership + self.profile = None + self.image = None + self.kernel_options = {} + self.kernel_options_post = {} + self.ks_meta = {} + self.interfaces = {} + self.netboot_enabled = True + self.depth = 2 + self.mgmt_classes = [] + self.template_files = {} + self.kickstart = "<<inherit>>" # use value in profile + self.server = "<<inherit>>" # "" (or settings) + self.virt_path = "<<inherit>>" # "" + self.virt_type = "<<inherit>>" # "" + self.virt_cpus = "<<inherit>>" # "" + self.virt_file_size = "<<inherit>>" # "" + self.virt_ram = "<<inherit>>" # "" + self.virt_type = "<<inherit>>" # "" + self.virt_path = "<<inherit>>" # "" + self.virt_bridge = "<<inherit>>" # "" + self.comment = "" + self.ctime = 0 + self.mtime = 0 + self.uid = "" + self.random_id = "" + self.power_type = self.settings.power_management_default_type + self.power_address = "" + self.power_user = "" + self.power_pass = "" + self.power_id = "" + self.hostname = "" + self.gateway = "" + self.name_servers = [] + self.name_servers_search = [] + self.bonding = "" + self.bonding_master = "" + self.bonding_opts = "" + self.redhat_management_key = "<<inherit>>" + self.redhat_management_server = "<<inherit>>" def delete_interface(self,name): """ @@ -178,6 +179,7 @@ class System(item.Item): self.name_servers = self.load_item(seed_data, 'name_servers', '<<inherit>>') self.name_servers_search = self.load_item(seed_data, 'name_servers_search', '<<inherit>>') self.redhat_management_key = self.load_item(seed_data, 'redhat_management_key', '<<inherit>>') + self.redhat_management_server = self.load_item(seed_data, 'redhat_management_server', '<<inherit>>') # virt specific @@ -339,6 +341,9 @@ class System(item.Item): def set_redhat_management_key(self,key): return utils.set_redhat_management_key(self,key) + def set_redhat_management_server(self,server): + return utils.set_redhat_management_server(self,server) + def set_server(self,server): """ If a system can't reach the boot server at the value configured in settings @@ -637,42 +642,43 @@ class System(item.Item): def to_datastruct(self): return { - 'name' : self.name, - 'uid' : self.uid, - 'random_id' : self.random_id, - 'kernel_options' : self.kernel_options, - 'kernel_options_post' : self.kernel_options_post, - 'depth' : self.depth, - 'interfaces' : self.interfaces, - 'ks_meta' : self.ks_meta, - 'kickstart' : self.kickstart, - 'netboot_enabled' : self.netboot_enabled, - 'owners' : self.owners, - 'parent' : self.parent, - 'profile' : self.profile, - 'image' : self.image, - 'server' : self.server, - 'virt_cpus' : self.virt_cpus, - 'virt_bridge' : self.virt_bridge, - 'virt_file_size' : self.virt_file_size, - 'virt_path' : self.virt_path, - 'virt_ram' : self.virt_ram, - 'virt_type' : self.virt_type, - 'mgmt_classes' : self.mgmt_classes, - 'template_files' : self.template_files, - 'comment' : self.comment, - 'ctime' : self.ctime, - 'mtime' : self.mtime, - 'power_type' : self.power_type, - 'power_address' : self.power_address, - 'power_user' : self.power_user, - 'power_pass' : self.power_pass, - 'power_id' : self.power_id, - 'hostname' : self.hostname, - 'gateway' : self.gateway, - 'name_servers' : self.name_servers, - 'name_servers_search' : self.name_servers_search, - 'redhat_management_key' : self.redhat_management_key + 'name' : self.name, + 'uid' : self.uid, + 'random_id' : self.random_id, + 'kernel_options' : self.kernel_options, + 'kernel_options_post' : self.kernel_options_post, + 'depth' : self.depth, + 'interfaces' : self.interfaces, + 'ks_meta' : self.ks_meta, + 'kickstart' : self.kickstart, + 'netboot_enabled' : self.netboot_enabled, + 'owners' : self.owners, + 'parent' : self.parent, + 'profile' : self.profile, + 'image' : self.image, + 'server' : self.server, + 'virt_cpus' : self.virt_cpus, + 'virt_bridge' : self.virt_bridge, + 'virt_file_size' : self.virt_file_size, + 'virt_path' : self.virt_path, + 'virt_ram' : self.virt_ram, + 'virt_type' : self.virt_type, + 'mgmt_classes' : self.mgmt_classes, + 'template_files' : self.template_files, + 'comment' : self.comment, + 'ctime' : self.ctime, + 'mtime' : self.mtime, + 'power_type' : self.power_type, + 'power_address' : self.power_address, + 'power_user' : self.power_user, + 'power_pass' : self.power_pass, + 'power_id' : self.power_id, + 'hostname' : self.hostname, + 'gateway' : self.gateway, + 'name_servers' : self.name_servers, + 'name_servers_search' : self.name_servers_search, + 'redhat_management_key' : self.redhat_management_key, + 'redhat_management_server' : self.redhat_management_server } def printable(self): @@ -755,51 +761,52 @@ class System(item.Item): # compatibility. At some point they may be removed. return { - 'name' : self.set_name, - 'profile' : self.set_profile, - 'image' : self.set_image, - 'kopts' : self.set_kernel_options, - 'kopts-post' : self.set_kernel_options_post, - 'kopts_post' : self.set_kernel_options_post, - 'ksmeta' : self.set_ksmeta, - 'kickstart' : self.set_kickstart, - 'netboot-enabled' : self.set_netboot_enabled, - 'netboot_enabled' : self.set_netboot_enabled, - 'virt-path' : self.set_virt_path, - 'virt_path' : self.set_virt_path, - 'virt-type' : self.set_virt_type, - 'virt_type' : self.set_virt_type, - 'modify-interface' : self.modify_interface, - 'modify_interface' : self.modify_interface, - 'delete-interface' : self.delete_interface, - 'delete_interface' : self.delete_interface, - 'virt-path' : self.set_virt_path, - 'virt_path' : self.set_virt_path, - 'virt-ram' : self.set_virt_ram, - 'virt_ram' : self.set_virt_ram, - 'virt-type' : self.set_virt_type, - 'virt_type' : self.set_virt_type, - 'virt-cpus' : self.set_virt_cpus, - 'virt_cpus' : self.set_virt_cpus, - 'virt-file-size' : self.set_virt_file_size, - 'virt_file_size' : self.set_virt_file_size, - 'server' : self.set_server, - 'owners' : self.set_owners, - 'mgmt-classes' : self.set_mgmt_classes, - 'mgmt_classes' : self.set_mgmt_classes, - 'template-files' : self.set_template_files, - 'template_files' : self.set_template_files, - 'comment' : self.set_comment, - 'power_type' : self.set_power_type, - 'power_address' : self.set_power_address, - 'power_user' : self.set_power_user, - 'power_pass' : self.set_power_pass, - 'power_id' : self.set_power_id, - 'hostname' : self.set_hostname, - 'gateway' : self.set_gateway, - 'name_servers' : self.set_name_servers, - 'name_servers_search' : self.set_name_servers_search, - 'redhat_management_key' : self.set_redhat_management_key + 'name' : self.set_name, + 'profile' : self.set_profile, + 'image' : self.set_image, + 'kopts' : self.set_kernel_options, + 'kopts-post' : self.set_kernel_options_post, + 'kopts_post' : self.set_kernel_options_post, + 'ksmeta' : self.set_ksmeta, + 'kickstart' : self.set_kickstart, + 'netboot-enabled' : self.set_netboot_enabled, + 'netboot_enabled' : self.set_netboot_enabled, + 'virt-path' : self.set_virt_path, + 'virt_path' : self.set_virt_path, + 'virt-type' : self.set_virt_type, + 'virt_type' : self.set_virt_type, + 'modify-interface' : self.modify_interface, + 'modify_interface' : self.modify_interface, + 'delete-interface' : self.delete_interface, + 'delete_interface' : self.delete_interface, + 'virt-path' : self.set_virt_path, + 'virt_path' : self.set_virt_path, + 'virt-ram' : self.set_virt_ram, + 'virt_ram' : self.set_virt_ram, + 'virt-type' : self.set_virt_type, + 'virt_type' : self.set_virt_type, + 'virt-cpus' : self.set_virt_cpus, + 'virt_cpus' : self.set_virt_cpus, + 'virt-file-size' : self.set_virt_file_size, + 'virt_file_size' : self.set_virt_file_size, + 'server' : self.set_server, + 'owners' : self.set_owners, + 'mgmt-classes' : self.set_mgmt_classes, + 'mgmt_classes' : self.set_mgmt_classes, + 'template-files' : self.set_template_files, + 'template_files' : self.set_template_files, + 'comment' : self.set_comment, + 'power_type' : self.set_power_type, + 'power_address' : self.set_power_address, + 'power_user' : self.set_power_user, + 'power_pass' : self.set_power_pass, + 'power_id' : self.set_power_id, + 'hostname' : self.set_hostname, + 'gateway' : self.set_gateway, + 'name_servers' : self.set_name_servers, + 'name_servers_search' : self.set_name_servers_search, + 'redhat_management_key' : self.set_redhat_management_key, + 'redhat_management_server' : self.set_redhat_management_server } diff --git a/cobbler/modules/cli_distro.py b/cobbler/modules/cli_distro.py index 2472f918..7105b403 100644 --- a/cobbler/modules/cli_distro.py +++ b/cobbler/modules/cli_distro.py @@ -61,6 +61,7 @@ class DistroFunction(commands.CobblerFunction): p.add_option("--ksmeta", dest="ksmeta", help="ex: 'blippy=7'") p.add_option("--mgmt-classes", dest="mgmt_classes", help="list of config management classes (for Puppet, etc)") p.add_option("--redhat-management-key", dest="redhat_management_key", help="authentication token for RHN/Spacewalk/Satellite") + p.add_option("--redhat-management-server", dest="redhat_management_server", help="RHN/Spacewalk/Satellite server") p.add_option("--template-files", dest="template_files", help="specify files to be generated from templates during a sync") p.add_option("--name", dest="name", help="ex: 'RHEL-5-i386' (REQUIRED)") @@ -118,6 +119,8 @@ class DistroFunction(commands.CobblerFunction): obj.set_template_files(self.options.template_files,self.options.inplace) if self.options.redhat_management_key is not None: obj.set_redhat_management_key(self.options.redhat_management_key) + if self.options.redhat_management_server is not None: + obj.set_redhat_management_server(self.options.redhat_management_server) return self.object_manipulator_finish(obj, self.api.distros, self.options) diff --git a/cobbler/modules/cli_profile.py b/cobbler/modules/cli_profile.py index f5933938..a3ca5d4c 100644 --- a/cobbler/modules/cli_profile.py +++ b/cobbler/modules/cli_profile.py @@ -89,6 +89,7 @@ class ProfileFunction(commands.CobblerFunction): if not self.matches_args(args,["dumpvars","remove","report","getks","list"]): p.add_option("--redhat-management-key", dest="redhat_management_key", help="authentication token for RHN/Spacewalk/Satellite") + p.add_option("--redhat-management-server", dest="redhat_management_server", help="RHN/Spacewalk/Satellite server") p.add_option("--repos", dest="repos", help="names of cobbler repos") p.add_option("--server", dest="server_override", help="overrides value in settings file") p.add_option("--template-files", dest="template_files", help="specify files to be generated from templates during a sync") @@ -163,6 +164,8 @@ class ProfileFunction(commands.CobblerFunction): obj.set_name_servers_search(self.options.name_servers_search) if self.options.redhat_management_key is not None: obj.set_redhat_management_key(self.options.redhat_management_key) + if self.options.redhat_management_server is not None: + obj.set_redhat_management_server(self.options.redhat_management_server) return self.object_manipulator_finish(obj, self.api.profiles, self.options) diff --git a/cobbler/modules/cli_system.py b/cobbler/modules/cli_system.py index 12f81a79..7c0924ed 100644 --- a/cobbler/modules/cli_system.py +++ b/cobbler/modules/cli_system.py @@ -75,6 +75,7 @@ class SystemFunction(commands.CobblerFunction): p.add_option("--name-servers", dest="name_servers", help="name servers for static setups") p.add_option("--name-servers-search", dest="name_servers_search", help="name servers search path for static setups") p.add_option("--redhat-management-key", dest="redhat_management_key", help="authentication token for RHN/Spacewalk/Satellite") + p.add_option("--redhat-management-server", dest="redhat_management_server", help="RHN/Spacewalk/Satellite server") p.add_option("--static-routes", dest="static_routes", help="sets static routes (see manpage)") p.add_option("--template-files", dest="template_files",help="specify files to be generated from templates during a sync") @@ -250,6 +251,8 @@ class SystemFunction(commands.CobblerFunction): obj.set_name_servers_search(self.options.name_servers_search) if self.options.redhat_management_key is not None: obj.set_redhat_management_key(self.options.redhat_management_key) + if self.options.redhat_management_server is not None: + obj.set_redhat_management_server(self.options.redhat_management_server) rc = self.object_manipulator_finish(obj, self.api.systems, self.options) diff --git a/cobbler/remote.py b/cobbler/remote.py index d1935712..83ab0da1 100644 --- a/cobbler/remote.py +++ b/cobbler/remote.py @@ -1954,6 +1954,7 @@ def test_xmlrpc_rw(): server.modify_distro(did, "template-files", "/tmp/cobbler.fake=/tmp/a /etc/fstab=/tmp/b",token) # hash or string server.modify_distro(did, "comment", "...", token) server.modify_distro(did, "redhat_management_key", "ALPHA", token) + server.modify_distro(did, "redhat_management_server", "rhn.example.com", token) server.save_distro(did, token) # use the non-XMLRPC API to check that it's added seeing we tested XMLRPC RW APIs above @@ -1981,6 +1982,7 @@ def test_xmlrpc_rw(): server.modify_profile(pid, "name_servers", ["one","two"], token) server.modify_profile(pid, "name_servers_search", ["one","two"], token) server.modify_profile(pid, "redhat_management_key", "BETA", token) + server.modify_distro(did, "redhat_management_server", "sat.example.com", token) server.save_profile(pid, token) api.deserialize() @@ -2022,6 +2024,7 @@ def test_xmlrpc_rw(): server.modify_system(sid, "power_pass", "magic", token) server.modify_system(sid, "power_id", "7", token) server.modify_system(sid, "redhat_management_key", "GAMMA", token) + server.modify_distro(did, "redhat_management_server", "spacewalk.example.com", token) server.save_system(sid,token) diff --git a/cobbler/utils.py b/cobbler/utils.py index 8f4cebaa..72b438fc 100644 --- a/cobbler/utils.py +++ b/cobbler/utils.py @@ -1045,6 +1045,10 @@ def set_redhat_management_key(self,key): self.redhat_management_key = key return True +def set_redhat_management_server(self,server): + self.redhat_management_server = server + return True + def set_arch(self,arch,repo=False): if arch is None or arch == "" or arch == "standard" or arch == "x86": arch = "i386" diff --git a/cobbler/webui/CobblerWeb.py b/cobbler/webui/CobblerWeb.py index b68eacbb..6175ef50 100644 --- a/cobbler/webui/CobblerWeb.py +++ b/cobbler/webui/CobblerWeb.py @@ -337,6 +337,7 @@ class CobblerWeb(object): self.remote.modify_distro(distro, 'os-version', osversion, self.token) self.remote.modify_distro(distro, 'comment', comment, self.token) self.remote.modify_distro(distro, 'redhat_management_key', redhatmanagementkey, self.token) + self.remote.modify_distro(distro, 'redhat_management_server', redhatmanagementserver, self.token) self.remote.modify_distro(distro, 'mgmt_classes', mgmt_classes, self.token) # now time to save, do we want to run duplication checks? @@ -652,6 +653,7 @@ class CobblerWeb(object): self.remote.modify_system(system, 'gateway', gateway, self.token) self.remote.modify_system(system, 'hostname', hostname, self.token) self.remote.modify_system(system, 'redhat_management_key', redhatmanagementkey, self.token) + self.remote.modify_system(system, 'redhat_management_server', redhatmanagementserver, self.token) self.remote.modify_system(system, 'mgmt_classes', mgmt_classes, self.token) interfaces = args.get("interface_list","") @@ -841,6 +843,7 @@ class CobblerWeb(object): self.remote.modify_profile(profile, 'name_servers', name_servers, self.token) self.remote.modify_profile(profile, 'name_servers_search', name_servers_search, self.token) self.remote.modify_profile(profile, 'redhat_management_key', redhatmanagementkey, self.token) + self.remote.modify_profile(profile, 'redhat_management_server', redhatmanagementserver, self.token) self.remote.modify_profile(profile, 'mgmt_classes', mgmt_classes, self.token) if repos is None: |