nootebooks/Drawing - Graphio.ipynb
{
"cells": [
{
"cell_type": "code",
"execution_count": 17,
"metadata": {},
"outputs": [],
"source": [
"import requests\n",
"import json\n",
"\n",
"# If You like to test, can put url of data app and any entry app\n",
"url = '10.168.20.20:5010'\n",
"entries = ['5b68a0ecea0637002f6a4e34', '5b97f3583cdad83c6c25aa56']\n",
"rolesa = '5b688de7ea0637002f6a4e30'\n",
"\n",
"#url = 'localhost:5010'\n",
"#entries = ['5b340835b3bad96ea3a82eff']\n",
"#rolesa = '593f49be42d3ed97390f25a7'"
]
},
{
"cell_type": "code",
"execution_count": 18,
"metadata": {},
"outputs": [],
"source": [
"pipeline = [\n",
" {'$match': {'_id': {'$in': entries}, 'roles._id': rolesa}},\n",
" {\n",
" '$graphLookup': {\n",
" 'from': 'applications',\n",
" 'startWith': '$deps._id',\n",
" 'connectFromField': 'deps._id',\n",
" 'connectToField': '_id',\n",
" 'as': 'nodes',\n",
" 'maxDepth': 10,\n",
" 'depthField': 'steps'\n",
" }\n",
" },\n",
" {'$project': {\n",
" 'name': 1, 'family': 1, \n",
" 'servers': 1,\n",
" 'datacenters': 1,\n",
" 'deps._id': 1, 'deps.endpoint': 1, \n",
" 'nodes._id': 1, 'nodes.deps': 1, \n",
" 'nodes.steps': 1, 'nodes.name': 1, \n",
" 'nodes.family': 1, 'nodes.servers': 1,\n",
" 'nodes.provider': 1, 'nodes.datacenters': 1\n",
" }\n",
" }\n",
"];\n",
"\n",
"jpipeline = json.dumps(pipeline)\n",
"\n",
"data = requests.post('http://%s/aggregate' % url, json={'entity': 'applications', 'pipeline': jpipeline})\n",
"data = data.json()"
]
},
{
"cell_type": "code",
"execution_count": 19,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"<networkx.classes.digraph.DiGraph at 0x7f6affe9b6d8>"
]
},
"execution_count": 19,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"import sys\n",
"import os\n",
"import numpy as np\n",
"cwd = os.getcwd()\n",
"spltted = cwd.split('/')[:-1]\n",
"sys.path.append('/'.join(spltted))\n",
"\n",
"import networkx as nx\n",
"from app.services.gridOrchestrator import GridOrchestrator\n",
"from app.libs.network.baseNetwork import BaseNetwork\n",
"from app.libs.histograms.histogram import Histogram\n",
"from app.libs.histograms.grid import GridHistogram\n",
"from app.libs.drawing.areaSVG import DrawArea\n",
"from app.libs.drawing.layoutSVG import DrawLayout\n",
"\n",
"from app.libs.transformDict import append_servers, transform_dict\n",
"\n",
"from svgwrite import Drawing\n",
"\n",
"network = BaseNetwork()\n",
"network.make(data.get('items')).get_graph()"
]
},
{
"cell_type": "code",
"execution_count": 20,
"metadata": {},
"outputs": [],
"source": [
"class DrawTemplateSVG(object):\n",
" def __init__(self, tmax, servers, grid, darea=DrawArea):\n",
" pass\n",
" \n",
" def draw_app(self, item):\n",
" pass\n",
" \n",
"\n",
" def add(self, symbol):\n",
" self.dwg.add(symbol)\n",
"\n",
" def save(self):\n",
" self.dwg.save()\n",
" return self.dwg.tostring()\n",
"\n",
" def draw_connect(self, node1, node2, details={}):\n",
" pass"
]
},
{
"cell_type": "code",
"execution_count": 21,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"-------------------------\n"
]
},
{
"ename": "AttributeError",
"evalue": "'DrawTemplateSVG' object has no attribute 'dwg'",
"traceback": [
"\u001b[0;31m---------------------------------------------------------------------------\u001b[0m",
"\u001b[0;31mAttributeError\u001b[0m Traceback (most recent call last)",
"\u001b[0;32m<ipython-input-21-8ddf23ebcb02>\u001b[0m in \u001b[0;36m<module>\u001b[0;34m()\u001b[0m\n\u001b[1;32m 23\u001b[0m \u001b[0mLayout\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mdraw_nodes\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 24\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m---> 25\u001b[0;31m \u001b[0mLayout\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0msave\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m",
"\u001b[0;32m/var/app/analytics-maestro/app/libs/drawing/layoutSVG.py\u001b[0m in \u001b[0;36msave\u001b[0;34m(self)\u001b[0m\n\u001b[1;32m 46\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 47\u001b[0m \u001b[0;32mdef\u001b[0m \u001b[0msave\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m---> 48\u001b[0;31m \u001b[0;32mreturn\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mdrawer\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0msave\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m",
"\u001b[0;32m<ipython-input-20-4482585cdeaa>\u001b[0m in \u001b[0;36msave\u001b[0;34m(self)\u001b[0m\n\u001b[1;32m 11\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 12\u001b[0m \u001b[0;32mdef\u001b[0m \u001b[0msave\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m---> 13\u001b[0;31m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mdwg\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0msave\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 14\u001b[0m \u001b[0;32mreturn\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mdwg\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mtostring\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 15\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n",
"\u001b[0;31mAttributeError\u001b[0m: 'DrawTemplateSVG' object has no attribute 'dwg'"
],
"output_type": "error"
}
],
"source": [
"from IPython.display import SVG, display\n",
"from functools import reduce\n",
"from app.repository.externalMaestroData import ExternalMaestroData\n",
"\n",
"print(\"-------------------------\")\n",
"Orchestration = GridOrchestrator(network.graph)\n",
"Orchestration.create(entries)\n",
"\n",
"\n",
"och = Orchestration.get_mapping()\n",
"\n",
"servers_id = reduce(append_servers, och[1].values(), [])\n",
"servers_id = list(set(servers_id)) #remove duplicate\n",
"query = {\"_id\": servers_id}\n",
"ExternalRequest = ExternalMaestroData(owner_id=rolesa, graph_id=\"asda\")\n",
"result = ExternalRequest.get_request(path=\"servers\", query=query)\n",
"\n",
"servers = transform_dict(result)\n",
"\n",
"Layout = DrawLayout(*och, servers, DrawTemplateSVG)\n",
"\n",
"Layout.draw_connections(network.graph.edges(data='endpoint'))\n",
"Layout.draw_nodes()\n",
"\n",
"Layout.save()"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
""
]
}
],
"metadata": {
"kernelspec": {
"display_name": "an",
"language": "python",
"name": "an"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 3.0
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3.5.2"
}
},
"nbformat": 4,
"nbformat_minor": 0
}