From: Steven Pisarski Date: Wed, 2 Aug 2017 15:35:13 +0000 (+0000) Subject: Merge "Changed heat_utils#get_stack_by_name to get_stack." X-Git-Tag: opnfv-5.0.0~24 X-Git-Url: https://gerrit.opnfv.org/gerrit/gitweb?a=commitdiff_plain;h=84d902632f1dd77f891c49cfb1d58af5ae051d1a;hp=dc24c3d90a7a3068256381d815c689b3f243707f;p=snaps.git Merge "Changed heat_utils#get_stack_by_name to get_stack." --- diff --git a/docs/how-to-use/LibraryUsage.rst b/docs/how-to-use/LibraryUsage.rst index 353891e..16cf446 100644 --- a/docs/how-to-use/LibraryUsage.rst +++ b/docs/how-to-use/LibraryUsage.rst @@ -36,7 +36,9 @@ attributes are listed below: - compute\_api\_version (Nova version 2 currently only validated) - heat\_api\_version (Heat version 1 currently only validated) - user\_domain\_id (default='default') +- user\_domain\_name (default='default') - project\_domain\_id (default='default') +- project\_domain\_name (default='default') - interface (default='admin', used to specify the endpoint type for keystone: public, admin, internal) - cacert (default=False, expected values T|F to denote server certificate verification, else value contains the path to an HTTPS certificate) - region_name (The region name default=None) diff --git a/snaps/openstack/create_image.py b/snaps/openstack/create_image.py index 9ed813c..a4c9357 100644 --- a/snaps/openstack/create_image.py +++ b/snaps/openstack/create_image.py @@ -56,8 +56,8 @@ class OpenStackImage: :return: The OpenStack Image object """ self.__glance = glance_utils.glance_client(self.__os_creds) - self.__image = glance_utils.get_image(self.__glance, - self.image_settings.name) + self.__image = glance_utils.get_image( + self.__glance, image_settings=self.image_settings) if self.__image: logger.info('Found image with name - ' + self.image_settings.name) return self.__image @@ -72,7 +72,7 @@ class OpenStackImage: if self.image_settings.kernel_image_settings: self.__kernel_image = glance_utils.get_image( self.__glance, - self.image_settings.kernel_image_settings.name) + image_settings=self.image_settings.kernel_image_settings) if not self.__kernel_image and not cleanup: logger.info( @@ -85,7 +85,7 @@ class OpenStackImage: if self.image_settings.ramdisk_image_settings: self.__ramdisk_image = glance_utils.get_image( self.__glance, - self.image_settings.ramdisk_image_settings.name) + image_settings=self.image_settings.ramdisk_image_settings) if not self.__ramdisk_image and not cleanup: logger.info( diff --git a/snaps/openstack/create_project.py b/snaps/openstack/create_project.py index a20033e..1fbaef6 100644 --- a/snaps/openstack/create_project.py +++ b/snaps/openstack/create_project.py @@ -48,7 +48,7 @@ class OpenStackProject: """ self.__keystone = keystone_utils.keystone_client(self.__os_creds) self.__project = keystone_utils.get_project( - keystone=self.__keystone, project_name=self.project_settings.name) + keystone=self.__keystone, project_settings=self.project_settings) if self.__project: logger.info( 'Found project with name - ' + self.project_settings.name) diff --git a/snaps/openstack/create_router.py b/snaps/openstack/create_router.py index 335be2c..209f9d2 100644 --- a/snaps/openstack/create_router.py +++ b/snaps/openstack/create_router.py @@ -253,8 +253,7 @@ class RouterSettings: if self.admin_state_up is not None: out['admin_state_up'] = self.admin_state_up if self.external_gateway: - ext_net = neutron_utils.get_network(neutron, self.external_gateway, - project_id) + ext_net = neutron_utils.get_network(neutron, self.external_gateway) if ext_net: ext_gw['network_id'] = ext_net.id out['external_gateway_info'] = ext_gw diff --git a/snaps/openstack/os_credentials.py b/snaps/openstack/os_credentials.py index c93133a..fbecbfe 100644 --- a/snaps/openstack/os_credentials.py +++ b/snaps/openstack/os_credentials.py @@ -42,8 +42,10 @@ class OSCreds: clients :param heat_api_version: The OpenStack's API version to use for Heat clients - :param user_domain_id: Used for v3 APIs (default='default') - :param project_domain_id: Used for v3 APIs (default='default') + :param user_domain_id: Used for v3 APIs (default=None) + :param user_domain_name: Used for v3 APIs (default='default') + :param project_domain_id: Used for v3 APIs (default=None) + :param project_domain_name: Used for v3 APIs (default='default') :param interface: Used to specify the endpoint type for keystone as public, admin, internal :param proxy_settings: instance of os_credentials.ProxySettings class @@ -83,15 +85,19 @@ class OSCreds: else: self.heat_api_version = float(kwargs['heat_api_version']) - if kwargs.get('user_domain_id') is None: - self.user_domain_id = 'default' + self.user_domain_id = kwargs.get('user_domain_id') + + if kwargs.get('user_domain_name') is None: + self.user_domain_name = 'default' else: - self.user_domain_id = kwargs['user_domain_id'] + self.user_domain_name = kwargs['user_domain_name'] + + self.project_domain_id = kwargs.get('project_domain_id') - if kwargs.get('project_domain_id') is None: - self.project_domain_id = 'default' + if kwargs.get('project_domain_name') is None: + self.project_domain_name = 'default' else: - self.project_domain_id = kwargs['project_domain_id'] + self.project_domain_name = kwargs['project_domain_name'] if kwargs.get('interface') is None: self.interface = 'admin' @@ -141,8 +147,13 @@ class OSCreds: ', image_api_version=' + str(self.image_api_version) + ', network_api_version=' + str(self.network_api_version) + ', compute_api_version=' + str(self.compute_api_version) + + ', heat_api_version=' + str(self.heat_api_version) + ', user_domain_id=' + str(self.user_domain_id) + + ', user_domain_name=' + str(self.user_domain_name) + + ', project_domain_id=' + str(self.project_domain_id) + + ', project_domain_name=' + str(self.project_domain_name) + ', interface=' + str(self.interface) + + ', region_name=' + str(self.region_name) + ', proxy_settings=' + str(self.proxy_settings) + ', cacert=' + str(self.cacert)) diff --git a/snaps/openstack/tests/conf/os_credentials_tests.py b/snaps/openstack/tests/conf/os_credentials_tests.py index 4a2ce3d..9c6fcdc 100644 --- a/snaps/openstack/tests/conf/os_credentials_tests.py +++ b/snaps/openstack/tests/conf/os_credentials_tests.py @@ -16,8 +16,8 @@ import logging import unittest -from snaps.openstack.os_credentials import OSCredsError, OSCreds, \ - ProxySettings, ProxySettingsError +from snaps.openstack.os_credentials import ( + OSCredsError, OSCreds, ProxySettings, ProxySettingsError) __author__ = 'spisarski' @@ -157,8 +157,10 @@ class OSCredsUnitTests(unittest.TestCase): self.assertEqual(2, os_creds.image_api_version) self.assertEqual(2, os_creds.compute_api_version) self.assertEqual(1, os_creds.heat_api_version) - self.assertEqual('default', os_creds.user_domain_id) - self.assertEqual('default', os_creds.project_domain_id) + self.assertIsNone(os_creds.user_domain_id) + self.assertEqual('default', os_creds.user_domain_name) + self.assertIsNone(os_creds.project_domain_id) + self.assertEqual('default', os_creds.project_domain_name) self.assertEqual('admin', os_creds.interface) self.assertFalse(os_creds.cacert) self.assertIsNone(os_creds.proxy_settings) @@ -176,8 +178,10 @@ class OSCredsUnitTests(unittest.TestCase): self.assertEqual(2, os_creds.image_api_version) self.assertEqual(2, os_creds.compute_api_version) self.assertEqual(1, os_creds.heat_api_version) - self.assertEqual('default', os_creds.user_domain_id) - self.assertEqual('default', os_creds.project_domain_id) + self.assertIsNone(os_creds.user_domain_id) + self.assertEqual('default', os_creds.user_domain_name) + self.assertIsNone(os_creds.project_domain_id) + self.assertEqual('default', os_creds.project_domain_name) self.assertEqual('admin', os_creds.interface) self.assertFalse(os_creds.cacert) self.assertIsNone(os_creds.proxy_settings) @@ -198,8 +202,10 @@ class OSCredsUnitTests(unittest.TestCase): self.assertEqual(6, os_creds.image_api_version) self.assertEqual(7, os_creds.compute_api_version) self.assertEqual(8.0, os_creds.heat_api_version) - self.assertEqual('default', os_creds.user_domain_id) - self.assertEqual('default', os_creds.project_domain_id) + self.assertIsNone(os_creds.user_domain_id) + self.assertEqual('default', os_creds.user_domain_name) + self.assertIsNone(os_creds.project_domain_id) + self.assertEqual('default', os_creds.project_domain_name) self.assertEqual('admin', os_creds.interface) self.assertTrue(os_creds.cacert) self.assertIsNone(os_creds.proxy_settings) @@ -220,8 +226,10 @@ class OSCredsUnitTests(unittest.TestCase): self.assertEqual(6, os_creds.image_api_version) self.assertEqual(7, os_creds.compute_api_version) self.assertEqual(8.0, os_creds.heat_api_version) - self.assertEqual('default', os_creds.user_domain_id) - self.assertEqual('default', os_creds.project_domain_id) + self.assertIsNone(os_creds.user_domain_id) + self.assertEqual('default', os_creds.user_domain_name) + self.assertIsNone(os_creds.project_domain_id) + self.assertEqual('default', os_creds.project_domain_name) self.assertEqual('admin', os_creds.interface) self.assertTrue(os_creds.cacert) self.assertIsNone(os_creds.proxy_settings) @@ -240,8 +248,10 @@ class OSCredsUnitTests(unittest.TestCase): self.assertEqual(2, os_creds.image_api_version) self.assertEqual(2, os_creds.compute_api_version) self.assertEqual(1, os_creds.heat_api_version) - self.assertEqual('default', os_creds.user_domain_id) - self.assertEqual('default', os_creds.project_domain_id) + self.assertIsNone(os_creds.user_domain_id) + self.assertEqual('default', os_creds.user_domain_name) + self.assertIsNone(os_creds.project_domain_id) + self.assertEqual('default', os_creds.project_domain_name) self.assertEqual('admin', os_creds.interface) self.assertFalse(os_creds.cacert) self.assertEqual('foo', os_creds.proxy_settings.host) @@ -251,11 +261,13 @@ class OSCredsUnitTests(unittest.TestCase): 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, - 'region_name': 'test_region'}) + os_creds = OSCreds( + **{'username': 'foo', 'password': 'bar', + 'auth_url': 'http://foo.bar:5000/v2', 'project_name': 'hello', + 'proxy_settings': proxy_settings, 'region_name': 'test_region', + 'user_domain_id': 'domain1', 'user_domain_name': 'domain2', + 'project_domain_id': 'domain3', + 'project_domain_name': 'domain4'}) self.assertEqual('foo', os_creds.username) self.assertEqual('bar', os_creds.password) self.assertEqual('http://foo.bar:5000/v2', os_creds.auth_url) @@ -264,8 +276,10 @@ class OSCredsUnitTests(unittest.TestCase): self.assertEqual(2, os_creds.image_api_version) self.assertEqual(2, os_creds.compute_api_version) self.assertEqual(1, os_creds.heat_api_version) - self.assertEqual('default', os_creds.user_domain_id) - self.assertEqual('default', os_creds.project_domain_id) + self.assertEqual('domain1', os_creds.user_domain_id) + self.assertEqual('domain2', os_creds.user_domain_name) + self.assertEqual('domain3', os_creds.project_domain_id) + self.assertEqual('domain4', os_creds.project_domain_name) self.assertEqual('admin', os_creds.interface) self.assertFalse(os_creds.cacert) self.assertEqual('foo', os_creds.proxy_settings.host) @@ -276,7 +290,9 @@ class OSCredsUnitTests(unittest.TestCase): def test_proxy_settings_dict(self): os_creds = OSCreds( username='foo', password='bar', auth_url='http://foo.bar:5000/v2', - project_name='hello', proxy_settings={'host': 'foo', 'port': 1234}) + project_name='hello', proxy_settings={'host': 'foo', 'port': 1234}, + user_domain_id='domain1', user_domain_name='domain2', + project_domain_id='domain3', project_domain_name='domain4') self.assertEqual('foo', os_creds.username) self.assertEqual('bar', os_creds.password) self.assertEqual('http://foo.bar:5000/v2', os_creds.auth_url) @@ -285,8 +301,10 @@ class OSCredsUnitTests(unittest.TestCase): self.assertEqual(2, os_creds.image_api_version) self.assertEqual(2, os_creds.compute_api_version) self.assertEqual(1, os_creds.heat_api_version) - self.assertEqual('default', os_creds.user_domain_id) - self.assertEqual('default', os_creds.project_domain_id) + self.assertEqual('domain1', os_creds.user_domain_id) + self.assertEqual('domain2', os_creds.user_domain_name) + self.assertEqual('domain3', os_creds.project_domain_id) + self.assertEqual('domain4', os_creds.project_domain_name) self.assertEqual('admin', os_creds.interface) self.assertFalse(os_creds.cacert) self.assertEqual('foo', os_creds.proxy_settings.host) @@ -294,11 +312,11 @@ class OSCredsUnitTests(unittest.TestCase): self.assertIsNone(os_creds.proxy_settings.ssh_proxy_cmd) def test_proxy_settings_dict_kwargs(self): - os_creds = OSCreds(**{'username': 'foo', 'password': 'bar', - 'auth_url': 'http://foo.bar:5000/v2', - 'project_name': 'hello', - 'proxy_settings': {'host': 'foo', 'port': 1234}, - 'region_name': 'test_region'}) + os_creds = OSCreds( + **{'username': 'foo', 'password': 'bar', + 'auth_url': 'http://foo.bar:5000/v2', 'project_name': 'hello', + '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) @@ -307,8 +325,10 @@ class OSCredsUnitTests(unittest.TestCase): self.assertEqual(2, os_creds.image_api_version) self.assertEqual(2, os_creds.compute_api_version) self.assertEqual(1, os_creds.heat_api_version) - self.assertEqual('default', os_creds.user_domain_id) - self.assertEqual('default', os_creds.project_domain_id) + self.assertIsNone(os_creds.user_domain_id) + self.assertEqual('default', os_creds.user_domain_name) + self.assertIsNone(os_creds.project_domain_id) + self.assertEqual('default', os_creds.project_domain_name) self.assertEqual('admin', os_creds.interface) self.assertFalse(os_creds.cacert) self.assertEqual('foo', os_creds.proxy_settings.host) diff --git a/snaps/openstack/tests/create_image_tests.py b/snaps/openstack/tests/create_image_tests.py index 5fb39dc..7a6db86 100644 --- a/snaps/openstack/tests/create_image_tests.py +++ b/snaps/openstack/tests/create_image_tests.py @@ -316,8 +316,8 @@ class CreateImageSuccessTests(OSIntegrationTestCase): created_image = self.image_creator.create() self.assertIsNotNone(created_image) - retrieved_image = glance_utils.get_image(self.glance, - self.image_settings.name) + retrieved_image = glance_utils.get_image( + self.glance, image_settings=self.image_settings) self.assertIsNotNone(retrieved_image) self.assertEqual(created_image.size, retrieved_image.size) self.assertEqual(get_image_size(self.image_settings), @@ -337,8 +337,8 @@ class CreateImageSuccessTests(OSIntegrationTestCase): created_image = self.image_creator.create() self.assertIsNotNone(created_image) - retrieved_image = glance_utils.get_image(self.glance, - self.image_settings.name) + retrieved_image = glance_utils.get_image( + self.glance, image_settings=self.image_settings) self.assertIsNotNone(retrieved_image) self.assertEqual(self.image_creator.get_image().size, retrieved_image.size) @@ -370,7 +370,7 @@ class CreateImageSuccessTests(OSIntegrationTestCase): self.assertEqual(self.image_name, created_image.name) retrieved_image = glance_utils.get_image( - self.glance, file_image_settings.name) + self.glance, image_settings=file_image_settings) self.assertIsNotNone(retrieved_image) self.assertEqual(self.image_creator.get_image().size, retrieved_image.size) @@ -394,8 +394,8 @@ class CreateImageSuccessTests(OSIntegrationTestCase): created_image = self.image_creator.create() self.assertIsNotNone(created_image) - retrieved_image = glance_utils.get_image(self.glance, - self.image_settings.name) + retrieved_image = glance_utils.get_image( + self.glance, image_settings=self.image_settings) self.assertIsNotNone(retrieved_image) self.assertEqual(self.image_creator.get_image().size, retrieved_image.size) @@ -406,7 +406,7 @@ class CreateImageSuccessTests(OSIntegrationTestCase): glance_utils.delete_image(self.glance, created_image) self.assertIsNone(glance_utils.get_image( - self.glance, self.image_creator.image_settings.name)) + self.glance, image_settings=self.image_creator.image_settings)) # Must not throw an exception when attempting to cleanup non-existent # image @@ -422,8 +422,8 @@ class CreateImageSuccessTests(OSIntegrationTestCase): self.image_settings) image1 = self.image_creator.create() - retrieved_image = glance_utils.get_image(self.glance, - self.image_settings.name) + retrieved_image = glance_utils.get_image( + self.glance, image_settings=self.image_settings) self.assertIsNotNone(retrieved_image) self.assertEqual(self.image_creator.get_image().size, retrieved_image.size) @@ -449,8 +449,8 @@ class CreateImageSuccessTests(OSIntegrationTestCase): self.image_settings) image1 = self.image_creator.create() - retrieved_image = glance_utils.get_image(self.glance, - self.image_settings.name) + retrieved_image = glance_utils.get_image( + self.glance, image_settings=self.image_settings) self.assertIsNotNone(retrieved_image) self.assertEqual(self.image_creator.get_image().size, retrieved_image.size) @@ -616,20 +616,22 @@ class CreateMultiPartImageTests(OSIntegrationTestCase): image_creator.create() main_image = glance_utils.get_image(self.glance, - image_settings.name) + image_settings=image_settings) self.assertIsNotNone(main_image) self.assertIsNotNone(image_creator.get_image()) self.assertEqual(image_creator.get_image().id, main_image.id) kernel_image = glance_utils.get_image( - self.glance, image_settings.kernel_image_settings.name) + self.glance, + image_settings=image_settings.kernel_image_settings) self.assertIsNotNone(kernel_image) self.assertIsNotNone(image_creator.get_kernel_image()) self.assertEqual(kernel_image.id, image_creator.get_kernel_image().id) ramdisk_image = glance_utils.get_image( - self.glance, image_settings.ramdisk_image_settings.name) + self.glance, + image_settings=image_settings.ramdisk_image_settings) self.assertIsNotNone(ramdisk_image) self.assertIsNotNone(image_creator.get_ramdisk_image()) self.assertEqual(ramdisk_image.id, @@ -732,8 +734,8 @@ class CreateMultiPartImageTests(OSIntegrationTestCase): self.assertIsNotNone(created_image) self.assertEqual(self.image_name, created_image.name) - retrieved_image = glance_utils.get_image(self.glance, - file_image_settings.name) + retrieved_image = glance_utils.get_image( + self.glance, image_settings=file_image_settings) self.assertIsNotNone(retrieved_image) self.assertEqual(self.image_creators[-1].get_image().size, retrieved_image.size) @@ -805,8 +807,8 @@ class CreateMultiPartImageTests(OSIntegrationTestCase): self.assertIsNotNone(created_image) self.assertEqual(self.image_name, created_image.name) - retrieved_image = glance_utils.get_image(self.glance, - os_image_settings.name) + retrieved_image = glance_utils.get_image( + self.glance, image_settings=os_image_settings) self.assertIsNotNone(retrieved_image) self.assertEqual(self.image_creators[-1].get_image().size, diff --git a/snaps/openstack/tests/create_project_tests.py b/snaps/openstack/tests/create_project_tests.py index f388ba5..96d71f2 100644 --- a/snaps/openstack/tests/create_project_tests.py +++ b/snaps/openstack/tests/create_project_tests.py @@ -123,7 +123,7 @@ class CreateProjectSuccessTests(OSComponentTestCase): self.assertIsNotNone(created_project) retrieved_project = keystone_utils.get_project( - keystone=self.keystone, project_name=self.project_settings.name) + keystone=self.keystone, project_settings=self.project_settings) self.assertIsNotNone(retrieved_project) self.assertEqual(created_project, retrieved_project) self.assertTrue(validate_project(self.keystone, self.project_settings, @@ -140,7 +140,7 @@ class CreateProjectSuccessTests(OSComponentTestCase): self.assertIsNotNone(created_project) retrieved_project = keystone_utils.get_project( - keystone=self.keystone, project_name=self.project_settings.name) + keystone=self.keystone, project_settings=self.project_settings) self.assertIsNotNone(retrieved_project) self.assertEqual(created_project, retrieved_project) diff --git a/snaps/openstack/tests/openstack_tests.py b/snaps/openstack/tests/openstack_tests.py index 927b5b3..71d2dc2 100644 --- a/snaps/openstack/tests/openstack_tests.py +++ b/snaps/openstack/tests/openstack_tests.py @@ -95,10 +95,10 @@ 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', config.get('OS_USER_DOMAIN_NAME')), - 'project_domain_id': config.get( - 'OS_PROJECT_DOMAIN_ID', config.get('OS_PROJECT_DOMAIN_NAME')), + 'user_domain_id': config.get('OS_USER_DOMAIN_ID'), + 'user_domain_name': config.get('OS_USER_DOMAIN_NAME'), + 'project_domain_id': config.get('OS_PROJECT_DOMAIN_ID'), + 'project_domain_name': config.get('OS_PROJECT_DOMAIN_NAME'), 'interface': interface, 'proxy_settings': proxy_settings, 'cacert': https_cacert, @@ -136,7 +136,7 @@ def get_credentials(os_env_file=None, proxy_settings_str=None, creds_dict.update(overrides) os_creds = OSCreds(**creds_dict) - logger.info('OS Credentials = %s', os_creds) + logger.info('OS Credentials = %s', os_creds.__str__) return os_creds diff --git a/snaps/openstack/utils/glance_utils.py b/snaps/openstack/utils/glance_utils.py index ad9c5e5..2606e32 100644 --- a/snaps/openstack/utils/glance_utils.py +++ b/snaps/openstack/utils/glance_utils.py @@ -44,26 +44,34 @@ def glance_client(os_creds): region_name=os_creds.region_name) -def get_image(glance, image_name=None): +def get_image(glance, image_name=None, image_settings=None): """ Returns an OpenStack image object for a given name :param glance: the Glance client :param image_name: the image name to lookup + :param image_settings: the image settings used for lookups :return: the image object or None """ - images = glance.images.list() + img_filter = dict() + if image_settings: + if image_settings.exists: + img_filter = {'name': image_settings.name} + else: + img_filter = {'name': image_settings.name, + 'disk_format': image_settings.format} + elif image_name: + img_filter = {'name': image_name} + + images = glance.images.list(**{'filters': img_filter}) for image in images: if glance.version == VERSION_1: - if image.name == image_name: - image = glance.images.get(image.id) - return Image(name=image.name, image_id=image.id, - size=image.size, properties=image.properties) + image = glance.images.get(image.id) + return Image(name=image.name, image_id=image.id, + size=image.size, properties=image.properties) elif glance.version == VERSION_2: - if image['name'] == image_name: - return Image( - name=image['name'], image_id=image['id'], - size=image['size'], properties=image.get('properties')) - return None + return Image( + name=image['name'], image_id=image['id'], + size=image['size'], properties=image.get('properties')) def get_image_by_id(glance, image_id): diff --git a/snaps/openstack/utils/keystone_utils.py b/snaps/openstack/utils/keystone_utils.py index e070a49..99779ee 100644 --- a/snaps/openstack/utils/keystone_utils.py +++ b/snaps/openstack/utils/keystone_utils.py @@ -41,7 +41,9 @@ def get_session_auth(os_creds): password=os_creds.password, project_name=os_creds.project_name, user_domain_id=os_creds.user_domain_id, - project_domain_id=os_creds.project_domain_id) + user_domain_name=os_creds.user_domain_name, + project_domain_id=os_creds.project_domain_id, + project_domain_name=os_creds.project_domain_name) else: auth = v2.Password(auth_url=os_creds.auth_url, username=os_creds.username, @@ -102,18 +104,17 @@ def get_endpoint(os_creds, service_type, interface='public'): auth=auth, service_type=service_type, interface=interface) -def get_project(keystone=None, os_creds=None, project_name=None): +def get_project(keystone=None, os_creds=None, project_settings=None, + project_name=None): """ Returns the first project object or None if not found :param keystone: the Keystone client :param os_creds: the OpenStack credentials used to obtain the Keystone client if the keystone parameter is None + :param project_settings: a ProjectSettings object :param project_name: the name to query :return: the SNAPS-OO Project domain object or None """ - if not project_name: - return None - if not keystone: if os_creds: keystone = keystone_client(os_creds) @@ -121,21 +122,30 @@ def get_project(keystone=None, os_creds=None, project_name=None): raise KeystoneException( 'Cannot lookup project without the proper credentials') + proj_filter = dict() + + if project_name: + proj_filter['name'] = project_name + elif project_settings: + proj_filter['name'] = project_settings.name + proj_filter['description'] = project_settings.description + proj_filter['domain'] = project_settings.domain + proj_filter['enabled'] = project_settings.enabled + if keystone.version == V2_VERSION_STR: projects = keystone.tenants.list() else: - projects = keystone.projects.list(**{'name': project_name}) + projects = keystone.projects.list(**proj_filter) for project in projects: - domain_id = None - if keystone.version != V2_VERSION_STR: - domain_id = project.domain_id - if project.name == project_name: + if project.name == proj_filter['name']: + domain_id = None + if keystone.version != V2_VERSION_STR: + domain_id = project.domain_id + return Project(name=project.name, project_id=project.id, domain_id=domain_id) - return None - def create_project(keystone, project_settings): """ @@ -191,7 +201,9 @@ def get_user(keystone, username, project_name=None): :param project_name: the associated project (optional) :return: a SNAPS-OO User domain object or None """ - project = get_project(keystone=keystone, project_name=project_name) + project = None + if project_name: + project = get_project(keystone=keystone, project_name=project_name) if project: users = keystone.users.list(tenant_id=project.id) diff --git a/snaps/openstack/utils/nova_utils.py b/snaps/openstack/utils/nova_utils.py index b148bc5..a0c028a 100644 --- a/snaps/openstack/utils/nova_utils.py +++ b/snaps/openstack/utils/nova_utils.py @@ -83,7 +83,7 @@ def create_server(nova, neutron, glance, instance_settings, image_settings, raise NovaException( 'Flavor not found with name - %s', instance_settings.flavor) - image = glance_utils.get_image(glance, image_settings.name) + image = glance_utils.get_image(glance, image_settings=image_settings) if image: args = {'name': instance_settings.name, 'flavor': flavor, diff --git a/snaps/openstack/utils/tests/glance_utils_tests.py b/snaps/openstack/utils/tests/glance_utils_tests.py index 85b59ab..e61b795 100644 --- a/snaps/openstack/utils/tests/glance_utils_tests.py +++ b/snaps/openstack/utils/tests/glance_utils_tests.py @@ -40,7 +40,7 @@ class GlanceSmokeTests(OSComponentTestCase): Tests to ensure that the proper credentials can connect. """ glance = glance_utils.glance_client(self.os_creds) - image = glance_utils.get_image(glance, 'foo') + image = glance_utils.get_image(glance, image_name='foo') self.assertIsNone(image) def test_glance_connect_fail(self): @@ -53,7 +53,7 @@ class GlanceSmokeTests(OSComponentTestCase): glance = glance_utils.glance_client(OSCreds( username='user', password='pass', auth_url='url', project_name='project')) - glance_utils.get_image(glance, 'foo') + glance_utils.get_image(glance, image_name='foo') class GlanceUtilsTests(OSComponentTestCase): @@ -104,7 +104,8 @@ class GlanceUtilsTests(OSComponentTestCase): self.assertEqual(self.image_name, self.image.name) - image = glance_utils.get_image(self.glance, os_image_settings.name) + image = glance_utils.get_image(self.glance, + image_settings=os_image_settings) self.assertIsNotNone(image) validation_utils.objects_equivalent(self.image, image) @@ -132,6 +133,7 @@ class GlanceUtilsTests(OSComponentTestCase): self.assertIsNotNone(self.image) self.assertEqual(self.image_name, self.image.name) - image = glance_utils.get_image(self.glance, file_image_settings.name) + image = glance_utils.get_image( + self.glance, image_settings=file_image_settings) self.assertIsNotNone(image) validation_utils.objects_equivalent(self.image, image) diff --git a/snaps/openstack/utils/tests/keystone_utils_tests.py b/snaps/openstack/utils/tests/keystone_utils_tests.py index fad9041..3aa275d 100644 --- a/snaps/openstack/utils/tests/keystone_utils_tests.py +++ b/snaps/openstack/utils/tests/keystone_utils_tests.py @@ -104,7 +104,7 @@ class KeystoneUtilsTests(OSComponentTestCase): self.assertEqual(self.project_name, self.project.name) project = keystone_utils.get_project( - keystone=self.keystone, project_name=project_settings.name) + keystone=self.keystone, project_settings=project_settings) self.assertIsNotNone(project) self.assertEqual(self.project_name, self.project.name)