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
from emuvim.dcemulator.resourcemodel import ResourceModelRegistrar
# ensure correct functionality of all gevent based REST servers
-monkey.patch_all(sys=True)
+# monkey.patch_all()
# setup logging
LOG = logging.getLogger("dcemulator.net")
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):
"""
:return:
"""
# try it nicely
- if self.ryu_process is not None:
- self.ryu_process.terminate()
- self.ryu_process.kill()
+ try:
+ if self.ryu_process is not None:
+ self.ryu_process.terminate()
+ self.ryu_process.kill()
+ except BaseException as ex:
+ LOG.warning("Error during Ryu stop: {}".format(ex))
# ensure its death ;-)
Popen(['pkill', '-f', 'ryu-manager'])