Refactored neutron_utils#get_router_by_name() to get_router() 59/38859/1
authorspisarski <s.pisarski@cablelabs.com>
Mon, 7 Aug 2017 16:30:29 +0000 (10:30 -0600)
committerspisarski <s.pisarski@cablelabs.com>
Mon, 7 Aug 2017 16:30:29 +0000 (10:30 -0600)
Added a router_settings (RouterSettings) object parameter
in addition to router_name for more robust query options.

JIRA: SNAPS-163

Change-Id: I47672f531171d6ee0c90dabb6641640bf97c1d20
Signed-off-by: spisarski <s.pisarski@cablelabs.com>
snaps/openstack/create_instance.py
snaps/openstack/create_router.py
snaps/openstack/tests/create_network_tests.py
snaps/openstack/tests/create_router_tests.py
snaps/openstack/utils/neutron_utils.py
snaps/openstack/utils/tests/neutron_utils_tests.py

index 2fdff25..b09e879 100644 (file)
@@ -187,7 +187,8 @@ class OpenStackVmInstance:
         :param router_name: The name of the router to lookup
         :return: the external network name or None
         """
-        router = neutron_utils.get_router_by_name(self.__neutron, router_name)
+        router = neutron_utils.get_router(
+            self.__neutron, router_name=router_name)
         if router and router.external_gateway_info:
             network = neutron_utils.get_network_by_id(
                 self.__neutron,
index 877e064..ef27fab 100644 (file)
@@ -64,8 +64,8 @@ class OpenStackRouter:
         logger.debug(
             'Creating Router with name - ' + self.router_settings.name)
         existing = False
-        router_inst = neutron_utils.get_router_by_name(
-            self.__neutron, self.router_settings.name)
+        router_inst = neutron_utils.get_router(
+            self.__neutron, router_settings=self.router_settings)
         if router_inst:
             self.__router = router_inst
             existing = True
index 3a7ab4a..51927dc 100644 (file)
@@ -476,8 +476,8 @@ class CreateNetworkSuccessTests(OSIntegrationTestCase):
             self.os_creds, self.net_config.router_settings)
         self.router_creator.create()
 
-        retrieved_router = neutron_utils.get_router_by_name(
-            self.neutron, self.router_creator.get_router().name)
+        retrieved_router = neutron_utils.get_router(
+            self.neutron, router_settings=self.router_creator.router_settings)
         self.assertEqual(
             self.router_creator.get_router().id, retrieved_router.id)
 
@@ -506,8 +506,8 @@ class CreateNetworkSuccessTests(OSIntegrationTestCase):
             self.admin_os_creds, self.net_config.router_settings)
         self.router_creator.create()
 
-        retrieved_router = neutron_utils.get_router_by_name(
-            self.neutron, self.router_creator.get_router().name)
+        retrieved_router = neutron_utils.get_router(
+            self.neutron, router_settings=self.router_creator.router_settings)
         self.assertEqual(
             self.router_creator.get_router().id, retrieved_router.id)
 
index 6f37445..db3170e 100644 (file)
@@ -162,8 +162,8 @@ class CreateRouterSuccessTests(OSIntegrationTestCase):
                                                             router_settings)
         self.router_creator.create()
 
-        router = neutron_utils.get_router_by_name(self.neutron,
-                                                  router_settings.name)
+        router = neutron_utils.get_router(self.neutron,
+                                          router_settings=router_settings)
         self.assertIsNotNone(router)
 
         self.assertTrue(verify_router_attributes(
@@ -182,8 +182,8 @@ class CreateRouterSuccessTests(OSIntegrationTestCase):
             self.admin_os_creds, router_settings)
         self.router_creator.create()
 
-        router = neutron_utils.get_router_by_name(self.neutron,
-                                                  router_settings.name)
+        router = neutron_utils.get_router(self.neutron,
+                                          router_settings=router_settings)
         self.assertIsNotNone(router)
 
         self.assertTrue(verify_router_attributes(
@@ -202,8 +202,8 @@ class CreateRouterSuccessTests(OSIntegrationTestCase):
             self.os_creds, router_settings)
         self.router_creator.create()
 
-        router = neutron_utils.get_router_by_name(self.neutron,
-                                                  router_settings.name)
+        router = neutron_utils.get_router(self.neutron,
+                                          router_settings=router_settings)
         self.assertIsNotNone(router)
 
         self.assertTrue(verify_router_attributes(
@@ -221,14 +221,14 @@ class CreateRouterSuccessTests(OSIntegrationTestCase):
             self.os_creds, self.router_settings)
         created_router = self.router_creator.create()
         self.assertIsNotNone(created_router)
-        retrieved_router = neutron_utils.get_router_by_name(
-            self.neutron, self.router_settings.name)
+        retrieved_router = neutron_utils.get_router(
+            self.neutron, router_settings=self.router_settings)
         self.assertIsNotNone(retrieved_router)
 
         neutron_utils.delete_router(self.neutron, created_router)
 
-        retrieved_router = neutron_utils.get_router_by_name(
-            self.neutron, self.router_settings.name)
+        retrieved_router = neutron_utils.get_router(
+            self.neutron, router_settings=self.router_settings)
         self.assertIsNone(retrieved_router)
 
         # Should not raise an exception
@@ -245,8 +245,8 @@ class CreateRouterSuccessTests(OSIntegrationTestCase):
                                                             router_settings)
         self.router_creator.create()
 
-        router = neutron_utils.get_router_by_name(self.neutron,
-                                                  router_settings.name)
+        router = neutron_utils.get_router(self.neutron,
+                                          router_settings=router_settings)
         self.assertIsNotNone(router)
 
         self.assertTrue(verify_router_attributes(router, self.router_creator,
@@ -263,8 +263,8 @@ class CreateRouterSuccessTests(OSIntegrationTestCase):
                                                             router_settings)
         self.router_creator.create()
 
-        router = neutron_utils.get_router_by_name(self.neutron,
-                                                  router_settings.name)
+        router = neutron_utils.get_router(self.neutron,
+                                          router_settings=router_settings)
         self.assertIsNotNone(router)
 
         self.assertTrue(verify_router_attributes(router, self.router_creator,
@@ -321,8 +321,8 @@ class CreateRouterSuccessTests(OSIntegrationTestCase):
                                                             router_settings)
         self.router_creator.create()
 
-        router = neutron_utils.get_router_by_name(self.neutron,
-                                                  router_settings.name)
+        router = neutron_utils.get_router(self.neutron,
+                                          router_settings=router_settings)
 
         self.assertTrue(verify_router_attributes(router, self.router_creator))
 
@@ -364,8 +364,8 @@ class CreateRouterSuccessTests(OSIntegrationTestCase):
                                                             router_settings)
         self.router_creator.create()
 
-        router = neutron_utils.get_router_by_name(self.neutron,
-                                                  router_settings.name)
+        router = neutron_utils.get_router(self.neutron,
+                                          router_settings=router_settings)
 
         self.assertTrue(verify_router_attributes(
             router, self.router_creator, ext_gateway=self.ext_net_name))
index 4bc1be2..e7b002a 100644 (file)
@@ -218,18 +218,29 @@ def delete_router(neutron, router):
         neutron.delete_router(router=router.id)
 
 
-def get_router_by_name(neutron, router_name):
+def get_router(neutron, router_settings=None, router_name=None):
     """
