X-Git-Url: https://osm.etsi.org/gitweb/?a=blobdiff_plain;f=src%2Femuvim%2Fdcemulator%2Fnet.py;h=9e491b3198f6a42f32a1b166265a51e1ca7e6464;hb=cda16f98f0b1a5e8a6fae4abfc61fb91b4f83ee2;hp=6be973fb42374f113aa929754deb8ca1a437f5b3;hpb=c2741f9919ccb9559d63ff00effa0664605997f6;p=osm%2Fvim-emu.git diff --git a/src/emuvim/dcemulator/net.py b/src/emuvim/dcemulator/net.py index 6be973f..9e491b3 100755 --- a/src/emuvim/dcemulator/net.py +++ b/src/emuvim/dcemulator/net.py @@ -24,24 +24,27 @@ # acknowledge the contributions of their colleagues of the SONATA # partner consortium (www.sonata-nfv.eu). import logging - import time -from subprocess import Popen import re import requests import os import json - +import networkx as nx +from subprocess import Popen +from gevent import monkey from mininet.net import Containernet from mininet.node import OVSSwitch, OVSKernelSwitch, Docker, RemoteController from mininet.cli import CLI from mininet.link import TCLink from mininet.clean import cleanup -import networkx as nx from emuvim.dcemulator.monitoring import DCNetworkMonitor 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() + +# setup logging LOG = logging.getLogger("dcemulator.net") LOG.setLevel(logging.DEBUG) @@ -934,9 +937,12 @@ class DCNetwork(Containernet): :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'])