summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorspisarski <s.pisarski@cablelabs.com>2017-07-25 14:40:09 -0600
committerspisarski <s.pisarski@cablelabs.com>2017-07-25 15:36:23 -0600
commitb8b14d27a2ece042553a82b82fb0a3a7f3896fdf (patch)
tree6d1e04c9336d590887fe971015cb5433cea8e50f
parent63ee8af859678fdf7b82225d5bf40bddef90c0b3 (diff)
Added region support.
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>
-rw-r--r--snaps/openstack/os_credentials.py3
-rw-r--r--snaps/openstack/tests/conf/os_credentials_tests.py17
-rw-r--r--snaps/openstack/tests/openstack_tests.py13
-rw-r--r--snaps/openstack/utils/glance_utils.py3
-rw-r--r--snaps/openstack/utils/heat_utils.py3
-rw-r--r--snaps/openstack/utils/keystone_utils.py4
-rw-r--r--snaps/openstack/utils/neutron_utils.py3
-rw-r--r--snaps/openstack/utils/nova_utils.py3
-rw-r--r--snaps/openstack/utils/tests/heat_utils_tests.py39
9 files changed, 62 insertions, 26 deletions
diff --git a/snaps/openstack/os_credentials.py b/snaps/openstack/os_credentials.py
index 4c681ac..3054478 100644
--- a/snaps/openstack/os_credentials.py
+++ b/snaps/openstack/os_credentials.py
@@ -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):
diff --git a/snaps/openstack/tests/conf/os_credentials_tests.py b/snaps/openstack/tests/conf/os_credentials_tests.py
index cde8161..e7c34b9 100644
--- a/snaps/openstack/tests/conf/os_credentials_tests.py
+++ b/snaps/openstack/tests/conf/os_credentials_tests.py
@@ -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)
diff --git a/snaps/openstack/tests/openstack_tests.py b/snaps/openstack/tests/openstack_tests.py
index 855beb5..67269c6 100644
--- a/snaps/openstack/tests/openstack_tests.py
+++ b/snaps/openstack/tests/openstack_tests.py
@@ -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)
diff --git a/snaps/openstack/utils/glance_utils.py b/snaps/openstack/utils/glance_utils.py
index 8479be3..49bfe95 100644
--- a/snaps/openstack/utils/glance_utils.py
+++ b/snaps/openstack/utils/glance_utils.py
@@ -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):
diff --git a/snaps/openstack/utils/heat_utils.py b/snaps/openstack/utils/heat_utils.py
index a631b35..ae367a0 100644
--- a/snaps/openstack/utils/heat_utils.py
+++ b/snaps/openstack/utils/heat_utils.py
@@ -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):
diff --git a/snaps/openstack/utils/keystone_utils.py b/snaps/openstack/utils/keystone_utils.py
index 4eda4e4..8446df0 100644
--- a/snaps/openstack/utils/keystone_utils.py
+++ b/snaps/openstack/utils/keystone_utils.py
@@ -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'):
diff --git a/snaps/openstack/utils/neutron_utils.py b/snaps/openstack/utils/neutron_utils.py
index d93faa0..bf8cb08 100644
--- a/snaps/openstack/utils/neutron_utils.py
+++ b/snaps/openstack/utils/neutron_utils.py
@@ -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):
diff --git a/snaps/openstack/utils/nova_utils.py b/snaps/openstack/utils/nova_utils.py
index 70b1e7b..ab434f1 100644
--- a/snaps/openstack/utils/nova_utils.py
+++ b/snaps/openstack/utils/nova_utils.py
@@ -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,
diff --git a/snaps/openstack/utils/tests/heat_utils_tests.py b/snaps/openstack/utils/tests/heat_utils_tests.py
index 2ef0c68..dda1111 100644
--- a/snaps/openstack/utils/tests/heat_utils_tests.py
+++ b/snaps/openstack/utils/tests/heat_utils_tests.py
@@ -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