From ae3014f2498a8566acbe4439eb0a6916456ce27f Mon Sep 17 00:00:00 2001 From: Michael DeHaan Date: Thu, 3 Apr 2008 14:39:50 -0400 Subject: Fix default ownership on cobbler owned objects to come from the settings file (who's default is "admin" through the CLI) ... the webui will prepopulate the field with the name of the logged in user. --- CHANGELOG | 1 + cobbler/item.py | 1 - cobbler/item_distro.py | 2 ++ cobbler/item_profile.py | 2 ++ cobbler/item_repo.py | 7 ++++--- cobbler/item_system.py | 3 ++- cobbler/settings.py | 2 +- config/settings | 2 +- tests/tests.py | 12 +++++++++++- 9 files changed, 24 insertions(+), 8 deletions(-) diff --git a/CHANGELOG b/CHANGELOG index 804254a1..60e6369d 100644 --- a/CHANGELOG +++ b/CHANGELOG @@ -9,6 +9,7 @@ Cobbler CHANGELOG - tftpboot location is now inferred from xinetd config (added for F9 compat) - added authn_ldap and stub for authz_configfile - authz_configfile allows filtering ldap/other users by config file +- WebUI now has checkbox on distro/profile for deleting child objects - ??? - 0.8.3 - fix WebUI documentation URL diff --git a/cobbler/item.py b/cobbler/item.py index f51f9599..027472a3 100644 --- a/cobbler/item.py +++ b/cobbler/item.py @@ -51,7 +51,6 @@ class Item(serializable.Serializable): self.clear(is_subobject) # reset behavior differs for inheritance cases self.parent = '' # all objects by default are not subobjects self.children = {} # caching for performance reasons, not serialized - self.owners = [] self.log_func = self.config.api.log def clear(self): diff --git a/cobbler/item_distro.py b/cobbler/item_distro.py index 3b825956..98eaae71 100644 --- a/cobbler/item_distro.py +++ b/cobbler/item_distro.py @@ -77,6 +77,8 @@ class Distro(item.Item): if self.ks_meta != "<>" and type(self.ks_meta) != dict: self.set_ksmeta(self.ks_meta) + self.set_owners(self.owners) + return self def set_kernel(self,kernel): diff --git a/cobbler/item_profile.py b/cobbler/item_profile.py index 9135e534..2e3a5391 100644 --- a/cobbler/item_profile.py +++ b/cobbler/item_profile.py @@ -89,6 +89,8 @@ class Profile(item.Item): if self.repos != "<>" and type(self.ks_meta) != list: self.set_repos(self.repos) + self.set_owners(self.owners) + return self def set_parent(self,parent_name): diff --git a/cobbler/item_repo.py b/cobbler/item_repo.py index e796561b..9063c5b3 100644 --- a/cobbler/item_repo.py +++ b/cobbler/item_repo.py @@ -39,7 +39,7 @@ class Repo(item.Item): self.depth = 2 # arbitrary, as not really apart of the graph self.arch = "" # use default arch self.yumopts = {} - self.owners = [] + self.owners = self.settings.default_ownership def from_datastruct(self,seed_data): self.parent = self.load_item(seed_data, 'parent') @@ -52,10 +52,11 @@ class Repo(item.Item): self.arch = self.load_item(seed_data, 'arch') self.depth = self.load_item(seed_data, 'depth', 2) self.yumopts = self.load_item(seed_data, 'yumopts', {}) - self.owners = self.load_item(seed_data, 'owners', []) + self.owners = self.load_item(seed_data, 'owners', self.settings.default_ownership) - # force this to be saved as a boolean + # coerce types from input file self.set_keep_updated(self.keep_updated) + self.set_owners(self.owners) return self diff --git a/cobbler/item_system.py b/cobbler/item_system.py index 7346d33d..d09d579e 100644 --- a/cobbler/item_system.py +++ b/cobbler/item_system.py @@ -128,8 +128,9 @@ class System(item.Item): # explicitly re-call the set_name function to possibily populate MAC/IP. self.set_name(self.name) - # coerce this into a boolean + # coerce types from input file self.set_netboot_enabled(self.netboot_enabled) + self.set_owners(self.owners) return self diff --git a/cobbler/settings.py b/cobbler/settings.py index 4372f3ad..0ef2ab79 100644 --- a/cobbler/settings.py +++ b/cobbler/settings.py @@ -33,7 +33,7 @@ DEFAULTS = { "default_virt_type" : "auto", "default_virt_file_size" : "5", "default_virt_ram" : "512", - "default_ownership" : [ "admin" ], + "default_ownership" : "admin", "dhcpd_conf" : "/etc/dhcpd.conf", "dhcpd_bin" : "/usr/sbin/dhcpd", "dnsmasq_bin" : "/usr/sbin/dnsmasq", diff --git a/config/settings b/config/settings index f4c2487b..36cd9b4c 100644 --- a/config/settings +++ b/config/settings @@ -9,7 +9,7 @@ default_virt_bridge: xenbr0 default_virt_type: auto default_virt_file_size: 5 default_virt_ram: 512 -default_ownership: [ "admin" ] +default_ownership: "admin" dhcpd_bin: /usr/sbin/dhcpd dhcpd_conf: /etc/dhcpd.conf dnsmasq_bin: /usr/sbin/dnsmasq diff --git a/tests/tests.py b/tests/tests.py index 2c055ba0..8a86babd 100644 --- a/tests/tests.py +++ b/tests/tests.py @@ -73,7 +73,7 @@ class BootTest(unittest.TestCase): self.assertTrue(distro.set_initrd(self.fk_initrd)) self.assertTrue(self.api.add_distro(distro)) self.assertTrue(self.api.find_distro(name="testdistro0")) - + profile = self.api.new_profile() self.assertTrue(profile.set_name("testprofile0")) self.assertTrue(profile.set_distro("testdistro0")) @@ -109,10 +109,20 @@ class Ownership(BootTest): fd.write("") fd.close() + # find things we are going to test with distro = self.api.find_distro(name="testdistro0") profile = self.api.find_profile(name="testprofile0") system = self.api.find_system(name="drwily.rdu.redhat.com") repo = self.api.find_repo(name="test_repo") + + # as we didn't specify an owner for objects, the default + # ownership should be as specified in settings + default_owner = self.api.settings().default_ownership + for obj in [ distro, profile, system, repo ]: + self.assertTrue(obj is not None) + self.assertEquals(obj.owners, default_owner, "default owner for %s" % obj) + + # verify we can test things self.assertTrue(distro.set_owners(["superlab","basement1"])) self.assertTrue(profile.set_owners(["superlab","basement1"])) self.assertTrue(profile.set_kickstart("/tmp/test_cobbler_kickstart")) -- cgit