diff options
author | Jenkins <jenkins@review.openstack.org> | 2015-10-16 17:09:04 +0000 |
---|---|---|
committer | Gerrit Code Review <review@openstack.org> | 2015-10-16 17:09:04 +0000 |
commit | 56e5df33316ae6b6e3ef3ab2f6bf1a744130d0d8 (patch) | |
tree | 79a36de70be4878c545b843bfcc24e2901a12a9a | |
parent | d4e4aaa0f9209b6338d24d2ed6ff87d768fe453f (diff) | |
parent | 512ca01715683f7c46985677e7b9be8e3d7a191c (diff) | |
download | os-client-config-56e5df33316ae6b6e3ef3ab2f6bf1a744130d0d8.tar.gz |
Merge "Validate requested region against region list"
-rw-r--r-- | os_client_config/config.py | 10 | ||||
-rw-r--r-- | os_client_config/tests/test_config.py | 17 |
2 files changed, 26 insertions, 1 deletions
diff --git a/os_client_config/config.py b/os_client_config/config.py index bff2f5c..b2c1649 100644 --- a/os_client_config/config.py +++ b/os_client_config/config.py @@ -573,7 +573,15 @@ class OpenStackConfig(object): # Regions is a list that we can use to create a list of cloud/region # objects. It does not belong in the single-cloud dict - config.pop('regions', None) + regions = config.pop('regions', None) + if regions and args['region_name'] not in regions: + raise exceptions.OpenStackConfigException( + 'Region {region_name} is not a valid region name for cloud' + ' {cloud}. Valid choices are {region_list}. Please note that' + ' region names are case sensitive.'.format( + region_name=args['region_name'], + region_list=','.join(regions), + cloud=cloud)) # Can't just do update, because None values take over for (key, val) in iter(args.items()): diff --git a/os_client_config/tests/test_config.py b/os_client_config/tests/test_config.py index 271c40b..0130748 100644 --- a/os_client_config/tests/test_config.py +++ b/os_client_config/tests/test_config.py @@ -298,6 +298,23 @@ class TestConfigArgparse(base.TestCase): self.assertEqual(cc.region_name, 'region1') self.assertIsNone(cc.snack_type) + def test_get_one_cloud_bad_region(self): + c = config.OpenStackConfig(config_files=[self.cloud_yaml], + vendor_files=[self.vendor_yaml]) + + self.assertRaises( + exceptions.OpenStackConfigException, + c.get_one_cloud, + cloud='_test_cloud_regions', region_name='bad') + + def test_get_one_cloud_bad_region_no_regions(self): + c = config.OpenStackConfig(config_files=[self.cloud_yaml], + vendor_files=[self.vendor_yaml]) + + cc = c.get_one_cloud(cloud='_test-cloud_', region_name='bad_region') + self._assert_cloud_details(cc) + self.assertEqual(cc.region_name, 'bad_region') + def test_get_one_cloud_no_argparse_region2(self): c = config.OpenStackConfig(config_files=[self.cloud_yaml], vendor_files=[self.vendor_yaml]) |