X-Git-Url: https://osm.etsi.org/gitweb/?p=osm%2Fvim-emu.git;a=blobdiff_plain;f=src%2Femuvim%2Fapi%2Fzerorpc%2Fnetwork.py;h=37b34f9e04c8e8488b16edf248694bd30060bff9;hp=f21ce991633e618ad1f769df15da3a4dd103db4f;hb=e3e034e3124ea755e924dc667fd1232323cff70c;hpb=7da4970fbf9548d755decc1361d5d9d548cc0f3c diff --git a/src/emuvim/api/zerorpc/network.py b/src/emuvim/api/zerorpc/network.py old mode 100644 new mode 100755 index f21ce99..37b34f9 --- a/src/emuvim/api/zerorpc/network.py +++ b/src/emuvim/api/zerorpc/network.py @@ -64,27 +64,41 @@ class DCNetworkApi(object): def __init__(self, net): self.net = net - def network_action_start(self, vnf_src_name, vnf_dst_name, vnf_src_interface=None, vnf_dst_interface=None): + def network_action_start(self, vnf_src_name, vnf_dst_name, kwargs): # call DCNetwork method, not really datacenter specific API for now... # provided dc name needs to be part of API endpoint # no check if vnfs are really connected to this datacenter... logging.debug("RPC CALL: network chain start") try: c = self.net.setChain( - vnf_src_name, vnf_dst_name, vnf_src_interface, vnf_dst_interface) + vnf_src_name, vnf_dst_name, + vnf_src_interface=kwargs.get('vnf_src_interface'), + vnf_dst_interface=kwargs.get('vnf_dst_interface'), + cmd='add-flow', + weight=kwargs.get('weight'), + match=kwargs.get('match'), + bidirectional=kwargs.get('bidirectional'), + cookie=kwargs.get('cookie')) return str(c) except Exception as ex: logging.exception("RPC error.") return ex.message - def network_action_stop(self, vnf_src_name, vnf_dst_name, vnf_src_interface=None, vnf_dst_interface=None): + def network_action_stop(self, vnf_src_name, vnf_dst_name, kwargs): # call DCNetwork method, not really datacenter specific API for now... # provided dc name needs to be part of API endpoint # no check if vnfs are really connected to this datacenter... logging.debug("RPC CALL: network chain stop") try: c = self.net.setChain( - vnf_src_name, vnf_dst_name, vnf_src_interface, vnf_dst_interface, cmd='del-flows') + vnf_src_name, vnf_dst_name, + vnf_src_interface=kwargs.get('vnf_src_interface'), + vnf_dst_interface=kwargs.get('vnf_dst_interface'), + cmd='del-flows', + weight=kwargs.get('weight'), + match=kwargs.get('match'), + bidirectional=kwargs.get('bidirectional'), + cookie=kwargs.get('cookie')) return c except Exception as ex: logging.exception("RPC error.") @@ -101,33 +115,40 @@ class DCNetworkApi(object): return ex.message # remove the rate measurement for a vnf interface - def remove_metric(self, vnf_name, vnf_interface, metric): - logging.debug("RPC CALL: setup metric") + def stop_metric(self, vnf_name, vnf_interface, metric): + logging.debug("RPC CALL: stop metric") try: - c = self.net.monitor_agent.remove_metric(vnf_name, vnf_interface, metric) + c = self.net.monitor_agent.stop_metric(vnf_name, vnf_interface, metric) return c except Exception as ex: logging.exception("RPC error.") return ex.message - # setup the rate measurement for a vnf interface - def monitor_setup_rate_measurement(self, vnf_name, vnf_interface, metric): - logging.debug("RPC CALL: get rate") + # setup the flow metrics measurement + def setup_flow(self, vnf_name, vnf_interface, metric, cookie): + logging.debug("RPC CALL: setup flow") try: - c = self.net.monitor_agent.setup_rate_measurement(vnf_name, vnf_interface, metric) + c = self.net.monitor_agent.setup_flow(vnf_name, vnf_interface, metric, cookie) return c except Exception as ex: logging.exception("RPC error.") return ex.message - # get egress(default) or ingress rate of a vnf - def monitor_get_rate(self, vnf_name, vnf_interface, metric): - logging.debug("RPC CALL: get rate") + # do prometheus query + def prometheus(self, dc_label, vnf_name, vnf_interface, query): + logging.debug("RPC CALL: query prometheus") + vnf_status = self.net.dcs.get(dc_label).containers.get(vnf_name).getStatus() + uuid = vnf_status['id'] + query = query.replace('', uuid) + #if needed, replace interface id with emu-intfs name + # query = query.replace('', vnf_interface) + logging.info('query: {0}'.format(query)) try: - c = self.net.monitor_agent.get_rate(vnf_name, vnf_interface, metric) + c = self.net.monitor_agent.query_Prometheus(query) return c except Exception as ex: logging.exception("RPC error.") return ex.message +