X-Git-Url: https://osm.etsi.org/gitweb/?p=osm%2Fvim-emu.git;a=blobdiff_plain;f=src%2Femuvim%2Fapi%2Frest%2Frest_api_endpoint.py;h=71f87b94cd27fffdff6843ea900966e19cbf0080;hp=0ecf548f93370b609a9ec217a0521bc4ca94f07e;hb=c911ca6a6560d062fed5d294bc5a80c26da69672;hpb=a50ddb3309a321af8af4a8c1b7aec0b9b224989c diff --git a/src/emuvim/api/rest/rest_api_endpoint.py b/src/emuvim/api/rest/rest_api_endpoint.py index 0ecf548..71f87b9 100755 --- a/src/emuvim/api/rest/rest_api_endpoint.py +++ b/src/emuvim/api/rest/rest_api_endpoint.py @@ -25,14 +25,16 @@ 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 # need to import total module to set its global variable dcs import compute -from compute import dcs, ComputeList, Compute, DatacenterList, DatacenterStatus +from compute import dcs, ComputeList, Compute, ComputeResources, DatacenterList, DatacenterStatus # need to import total module to set its global variable net import network @@ -41,6 +43,9 @@ from network import NetworkAction import monitor from monitor import MonitorInterfaceAction, MonitorFlowAction, MonitorLinkAction, MonitorSkewAction +import pkg_resources +from os import path + logging.basicConfig(level=logging.INFO) @@ -56,18 +61,22 @@ 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 # compute related actions (start/stop VNFs, get info) - self.api.add_resource(Compute, - "/restapi/compute//", - "/restapi/compute////") + self.api.add_resource(Compute, "/restapi/compute//") self.api.add_resource(ComputeList, "/restapi/compute", "/restapi/compute/") + self.api.add_resource(ComputeResources, "/restapi/compute/resources//") self.api.add_resource(DatacenterStatus, "/restapi/datacenter/") self.api.add_resource(DatacenterList, "/restapi/datacenter") @@ -96,6 +105,7 @@ class RestApiEndpoint(object): 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( @@ -116,3 +126,6 @@ class RestApiEndpoint(object): def _start_flask(self): 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()