Added region support. 05/38105/2
authorspisarski <s.pisarski@cablelabs.com>
Tue, 25 Jul 2017 20:40:09 +0000 (14:40 -0600)
committerspisarski <s.pisarski@cablelabs.com>
Tue, 25 Jul 2017 21:36:23 +0000 (15:36 -0600)
Added region_name attribute to OSCreds
Added region_name to neutron, nova, glance, heat, and keystone
client retrieval
Fixed false positive heat connection test.

JIRA: SNAPS-50 & SNAPS-146

Change-Id: If3471ed7a2bdd0e6bfc281455c996386d031235d
Signed-off-by: spisarski <s.pisarski@cablelabs.com>
snaps/openstack/os_credentials.py
snaps/openstack/tests/conf/os_credentials_tests.py
snaps/openstack/tests/openstack_tests.py
snaps/openstack/utils/glance_utils.py
snaps/openstack/utils/heat_utils.py
snaps/openstack/utils/keystone_utils.py
snaps/openstack/utils/neutron_utils.py
snaps/openstack/utils/nova_utils.py
snaps/openstack/utils/tests/heat_utils_tests.py

index 4c681ac..3054478 100644 (file)
@@ -51,6 +51,7 @@ class OSCreds:
                        is specified for https verification, or set to be False
                        to disable server certificate verification without cert
                        file
