update monitor REST API according to D3.2
[osm/vim-emu.git] / src / emuvim / api / rest / rest_api_endpoint.py
index 536ed7a..7a0fc4f 100755 (executable)
@@ -32,21 +32,19 @@ from flask_restful import Api
 
 # need to import total module to set its global variable dcs
 import compute
-from compute import dcs, ComputeList, ComputeStart, ComputeStatus, ComputeStop, DatacenterList, DatacenterStatus
+from compute import dcs, ComputeList, Compute, DatacenterList, DatacenterStatus
 
 # need to import total module to set its global variable net
 import network
 from network import NetworkAction
 
 import monitor
-from monitor import MonitorInterfaceAction, MonitorFlowAction
+from monitor import MonitorInterfaceAction, MonitorFlowAction, MonitorLinkAction
 
 logging.basicConfig(level=logging.INFO)
 
 
-
 class RestApiEndpoint(object):
-
     """
     Simple API endpoint that offers a REST
     interface. This interface will be used by the
@@ -62,31 +60,38 @@ class RestApiEndpoint(object):
         self.api = Api(self.app)
 
         # setup endpoints
-        self.api.add_resource(ComputeList, "/restapi/compute/<dc_label>")
-        self.api.add_resource(ComputeStart, "/restapi/compute/<dc_label>/<compute_name>/start")
-        self.api.add_resource(ComputeStop, "/restapi/compute/<dc_label>/<compute_name>/stop")
-        self.api.add_resource(ComputeStatus, "/restapi/compute/<dc_label>/<compute_name>")
-        self.api.add_resource(DatacenterList, "/restapi/datacenter")
+
+        self.api.add_resource(Compute,
+                              "/restapi/compute/<dc_label>/<compute_name>",
+                              "/restapi/compute/<dc_label>/<compute_name>/<resource>/<value>")
+        self.api.add_resource(ComputeList,
+                      "/restapi/compute",
+                      "/restapi/compute/<dc_label>")
+
         self.api.add_resource(DatacenterStatus, "/restapi/datacenter/<dc_label>")
+        self.api.add_resource(DatacenterList, "/restapi/datacenter")
 
-        self.api.add_resource(NetworkAction, "/restapi/network/<vnf_src_name>/<vnf_dst_name>",)
+        self.api.add_resource(NetworkAction,
+                              "/restapi/network/<vnf_src_name>/<vnf_dst_name>")
 
         self.api.add_resource(MonitorInterfaceAction,
-                              "/restapi/monitor/<vnf_name>/<metric>",
-                              "/restapi/monitor/<vnf_name>/<vnf_interface>/<metric>")
+                              "/restapi/monitor/vnf/<vnf_name>/<metric>",
+                              "/restapi/monitor/vnf/<vnf_name>/<vnf_interface>/<metric>",
+                              "/restapi/monitor/vnf/<vnf_name>/<vnf_interface>/<metric>/<cookie>")
         self.api.add_resource(MonitorFlowAction,
-                              "/restapi/flowmon/<vnf_name>/<metric>/<cookie>",
-                              "/restapi/flowmon/<vnf_name>/<vnf_interface>/<metric>/<cookie>")
+                              "/restapi/monitor/flow/<vnf_name>/<metric>/<cookie>",
+                              "/restapi/monitor/flow/<vnf_name>/<vnf_interface>/<metric>/<cookie>")
+        self.api.add_resource(MonitorLinkAction,
+                              "/restapi/monitor/link/<vnf_src_name>/<vnf_dst_name>")
 
         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("Connected DC(%s) to API endpoint %s(%s:%d)" % (dc.label, self.__class__.__name__, self.ip, self.port))
+        logging.info(
+            "Connected DC(%s) to API endpoint %s(%s:%d)" % (dc.label, self.__class__.__name__, self.ip, self.port))
 
     def connectDCNetwork(self, DCnetwork):
-
         network.net = DCnetwork
         monitor.net = DCnetwork
 
@@ -94,11 +99,10 @@ class RestApiEndpoint(object):
             self.__class__.__name__, self.ip, self.port))
 
     def start(self):
-        thread = threading.Thread(target= self._start_flask, args=())
+        thread = threading.Thread(target=self._start_flask, args=())
         thread.daemon = True
         thread.start()
         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)
\ No newline at end of file
+        self.app.run(self.ip, self.port, debug=True, use_reloader=False)