X-Git-Url: https://osm.etsi.org/gitweb/?p=osm%2Fvim-emu.git;a=blobdiff_plain;f=src%2Femuvim%2Fapi%2Fzerorpc%2Fnetwork.py;h=7658be24264df6dec8b2bfa2a2f599350b2e5f36;hp=af11bc3afbb7e47d2201ac138ee1305a8d1cfa67;hb=9795d499371f68b6cbccb6158a516a29b9ecb5ed;hpb=898a2af8cc32f6814fa3a0971ef71f4936f42171 diff --git a/src/emuvim/api/zerorpc/network.py b/src/emuvim/api/zerorpc/network.py old mode 100644 new mode 100755 index af11bc3..7658be2 --- a/src/emuvim/api/zerorpc/network.py +++ b/src/emuvim/api/zerorpc/network.py @@ -1,5 +1,34 @@ """ +Copyright (c) 2015 SONATA-NFV +ALL RIGHTS RESERVED. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. + +Neither the name of the SONATA-NFV [, ANY ADDITIONAL AFFILIATION] +nor the names of its contributors may be used to endorse or promote +products derived from this software without specific prior written +permission. + +This work has been performed in the framework of the SONATA project, +funded by the European Commission under Grant number 671517 through +the Horizon 2020 and 5G-PPP programmes. The authors would like to +acknowledge the contributions of their colleagues of the SONATA +partner consortium (www.sonata-nfv.eu). +""" +""" Distributed Cloud Emulator (dcemulator) +Networking and monitoring functions +(c) 2015 by Steven Van Rossem """ import logging @@ -74,6 +103,7 @@ class DCNetworkApi(object): 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'), @@ -96,7 +126,8 @@ class DCNetworkApi(object): cmd='del-flows', weight=kwargs.get('weight'), match=kwargs.get('match'), - bidirectional=kwargs.get('bidirectional')) + bidirectional=kwargs.get('bidirectional'), + cookie=kwargs.get('cookie')) return c except Exception as ex: logging.exception("RPC error.") @@ -122,5 +153,41 @@ class DCNetworkApi(object): logging.exception("RPC error.") return ex.message + # 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_flow(vnf_name, vnf_interface, metric, cookie) + return c + except Exception as ex: + logging.exception("RPC error.") + return ex.message + + # remove the flow metrics measurement + def stop_flow(self, vnf_name, vnf_interface, metric, cookie): + logging.debug("RPC CALL: stop flow") + try: + c = self.net.monitor_agent.stop_flow(vnf_name, vnf_interface, metric, cookie) + return c + except Exception as ex: + logging.exception("RPC error.") + return ex.message + + # 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.query_Prometheus(query) + return c + except Exception as ex: + logging.exception("RPC error.") + return ex.message +