+        :param region_name: the region (optional default = None)
         """
         self.username = kwargs.get('username')
         self.password = kwargs.get('password')
@@ -97,6 +98,8 @@ class OSCreds:
         else:
             self.interface = kwargs['interface']
 
+        self.region_name = kwargs.get('region_name', None)
+
         self.cacert = False
         if kwargs.get('cacert') is not None:
             if isinstance(kwargs.get('cacert'), str):
index cde8161..e7c34b9 100644 (file)
@@ -162,6 +162,7 @@ class OSCredsUnitTests(unittest.TestCase):
         self.assertEqual('admin', os_creds.interface)
         self.assertFalse(os_creds.cacert)
         self.assertIsNone(os_creds.proxy_settings)
+        self.assertIsNone(os_creds.region_name)
 
     def test_minimal_kwargs(self):
         os_creds = OSCreds(**{'username': 'foo', 'password': 'bar',
@@ -180,6 +181,7 @@ class OSCredsUnitTests(unittest.TestCase):
         self.assertEqual('admin', os_creds.interface)
         self.assertFalse(os_creds.cacert)
         self.assertIsNone(os_creds.proxy_settings)
+        self.assertIsNone(os_creds.region_name)
 
     def test_all_kwargs_versions_str(self):
         os_creds = OSCreds(
@@ -187,7 +189,7 @@ class OSCredsUnitTests(unittest.TestCase):
                'auth_url': 'http://foo.bar:5000/v2', 'project_name': 'hello',
                'identity_api_version': '5', 'image_api_version': '6',
                'compute_api_version': '7', 'heat_api_version': '8.0',
-               'cacert': 'true'})
+               'cacert': 'true', 'region_name': 'test_region'})
         self.assertEqual('foo', os_creds.username)
         self.assertEqual('bar', os_creds.password)
         self.assertEqual('http://foo.bar:5000/v2', os_creds.auth_url)
@@ -201,6 +203,7 @@ class OSCredsUnitTests(unittest.TestCase):
         self.assertEqual('admin', os_creds.interface)
         self.assertTrue(os_creds.cacert)
         self.assertIsNone(os_creds.proxy_settings)
+        self.assertEqual('test_region', os_creds.region_name)
 
     def test_all_kwargs_versions_num(self):
         os_creds = OSCreds(
@@ -208,7 +211,7 @@ class OSCredsUnitTests(unittest.TestCase):
                'auth_url': 'http://foo.bar:5000/v2', 'project_name': 'hello',
                'identity_api_version': 5, 'image_api_version': 6,
                'compute_api_version': 7, 'heat_api_version': 8.0,
-               'cacert': True})
+               'cacert': True, 'region_name': 'test_region'})
         self.assertEqual('foo', os_creds.username)
         self.assertEqual('bar', os_creds.password)
         self.assertEqual('http://foo.bar:5000/v2', os_creds.auth_url)
@@ -222,6 +225,7 @@ class OSCredsUnitTests(unittest.TestCase):
         self.assertEqual('admin', os_creds.interface)
         self.assertTrue(os_creds.cacert)
         self.assertIsNone(os_creds.proxy_settings)
+        self.assertEqual('test_region', os_creds.region_name)
 
     def test_proxy_settings_obj(self):
         proxy_settings = ProxySettings(host='foo', port=1234)
@@ -243,13 +247,15 @@ class OSCredsUnitTests(unittest.TestCase):
         self.assertEqual('foo', os_creds.proxy_settings.host)
         self.assertEqual(1234, os_creds.proxy_settings.port)
         self.assertIsNone(os_creds.proxy_settings.ssh_proxy_cmd)
+        self.assertIsNone(os_creds.region_name)
 
     def test_proxy_settings_obj_kwargs(self):
         proxy_settings = ProxySettings(host='foo', port=1234)
         os_creds = OSCreds(**{'username': 'foo', 'password': 'bar',
                               'auth_url': 'http://foo.bar:5000/v2',
                               'project_name': 'hello',
-                              'proxy_settings': proxy_settings})
+                              'proxy_settings': proxy_settings,
+                              'region_name': 'test_region'})
         self.assertEqual('foo', os_creds.username)
         self.assertEqual('bar', os_creds.password)
         self.assertEqual('http://foo.bar:5000/v2', os_creds.auth_url)
@@ -265,6 +271,7 @@ class OSCredsUnitTests(unittest.TestCase):
         self.assertEqual('foo', os_creds.proxy_settings.host)
         self.assertEqual(1234, os_creds.proxy_settings.port)
         self.assertIsNone(os_creds.proxy_settings.ssh_proxy_cmd)
+        self.assertEqual('test_region', os_creds.region_name)
 
     def test_proxy_settings_dict(self):
         os_creds = OSCreds(
@@ -290,7 +297,8 @@ class OSCredsUnitTests(unittest.TestCase):
         os_creds = OSCreds(**{'username': 'foo', 'password': 'bar',
                               'auth_url': 'http://foo.bar:5000/v2',
                               'project_name': 'hello',
-                              'proxy_settings': {'host': 'foo', 'port': 1234}})
+                              'proxy_settings': {'host': 'foo', 'port': 1234},
+                              'region_name': 'test_region'})
         self.assertEqual('foo', os_creds.username)
         self.assertEqual('bar', os_creds.password)
         self.assertEqual('http://foo.bar:5000/v2', os_creds.auth_url)
@@ -306,3 +314,4 @@ class OSCredsUnitTests(unittest.TestCase):
         self.assertEqual('foo', os_creds.proxy_settings.host)
         self.assertEqual(1234, os_creds.proxy_settings.port)
         self.assertIsNone(os_creds.proxy_settings.ssh_proxy_cmd)
+        self.assertEqual('test_region', os_creds.region_name)
index 855beb5..67269c6 100644 (file)
@@ -93,11 +93,14 @@ def get_credentials(os_env_file=None, proxy_settings_str=None,
             'network_api_version': config.get('OS_NETWORK_API_VERSION'),
             'compute_api_version': config.get('OS_COMPUTE_API_VERSION'),
             'heat_api_version': config.get('OS_HEAT_API_VERSION'),
-            'user_domain_id': config.get('OS_USER_DOMAIN_ID'),
-            'project_domain_id': config.get('OS_PROJECT_DOMAIN_ID'),
+            'user_domain_id': config.get(
+                'OS_USER_DOMAIN_ID', config.get('OS_USER_DOMAIN_NAME')),
+            'project_domain_id': config.get(
+                'OS_PROJECT_DOMAIN_ID', config.get('OS_PROJECT_DOMAIN_NAME')),
             'interface': interface,
             'proxy_settings': proxy_settings,
-            'cacert': https_cacert}
+            'cacert': https_cacert,
+            'region_name': config.get('OS_REGION_NAME')}
     else:
         logger.info('Reading development os_env file - ' + dev_os_env_file)
         config = file_utils.read_yaml(dev_os_env_file)
@@ -123,7 +126,9 @@ def get_credentials(os_env_file=None, proxy_settings_str=None,
             'user_domain_id': config.get('user_domain_id'),
             'project_domain_id': config.get('project_domain_id'),
             'interface': config.get('interface'),
-            'proxy_settings': proxy_settings, 'cacert': config.get('cacert')}
+            'proxy_settings': proxy_settings,
+            'cacert': config.get('cacert'),
+            'region_name': config.get('region_name')}
 
     os_creds = OSCreds(**creds_dict)
     logger.info('OS Credentials = %s', os_creds)
index 8479be3..49bfe95 100644 (file)
@@ -40,7 +40,8 @@ def glance_client(os_creds):
     :return: the glance client
     """
     return Client(version=os_creds.image_api_version,
-                  session=keystone_utils.keystone_session(os_creds))
+                  session=keystone_utils.keystone_session(os_creds),
+                  region_name=os_creds.region_name)
 
 
 def get_image(glance, image_name=None):
