summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authortv <tv@iiso>2011-11-08 20:31:22 +0100
committertv <tv@iiso>2011-11-08 20:31:22 +0100
commit6d955b994fddb82d0151094bdda04a739d701652 (patch)
tree8e7558d70518c25a751ade926b114f1b81e016e6
parentd01b54124935ba11fc80def7aceaabe27502552a (diff)
parent35c9a0df67a03fff79cf05159a637ca003fe048b (diff)
Merge branch 'master' of github.com:krebscode/painload
-rw-r--r--retiolum/hosts/alphalabs1
-rwxr-xr-xretiolum/scripts/adv_graphgen/find_legacy_hosts.py59
2 files changed, 60 insertions, 0 deletions
diff --git a/retiolum/hosts/alphalabs b/retiolum/hosts/alphalabs
index ca99549c..4019dd19 100644
--- a/retiolum/hosts/alphalabs
+++ b/retiolum/hosts/alphalabs
@@ -1,3 +1,4 @@
+Address = 10.9.0.10
Subnet = 10.7.7.10
Subnet = 42:0:0:0:0:0:0:a1fa/128
-----BEGIN RSA PUBLIC KEY-----
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()