summaryrefslogtreecommitdiff
path: root/haircontrol/data.py
diff options
context:
space:
mode:
Diffstat (limited to 'haircontrol/data.py')
-rw-r--r--haircontrol/data.py35
1 files changed, 30 insertions, 5 deletions
diff --git a/haircontrol/data.py b/haircontrol/data.py
index 599d322..d8195c7 100644
--- a/haircontrol/data.py
+++ b/haircontrol/data.py
@@ -1,3 +1,30 @@
+class EtherDomain:
+ def __init__(self):
+ self.equipments = {}
+ self.ip2mac = {}
+ self.mac2ip = {}
+
+ def __repr__(self):
+ e_list = list(self.equipments.values())
+ e_list.sort(key=lambda x: x.name)
+ return '([\n%s\n],\n%s\n)'%(',\n'.join(' %s'%repr(e) for e in e_list), repr(self.ip2mac))
+
+ def add_equipment(self,e):
+ old = self.equipments.get(e.mgmtip)
+ if old:
+ print("Warn : %s replaced by %s"%(old,e))
+ self.equipments[e.mgmtip] = e
+
+ def index_mac_ip(self,mac, ip):
+ oldmac = self.ip2mac.get(ip)
+ if oldmac:
+ print("Warn : %s replaced by %s for %s"%(oldmac, mac, ip))
+ oldip = self.mac2ip.get(mac)
+ if oldip:
+ print("Warn : %s replaced by %s for %s"%(oldip, ip, mac))
+ self.ip2mac[ip] = mac
+ self.mac2ip[mac] = ip
+
class Equipment:
def __init__(self, name=None, mgmtip=None):
self.name = name
@@ -5,13 +32,12 @@ class Equipment:
self.ifaces = {}
def __repr__(self):
- return repr( (self.name, self.mgmtip, self.ifaces.values()) )
+ return repr( (self.name, self.mgmtip, list(self.ifaces.values())) )
def add_seen_mac(self, ifname, mac):
iface = self.ifaces.get(ifname)
if not iface:
- iface = Interface()
- iface.name = ifname
+ iface = Interface(ifname)
self.ifaces[ifname] = iface
iface.mac_seen.append(mac)
@@ -20,8 +46,7 @@ class Interface:
self.name = name
self.mac = mac
self.mac_seen = []
- self.remote = []
def __repr__(self):
- return repr( (self.mac, self.name) )
+ return repr( ( self.mac, self.name, '[ %i mac_seen ]'%len(self.mac_seen) ) )