Removed outdated zerorpc API.
[osm/vim-emu.git] / src / emuvim / api / zerorpc / network.py
diff --git a/src/emuvim/api/zerorpc/network.py b/src/emuvim/api/zerorpc/network.py
deleted file mode 100755 (executable)
index 7658be2..0000000
+++ /dev/null
@@ -1,193 +0,0 @@
-"""
-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 <steven.vanrossem@intec.ugent.be>
-"""
-
-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, 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=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, 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=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.")
-            return ex.message
-
-    # setup the rate measurement for a vnf interface
-    def setup_metric(self, vnf_name, vnf_interface, metric):
-        logging.debug("RPC CALL: setup metric")
-        try:
-            c = self.net.monitor_agent.setup_metric(vnf_name, vnf_interface, metric)
-            return c
-        except Exception as ex:
-            logging.exception("RPC error.")
-            return ex.message
-
-    # remove the rate measurement for a vnf interface
-    def stop_metric(self, vnf_name, vnf_interface, metric):
-        logging.debug("RPC CALL: stop metric")
-        try:
-            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 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>', 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
-
-
-