diff options
Diffstat (limited to 'retiolum/scripts/adv_graphgen/parse_tinc_anon.py')
-rwxr-xr-x | retiolum/scripts/adv_graphgen/parse_tinc_anon.py | 93 |
1 files changed, 0 insertions, 93 deletions
diff --git a/retiolum/scripts/adv_graphgen/parse_tinc_anon.py b/retiolum/scripts/adv_graphgen/parse_tinc_anon.py deleted file mode 100755 index 05b82828..00000000 --- a/retiolum/scripts/adv_graphgen/parse_tinc_anon.py +++ /dev/null @@ -1,93 +0,0 @@ -#!/usr/bin/python -# -*- coding: utf8 -*- -from tinc_stats.Graphite import GraphiteSender -from time import time - -try: - import os - gr = GraphiteSender(os.environ.get("GRAPHITE_HOST","localhost")) - begin = time() -except Exception as e: - sys.stderr.write( "Cannot connect to graphite: " + str(e)) - - -def write_digraph(nodes): - """ - writes the complete digraph in dot format - """ - print ('digraph retiolum {') - #print (' graph [center rankdir=LR packMode="clust"]') - print (' graph [center packMode="clust"]') - print (' node[shape=circle,style=filled,fillcolor=grey]') - print (' overlap=false') - generate_stats(nodes) - merge_edges(nodes) - nodes = anon_nodes(nodes) - for k,v in nodes.iteritems(): - write_node(k,v) - write_stat_node(nodes) - print ('}') - -def anon_nodes(nodes): - #anonymizes all nodes - i = "0" - newnodes = {} - for k,v in nodes.iteritems(): - for nodek,node in nodes.iteritems(): - for to in node['to']: - if to['name'] == k: - to['name'] = i - newnodes[i] = v - i = str(int(i)+1) - return newnodes - -def write_stat_node(nodes): - ''' Write a `stats` node in the corner - This node contains infos about the current number of active nodes and connections inside the network - ''' - from time import localtime,strftime - num_conns = 0 - num_nodes = len(nodes) - for k,v in nodes.iteritems(): - num_conns+= len(v['to']) - node_text = " stats_node [shape=box,label=\"Statistics\\l" - node_text += "Build Date : %s\\l" % strftime("%Y-%m-%d %H:%M:%S",localtime()) - node_text += "Active Nodes: %s\\l" % num_nodes - node_text += "Connections : %s\\l" % num_conns - node_text += "\"" - node_text += ",fillcolor=green" - node_text += "]" - print(node_text) - - - -def write_node(k,v): - """ writes a single node and its edges - edges are weightet with the informations inside the nodes provided by - tinc - """ - - node = " "+k #+"[label=\"" - print node - - for con in v.get('to',[]): - label = con['weight'] - w = int(con['weight']) - weight = str(1000 - (((w - 150) * (1000 - 0)) / (1000 -150 )) + 0) - - length = str(float(w)/1500) - if float(weight) < 0 : - weight= "1" - - edge = " "+k+ " -> " +con['name'] + " [label="+label + " weight="+weight - if con.get('bidirectional',False): - edge += ",dir=both" - edge += "]" - print edge - -if __name__ == "__main__": - nodes = delete_unused_nodes(json.load(sys.stdin)) - write_digraph(nodes) - try: - gr.send("graph.anon_build_time",(time()-begin)*1000) - except Exception as e: pass |