Fix: Make vim-emu ready for the upcoming Containernet release
[osm/vim-emu.git] / src / emuvim / dcemulator / net.py
index 9e491b3..8b2c445 100755 (executable)
@@ -31,7 +31,7 @@ import os
 import json
 import networkx as nx
 from subprocess import Popen
-from gevent import monkey
+from gevent import monkey
 from mininet.net import Containernet
 from mininet.node import OVSSwitch, OVSKernelSwitch, Docker, RemoteController
 from mininet.cli import CLI
@@ -42,7 +42,7 @@ from emuvim.dcemulator.node import Datacenter, EmulatorCompute
 from emuvim.dcemulator.resourcemodel import ResourceModelRegistrar
 
 # ensure correct functionality of all gevent based REST servers
-monkey.patch_all()
+monkey.patch_all()
 
 # setup logging
 LOG = logging.getLogger("dcemulator.net")
@@ -385,6 +385,18 @@ class DCNetwork(Containernet):
             switch_node = self.getNodeByName(src_sw)
             self._set_vlan_tag(switch_node, src_sw_inport_name, vlan)
 
+    def getNodeByName(self, name):
+        """
+        Wraps Containernet's getNodeByName method to avoid
+        key not found exceptions.
+        """
+        try:
+            return super(DCNetwork, self).getNodeByName(name)
+        except BaseException as ex:
+            LOG.warning("Node not found: {}".format(name))
+            LOG.debug("Node not found: {}".format(ex))
+        return None
+
     def _addMonitorFlow(self, vnf_src_name, vnf_dst_name, vnf_src_interface=None, vnf_dst_interface=None,
                         tag=None, **kwargs):
         """