summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMichael DeHaan <mdehaan@redhat.com>2008-04-02 18:29:06 -0400
committerMichael DeHaan <mdehaan@redhat.com>2008-04-02 18:29:06 -0400
commit3c08531c4e913268b94618b9939a44161d2dc556 (patch)
treed67d81dbe260c99c5ef4cb0e6f9eb6d47946e15f
parent3e29f5d729da704f608b2cd2dc7cf16a42d934f4 (diff)
downloadthird_party-cobbler-3c08531c4e913268b94618b9939a44161d2dc556.tar.gz
third_party-cobbler-3c08531c4e913268b94618b9939a44161d2dc556.tar.xz
third_party-cobbler-3c08531c4e913268b94618b9939a44161d2dc556.zip
Added some code to allow assignment of default ownership from settings for new
objects. Also, ownership field for new objects in the WebUI is prepopulated with the username of the logged in user, to prevent accidental lockouts. All of this is untested at this point -- will be polished up soon.
-rw-r--r--cobbler/item_distro.py4
-rw-r--r--cobbler/item_profile.py4
-rw-r--r--cobbler/item_system.py4
-rw-r--r--cobbler/settings.py1
-rw-r--r--cobbler/webui/CobblerWeb.py4
-rw-r--r--config/settings1
-rw-r--r--tests/tests.py4
-rw-r--r--webui_templates/distro_edit.tmpl2
-rw-r--r--webui_templates/profile_edit.tmpl2
-rw-r--r--webui_templates/repo_edit.tmpl2
-rw-r--r--webui_templates/system_edit.tmpl2
11 files changed, 22 insertions, 8 deletions
diff --git a/cobbler/item_distro.py b/cobbler/item_distro.py
index c40f002..3b82595 100644
--- a/cobbler/item_distro.py
+++ b/cobbler/item_distro.py
@@ -32,7 +32,7 @@ class Distro(item.Item):
Reset this object.
"""
self.name = None
- self.owners = []
+ self.owners = self.settings.default_ownership
self.kernel = (None, '<<inherit>>')[is_subobject]
self.initrd = (None, '<<inherit>>')[is_subobject]
self.kernel_options = ({}, '<<inherit>>')[is_subobject]
@@ -61,7 +61,7 @@ class Distro(item.Item):
"""
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.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')
diff --git a/cobbler/item_profile.py b/cobbler/item_profile.py
index 3145b82..9135e53 100644
--- a/cobbler/item_profile.py
+++ b/cobbler/item_profile.py
@@ -34,7 +34,7 @@ class Profile(item.Item):
Reset this object.
"""
self.name = None
- self.owners = [] # should not be inheritable
+ self.owners = self.settings.default_ownership
self.distro = (None, '<<inherit>>')[is_subobject]
self.kickstart = (self.settings.default_kickstart , '<<inherit>>')[is_subobject]
self.kernel_options = ({}, '<<inherit>>')[is_subobject]
@@ -58,7 +58,7 @@ class Profile(item.Item):
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.owners = self.load_item(seed_data,'owners',self.settings.default_ownership)
self.distro = self.load_item(seed_data,'distro')
self.kickstart = self.load_item(seed_data,'kickstart')
self.kernel_options = self.load_item(seed_data,'kernel_options')
diff --git a/cobbler/item_system.py b/cobbler/item_system.py
index 6b2315a..7346d33 100644
--- a/cobbler/item_system.py
+++ b/cobbler/item_system.py
@@ -30,7 +30,7 @@ class System(item.Item):
def clear(self,is_subobject=False):
self.name = None
- self.owners = None
+ self.owners = self.settings.default_ownership
self.profile = None
self.kernel_options = {}
self.ks_meta = {}
@@ -81,7 +81,7 @@ class System(item.Item):
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.owners = self.load_item(seed_data, 'owners', self.settings.default_ownership)
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', {})
diff --git a/cobbler/settings.py b/cobbler/settings.py
index 7681188..4372f3a 100644
--- a/cobbler/settings.py
+++ b/cobbler/settings.py
@@ -33,6 +33,7 @@ DEFAULTS = {
"default_virt_type" : "auto",
"default_virt_file_size" : "5",
"default_virt_ram" : "512",
+ "default_ownership" : [ "admin" ],
"dhcpd_conf" : "/etc/dhcpd.conf",
"dhcpd_bin" : "/usr/sbin/dhcpd",
"dnsmasq_bin" : "/usr/sbin/dnsmasq",
diff --git a/cobbler/webui/CobblerWeb.py b/cobbler/webui/CobblerWeb.py
index 8813006..ee2d700 100644
--- a/cobbler/webui/CobblerWeb.py
+++ b/cobbler/webui/CobblerWeb.py
@@ -168,6 +168,7 @@ class CobblerWeb(object):
return self.__render( 'distro_edit.tmpl', {
+ 'user' : self.username,
'edit' : True,
'editable' : can_edit,
'distro': input_distro,
@@ -408,6 +409,7 @@ class CobblerWeb(object):
can_edit = self.remote.check_access_no_fail(self.token,"new_system",None)
return self.__render( 'system_edit.tmpl', {
+ 'user' : self.username,
'edit' : True,
'editable' : can_edit,
'system': input_system,
@@ -450,6 +452,7 @@ class CobblerWeb(object):
can_edit = self.remote.check_access_no_fail(self.token,"new_profile",None)
return self.__render( 'profile_edit.tmpl', {
+ 'user' : self.username,
'edit' : True,
'editable' : can_edit,
'profile': input_profile,
@@ -598,6 +601,7 @@ class CobblerWeb(object):
return self.__render( 'repo_edit.tmpl', {
+ 'user' : self.username,
'repo': input_repo,
'editable' : can_edit
} )
diff --git a/config/settings b/config/settings
index 2fd2736..f4c2487 100644
--- a/config/settings
+++ b/config/settings
@@ -9,6 +9,7 @@ default_virt_bridge: xenbr0
default_virt_type: auto
default_virt_file_size: 5
default_virt_ram: 512
+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 f9bc368..2c055ba 100644
--- a/tests/tests.py
+++ b/tests/tests.py
@@ -169,10 +169,10 @@ class Ownership(BootTest):
# basmeent2 can not edit.
for user in [ "admin1", "superlab1", "superlab2", "basement1" ]:
- self.assertTrue(1==authorize(self.api, user, "modify_kickstart", xo), "%s can modify_kickstart" % user)
+ self.assertTrue(1==authorize(self.api, user, "modify_kickstart", "/tmp/test_cobbler_kickstart"), "%s can modify_kickstart" % user)
for user in [ "basement2", "dne" ]:
- self.assertTrue(0==authorize(self.api, user, "modify_kickstart", xo), "%s can modify_kickstart" % user)
+ self.assertTrue(0==authorize(self.api, user, "modify_kickstart", "/tmp/test_cobbler_kickstart"), "%s can modify_kickstart" % user)
# ensure admin1 can edit (he's an admin) and do other tasks
# same applies to basement1 who is explicitly added as a user
diff --git a/webui_templates/distro_edit.tmpl b/webui_templates/distro_edit.tmpl
index 80536f5..5d19a43 100644
--- a/webui_templates/distro_edit.tmpl
+++ b/webui_templates/distro_edit.tmpl
@@ -188,6 +188,8 @@ function disablename(value)
<input type="text" size="255" style="width: 400px;" name="owners" id="owners"
#if $distro
value="$ownerslist"
+ #else
+ value="$user"
#end if
/>
<p class="context-tip">Applies only if using authz_ownership module, comma-delimited</p>
diff --git a/webui_templates/profile_edit.tmpl b/webui_templates/profile_edit.tmpl
index 82be534..2f7a732 100644
--- a/webui_templates/profile_edit.tmpl
+++ b/webui_templates/profile_edit.tmpl
@@ -324,6 +324,8 @@ function disablename(value)
<input type="text" size="255" style="width: 400px;" name="owners" id="owners"
#if $profile
value="$ownerslist"
+ #else
+ value="$user"
#end if
/>
diff --git a/webui_templates/repo_edit.tmpl b/webui_templates/repo_edit.tmpl
index b58e54f..469854a 100644
--- a/webui_templates/repo_edit.tmpl
+++ b/webui_templates/repo_edit.tmpl
@@ -179,6 +179,8 @@ function disablename(value)
<input type="text" size="255" style="width: 400px;" name="owners" id="owners"
#if $repo
value="$ownerslist"
+ #else
+ value="$user"
#end if
/>
<p class="context-tip">Applies only if using authz_ownership module, comma-delimited</p>
diff --git a/webui_templates/system_edit.tmpl b/webui_templates/system_edit.tmpl
index cdb1adc..5396f1d 100644
--- a/webui_templates/system_edit.tmpl
+++ b/webui_templates/system_edit.tmpl
@@ -225,6 +225,8 @@ function page_onload() {
<input type="text" size="255" style="width: 400px;" name="owners" id="owners"
#if $system
value="$ownerslist"
+ #else
+ value="$user"
#end if
/>
<p class="context-tip">Applies only if using authz_ownership module, comma-delimited</p>