remove unrelevant docker compose files
[osm/vim-emu.git] / src / emuvim / dcemulator / net.py
index b201112..2c5ce14 100755 (executable)
@@ -65,6 +65,11 @@ class DCNetwork(Containernet):
         """
         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)
@@ -261,7 +266,7 @@ class DCNetwork(Containernet):
             if kwargs.get('bidirectional'):
                 ret = ret +'\n' + self._chainAddFlow(vnf_dst_name, vnf_src_name, vnf_dst_interface, vnf_src_interface, **kwargs)
 
-        elif cmd == 'del-flows':  # TODO: del-flow to be implemented
+        elif cmd == 'del-flows':
             ret = self._chainAddFlow(vnf_src_name, vnf_dst_name, vnf_src_interface, vnf_dst_interface, **kwargs)
             if kwargs.get('bidirectional'):
                 ret = ret + '\n' + self._chainAddFlow(vnf_dst_name, vnf_src_name, vnf_dst_interface, vnf_src_interface, **kwargs)
@@ -274,7 +279,6 @@ class DCNetwork(Containernet):
 
     def _chainAddFlow(self, vnf_src_name, vnf_dst_name, vnf_src_interface=None, vnf_dst_interface=None, **kwargs):
 
-        # TODO: this needs to be cleaned up
         #check if port is specified (vnf:port)
         if vnf_src_interface is None:
             # take first interface by default
@@ -501,6 +505,16 @@ class DCNetwork(Containernet):
         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: