summaryrefslogtreecommitdiffstats
path: root/cobbler/item_system.py
diff options
context:
space:
mode:
authorMichael DeHaan <mdehaan@redhat.com>2007-10-12 18:08:32 -0400
committerMichael DeHaan <mdehaan@redhat.com>2007-10-12 18:08:32 -0400
commit2fd4775c68160a8617fff5f7015542bf8c1501e5 (patch)
tree7b53597223b470653f15097e97a81ceba94f4564 /cobbler/item_system.py
parent8407eeed814b7b62ee8059eaaafb23e44451aebc (diff)
downloadthird_party-cobbler-2fd4775c68160a8617fff5f7015542bf8c1501e5.tar.gz
third_party-cobbler-2fd4775c68160a8617fff5f7015542bf8c1501e5.tar.xz
third_party-cobbler-2fd4775c68160a8617fff5f7015542bf8c1501e5.zip
Teach the WebUI (and the backend for the WebUI) how to save multiple interfaces. Also clean up the error page display and include a link to go back so users can correct any data entry errors.
Diffstat (limited to 'cobbler/item_system.py')
-rw-r--r--cobbler/item_system.py45
1 files changed, 34 insertions, 11 deletions
diff --git a/cobbler/item_system.py b/cobbler/item_system.py
index d7c71e1..749919a 100644
--- a/cobbler/item_system.py
+++ b/cobbler/item_system.py
@@ -14,7 +14,6 @@ Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
import utils
import item
-import copy
from cexceptions import *
from rhpl.translate import _, N_, textdomain, utf8
@@ -41,6 +40,20 @@ class System(item.Item):
self.virt_path = "<<inherit>>" # use value in profile
self.virt_type = "<<inherit>>" # use value in profile
+ def delete_interface(self,name):
+ """
+ Used to remove an interface. Not valid for intf0.
+ """
+ if name == "intf0":
+ raise CX(_("the first interface cannot be deleted"))
+ if self.interfaces.has_key(name):
+ del self.interfaces[name]
+ else:
+ # NOTE: raising an exception here would break the WebUI as currently implemented
+ return False
+ return True
+
+
def __get_interface(self,name):
if name not in [ "intf0", "intf1", "intf2", "intf3", "intf4", "intf5", "intf6", "intf7" ]:
@@ -199,14 +212,14 @@ class System(item.Item):
Only works if manage_dhcp is set in /var/lib/cobbler/settings
"""
intf = self.__get_interface(interface)
- if utils.is_ip(address):
+ if address == "" or utils.is_ip(address):
intf["ip_address"] = address
return True
raise CX(_("invalid format for IP address (%s)") % address)
def set_mac_address(self,address,interface="intf0"):
intf = self.__get_interface(interface)
- if utils.is_mac(address):
+ if address == "" or utils.is_mac(address):
intf["mac_address"] = address
return True
raise CX(_("invalid format for MAC address (%s)" % address))
@@ -349,6 +362,22 @@ class System(item.Item):
return buf
+ def modify_interface(self, hash):
+ """
+ Used by the WUI to modify an interface more-efficiently
+ """
+ for (key,value) in hash.iteritems():
+ (field,interface) = key.split("-")
+ if field == "macaddress" : self.set_mac_address(value, interface)
+ if field == "ipaddress" : self.set_ip_address(value, interface)
+ if field == "hostname" : self.set_hostname(value, interface)
+ if field == "dhcptag" : self.set_dhcp_tag(value, interface)
+ if field == "subnet" : self.set_subnet(value, interface)
+ if field == "gateway" : self.set_gateway(value, interface)
+ if field == "virtbridge" : self.set_virt_bridge(value, interface)
+ return True
+
+
def remote_methods(self):
return {
'name' : self.set_name,
@@ -356,17 +385,11 @@ class System(item.Item):
'kopts' : self.set_kernel_options,
'ksmeta' : self.set_ksmeta,
'hostname' : self.set_hostname,
- 'ip-address' : self.set_ip_address,
- 'ip' : self.set_ip_address, # alias
- 'mac-address' : self.set_mac_address,
- 'mac' : self.set_mac_address, # alias
'kickstart' : self.set_kickstart,
'netboot-enabled' : self.set_netboot_enabled,
'virt-path' : self.set_virt_path,
'virt-type' : self.set_virt_type,
- 'dhcp-tag' : self.set_dhcp_tag,
- 'gateway' : self.set_gateway,
- 'virt-bridge' : self.set_virt_bridge,
- 'subnet' : self.set_subnet
+ 'modify-interface' : self.modify_interface,
+ 'delete-interface' : self.delete_interface
}