Fix: Be more robust if OS ports do not exist in the model
authorpeusterm <manuel.peuster@uni-paderborn.de>
Tue, 11 Jul 2017 14:08:35 +0000 (16:08 +0200)
committerpeusterm <manuel.peuster@uni-paderborn.de>
Tue, 11 Jul 2017 14:08:35 +0000 (16:08 +0200)
src/emuvim/api/openstack/compute.py
src/emuvim/test/unittests/test_openstack.py

index 9f79dd9..88d9511 100755 (executable)
@@ -468,7 +468,9 @@ class OpenstackCompute(object):
         LOG.debug("Stopping container %s with full name %s" % (server.name, server.full_name))
         link_names = list()
         for port_name in server.port_names:
-            link_names.append(self.find_port_by_name_or_id(port_name).intf_name)
+            prt = self.find_port_by_name_or_id(port_name)
+            if prt is not None:
+                link_names.append(prt.intf_name)
         my_links = self.dc.net.links
         for link in my_links:
             if str(link.intf1) in link_names:
@@ -681,7 +683,8 @@ class OpenstackCompute(object):
         """
         port = self.find_port_by_name_or_id(name_or_id)
         if port is None:
-            raise Exception("Port with name or id %s does not exists." % name_or_id)
+            LOG.warning("Port with name or id %s does not exist. Can't delete it." % name_or_id)
+            return
 
         my_links = self.dc.net.links
         for link in my_links:
index 6ed7efe..f5a702b 100755 (executable)
@@ -1112,7 +1112,7 @@ class testRestApi(ApiBaseOpenStack):
         url = "http://0.0.0.0:19696/v2.0/ports"
         listportsesponse = requests.get(url, headers=headers)
         self.assertEqual(listportsesponse.status_code, 200)
-        self.assertEqual(len(json.loads(listportsesponse.content)["ports"]), 18)
+        self.assertEqual(len(json.loads(listportsesponse.content)["ports"]), 9)
         for port in json.loads(listportsesponse.content)["ports"]:
             self.assertEqual(len(str(port['fixed_ips'][0]['subnet_id'])), 36)
         print(" ")