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, weight=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, weight=weight)
+ 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, weight=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', weight=weight)
+ 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'))
return c
except Exception as ex:
logging.exception("RPC error.")
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
+
+ # 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>', uuid)
+ #if needed, replace interface id with emu-intfs name
+ # query = query.replace('<intf>', 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
+
+
+