index a631b35..ae367a0 100644 (file)
@@ -37,7 +37,8 @@ def heat_client(os_creds):
     """
     logger.debug('Retrieving Nova Client')
     return Client(os_creds.heat_api_version,
-                  session=keystone_utils.keystone_session(os_creds))
+                  session=keystone_utils.keystone_session(os_creds),
+                  region_name=os_creds.region_name)
 
 
 def get_stack_by_name(heat_cli, stack_name):
index 4eda4e4..8446df0 100644 (file)
@@ -83,7 +83,9 @@ def keystone_client(os_creds):
     """
     return Client(
         version=os_creds.identity_api_version,
-        session=keystone_session(os_creds), interface=os_creds.interface)
+        session=keystone_session(os_creds),
+        interface=os_creds.interface,
+        region_name=os_creds.region_name)
 
 
 def get_endpoint(os_creds, service_type, interface='public'):
index d93faa0..bf8cb08 100644 (file)
@@ -40,7 +40,8 @@ def neutron_client(os_creds):
     :return: the client object
     """
     return Client(api_version=os_creds.network_api_version,
-                  session=keystone_utils.keystone_session(os_creds))
+                  session=keystone_utils.keystone_session(os_creds),
+                  region_name=os_creds.region_name)
 
 
 def create_network(neutron, os_creds, network_settings):
index 70b1e7b..ab434f1 100644 (file)
@@ -45,7 +45,8 @@ def nova_client(os_creds):
     """
     logger.debug('Retrieving Nova Client')
     return Client(os_creds.compute_api_version,
-                  session=keystone_utils.keystone_session(os_creds))
+                  session=keystone_utils.keystone_session(os_creds),
+                  region_name=os_creds.region_name)
 
 
 def create_server(nova, neutron, glance, instance_settings, image_settings,
index 2ef0c68..dda1111 100644 (file)
@@ -44,7 +44,9 @@ class HeatSmokeTests(OSComponentTestCase):
         heat = heat_utils.heat_client(self.os_creds)
 
         # This should not throw an exception
-        heat.stacks.list()
+        stacks = heat.stacks.list()
+        for stack in stacks:
+            print stack
 
     def test_nova_connect_fail(self):
         """
@@ -52,13 +54,17 @@ class HeatSmokeTests(OSComponentTestCase):
         """
         from snaps.openstack.os_credentials import OSCreds
 
-        nova = heat_utils.heat_client(
-            OSCreds(username='user', password='pass', auth_url=self.os_creds.auth_url,
-                    project_name=self.os_creds.project_name, proxy_settings=self.os_creds.proxy_settings))
+        heat = heat_utils.heat_client(
+            OSCreds(username='user', password='pass',
+                    auth_url=self.os_creds.auth_url,
+                    project_name=self.os_creds.project_name,
+                    proxy_settings=self.os_creds.proxy_settings))
+        stacks = heat.stacks.list()
 
         # This should throw an exception
         with self.assertRaises(Exception):
-            nova.flavors.list()
+            for stack in stacks:
+                print stack
 
 
 class HeatUtilsCreateStackTests(OSComponentTestCase):
@@ -68,15 +74,16 @@ class HeatUtilsCreateStackTests(OSComponentTestCase):
 
     def setUp(self):
         """
-        Instantiates the CreateImage object that is responsible for downloading and creating an OS image file
-        within OpenStack
+        Instantiates the CreateImage object that is responsible for downloading
+        and creating an OS image file within OpenStack
         """
         guid = self.__class__.__name__ + '-' + str(uuid.uuid4())
         stack_name = self.__class__.__name__ + '-' + str(guid) + '-stack'
 
         self.image_creator = OpenStackImage(
             self.os_creds, openstack_tests.cirros_image_settings(
-                name=self.__class__.__name__ + '-' + str(guid) + '-image', image_metadata=self.image_metadata))
+                name=self.__class__.__name__ + '-' + str(guid) + '-image',
+                image_metadata=self.image_metadata))
         self.image_creator.create()
 
         # Create Flavor
