improve the class
This commit is contained in:
+54
-21
@@ -31,6 +31,7 @@ class Connection:
|
|||||||
self.rtts = [0]
|
self.rtts = [0]
|
||||||
self.lastbeat = time.time()
|
self.lastbeat = time.time()
|
||||||
self.statetime = self.lastbeat
|
self.statetime = self.lastbeat
|
||||||
|
self.deltastatetime = 'computed'
|
||||||
self.state = Connection.unknown
|
self.state = Connection.unknown
|
||||||
|
|
||||||
if host:
|
if host:
|
||||||
@@ -45,18 +46,32 @@ class Connection:
|
|||||||
|
|
||||||
def statedict(self, Null=False):
|
def statedict(self, Null=False):
|
||||||
d = {}
|
d = {}
|
||||||
|
now = time.time()
|
||||||
if not Null:
|
if not Null:
|
||||||
d['addr'] = self.addr
|
d['addr'] = self.addr
|
||||||
if self.rtts[-1]:
|
if self.rtts[-1]:
|
||||||
d['rtt'] = "%0.1f" % self.rtts[-1]
|
d['rtt'] = "%0.1f" % self.rtts[-1]
|
||||||
else:
|
else:
|
||||||
d['rtt'] = ""
|
d['rtt'] = "?"
|
||||||
d['lastbeat'] = self.lastbeat
|
d['lastbeat'] = self.lastbeat
|
||||||
if self.state == Connection.overdue:
|
if self.state == Connection.overdue:
|
||||||
d['state'] = "<b>%s</b>" % self.state
|
d['state'] = "<b>%s</b>" % self.state
|
||||||
else:
|
else:
|
||||||
d['state'] = self.state
|
d['state'] = self.state
|
||||||
|
if self.state == Connection.up:
|
||||||
|
d['rttstate'] = d['rtt']
|
||||||
|
else:
|
||||||
|
d['rttstate'] = d['state']
|
||||||
d['statetime'] = time.strftime("%Y-%m-%d %H:%M:%S", time.localtime(self.statetime))
|
d['statetime'] = time.strftime("%Y-%m-%d %H:%M:%S", time.localtime(self.statetime))
|
||||||
|
delta = now - self.statetime
|
||||||
|
if delta > 86400:
|
||||||
|
d['deltastatetime'] = time.strftime("%d %H:%M:%S", time.gmtime(delta))
|
||||||
|
elif delta > 3600:
|
||||||
|
d['deltastatetime'] = time.strftime("%H:%M:%S", time.gmtime(delta))
|
||||||
|
elif delta > 60:
|
||||||
|
d['deltastatetime'] = time.strftime("%M:%S", time.gmtime(delta))
|
||||||
|
else:
|
||||||
|
d['deltastatetime'] = time.strftime("%S", time.gmtime(delta))
|
||||||
|
|
||||||
else:
|
else:
|
||||||
d['addr'] = ''
|
d['addr'] = ''
|
||||||
@@ -64,6 +79,8 @@ class Connection:
|
|||||||
d['lastbeat'] = ''
|
d['lastbeat'] = ''
|
||||||
d['state'] = ''
|
d['state'] = ''
|
||||||
d['statetime'] = ''
|
d['statetime'] = ''
|
||||||
|
d['deltastatetime'] = ''
|
||||||
|
d['rttstate'] = ''
|
||||||
return d
|
return d
|
||||||
|
|
||||||
|
|
||||||
@@ -74,6 +91,8 @@ class Connection:
|
|||||||
d['lastbeat'] = 'Last Contact'
|
d['lastbeat'] = 'Last Contact'
|
||||||
d['state'] = 'State'
|
d['state'] = 'State'
|
||||||
d['statetime'] = 'Last State'
|
d['statetime'] = 'Last State'
|
||||||
|
d['rttstate'] = 'Reach'
|
||||||
|
d['deltastatetime'] = 'Last State'
|
||||||
return d
|
return d
|
||||||
|
|
||||||
|
|
||||||
@@ -257,35 +276,49 @@ class Host:
|
|||||||
return '<td align="right">N/A</td><td></td<td></td>>'
|
return '<td align="right">N/A</td><td></td<td></td>>'
|
||||||
|
|
||||||
|
|
||||||
hostfields = ['name', 'IPv4.addr', 'IPv4.state', 'IPv4.rtt', 'IPv4.statetime', 'IPv6.addr', 'IPv6.state', 'IPv6.rtt', 'IPv6.statetime', 'ver']
|
hostfields_long = ['name', 'IPv4.addr',
|
||||||
def htmlheaders(self):
|
'IPv4.state', ('IPv4.rtt','style="text-align: right;"'),
|
||||||
|
('IPv4.statetime','style="text-align: right;"'), 'IPv6.addr',
|
||||||
|
'IPv6.state', ('IPv6.rtt', 'style="text-align: right;"'),
|
||||||
|
('IPv6.statetime','style="text-align: right;"'), 'ver']
|
||||||
|
|
||||||
|
hostfields_short = ['name',
|
||||||
|
('IPv4.rttstate','style="text-align: right;"'),
|
||||||
|
('IPv4.deltastatetime','style="text-align: right;"'),
|
||||||
|
('IPv6.rttstate','style="text-align: right;"'),
|
||||||
|
('IPv6.deltastatetime','style="text-align: right;"')]
|
||||||
|
|
||||||
|
def gene(self, tag, v, attrib=None):
|
||||||
|
if attrib:
|
||||||
|
a=" %s" % attrib
|
||||||
|
else:
|
||||||
|
a=""
|
||||||
|
return "<%s%s>%s</%s>" % (tag, a, v, tag)
|
||||||
|
|
||||||
|
|
||||||
|
def htmltable(self, tag, hd, short):
|
||||||
|
if short:
|
||||||
|
hostfields = Host.hostfields_short
|
||||||
|
else:
|
||||||
|
hostfields = Host.hostfields_long
|
||||||
h = []
|
h = []
|
||||||
hd = ubHost.headerdict()
|
for f in hostfields:
|
||||||
for f in Host.hostfields:
|
if type(f) == type(()):
|
||||||
h.append(hd[f])
|
h.append(self.gene(tag, hd[f[0]], f[1]))
|
||||||
return "<tr><th>"+"</th><th>".join(h)+"</th></tr>\n"
|
else:
|
||||||
|
h.append(self.gene(tag, hd[f]))
|
||||||
|
return self.gene("tr", "\n".join(h))
|
||||||
|
|
||||||
|
|
||||||
def htmldisp(self):
|
def buildhosttable(self, short=False):
|
||||||
h = []
|
|
||||||
hd = self.statedict()
|
|
||||||
for f in Host.hostfields:
|
|
||||||
h.append(hd[f])
|
|
||||||
return "<tr><td>"+"</td><td>".join(h)+"</td></tr>\n"
|
|
||||||
|
|
||||||
# return "<tr><td>%-24s</td><td>%-7s</td>%s<td>%-16s</td><td>%-16s</td><td>%-17s</td><td>%s</td></tr>\n" % \
|
|
||||||
# (self.name, self.dispstate(), self.dispstats(), ipv4addr, ipv6addr, lastts, self.cver)
|
|
||||||
|
|
||||||
|
|
||||||
def buildhosttable(self):
|
|
||||||
res = []
|
res = []
|
||||||
res.append('<table id="ntable" class="sortable">')
|
res.append('<table id="ntable" class="sortable">')
|
||||||
res.append(ubHost.htmlheaders())
|
res.append(ubHost.htmltable('th', ubHost.headerdict(), short))
|
||||||
hosts_sorted = Host.hosts.keys()
|
hosts_sorted = Host.hosts.keys()
|
||||||
if len(hosts_sorted):
|
if len(hosts_sorted):
|
||||||
hosts_sorted.sort()
|
hosts_sorted.sort()
|
||||||
for h in hosts_sorted:
|
for h in hosts_sorted:
|
||||||
res.append(Host.hosts[h].htmldisp())
|
res.append(ubHost.htmltable('td', Host.hosts[h].statedict(), short))
|
||||||
res.append("</table>")
|
res.append("</table>")
|
||||||
return res
|
return res
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user