summaryrefslogtreecommitdiffstats
path: root/retiolum/scripts/adv_graphgen
diff options
context:
space:
mode:
authorEUcancER <root@euer.krebsco.de>2011-11-08 12:37:32 +0100
committerEUcancER <root@euer.krebsco.de>2011-11-08 12:37:32 +0100
commit35c9a0df67a03fff79cf05159a637ca003fe048b (patch)
tree45106f9ac6080ac7c92beab3f9bfb38e4818d9fd /retiolum/scripts/adv_graphgen
parentad925e34a8301772fe7f525e9629ff1b1f744bb1 (diff)
add script to find legacy hosts
Diffstat (limited to 'retiolum/scripts/adv_graphgen')
-rwxr-xr-xretiolum/scripts/adv_graphgen/find_legacy_hosts.py59
1 files changed, 59 insertions, 0 deletions
diff --git a/retiolum/scripts/adv_graphgen/find_legacy_hosts.py b/retiolum/scripts/adv_graphgen/find_legacy_hosts.py
new file mode 100755
index 00000000..52388b6d
--- /dev/null
+++ b/retiolum/scripts/adv_graphgen/find_legacy_hosts.py
@@ -0,0 +1,59 @@
+#!/usr/bin/python
+# -*- coding: utf8 -*-
+
+import sys,json
+""" TODO: Refactoring needed to pull the edges out of the node structures again,
+it should be easier to handle both structures"""
+DUMP_FILE = "/krebs/db/availability"
+
+def get_all_nodes():
+ import os
+ return os.listdir("/etc/tinc/retiolum/hosts")
+def generate_stats():
+ """ Generates some statistics of the network and nodes
+ """
+ import json
+ jlines = []
+ try:
+ f = open(DUMP_FILE,'r')
+ for line in f:
+ jlines.append(json.loads(line))
+ f.close()
+ except Exception,e:
+ pass
+ all_nodes = {}
+ for k in get_all_nodes():
+ all_nodes[k] = get_node_availability(k,jlines)
+ print ( json.dumps(all_nodes))
+
+def get_node_availability(name,jlines):
+ """ calculates the node availability by reading the generated dump file
+ adding together the uptime of the node and returning the time
+ parms:
+ name - node name
+ jlines - list of already parsed dictionaries node archive
+ """
+ begin = last = current = 0
+ uptime = 0
+ #sys.stderr.write ( "Getting Node availability of %s\n" % name)
+ for stat in jlines:
+ if not stat['nodes']:
+ continue
+ ts = stat['timestamp']
+ if not begin:
+ begin = last = ts
+ current = ts
+ if stat['nodes'].get(name,{}).get('to',[]):
+ uptime += current - last
+ else:
+ pass
+ #sys.stderr.write("%s offline at timestamp %f\n" %(name,current))
+ last = ts
+ all_the_time = last - begin
+ try:
+ return uptime/ all_the_time
+ except:
+ return 1
+
+
+generate_stats()