cleanup ryu and leftover containers at startup
diff --git a/src/emuvim/dcemulator/net.py b/src/emuvim/dcemulator/net.py
index 0e3882c..2c5ce14 100755
--- a/src/emuvim/dcemulator/net.py
+++ b/src/emuvim/dcemulator/net.py
@@ -65,6 +65,11 @@
"""
self.dcs = {}
+ # make sure any remaining Ryu processes are killed
+ self.killRyu()
+ # make sure no containers are left over from a previous emulator run.
+ self.removeLeftoverContainers()
+
# call original Docker.__init__ and setup default controller
Containernet.__init__(
self, switch=OVSKernelSwitch, controller=controller, **kwargs)
@@ -500,6 +505,16 @@
if self.ryu_process is not None:
self.ryu_process.terminate()
self.ryu_process.kill()
+ self.killRyu()
+
+ @staticmethod
+ def removeLeftoverContainers():
+ # TODO can be more python-based using eg. docker-py?
+ Popen('docker ps -a -q --filter="name=mn.*" | xargs -r docker rm -f', shell=True)
+
+ @staticmethod
+ def killRyu():
+ Popen(['pkill', '-f', 'ryu-manager'])
def ryu_REST(self, prefix, dpid=None, data=None):
try: