summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJohn Eckersberg <jeckersb@redhat.com>2009-03-03 20:54:30 -0500
committerJohn Eckersberg <jeckersb@redhat.com>2009-03-13 13:52:35 -0400
commit592baea01cea8adf2ae39c346f685d8c0a8b8dbf (patch)
treef556a61efd43d12b5af18242b1d5f7e648df0618
parent0807e952ef2882e37d8d76e0c611ae02b1540d4a (diff)
downloadcobbler-592baea01cea8adf2ae39c346f685d8c0a8b8dbf.tar.gz
cobbler-592baea01cea8adf2ae39c346f685d8c0a8b8dbf.tar.xz
cobbler-592baea01cea8adf2ae39c346f685d8c0a8b8dbf.zip
system report now reports IP from network object
-rw-r--r--cobbler/item_network.py14
-rw-r--r--cobbler/item_system.py17
2 files changed, 21 insertions, 10 deletions
diff --git a/cobbler/item_network.py b/cobbler/item_network.py
index 4303a9f1..2bb270ae 100644
--- a/cobbler/item_network.py
+++ b/cobbler/item_network.py
@@ -100,13 +100,19 @@ class Network(item.Item):
def set_reserved(self, reserved):
pass
- def subscribe_system(self, uid, intf, ip=None):
+ def get_assigned_address(self, system, intf):
+ for item in self.used_addresses:
+ if item['system'] == system and item['intf'] == intf:
+ return str(item['ip'])
+ return None
+
+ def subscribe_system(self, name, intf, ip=None):
if not ip:
if self.free_address_count() == 0:
raise CX(_("Network %s has no free addresses" % self.cidr))
ip = self.free_addresses[0][0]
- self._allocate_address(uid, intf, ip)
+ self._allocate_address(name, intf, ip)
def _addr_available(self, addr):
for cidr in self.free_addresses:
@@ -133,11 +139,11 @@ class Network(item.Item):
index = self.used_addresses.index(d)
del(self.used_addresses[index])
- def _allocate_address(self, uid, intf, addr):
+ def _allocate_address(self, system, intf, addr):
if not self._addr_available(addr):
raise CX(_("Address %s is not available for allocation" % addr))
self._remove_from_free(addr)
- self._add_to_used({'ip': addr, 'uid': uid, 'intf': intf})
+ self._add_to_used({'ip': addr, 'system': system, 'intf': intf})
def _subtract_and_flatten(self, cidr_list, remove_list):
# print "cidr_list ", cidr_list, "remove_list", remove_list
diff --git a/cobbler/item_system.py b/cobbler/item_system.py
index d109c085..4fa8a709 100644
--- a/cobbler/item_system.py
+++ b/cobbler/item_system.py
@@ -81,6 +81,7 @@ class System(item.Item):
self.redhat_management_key = "<<inherit>>"
self.redhat_management_server = "<<inherit>>"
+
def delete_interface(self,name):
"""
Used to remove an interface.
@@ -111,7 +112,7 @@ class System(item.Item):
"bonding_opts" : "",
"dns_name" : "",
"static_routes" : [],
- "parent" : "",
+ "network" : "",
}
return self.interfaces[name]
@@ -199,7 +200,7 @@ class System(item.Item):
self.uid = self.load_item(seed_data,'uid','')
if self.uid == '':
self.uid = self.config.generate_uid()
-
+
self.random_id = self.load_item(seed_data,'random_id','')
if self.random_id == '' or len(self.random_id) != 4:
self.random_id = self.config.generate_random_id(4)
@@ -378,8 +379,11 @@ class System(item.Item):
if intf["ip_address"] != "":
return intf["ip_address"].strip()
+ elif intf["network"] != "":
+ net = self.config.networks().find(name=intf["network"])
+ return net.get_assigned_address(self.name, interface)
else:
- return None
+ return ""
def is_management_supported(self,cidr_ok=True):
"""
@@ -435,7 +439,8 @@ class System(item.Item):
net = self.config.networks().find(name=network)
if net == None:
raise CX(_("Network %s does not exist" % network))
- net.subscribe_system(self.uid, interface, intf['ip_address'])
+ net.subscribe_system(self.name, interface, intf['ip_address'])
+ intf['network'] = network
self.config.serialize() # explicitly save the modified net
def set_ip_address(self,address,interface):
@@ -732,13 +737,13 @@ class System(item.Item):
for name in ikeys:
x = self.__get_interface(name)
buf = buf + _("interface : %s\n") % (name)
- buf = buf + _(" parent network : %s\n") % x.get("parent","")
+ buf = buf + _(" network : %s\n") % x.get("network","")
buf = buf + _(" mac address : %s\n") % x.get("mac_address","")
buf = buf + _(" bonding : %s\n") % x.get("bonding","")
buf = buf + _(" bonding_master : %s\n") % x.get("bonding_master","")
buf = buf + _(" bonding_opts : %s\n") % x.get("bonding_opts","")
buf = buf + _(" is static? : %s\n") % x.get("static",False)
- buf = buf + _(" ip address : %s\n") % x.get("ip_address","")
+ buf = buf + _(" ip address : %s\n") % self.get_ip_address(name)
buf = buf + _(" subnet : %s\n") % x.get("subnet","")
buf = buf + _(" static routes : %s\n") % x.get("static_routes",[])
buf = buf + _(" dns name : %s\n") % x.get("dns_name","")