From 592baea01cea8adf2ae39c346f685d8c0a8b8dbf Mon Sep 17 00:00:00 2001 From: John Eckersberg Date: Tue, 3 Mar 2009 20:54:30 -0500 Subject: system report now reports IP from network object --- cobbler/item_network.py | 14 ++++++++++---- cobbler/item_system.py | 17 +++++++++++------ 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 = "<>" self.redhat_management_server = "<>" + 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","") -- cgit