fix rest api endpoint for monitor
[osm/vim-emu.git] / src / emuvim / api / rest / network.py
index 88ea470..e766e62 100755 (executable)
@@ -39,6 +39,8 @@ import json
 
 logging.basicConfig(level=logging.INFO)
 
+CORS_HEADER = {'Access-Control-Allow-Origin': '*'}
+
 # the global net is set from the topology file, and connected via connectDCNetwork function in rest_api_endpoint.py
 net = None
 
@@ -63,27 +65,33 @@ class NetworkAction(Resource):
 
     global net
 
-    def put(self, vnf_src_name, vnf_dst_name):
+    def put(self):
         logging.debug("REST CALL: network chain add")
         command = 'add-flow'
-        return self._NetworkAction(vnf_src_name, vnf_dst_name, command=command)
+        return self._NetworkAction(command=command)
 
-    def delete(self, vnf_src_name, vnf_dst_name):
+    def delete(self):
         logging.debug("REST CALL: network chain remove")
         command = 'del-flows'
-        return self._NetworkAction(vnf_src_name, vnf_dst_name, command=command)
+        return self._NetworkAction(command=command)
 
-    def _NetworkAction(self, vnf_src_name, vnf_dst_name, command=None):
+    def _NetworkAction(self, command=None):
         # call DCNetwork method, not really datacenter specific API for now...
         # no check if vnfs are really connected to this datacenter...
         try:
             # check if json data is a dict
-            data = request.json
+            data = request.args
+            # try json payload
+            if data is None:
+                data = request.json
+            # then no data
             if data is None:
                 data = {}
             elif type(data) is not dict:
                 data = json.loads(request.json)
 
+            vnf_src_name = data.get("vnf_src_name")
+            vnf_dst_name = data.get("vnf_dst_name")
             vnf_src_interface = data.get("vnf_src_interface")
             vnf_dst_interface = data.get("vnf_dst_interface")
             weight = data.get("weight")
@@ -109,7 +117,7 @@ class NetworkAction(Resource):
                 monitor=monitor,
                 monitor_placement=monitor_placement)
             # return setChain response
-            return str(c), 200
+            return str(c), 200, CORS_HEADER
         except Exception as ex:
             logging.exception("API error.")
-            return ex.message, 500
\ No newline at end of file
+            return ex.message, 500, CORS_HEADER