-    Returns the first router object (dictionary) found with a given name
+    Returns the first router object (dictionary) found the given the settings
+    values if not None, else finds the first with the value of the router_name
+    parameter, else None
     :param neutron: the client
+    :param router_settings: the RouterSettings object
     :param router_name: the name of the network to retrieve
     :return: a SNAPS-OO Router domain object
     """
-    routers = neutron.list_routers(**{'name': router_name})
-    for router, routerInst in routers.items():
-        for inst in routerInst:
-            if inst.get('name') == router_name:
-                return Router(**inst)
+    router_filter = dict()
+    if router_settings:
+        router_filter['name'] = router_settings.name
+        if router_settings.admin_state_up is not None:
+            router_filter['admin_state_up'] = router_settings.admin_state_up
+    elif router_name:
+        router_filter['name'] = router_name
+    else:
+        return None
+
+    routers = neutron.list_routers(**router_filter)
+    for routerInst in routers['routers']:
+        return Router(**routerInst)
     return None
 
 
index 6929c4b..f6fc2bb 100644 (file)
@@ -828,7 +828,7 @@ def validate_router(neutron, name, exists):
     :param exists: Whether or not the network name should exist or not
     :return: True/False
     """
-    router = neutron_utils.get_router_by_name(neutron, name)
+    router = neutron_utils.get_router(neutron, router_name=name)
     if exists and router:
         return True
     return False