def setUp(self): super(TestCloudEndpoints, self).setUp() config = os_client_config.OpenStackConfig() self.client = OperatorCloud(cloud_config=config.get_one_cloud( validate=False)) self.mock_ks_endpoints = \ [FakeEndpoint(**kwa) for kwa in self.mock_endpoints]
def setUp(self): super(CloudServices, self).setUp() config = os_client_config.OpenStackConfig() self.client = OperatorCloud(cloud_config=config.get_one_cloud()) self.mock_ks_services = [ FakeService(**kwa) for kwa in self.mock_services ]
def setUp(self): super(CloudServices, self).setUp() config = os_client_config.OpenStackConfig() self.client = OperatorCloud(cloud_config=config.get_one_cloud( validate=False)) self.mock_ks_services = [FakeService(**kwa) for kwa in self.mock_services]
def setUp(self): super(TestCloudEndpoints, self).setUp() config = os_client_config.OpenStackConfig() self.client = OperatorCloud( cloud_config=config.get_one_cloud(validate=False)) self.mock_ks_endpoints = \ [FakeEndpoint(**kwa) for kwa in self.mock_endpoints]
class CloudServices(base.TestCase): mock_services = [ {'id': 'id1', 'name': 'service1', 'type': 'type1', 'service_type': 'type1', 'description': 'desc1'}, {'id': 'id2', 'name': 'service2', 'type': 'type2', 'service_type': 'type2', 'description': 'desc2'}, {'id': 'id3', 'name': 'service3', 'type': 'type2', 'service_type': 'type2', 'description': 'desc3'}, {'id': 'id4', 'name': 'service4', 'type': 'type3', 'service_type': 'type3', 'description': 'desc4'} ] def setUp(self): super(CloudServices, self).setUp() config = os_client_config.OpenStackConfig() self.client = OperatorCloud(cloud_config=config.get_one_cloud( validate=False)) self.mock_ks_services = [FakeService(**kwa) for kwa in self.mock_services] @patch.object(OperatorCloud, 'keystone_client') def test_create_service(self, mock_keystone_client): kwargs = { 'name': 'a service', 'type': 'network', 'description': 'This is a test service' } self.client.create_service(**kwargs) kwargs['service_type'] = kwargs.pop('type') mock_keystone_client.services.create.assert_called_with(**kwargs) @patch.object(OperatorCloud, 'keystone_client') def test_list_services(self, mock_keystone_client): mock_keystone_client.services.list.return_value = \ self.mock_ks_services services = self.client.list_services() mock_keystone_client.services.list.assert_called_with() self.assertItemsEqual(self.mock_services, services) @patch.object(OperatorCloud, 'keystone_client') def test_get_service(self, mock_keystone_client): mock_keystone_client.services.list.return_value = \ self.mock_ks_services # Search by id service = self.client.get_service(name_or_id='id4') # test we are getting exactly 1 element self.assertEqual(service, self.mock_services[3]) # Search by name service = self.client.get_service(name_or_id='service2') # test we are getting exactly 1 element self.assertEqual(service, self.mock_services[1]) # Not found service = self.client.get_service(name_or_id='blah!') self.assertIs(None, service) # Multiple matches # test we are getting an Exception self.assertRaises(OpenStackCloudException, self.client.get_service, name_or_id=None, filters={'type': 'type2'}) @patch.object(OperatorCloud, 'keystone_client') def test_search_services(self, mock_keystone_client): mock_keystone_client.services.list.return_value = \ self.mock_ks_services # Search by id services = self.client.search_services(name_or_id='id4') # test we are getting exactly 1 element self.assertEqual(1, len(services)) self.assertEqual(services, [self.mock_services[3]]) # Search by name services = self.client.search_services(name_or_id='service2') # test we are getting exactly 1 element self.assertEqual(1, len(services)) self.assertEqual(services, [self.mock_services[1]]) # Not found services = self.client.search_services(name_or_id='blah!') self.assertEqual(0, len(services)) # Multiple matches services = self.client.search_services( filters={'type': 'type2'}) # test we are getting exactly 2 elements self.assertEqual(2, len(services)) self.assertEqual(services, [self.mock_services[1], self.mock_services[2]]) @patch.object(OperatorCloud, 'keystone_client') def test_delete_service(self, mock_keystone_client): mock_keystone_client.services.list.return_value = \ self.mock_ks_services # Delete by name self.client.delete_service(name_or_id='service3') mock_keystone_client.services.delete.assert_called_with(id='id3') # Delete by id self.client.delete_service('id1') mock_keystone_client.services.delete.assert_called_with(id='id1')
class CloudServices(base.TestCase): mock_services = [{ 'id': 'id1', 'name': 'service1', 'type': 'type1', 'service_type': 'type1', 'description': 'desc1' }, { 'id': 'id2', 'name': 'service2', 'type': 'type2', 'service_type': 'type2', 'description': 'desc2' }, { 'id': 'id3', 'name': 'service3', 'type': 'type2', 'service_type': 'type2', 'description': 'desc3' }, { 'id': 'id4', 'name': 'service4', 'type': 'type3', 'service_type': 'type3', 'description': 'desc4' }] def setUp(self): super(CloudServices, self).setUp() config = os_client_config.OpenStackConfig() self.client = OperatorCloud(cloud_config=config.get_one_cloud( validate=False)) self.mock_ks_services = [ FakeService(**kwa) for kwa in self.mock_services ] @patch.object(OperatorCloud, 'keystone_client') def test_create_service(self, mock_keystone_client): kwargs = { 'name': 'a service', 'type': 'network', 'description': 'This is a test service' } self.client.create_service(**kwargs) kwargs['service_type'] = kwargs.pop('type') mock_keystone_client.services.create.assert_called_with(**kwargs) @patch.object(OperatorCloud, 'keystone_client') def test_list_services(self, mock_keystone_client): mock_keystone_client.services.list.return_value = \ self.mock_ks_services services = self.client.list_services() mock_keystone_client.services.list.assert_called_with() self.assertItemsEqual(self.mock_services, services) @patch.object(OperatorCloud, 'keystone_client') def test_get_service(self, mock_keystone_client): mock_keystone_client.services.list.return_value = \ self.mock_ks_services # Search by id service = self.client.get_service(name_or_id='id4') # test we are getting exactly 1 element self.assertEqual(service, self.mock_services[3]) # Search by name service = self.client.get_service(name_or_id='service2') # test we are getting exactly 1 element self.assertEqual(service, self.mock_services[1]) # Not found service = self.client.get_service(name_or_id='blah!') self.assertIs(None, service) # Multiple matches # test we are getting an Exception self.assertRaises(OpenStackCloudException, self.client.get_service, name_or_id=None, filters={'type': 'type2'}) @patch.object(OperatorCloud, 'keystone_client') def test_search_services(self, mock_keystone_client): mock_keystone_client.services.list.return_value = \ self.mock_ks_services # Search by id services = self.client.search_services(name_or_id='id4') # test we are getting exactly 1 element self.assertEqual(1, len(services)) self.assertEqual(services, [self.mock_services[3]]) # Search by name services = self.client.search_services(name_or_id='service2') # test we are getting exactly 1 element self.assertEqual(1, len(services)) self.assertEqual(services, [self.mock_services[1]]) # Not found services = self.client.search_services(name_or_id='blah!') self.assertEqual(0, len(services)) # Multiple matches services = self.client.search_services(filters={'type': 'type2'}) # test we are getting exactly 2 elements self.assertEqual(2, len(services)) self.assertEqual(services, [self.mock_services[1], self.mock_services[2]]) @patch.object(OperatorCloud, 'keystone_client') def test_delete_service(self, mock_keystone_client): mock_keystone_client.services.list.return_value = \ self.mock_ks_services # Delete by name self.client.delete_service(name_or_id='service3') mock_keystone_client.services.delete.assert_called_with(id='id3') # Delete by id self.client.delete_service('id1') mock_keystone_client.services.delete.assert_called_with(id='id1')
class TestCloudEndpoints(base.TestCase): mock_endpoints = [ {'id': 'id1', 'service_id': 'sid1', 'region': 'region1', 'publicurl': 'purl1', 'internalurl': None, 'adminurl': None}, {'id': 'id2', 'service_id': 'sid2', 'region': 'region1', 'publicurl': 'purl2', 'internalurl': None, 'adminurl': None}, {'id': 'id3', 'service_id': 'sid3', 'region': 'region2', 'publicurl': 'purl3', 'internalurl': 'iurl3', 'adminurl': 'aurl3'} ] def setUp(self): super(TestCloudEndpoints, self).setUp() config = os_client_config.OpenStackConfig() self.client = OperatorCloud( cloud_config=config.get_one_cloud(validate=False)) self.mock_ks_endpoints = \ [FakeEndpoint(**kwa) for kwa in self.mock_endpoints] @patch.object(OperatorCloud, 'list_services') @patch.object(OperatorCloud, 'keystone_client') def test_create_endpoint(self, mock_keystone_client, mock_list_services): mock_list_services.return_value = [ { 'id': 'service_id1', 'name': 'service1', 'type': 'type1', 'description': 'desc1' } ] mock_keystone_client.endpoints.create.return_value = \ self.mock_ks_endpoints[0] endpoints = self.client.create_endpoint( service_name_or_id='service1', region='mock_region', public_url='mock_public_url', ) mock_keystone_client.endpoints.create.assert_called_with( service_id='service_id1', region='mock_region', publicurl='mock_public_url', ) # test keys and values are correct for k, v in self.mock_endpoints[0].items(): self.assertEquals(v, endpoints[0].get(k)) @patch.object(OperatorCloud, 'keystone_client') def test_list_endpoints(self, mock_keystone_client): mock_keystone_client.endpoints.list.return_value = \ self.mock_ks_endpoints endpoints = self.client.list_endpoints() mock_keystone_client.endpoints.list.assert_called_with() # test we are getting exactly len(self.mock_endpoints) elements self.assertEqual(len(self.mock_endpoints), len(endpoints)) # test keys and values are correct for mock_endpoint in self.mock_endpoints: found = False for e in endpoints: if e['id'] == mock_endpoint['id']: found = True for k, v in mock_endpoint.items(): self.assertEquals(v, e.get(k)) break self.assertTrue( found, msg="endpoint {id} not found!".format( id=mock_endpoint['id'])) @patch.object(OperatorCloud, 'keystone_client') def test_search_endpoints(self, mock_keystone_client): mock_keystone_client.endpoints.list.return_value = \ self.mock_ks_endpoints # Search by id endpoints = self.client.search_endpoints(id='id3') # # test we are getting exactly 1 element self.assertEqual(1, len(endpoints)) for k, v in self.mock_endpoints[2].items(): self.assertEquals(v, endpoints[0].get(k)) # Not found endpoints = self.client.search_endpoints(id='blah!') self.assertEqual(0, len(endpoints)) # Multiple matches endpoints = self.client.search_endpoints( filters={'region': 'region1'}) # # test we are getting exactly 2 elements self.assertEqual(2, len(endpoints)) @patch.object(OperatorCloud, 'keystone_client') def test_delete_endpoint(self, mock_keystone_client): mock_keystone_client.endpoints.list.return_value = \ self.mock_ks_endpoints # Delete by id self.client.delete_endpoint(id='id2') mock_keystone_client.endpoints.delete.assert_called_with(id='id2')
class TestCloudEndpoints(base.TestCase): mock_endpoints = [ {'id': 'id1', 'service_id': 'sid1', 'region': 'region1', 'publicurl': 'purl1', 'internalurl': None, 'adminurl': None}, {'id': 'id2', 'service_id': 'sid2', 'region': 'region1', 'publicurl': 'purl2', 'internalurl': None, 'adminurl': None}, {'id': 'id3', 'service_id': 'sid3', 'region': 'region2', 'publicurl': 'purl3', 'internalurl': 'iurl3', 'adminurl': 'aurl3'} ] mock_endpoints_v3 = [ {'id': 'id1_v3', 'service_id': 'sid1', 'region': 'region1', 'url': 'url1', 'interface': 'public'}, {'id': 'id2_v3', 'service_id': 'sid1', 'region': 'region1', 'url': 'url2', 'interface': 'admin'}, {'id': 'id3_v3', 'service_id': 'sid1', 'region': 'region1', 'url': 'url3', 'interface': 'internal'} ] def setUp(self): super(TestCloudEndpoints, self).setUp() config = os_client_config.OpenStackConfig() self.client = OperatorCloud(cloud_config=config.get_one_cloud( validate=False)) self.mock_ks_endpoints = \ [FakeEndpoint(**kwa) for kwa in self.mock_endpoints] self.mock_ks_endpoints_v3 = \ [FakeEndpointv3(**kwa) for kwa in self.mock_endpoints_v3] @patch.object(OperatorCloud, 'list_services') @patch.object(OperatorCloud, 'keystone_client') @patch.object(os_client_config.cloud_config.CloudConfig, 'get_api_version') def test_create_endpoint_v2(self, mock_api_version, mock_keystone_client, mock_list_services): mock_api_version.return_value = '2.0' mock_list_services.return_value = [ { 'id': 'service_id1', 'name': 'service1', 'type': 'type1', 'description': 'desc1' } ] mock_keystone_client.endpoints.create.return_value = \ self.mock_ks_endpoints[2] endpoints = self.client.create_endpoint( service_name_or_id='service1', region='mock_region', public_url='mock_public_url', internal_url='mock_internal_url', admin_url='mock_admin_url' ) mock_keystone_client.endpoints.create.assert_called_with( service_id='service_id1', region='mock_region', publicurl='mock_public_url', internalurl='mock_internal_url', adminurl='mock_admin_url', ) # test keys and values are correct for k, v in self.mock_endpoints[2].items(): self.assertEquals(v, endpoints[0].get(k)) # test v3 semantics on v2.0 endpoint mock_keystone_client.endpoints.create.return_value = \ self.mock_ks_endpoints[0] self.assertRaises(OpenStackCloudException, self.client.create_endpoint, service_name_or_id='service1', interface='mock_admin_url', url='admin') endpoints_3on2 = self.client.create_endpoint( service_name_or_id='service1', region='mock_region', interface='public', url='mock_public_url' ) # test keys and values are correct for k, v in self.mock_endpoints[0].items(): self.assertEquals(v, endpoints_3on2[0].get(k)) @patch.object(OperatorCloud, 'list_services') @patch.object(OperatorCloud, 'keystone_client') @patch.object(os_client_config.cloud_config.CloudConfig, 'get_api_version') def test_create_endpoint_v3(self, mock_api_version, mock_keystone_client, mock_list_services): mock_api_version.return_value = '3' mock_list_services.return_value = [ { 'id': 'service_id1', 'name': 'service1', 'type': 'type1', 'description': 'desc1' } ] mock_keystone_client.endpoints.create.return_value = \ self.mock_ks_endpoints_v3[0] endpoints = self.client.create_endpoint( service_name_or_id='service1', region='mock_region', url='mock_url', interface='mock_interface', enabled=False ) mock_keystone_client.endpoints.create.assert_called_with( service='service_id1', region='mock_region', url='mock_url', interface='mock_interface', enabled=False ) # test keys and values are correct for k, v in self.mock_endpoints_v3[0].items(): self.assertEquals(v, endpoints[0].get(k)) # test v2.0 semantics on v3 endpoint mock_keystone_client.endpoints.create.side_effect = \ self.mock_ks_endpoints_v3 endpoints_2on3 = self.client.create_endpoint( service_name_or_id='service1', region='mock_region', public_url='mock_public_url', internal_url='mock_internal_url', admin_url='mock_admin_url', ) # Three endpoints should be returned, public, internal, and admin self.assertEquals(len(endpoints_2on3), 3) # test keys and values are correct for count in range(len(endpoints_2on3)): for k, v in self.mock_endpoints_v3[count].items(): self.assertEquals(v, endpoints_2on3[count].get(k)) @patch.object(OperatorCloud, 'keystone_client') def test_list_endpoints(self, mock_keystone_client): mock_keystone_client.endpoints.list.return_value = \ self.mock_ks_endpoints endpoints = self.client.list_endpoints() mock_keystone_client.endpoints.list.assert_called_with() # test we are getting exactly len(self.mock_endpoints) elements self.assertEqual(len(self.mock_endpoints), len(endpoints)) # test keys and values are correct for mock_endpoint in self.mock_endpoints: found = False for e in endpoints: if e['id'] == mock_endpoint['id']: found = True for k, v in mock_endpoint.items(): self.assertEquals(v, e.get(k)) break self.assertTrue( found, msg="endpoint {id} not found!".format( id=mock_endpoint['id'])) @patch.object(OperatorCloud, 'keystone_client') def test_search_endpoints(self, mock_keystone_client): mock_keystone_client.endpoints.list.return_value = \ self.mock_ks_endpoints # Search by id endpoints = self.client.search_endpoints(id='id3') # # test we are getting exactly 1 element self.assertEqual(1, len(endpoints)) for k, v in self.mock_endpoints[2].items(): self.assertEquals(v, endpoints[0].get(k)) # Not found endpoints = self.client.search_endpoints(id='blah!') self.assertEqual(0, len(endpoints)) # Multiple matches endpoints = self.client.search_endpoints( filters={'region': 'region1'}) # # test we are getting exactly 2 elements self.assertEqual(2, len(endpoints)) @patch.object(OperatorCloud, 'keystone_client') def test_delete_endpoint(self, mock_keystone_client): mock_keystone_client.endpoints.list.return_value = \ self.mock_ks_endpoints # Delete by id self.client.delete_endpoint(id='id2') mock_keystone_client.endpoints.delete.assert_called_with(id='id2')
class TestCloudEndpoints(base.TestCase): mock_endpoints = [{ 'id': 'id1', 'service_id': 'sid1', 'region': 'region1', 'publicurl': 'purl1', 'internalurl': None, 'adminurl': None }, { 'id': 'id2', 'service_id': 'sid2', 'region': 'region1', 'publicurl': 'purl2', 'internalurl': None, 'adminurl': None }, { 'id': 'id3', 'service_id': 'sid3', 'region': 'region2', 'publicurl': 'purl3', 'internalurl': 'iurl3', 'adminurl': 'aurl3' }] def setUp(self): super(TestCloudEndpoints, self).setUp() config = os_client_config.OpenStackConfig() self.client = OperatorCloud(cloud_config=config.get_one_cloud()) self.mock_ks_endpoints = \ [FakeEndpoint(**kwa) for kwa in self.mock_endpoints] @patch.object(OperatorCloud, 'list_services') @patch.object(OperatorCloud, 'keystone_client') def test_create_endpoint(self, mock_keystone_client, mock_list_services): mock_list_services.return_value = [{ 'id': 'service_id1', 'name': 'service1', 'type': 'type1', 'description': 'desc1' }] mock_keystone_client.endpoints.create.return_value = \ self.mock_ks_endpoints[0] endpoint = self.client.create_endpoint( service_name_or_id='service1', region='mock_region', public_url='mock_public_url', internal_url='mock_internal_url', admin_url='mock_admin_url') mock_keystone_client.endpoints.create.assert_called_with( service_id='service_id1', region='mock_region', publicurl='mock_public_url', internalurl='mock_internal_url', adminurl='mock_admin_url') # test keys and values are correct for k, v in self.mock_endpoints[0].items(): self.assertEquals(v, endpoint.get(k)) @patch.object(OperatorCloud, 'keystone_client') def test_list_endpoints(self, mock_keystone_client): mock_keystone_client.endpoints.list.return_value = \ self.mock_ks_endpoints endpoints = self.client.list_endpoints() mock_keystone_client.endpoints.list.assert_called_with() # test we are getting exactly len(self.mock_endpoints) elements self.assertEqual(len(self.mock_endpoints), len(endpoints)) # test keys and values are correct for mock_endpoint in self.mock_endpoints: found = False for e in endpoints: if e['id'] == mock_endpoint['id']: found = True for k, v in mock_endpoint.items(): self.assertEquals(v, e.get(k)) break self.assertTrue( found, msg="endpoint {id} not found!".format(id=mock_endpoint['id'])) @patch.object(OperatorCloud, 'keystone_client') def test_search_endpoints(self, mock_keystone_client): mock_keystone_client.endpoints.list.return_value = \ self.mock_ks_endpoints # Search by id endpoints = self.client.search_endpoints(id='id3') # # test we are getting exactly 1 element self.assertEqual(1, len(endpoints)) for k, v in self.mock_endpoints[2].items(): self.assertEquals(v, endpoints[0].get(k)) # Not found endpoints = self.client.search_endpoints(id='blah!') self.assertEqual(0, len(endpoints)) # Multiple matches endpoints = self.client.search_endpoints(filters={'region': 'region1'}) # # test we are getting exactly 2 elements self.assertEqual(2, len(endpoints)) @patch.object(OperatorCloud, 'keystone_client') def test_delete_endpoint(self, mock_keystone_client): mock_keystone_client.endpoints.list.return_value = \ self.mock_ks_endpoints # Delete by id self.client.delete_endpoint(id='id2') mock_keystone_client.endpoints.delete.assert_called_with(id='id2')
class CloudServices(base.TestCase): mock_services = [ {'id': 'id1', 'name': 'service1', 'type': 'type1', 'service_type': 'type1', 'description': 'desc1', 'enabled': True}, {'id': 'id2', 'name': 'service2', 'type': 'type2', 'service_type': 'type2', 'description': 'desc2', 'enabled': True}, {'id': 'id3', 'name': 'service3', 'type': 'type2', 'service_type': 'type2', 'description': 'desc3', 'enabled': True}, {'id': 'id4', 'name': 'service4', 'type': 'type3', 'service_type': 'type3', 'description': 'desc4', 'enabled': True} ] def setUp(self): super(CloudServices, self).setUp() config = os_client_config.OpenStackConfig() self.client = OperatorCloud(cloud_config=config.get_one_cloud( validate=False)) self.mock_ks_services = [FakeService(**kwa) for kwa in self.mock_services] @patch.object(_utils, 'normalize_keystone_services') @patch.object(OperatorCloud, 'keystone_client') @patch.object(os_client_config.cloud_config.CloudConfig, 'get_api_version') def test_create_service_v2(self, mock_api_version, mock_keystone_client, mock_norm): mock_api_version.return_value = '2.0' kwargs = { 'name': 'a service', 'type': 'network', 'description': 'This is a test service' } self.client.create_service(**kwargs) kwargs['service_type'] = kwargs.pop('type') mock_keystone_client.services.create.assert_called_with(**kwargs) self.assertTrue(mock_norm.called) @patch.object(_utils, 'normalize_keystone_services') @patch.object(OperatorCloud, 'keystone_client') @patch.object(os_client_config.cloud_config.CloudConfig, 'get_api_version') def test_create_service_v3(self, mock_api_version, mock_keystone_client, mock_norm): mock_api_version.return_value = '3' kwargs = { 'name': 'a v3 service', 'type': 'cinderv2', 'description': 'This is a test service', 'enabled': False } self.client.create_service(**kwargs) mock_keystone_client.services.create.assert_called_with(**kwargs) self.assertTrue(mock_norm.called) @patch.object(os_client_config.cloud_config.CloudConfig, 'get_api_version') def test_update_service_v2(self, mock_api_version): mock_api_version.return_value = '2.0' # NOTE(SamYaple): Update service only works with v3 api self.assertRaises(OpenStackCloudUnavailableFeature, self.client.update_service, 'service_id', name='new name') @patch.object(_utils, 'normalize_keystone_services') @patch.object(OperatorCloud, 'keystone_client') @patch.object(os_client_config.cloud_config.CloudConfig, 'get_api_version') def test_update_service_v3(self, mock_api_version, mock_keystone_client, mock_norm): mock_api_version.return_value = '3' kwargs = { 'name': 'updated_name', 'type': 'updated_type', 'service_type': 'updated_type', 'description': 'updated_name', 'enabled': False } service_obj = FakeService(id='id1', **kwargs) mock_keystone_client.services.update.return_value = service_obj self.client.update_service('id1', **kwargs) del kwargs['service_type'] mock_keystone_client.services.update.assert_called_once_with( service='id1', **kwargs ) mock_norm.assert_called_once_with([meta.obj_to_dict(service_obj)]) @patch.object(OperatorCloud, 'keystone_client') def test_list_services(self, mock_keystone_client): mock_keystone_client.services.list.return_value = \ self.mock_ks_services services = self.client.list_services() mock_keystone_client.services.list.assert_called_with() self.assertItemsEqual(self.mock_services, services) @patch.object(OperatorCloud, 'keystone_client') def test_get_service(self, mock_keystone_client): mock_keystone_client.services.list.return_value = \ self.mock_ks_services # Search by id service = self.client.get_service(name_or_id='id4') # test we are getting exactly 1 element self.assertEqual(service, self.mock_services[3]) # Search by name service = self.client.get_service(name_or_id='service2') # test we are getting exactly 1 element self.assertEqual(service, self.mock_services[1]) # Not found service = self.client.get_service(name_or_id='blah!') self.assertIs(None, service) # Multiple matches # test we are getting an Exception self.assertRaises(OpenStackCloudException, self.client.get_service, name_or_id=None, filters={'type': 'type2'}) @patch.object(OperatorCloud, 'keystone_client') def test_search_services(self, mock_keystone_client): mock_keystone_client.services.list.return_value = \ self.mock_ks_services # Search by id services = self.client.search_services(name_or_id='id4') # test we are getting exactly 1 element self.assertEqual(1, len(services)) self.assertEqual(services, [self.mock_services[3]]) # Search by name services = self.client.search_services(name_or_id='service2') # test we are getting exactly 1 element self.assertEqual(1, len(services)) self.assertEqual(services, [self.mock_services[1]]) # Not found services = self.client.search_services(name_or_id='blah!') self.assertEqual(0, len(services)) # Multiple matches services = self.client.search_services( filters={'type': 'type2'}) # test we are getting exactly 2 elements self.assertEqual(2, len(services)) self.assertEqual(services, [self.mock_services[1], self.mock_services[2]]) @patch.object(OperatorCloud, 'keystone_client') def test_delete_service(self, mock_keystone_client): mock_keystone_client.services.list.return_value = \ self.mock_ks_services # Delete by name self.client.delete_service(name_or_id='service3') mock_keystone_client.services.delete.assert_called_with(id='id3') # Delete by id self.client.delete_service('id1') mock_keystone_client.services.delete.assert_called_with(id='id1')
def setUp(self): super(TestCloudEndpoints, self).setUp() self.client = OperatorCloud("op_cloud", {}) self.mock_ks_endpoints = \ [FakeEndpoint(**kwa) for kwa in self.mock_endpoints]
def setUp(self): super(CloudServices, self).setUp() self.client = OperatorCloud("op_cloud", {}) self.mock_ks_services = [ FakeService(**kwa) for kwa in self.mock_services ]
class CloudServices(base.TestCase): mock_services = [{ 'id': 'id1', 'name': 'service1', 'type': 'type1', 'service_type': 'type1', 'description': 'desc1', 'enabled': True }, { 'id': 'id2', 'name': 'service2', 'type': 'type2', 'service_type': 'type2', 'description': 'desc2', 'enabled': True }, { 'id': 'id3', 'name': 'service3', 'type': 'type2', 'service_type': 'type2', 'description': 'desc3', 'enabled': True }, { 'id': 'id4', 'name': 'service4', 'type': 'type3', 'service_type': 'type3', 'description': 'desc4', 'enabled': True }] def setUp(self): super(CloudServices, self).setUp() config = os_client_config.OpenStackConfig() self.client = OperatorCloud(cloud_config=config.get_one_cloud( validate=False)) self.mock_ks_services = [ FakeService(**kwa) for kwa in self.mock_services ] @patch.object(_utils, 'normalize_keystone_services') @patch.object(OperatorCloud, 'keystone_client') @patch.object(os_client_config.cloud_config.CloudConfig, 'get_api_version') def test_create_service_v2(self, mock_api_version, mock_keystone_client, mock_norm): mock_api_version.return_value = '2.0' kwargs = { 'name': 'a service', 'type': 'network', 'description': 'This is a test service' } self.client.create_service(**kwargs) kwargs['service_type'] = kwargs.pop('type') mock_keystone_client.services.create.assert_called_with(**kwargs) self.assertTrue(mock_norm.called) @patch.object(_utils, 'normalize_keystone_services') @patch.object(OperatorCloud, 'keystone_client') @patch.object(os_client_config.cloud_config.CloudConfig, 'get_api_version') def test_create_service_v3(self, mock_api_version, mock_keystone_client, mock_norm): mock_api_version.return_value = '3' kwargs = { 'name': 'a v3 service', 'type': 'cinderv2', 'description': 'This is a test service', 'enabled': False } self.client.create_service(**kwargs) mock_keystone_client.services.create.assert_called_with(**kwargs) self.assertTrue(mock_norm.called) @patch.object(os_client_config.cloud_config.CloudConfig, 'get_api_version') def test_update_service_v2(self, mock_api_version): mock_api_version.return_value = '2.0' # NOTE(SamYaple): Update service only works with v3 api self.assertRaises(OpenStackCloudUnavailableFeature, self.client.update_service, 'service_id', name='new name') @patch.object(_utils, 'normalize_keystone_services') @patch.object(OperatorCloud, 'keystone_client') @patch.object(os_client_config.cloud_config.CloudConfig, 'get_api_version') def test_update_service_v3(self, mock_api_version, mock_keystone_client, mock_norm): mock_api_version.return_value = '3' kwargs = { 'name': 'updated_name', 'type': 'updated_type', 'service_type': 'updated_type', 'description': 'updated_name', 'enabled': False } service_obj = FakeService(id='id1', **kwargs) mock_keystone_client.services.update.return_value = service_obj self.client.update_service('id1', **kwargs) del kwargs['service_type'] mock_keystone_client.services.update.assert_called_once_with( service='id1', **kwargs) mock_norm.assert_called_once_with([meta.obj_to_dict(service_obj)]) @patch.object(OperatorCloud, 'keystone_client') def test_list_services(self, mock_keystone_client): mock_keystone_client.services.list.return_value = \ self.mock_ks_services services = self.client.list_services() mock_keystone_client.services.list.assert_called_with() self.assertItemsEqual(self.mock_services, services) @patch.object(OperatorCloud, 'keystone_client') def test_get_service(self, mock_keystone_client): mock_keystone_client.services.list.return_value = \ self.mock_ks_services # Search by id service = self.client.get_service(name_or_id='id4') # test we are getting exactly 1 element self.assertEqual(service, self.mock_services[3]) # Search by name service = self.client.get_service(name_or_id='service2') # test we are getting exactly 1 element self.assertEqual(service, self.mock_services[1]) # Not found service = self.client.get_service(name_or_id='blah!') self.assertIs(None, service) # Multiple matches # test we are getting an Exception self.assertRaises(OpenStackCloudException, self.client.get_service, name_or_id=None, filters={'type': 'type2'}) @patch.object(OperatorCloud, 'keystone_client') def test_search_services(self, mock_keystone_client): mock_keystone_client.services.list.return_value = \ self.mock_ks_services # Search by id services = self.client.search_services(name_or_id='id4') # test we are getting exactly 1 element self.assertEqual(1, len(services)) self.assertEqual(services, [self.mock_services[3]]) # Search by name services = self.client.search_services(name_or_id='service2') # test we are getting exactly 1 element self.assertEqual(1, len(services)) self.assertEqual(services, [self.mock_services[1]]) # Not found services = self.client.search_services(name_or_id='blah!') self.assertEqual(0, len(services)) # Multiple matches services = self.client.search_services(filters={'type': 'type2'}) # test we are getting exactly 2 elements self.assertEqual(2, len(services)) self.assertEqual(services, [self.mock_services[1], self.mock_services[2]]) @patch.object(OperatorCloud, 'keystone_client') def test_delete_service(self, mock_keystone_client): mock_keystone_client.services.list.return_value = \ self.mock_ks_services # Delete by name self.client.delete_service(name_or_id='service3') mock_keystone_client.services.delete.assert_called_with(id='id3') # Delete by id self.client.delete_service('id1') mock_keystone_client.services.delete.assert_called_with(id='id1')