From 2e59a405596156412ff7240934071be76ec30301 Mon Sep 17 00:00:00 2001 From: Ludovic Pouzenc Date: Sat, 14 May 2016 12:46:45 +0200 Subject: Some work on data, repr() and cleaning --- haircontrol/data.py | 35 ++++++++++++++++++++++++++++++----- 1 file changed, 30 insertions(+), 5 deletions(-) (limited to 'haircontrol/data.py') 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) ) ) -- cgit v1.1