diff --git a/tempest/api/orchestration/base.py b/tempest/api/orchestration/base.py index f2c59f3761..5b6b0faa88 100644 --- a/tempest/api/orchestration/base.py +++ b/tempest/api/orchestration/base.py @@ -163,7 +163,7 @@ class BaseOrchestrationTest(tempest.test.BaseTestCase): def list_resources(self, stack_identifier): """Get a dict mapping of resource names to types.""" - resources = self.client.list_resources(stack_identifier) + resources = self.client.list_resources(stack_identifier)['resources'] self.assertIsInstance(resources, list) for res in resources: self.assert_fields_in_dict(res, 'logical_resource_id', @@ -174,5 +174,5 @@ class BaseOrchestrationTest(tempest.test.BaseTestCase): for r in resources) def get_stack_output(self, stack_identifier, output_key): - body = self.client.show_stack(stack_identifier) + body = self.client.show_stack(stack_identifier)['stack'] return self.stack_output(body, output_key) diff --git a/tempest/api/orchestration/stacks/test_neutron_resources.py b/tempest/api/orchestration/stacks/test_neutron_resources.py index b27d6c9e50..cb6d1db51c 100644 --- a/tempest/api/orchestration/stacks/test_neutron_resources.py +++ b/tempest/api/orchestration/stacks/test_neutron_resources.py @@ -75,7 +75,8 @@ class NeutronResourcesTestJSON(base.BaseOrchestrationTest): cls.stack_id = cls.stack_identifier.split('/')[1] try: cls.client.wait_for_stack_status(cls.stack_id, 'CREATE_COMPLETE') - resources = cls.client.list_resources(cls.stack_identifier) + resources = (cls.client.list_resources(cls.stack_identifier) + ['resources']) except exceptions.TimeoutException as e: if CONF.compute_feature_enabled.console_output: # attempt to log the server console to help with debugging diff --git a/tempest/api/orchestration/stacks/test_non_empty_stack.py b/tempest/api/orchestration/stacks/test_non_empty_stack.py index 494b6fd528..e37587c90a 100644 --- a/tempest/api/orchestration/stacks/test_non_empty_stack.py +++ b/tempest/api/orchestration/stacks/test_non_empty_stack.py @@ -47,7 +47,7 @@ class StacksTestJSON(base.BaseOrchestrationTest): cls.client.wait_for_stack_status(cls.stack_id, 'CREATE_COMPLETE') def _list_stacks(self, expected_num=None, **filter_kwargs): - stacks = self.client.list_stacks(params=filter_kwargs) + stacks = self.client.list_stacks(params=filter_kwargs)['stacks'] self.assertIsInstance(stacks, list) if expected_num is not None: self.assertEqual(expected_num, len(stacks)) @@ -63,7 +63,7 @@ class StacksTestJSON(base.BaseOrchestrationTest): @test.idempotent_id('992f96e3-41ee-4ff6-91c7-bcfb670c0919') def test_stack_show(self): """Getting details about created stack should be possible.""" - stack = self.client.show_stack(self.stack_name) + stack = self.client.show_stack(self.stack_name)['stack'] self.assertIsInstance(stack, dict) self.assert_fields_in_dict(stack, 'stack_name', 'id', 'links', 'parameters', 'outputs', 'disable_rollback', @@ -100,7 +100,7 @@ class StacksTestJSON(base.BaseOrchestrationTest): def test_show_resource(self): """Getting details about created resource should be possible.""" resource = self.client.show_resource(self.stack_identifier, - self.resource_name) + self.resource_name)['resource'] self.assertIsInstance(resource, dict) self.assert_fields_in_dict(resource, 'resource_name', 'description', 'links', 'logical_resource_id', @@ -115,14 +115,14 @@ class StacksTestJSON(base.BaseOrchestrationTest): """Getting metadata for created resources should be possible.""" metadata = self.client.show_resource_metadata( self.stack_identifier, - self.resource_name) + self.resource_name)['metadata'] self.assertIsInstance(metadata, dict) self.assertEqual(['Tom', 'Stinky'], metadata.get('kittens', None)) @test.idempotent_id('46567533-0a7f-483b-8942-fa19e0f17839') def test_list_events(self): """Getting list of created events for the stack should be possible.""" - events = self.client.list_events(self.stack_identifier) + events = self.client.list_events(self.stack_identifier)['events'] self.assertIsInstance(events, list) for event in events: @@ -138,12 +138,12 @@ class StacksTestJSON(base.BaseOrchestrationTest): def test_show_event(self): """Getting details about an event should be possible.""" events = self.client.list_resource_events(self.stack_identifier, - self.resource_name) + self.resource_name)['events'] self.assertNotEqual([], events) events.sort(key=lambda event: event['event_time']) event_id = events[0]['id'] event = self.client.show_event(self.stack_identifier, - self.resource_name, event_id) + self.resource_name, event_id)['event'] self.assertIsInstance(event, dict) self.assert_fields_in_dict(event, 'resource_name', 'event_time', 'links', 'logical_resource_id', diff --git a/tempest/api/orchestration/stacks/test_nova_keypair_resources.py b/tempest/api/orchestration/stacks/test_nova_keypair_resources.py index 6a04dbdf5a..b4d7fa06ed 100644 --- a/tempest/api/orchestration/stacks/test_nova_keypair_resources.py +++ b/tempest/api/orchestration/stacks/test_nova_keypair_resources.py @@ -43,7 +43,8 @@ class NovaKeyPairResourcesYAMLTest(base.BaseOrchestrationTest): cls.stack_id = cls.stack_identifier.split('/')[1] cls.client.wait_for_stack_status(cls.stack_id, 'CREATE_COMPLETE') - resources = cls.client.list_resources(cls.stack_identifier) + resources = (cls.client.list_resources(cls.stack_identifier) + ['resources']) cls.test_resources = {} for resource in resources: cls.test_resources[resource['logical_resource_id']] = resource @@ -70,7 +71,7 @@ class NovaKeyPairResourcesYAMLTest(base.BaseOrchestrationTest): @test.idempotent_id('8d77dec7-91fd-45a6-943d-5abd45e338a4') def test_stack_keypairs_output(self): - stack = self.client.show_stack(self.stack_name) + stack = self.client.show_stack(self.stack_name)['stack'] self.assertIsInstance(stack, dict) output_map = {} diff --git a/tempest/api/orchestration/stacks/test_resource_types.py b/tempest/api/orchestration/stacks/test_resource_types.py index 8f15f9c4a9..8cf40de5a4 100644 --- a/tempest/api/orchestration/stacks/test_resource_types.py +++ b/tempest/api/orchestration/stacks/test_resource_types.py @@ -20,7 +20,7 @@ class ResourceTypesTest(base.BaseOrchestrationTest): @test.idempotent_id('7123d082-3577-4a30-8f00-f805327c4ffd') def test_resource_type_list(self): """Verify it is possible to list resource types.""" - resource_types = self.client.list_resource_types() + resource_types = self.client.list_resource_types()['resource_types'] self.assertIsInstance(resource_types, list) self.assertIn('OS::Nova::Server', resource_types) @@ -28,7 +28,7 @@ class ResourceTypesTest(base.BaseOrchestrationTest): @test.idempotent_id('0e85a483-828b-4a28-a0e3-f0a21809192b') def test_resource_type_show(self): """Verify it is possible to get schema about resource types.""" - resource_types = self.client.list_resource_types() + resource_types = self.client.list_resource_types()['resource_types'] self.assertNotEmpty(resource_types) for resource_type in resource_types: diff --git a/tempest/api/orchestration/stacks/test_stacks.py b/tempest/api/orchestration/stacks/test_stacks.py index abec906d50..f766b0048c 100644 --- a/tempest/api/orchestration/stacks/test_stacks.py +++ b/tempest/api/orchestration/stacks/test_stacks.py @@ -30,7 +30,7 @@ class StacksTestJSON(base.BaseOrchestrationTest): @test.attr(type='smoke') @test.idempotent_id('d35d628c-07f6-4674-85a1-74db9919e986') def test_stack_list_responds(self): - stacks = self.client.list_stacks() + stacks = self.client.list_stacks()['stacks'] self.assertIsInstance(stacks, list) @test.attr(type='smoke') @@ -47,20 +47,20 @@ class StacksTestJSON(base.BaseOrchestrationTest): self.client.wait_for_stack_status(stack_identifier, 'CREATE_COMPLETE') # check for stack in list - stacks = self.client.list_stacks() + stacks = self.client.list_stacks()['stacks'] list_ids = list([stack['id'] for stack in stacks]) self.assertIn(stack_id, list_ids) # fetch the stack - stack = self.client.show_stack(stack_identifier) + stack = self.client.show_stack(stack_identifier)['stack'] self.assertEqual('CREATE_COMPLETE', stack['stack_status']) # fetch the stack by name - stack = self.client.show_stack(stack_name) + stack = self.client.show_stack(stack_name)['stack'] self.assertEqual('CREATE_COMPLETE', stack['stack_status']) # fetch the stack by id - stack = self.client.show_stack(stack_id) + stack = self.client.show_stack(stack_id)['stack'] self.assertEqual('CREATE_COMPLETE', stack['stack_status']) # delete the stack diff --git a/tempest/api/orchestration/stacks/test_swift_resources.py b/tempest/api/orchestration/stacks/test_swift_resources.py index 30166df962..c0f1c4bdc5 100644 --- a/tempest/api/orchestration/stacks/test_swift_resources.py +++ b/tempest/api/orchestration/stacks/test_swift_resources.py @@ -55,7 +55,8 @@ class SwiftResourcesTestJSON(base.BaseOrchestrationTest): cls.stack_id = cls.stack_identifier.split('/')[1] cls.client.wait_for_stack_status(cls.stack_id, 'CREATE_COMPLETE') cls.test_resources = {} - resources = cls.client.list_resources(cls.stack_identifier) + resources = (cls.client.list_resources(cls.stack_identifier) + ['resources']) for resource in resources: cls.test_resources[resource['logical_resource_id']] = resource diff --git a/tempest/cmd/cleanup_service.py b/tempest/cmd/cleanup_service.py index 35508429b7..26e4569c85 100644 --- a/tempest/cmd/cleanup_service.py +++ b/tempest/cmd/cleanup_service.py @@ -220,7 +220,7 @@ class StackService(BaseService): def list(self): client = self.client - stacks = client.list_stacks() + stacks = client.list_stacks()['stacks'] LOG.debug("List count, %s Stacks" % len(stacks)) return stacks diff --git a/tempest/services/orchestration/json/orchestration_client.py b/tempest/services/orchestration/json/orchestration_client.py index 84a9ed9308..22e53f595e 100644 --- a/tempest/services/orchestration/json/orchestration_client.py +++ b/tempest/services/orchestration/json/orchestration_client.py @@ -36,7 +36,7 @@ class OrchestrationClient(service_client.ServiceClient): resp, body = self.get(uri) self.expected_success(200, resp.status) body = json.loads(body) - return service_client.ResponseBodyList(resp, body['stacks']) + return service_client.ResponseBody(resp, body) def create_stack(self, name, disable_rollback=True, parameters=None, timeout_mins=60, template=None, template_url=None, @@ -111,7 +111,7 @@ class OrchestrationClient(service_client.ServiceClient): resp, body = self.get(url) self.expected_success(200, resp.status) body = json.loads(body) - return service_client.ResponseBody(resp, body['stack']) + return service_client.ResponseBody(resp, body) def suspend_stack(self, stack_identifier): """Suspend a stack.""" @@ -135,7 +135,7 @@ class OrchestrationClient(service_client.ServiceClient): resp, body = self.get(url) self.expected_success(200, resp.status) body = json.loads(body) - return service_client.ResponseBodyList(resp, body['resources']) + return service_client.ResponseBody(resp, body) def show_resource(self, stack_identifier, resource_name): """Returns the details of a single resource.""" @@ -143,7 +143,7 @@ class OrchestrationClient(service_client.ServiceClient): resp, body = self.get(url) self.expected_success(200, resp.status) body = json.loads(body) - return service_client.ResponseBody(resp, body['resource']) + return service_client.ResponseBody(resp, body) def delete_stack(self, stack_identifier): """Deletes the specified Stack.""" @@ -160,7 +160,7 @@ class OrchestrationClient(service_client.ServiceClient): while True: try: body = self.show_resource( - stack_identifier, resource_name) + stack_identifier, resource_name)['resource'] except lib_exc.NotFound: # ignore this, as the resource may not have # been created yet @@ -195,7 +195,7 @@ class OrchestrationClient(service_client.ServiceClient): while True: try: - body = self.show_stack(stack_identifier) + body = self.show_stack(stack_identifier)['stack'] except lib_exc.NotFound: if status == 'DELETE_COMPLETE': return @@ -224,7 +224,7 @@ class OrchestrationClient(service_client.ServiceClient): resp, body = self.get(url) self.expected_success(200, resp.status) body = json.loads(body) - return service_client.ResponseBody(resp, body['metadata']) + return service_client.ResponseBody(resp, body) def list_events(self, stack_identifier): """Returns list of all events for a stack.""" @@ -232,7 +232,7 @@ class OrchestrationClient(service_client.ServiceClient): resp, body = self.get(url) self.expected_success(200, resp.status) body = json.loads(body) - return service_client.ResponseBodyList(resp, body['events']) + return service_client.ResponseBody(resp, body) def list_resource_events(self, stack_identifier, resource_name): """Returns list of all events for a resource from stack.""" @@ -241,7 +241,7 @@ class OrchestrationClient(service_client.ServiceClient): resp, body = self.get(url) self.expected_success(200, resp.status) body = json.loads(body) - return service_client.ResponseBodyList(resp, body['events']) + return service_client.ResponseBody(resp, body) def show_event(self, stack_identifier, resource_name, event_id): """Returns the details of a single stack's event.""" @@ -250,7 +250,7 @@ class OrchestrationClient(service_client.ServiceClient): resp, body = self.get(url) self.expected_success(200, resp.status) body = json.loads(body) - return service_client.ResponseBody(resp, body['event']) + return service_client.ResponseBody(resp, body) def show_template(self, stack_identifier): """Returns the template for the stack.""" @@ -293,7 +293,7 @@ class OrchestrationClient(service_client.ServiceClient): resp, body = self.get('resource_types') self.expected_success(200, resp.status) body = json.loads(body) - return service_client.ResponseBodyList(resp, body['resource_types']) + return service_client.ResponseBody(resp, body) def show_resource_type(self, resource_type_name): """Return the schema of a resource type."""