X-Git-Url: https://osm.etsi.org/gitweb/?a=blobdiff_plain;f=emuvim%2Fapi%2Fzerorpcapi_DCNetwork.py;fp=emuvim%2Fapi%2Fzerorpcapi_DCNetwork.py;h=0000000000000000000000000000000000000000;hb=3eef9fde234a4379d80e0435bac9ce650407a895;hp=27527aa759a5c264343e3aa710520505038ee425;hpb=a38de012a7a59661484805036eb9cce3c5cddf16;p=osm%2Fvim-emu.git diff --git a/emuvim/api/zerorpcapi_DCNetwork.py b/emuvim/api/zerorpcapi_DCNetwork.py deleted file mode 100755 index 27527aa..0000000 --- a/emuvim/api/zerorpcapi_DCNetwork.py +++ /dev/null @@ -1,104 +0,0 @@ -""" -Distributed Cloud Emulator (dcemulator) -(c) 2015 by Manuel Peuster -""" - -import logging -import threading -import zerorpc - - -logging.basicConfig(level=logging.INFO) - - -class ZeroRpcApiEndpointDCNetwork(object): - """ - Simple API endpoint that offers a zerorpc-based - interface. This interface will be used by the - default command line client. - It can be used as a reference to implement - REST interfaces providing the same semantics, - like e.g. OpenStack compute API. - """ - - def __init__(self, listenip, port, DCNetwork=None): - if DCNetwork : - self.connectDCNetwork(DCNetwork) - self.ip = listenip - self.port = port - logging.debug("Created monitoring API endpoint %s(%s:%d)" % ( - self.__class__.__name__, self.ip, self.port)) - - def connectDCNetwork(self, net): - self.net = net - logging.info("Connected DCNetwork to API endpoint %s(%s:%d)" % ( - self.__class__.__name__, self.ip, self.port)) - - def start(self): - thread = threading.Thread(target=self._api_server_thread, args=()) - thread.daemon = True - thread.start() - logging.debug("Started API endpoint %s(%s:%d)" % ( - self.__class__.__name__, self.ip, self.port)) - - def _api_server_thread(self): - s = zerorpc.Server(DCNetworkApi(self.net)) - s.bind("tcp://%s:%d" % (self.ip, self.port)) - s.run() - - def stop(self): - logging.info("Stop the monitoring API endpoint") - return - - -class DCNetworkApi(object): - """ - The networking and monitoring commands need the scope of the - whole DC network to find the requested vnf. So this API is intended - to work with a DCNetwork. - Just pass through the corresponding request to the - selected data center network. Do not implement provisioning - logic here because will will have multiple API - endpoint implementations at the end. - """ - - def __init__(self, net): - self.net = net - - def network_action_start(self, vnf_src_name, vnf_dst_name): - # 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) - 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): - # 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, cmd='del-flows') - 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, direction): - logging.debug("RPC CALL: get rate") - try: - c = self.net.monitor_agent.get_rate(vnf_name, direction) - return c - except Exception as ex: - logging.exception("RPC error.") - return ex.message - -