@@ -89,7 +96,9 @@ class HeatUtilsCreateStackTests(OSComponentTestCase):
                       'flavor_name': self.flavor_creator.flavor_settings.name}
         heat_tmplt_path = pkg_resources.resource_filename(
             'snaps.openstack.tests.heat', 'test_heat_template.yaml')
-        self.stack_settings = StackSettings(name=stack_name, template_path=heat_tmplt_path, env_values=env_values)
+        self.stack_settings = StackSettings(
+            name=stack_name, template_path=heat_tmplt_path,
+            env_values=env_values)
         self.stack = None
         self.heat_client = heat_utils.heat_client(self.os_creds)
 
@@ -119,12 +128,15 @@ class HeatUtilsCreateStackTests(OSComponentTestCase):
         """
         Tests the creation of an OpenStack keypair that does not exist.
         """
-        self.stack = heat_utils.create_stack(self.heat_client, self.stack_settings)
+        self.stack = heat_utils.create_stack(self.heat_client,
+                                             self.stack_settings)
 
-        stack_query_1 = heat_utils.get_stack_by_name(self.heat_client, self.stack_settings.name)
+        stack_query_1 = heat_utils.get_stack_by_name(self.heat_client,
+                                                     self.stack_settings.name)
         self.assertEqual(self.stack.id, stack_query_1.id)
 
-        stack_query_2 = heat_utils.get_stack_by_id(self.heat_client, self.stack.id)
+        stack_query_2 = heat_utils.get_stack_by_id(self.heat_client,
+                                                   self.stack.id)
         self.assertEqual(self.stack.id, stack_query_2.id)
 
         outputs = heat_utils.get_stack_outputs(self.heat_client, self.stack.id)
@@ -135,7 +147,8 @@ class HeatUtilsCreateStackTests(OSComponentTestCase):
 
         is_active = False
         while time.time() < end_time:
-            status = heat_utils.get_stack_status(self.heat_client, self.stack.id)
+            status = heat_utils.get_stack_status(self.heat_client,
+                                                 self.stack.id)
             if status == create_stack.STATUS_CREATE_COMPLETE:
                 is_active = True
                 break