X-Git-Url: https://osm.etsi.org/gitweb/?a=blobdiff_plain;f=src%2Femuvim%2Fapi%2Frest%2Frest_api_endpoint.py;h=c5154cb2a784cc8c9982b1d2cb42fdcfb8ec4ca8;hb=aa8823c85d94a4fa72de058076195296334cdb91;hp=a9a863d43a3a79b387eef9774cf103e174d60c10;hpb=4a8088d1decc9041fd12e758888be09839c69a90;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 a9a863d..c5154cb 100755 --- a/src/emuvim/api/rest/rest_api_endpoint.py +++ b/src/emuvim/api/rest/rest_api_endpoint.py @@ -26,26 +26,24 @@ import logging import threading -from flask import Flask +from flask import Flask, send_from_directory from flask_restful import Api -from gevent import monkey from gevent.pywsgi import WSGIServer # need to import total module to set its global variable dcs -import compute -from compute import ComputeList, Compute, ComputeResources, DatacenterList, DatacenterStatus +from emuvim.api.rest import compute +from emuvim.api.rest.compute import ComputeList, Compute, ComputeResources, DatacenterList, DatacenterStatus # need to import total module to set its global variable net -import network -from network import NetworkAction, DrawD3jsgraph +from emuvim.api.rest import network +from emuvim.api.rest.network import NetworkAction, DrawD3jsgraph -import monitor -from monitor import MonitorInterfaceAction, MonitorFlowAction, MonitorLinkAction, MonitorSkewAction, MonitorTerminal +from emuvim.api.rest import monitor +from emuvim.api.rest.monitor import MonitorInterfaceAction, MonitorFlowAction, MonitorLinkAction, MonitorSkewAction, MonitorTerminal import pkg_resources from os import path -monkey.patch_all() logging.basicConfig() @@ -66,18 +64,18 @@ class RestApiEndpoint(object): self.connectDCNetwork(DCnetwork) # setup Flask - # 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.app = Flask(__name__) self.api = Api(self.app) - # setup endpoints + # define dashboard endpoints + db_dir, db_file = self.get_dashboard_path() + + @self.app.route('/dashboard/') + def db_file(path): + logging.info("[DB] Serving: {}".format(path)) + return send_from_directory(db_dir, path) + # define REST API endpoints # compute related actions (start/stop VNFs, get info) self.api.add_resource( Compute, "/restapi/compute//") @@ -120,6 +118,17 @@ class RestApiEndpoint(object): logging.debug("Created API endpoint %s(%s:%d)" % (self.__class__.__name__, self.ip, self.port)) + def get_dashboard_path(self): + """ + Return absolute path to dashboard files. + """ + db_file = pkg_resources.resource_filename( + 'emuvim.dashboard', "index.html") + db_dir = path.dirname(db_file) + logging.info("[DB] Serving emulator dashboard from: {} and {}" + .format(db_dir, db_file)) + return db_dir, db_file + def connectDatacenter(self, dc): compute.dcs[dc.label] = dc logging.info(