X-Git-Url: https://osm.etsi.org/gitweb/?a=blobdiff_plain;f=src%2Femuvim%2Fapi%2Frest%2Fmonitor.py;h=6f99bdfbc321a221dec2270149af68d03fcc6483;hb=8f2063d50f6d8520ca5f960c65e5eed2c5cd7bee;hp=737048d5d9a814475e83a9fe340ff7290a52dd37;hpb=9cc7360bf2c0dacb869d8ed0674d9d9e269a1082;p=osm%2Fvim-emu.git diff --git a/src/emuvim/api/rest/monitor.py b/src/emuvim/api/rest/monitor.py index 737048d..6f99bdf 100755 --- a/src/emuvim/api/rest/monitor.py +++ b/src/emuvim/api/rest/monitor.py @@ -39,6 +39,8 @@ import json logging.basicConfig(level=logging.INFO) +CORS_HEADER = {'Access-Control-Allow-Origin': '*'} + net = None @@ -61,10 +63,10 @@ class MonitorInterfaceAction(Resource): else: c = net.monitor_agent.setup_metric(vnf_name, vnf_interface, metric) # return monitor message response - return str(c), 200 + return str(c), 200, CORS_HEADER except Exception as ex: logging.exception("API error.") - return ex.message, 500 + return ex.message, 500, CORS_HEADER def delete(self, vnf_name, vnf_interface=None, metric='tx_packets', cookie=None): logging.debug("REST CALL: stop monitor VNF interface") @@ -74,10 +76,10 @@ class MonitorInterfaceAction(Resource): else: c = net.monitor_agent.stop_metric(vnf_name, vnf_interface, metric) # return monitor message response - return str(c), 200 + return str(c), 200, CORS_HEADER except Exception as ex: logging.exception("API error.") - return ex.message, 500 + return ex.message, 500, CORS_HEADER class MonitorFlowAction(Resource): @@ -96,20 +98,20 @@ class MonitorFlowAction(Resource): try: c = net.monitor_agent.setup_flow(vnf_name, vnf_interface, metric, cookie) # return monitor message response - return str(c), 200 + return str(c), 200, CORS_HEADER except Exception as ex: logging.exception("API error.") - return ex.message, 500 + return ex.message, 500, CORS_HEADER def delete(self, vnf_name, vnf_interface=None, metric='tx_packets', cookie=0): logging.debug("REST CALL: stop monitor VNF interface") try: c = net.monitor_agent.stop_flow(vnf_name, vnf_interface, metric, cookie) # return monitor message response - return str(c), 200 + return str(c), 200, CORS_HEADER except Exception as ex: logging.exception("API error.") - return ex.message, 500 + return ex.message, 500, CORS_HEADER class MonitorLinkAction(Resource): """ @@ -144,7 +146,7 @@ class MonitorLinkAction(Resource): return self._MonitorLinkAction(vnf_src_name, vnf_dst_name, command=command) except Exception as ex: logging.exception("API error.") - return ex.message, 500 + return ex.message, 500, CORS_HEADER def delete(self, vnf_src_name, vnf_dst_name): logging.debug("REST CALL: monitor link flow remove") @@ -154,7 +156,7 @@ class MonitorLinkAction(Resource): return self._MonitorLinkAction(vnf_src_name, vnf_dst_name, command=command) except Exception as ex: logging.exception("API error.") - return ex.message, 500 + return ex.message, 500, CORS_HEADER def _MonitorLinkAction(self, vnf_src_name, vnf_dst_name, command=None): # call DCNetwork method, not really datacenter specific API for now... @@ -202,10 +204,48 @@ class MonitorLinkAction(Resource): vnf_name = vnf_src_name vnf_interface = vnf_src_interface - c2 = net.monitor_agent.setup_flow(vnf_name, vnf_interface, metric, cookie) + c2 = 'command unknown' + if command == 'add-flow': + c2 = net.monitor_agent.setup_flow(vnf_name, vnf_interface, metric, cookie) + elif command == 'del-flows': + c2 = net.monitor_agent.stop_flow(vnf_name, vnf_interface, metric, cookie) # return setChain response - return (str(c1) + " " + str(c2)), 200 + return (str(c1) + " " + str(c2)), 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 + +class MonitorSkewAction(Resource): + """ + Monitor the counters of a VNF interface + :param vnf_name: name of the VNF to be monitored + :param resource: the resource to be monitored (cpu, mem, ...) + :return: message string indicating if the monitor action is succesful or not + """ + global net + + def put(self, vnf_name, resource_name='cpu'): + logging.debug("REST CALL: start monitor skewness") + try: + # configure skewmon + c = net.monitor_agent.update_skewmon(vnf_name, resource_name, action='start') + + # return monitor message response + return str(c), 200 + except Exception as ex: + logging.exception("API error.") + return ex.message, 500 + + def delete(self, vnf_name, resource_name='cpu'): + logging.debug("REST CALL: stop monitor skewness") + try: + # configure skewmon + c = net.monitor_agent.update_skewmon(vnf_name, resource_name, action='stop') + + # return monitor message response + return str(c), 200, CORS_HEADER + except Exception as ex: + logging.exception("API error.") + return ex.message, 500, CORS_HEADER +