summaryrefslogtreecommitdiff
path: root/haircontrol/data.py
diff options
context:
space:
mode:
Diffstat (limited to 'haircontrol/data.py')
-rw-r--r--haircontrol/data.py20
1 files changed, 19 insertions, 1 deletions
diff --git a/haircontrol/data.py b/haircontrol/data.py
index 1eb4d3b..da85100 100644
--- a/haircontrol/data.py
+++ b/haircontrol/data.py
@@ -3,10 +3,26 @@ class EtherDomain:
self.equipments = {}
self.ip2mac = {}
self.mac2ip = {}
+ self.gw = None
+ self.root_iface = None
def __repr__(self):
return '([\n%s\n],\n%s\n)'%(',\n'.join(' %s'%repr(e) for e in self.get_equipment_list_sorted()), repr(self.ip2mac))
+ def print_tree(self):
+ self._print_tree(self.gw, self.root_iface, 0)
+
+ def _print_tree(self,eq_root, iface, indent):
+ print(" "*indent + eq_root.name + '(' + iface.name + ')')
+ ei_pairs = []
+ for iface in eq_root.ifaces.values():
+ for ip in iface.direct_neighbours:
+ ei_pairs.append( (self.equipments[ip], iface) )
+ ei_pairs.sort(key=lambda x: x[0].name)
+
+ for (e,i) in ei_pairs:
+ self._print_tree(e, i, indent+1)
+
def get_equipment_list_sorted(self):
e_list = list(self.equipments.values())
e_list.sort(key=lambda x: x.name)
@@ -29,11 +45,13 @@ class EtherDomain:
self.mac2ip[mac] = ip
class Equipment:
- def __init__(self, name=None, mgmtip=None):
+ def __init__(self, name=None, mgmtip=None, first_ifname=None):
self.name = name
self.mgmtip = mgmtip
self.ifaces = {}
self.inspected = False
+ if first_ifname:
+ self.ifaces[first_ifname] = Interface(first_ifname, None)
def __repr__(self):
return repr( (self.name, self.mgmtip, list(self.ifaces.values())) )