X-Git-Url: https://osm.etsi.org/gitweb/?a=blobdiff_plain;f=src%2Femuvim%2Fapi%2Frest%2Fnetwork.py;h=13743731e924348d4207b329f5ec61c43acbb1a7;hb=e0f920e099b91a07e7cb2f3bb3a940a71b493f08;hp=e766e625c012b73aa4ebe2821f284915da376e7b;hpb=e5ed9d18877fae6cf7b42af20bc19595c789568b;p=osm%2Fvim-emu.git diff --git a/src/emuvim/api/rest/network.py b/src/emuvim/api/rest/network.py index e766e62..1374373 100755 --- a/src/emuvim/api/rest/network.py +++ b/src/emuvim/api/rest/network.py @@ -36,8 +36,9 @@ import logging from flask_restful import Resource from flask import request import json +import networkx -logging.basicConfig(level=logging.INFO) +logging.basicConfig(level=logging.DEBUG) CORS_HEADER = {'Access-Control-Allow-Origin': '*'} @@ -82,8 +83,7 @@ class NetworkAction(Resource): # check if json data is a dict data = request.args # try json payload - if data is None: - data = request.json + data = request.json # then no data if data is None: data = {} @@ -121,3 +121,32 @@ class NetworkAction(Resource): except Exception as ex: logging.exception("API error.") return ex.message, 500, CORS_HEADER + + +class DrawD3jsgraph(Resource): + + global net + + def get(self): + nodes = list() + nodes2 = list() + links = list() + # add all DCs + node_attr = networkx.get_node_attributes(net.DCNetwork_graph, 'type') + for node_name in net.DCNetwork_graph.nodes(): + nodes2.append(node_name) + node_index = nodes2.index(node_name) + type = node_attr[node_name] + node_dict = {"name":node_name,"group":type} + nodes.append(node_dict) + + # add links between other DCs + for node1_name in net.DCNetwork_graph.nodes(): + node1_index = nodes2.index(node1_name) + for node2_name in net.DCNetwork_graph.neighbors(node1_name): + node2_index = nodes2.index(node2_name) + edge_dict = {"source": node1_index, "target": node2_index, "value": 10} + links.append(edge_dict) + + json = {"nodes":nodes, "links":links} + return json, 200, CORS_HEADER \ No newline at end of file