X-Git-Url: https://osm.etsi.org/gitweb/?a=blobdiff_plain;f=src%2Femuvim%2Fapi%2Frest%2Frest_api_endpoint.py;h=0c9e1bc79c30a2db48906551496aea951becb9b9;hb=aefc46afef49c660984d2d62f62dd6df70a27a71;hp=4767be45519ac1253b40b401858db83e01625667;hpb=23be11bc2e8fcb8e177694c61d95e65682a84238;p=osm%2Fvim-emu.git diff --git a/src/emuvim/api/rest/rest_api_endpoint.py b/src/emuvim/api/rest/rest_api_endpoint.py index 4767be4..0c9e1bc 100755 --- a/src/emuvim/api/rest/rest_api_endpoint.py +++ b/src/emuvim/api/rest/rest_api_endpoint.py @@ -25,11 +25,12 @@ the Horizon 2020 and 5G-PPP programmes. The authors would like to acknowledge the contributions of their colleagues of the SONATA partner consortium (www.sonata-nfv.eu). """ + import logging import threading from flask import Flask from flask_restful import Api -#from gevent.wsgi import WSGIServer +from gevent.wsgi import WSGIServer # need to import total module to set its global variable dcs import compute @@ -37,11 +38,14 @@ from compute import dcs, ComputeList, Compute, ComputeResources, DatacenterList, # need to import total module to set its global variable net import network -from network import NetworkAction +from network import NetworkAction, DrawD3jsgraph import monitor from monitor import MonitorInterfaceAction, MonitorFlowAction, MonitorLinkAction, MonitorSkewAction +import pkg_resources +from os import path + logging.basicConfig(level=logging.INFO) @@ -57,7 +61,12 @@ class RestApiEndpoint(object): self.port = port # setup Flask - self.app = Flask(__name__) + # find directory of dashboard files + dashboard_file = pkg_resources.resource_filename('emuvim.dashboard', "index.html") + dashboard_dir = path.dirname(dashboard_file) + logging.info("Started emu dashboard: {0}".format(dashboard_dir)) + + self.app = Flask(__name__, static_folder=dashboard_dir, static_url_path='/dashboard') self.api = Api(self.app) # setup endpoints @@ -76,7 +85,8 @@ class RestApiEndpoint(object): # network related actions (setup chaining between VNFs) self.api.add_resource(NetworkAction, "/restapi/network") - + self.api.add_resource(DrawD3jsgraph, + "/restapi/network/d3jsgraph") # monitoring related actions # export a network interface traffic rate counter @@ -94,8 +104,10 @@ class RestApiEndpoint(object): self.api.add_resource(MonitorSkewAction, "/restapi/monitor/skewness") + logging.debug("Created API endpoint %s(%s:%d)" % (self.__class__.__name__, self.ip, self.port)) + def connectDatacenter(self, dc): compute.dcs[dc.label] = dc logging.info( @@ -115,7 +127,7 @@ class RestApiEndpoint(object): logging.info("Started API endpoint @ http://%s:%d" % (self.ip, self.port)) def _start_flask(self): - self.app.run(self.ip, self.port, debug=True, use_reloader=False) + #self.app.run(self.ip, self.port, debug=True, use_reloader=False) #this should be a more production-fit http-server - #http_server = WSGIServer((self.ip, self.port), self.app) - #http_server.serve_forever() + http_server = WSGIServer((self.ip, self.port), self.app) + http_server.serve_forever()