diff --git a/releasenotes/notes/add-placement-usage-client-method-8b6015cbd8a5e0f6.yaml b/releasenotes/notes/add-placement-usage-client-method-8b6015cbd8a5e0f6.yaml new file mode 100644 index 0000000000..d31a33cf47 --- /dev/null +++ b/releasenotes/notes/add-placement-usage-client-method-8b6015cbd8a5e0f6.yaml @@ -0,0 +1,8 @@ +--- +features: + - | + Add ``placement`` API usage method for evaluating resource class + utilization of the resource provider. The following API call is available + for tempest from now in the resource_providers_client: + + * GET /resource_providers/{uuid}/usages diff --git a/tempest/lib/services/placement/resource_providers_client.py b/tempest/lib/services/placement/resource_providers_client.py index e6fbcb285e..3214053f6a 100644 --- a/tempest/lib/services/placement/resource_providers_client.py +++ b/tempest/lib/services/placement/resource_providers_client.py @@ -26,6 +26,7 @@ class ResourceProvidersClient(base_placement_client.BasePlacementClient): * resource providers * resource provider inventories * resource provider aggregates + * resource provider usages """ def list_resource_providers(self, **params): @@ -69,6 +70,19 @@ class ResourceProvidersClient(base_placement_client.BasePlacementClient): body = json.loads(body) return rest_client.ResponseBody(resp, body) + def list_resource_provider_usages(self, rp_uuid): + """List resource provider usages. + + For full list of available parameters, please refer to the official + API reference: + https://docs.openstack.org/api-ref/placement/#list-resource-provider-usages + """ + url = '/resource_providers/%s/usages' % rp_uuid + resp, body = self.get(url) + self.expected_success(200, resp.status) + body = json.loads(body) + return rest_client.ResponseBody(resp, body) + def list_resource_provider_aggregates(self, rp_uuid): """List resource provider aggregates. diff --git a/tempest/tests/lib/services/placement/test_resource_providers_client.py b/tempest/tests/lib/services/placement/test_resource_providers_client.py index 485f584dda..287139544c 100644 --- a/tempest/tests/lib/services/placement/test_resource_providers_client.py +++ b/tempest/tests/lib/services/placement/test_resource_providers_client.py @@ -85,6 +85,14 @@ class TestResourceProvidersClient(base.BaseServiceTest): }, "resource_provider_generation": 1 } + FAKE_RESOURCE_PROVIDER_USAGES = { + "usages": { + "VCPU": 2, + "MEMORY_MB": 1024, + "DISK_GB": 10 + }, + "resource_provider_generation": 3 + } def setUp(self): super(TestResourceProvidersClient, self).setUp() @@ -180,3 +188,19 @@ class TestResourceProvidersClient(base.BaseServiceTest): def test_list_resource_provider_aggregates_with_bytes_body(self): self._test_list_resource_provider_aggregates(bytes_body=True) + + def _test_list_resource_provider_usages(self, bytes_body=False): + self.check_service_client_function( + self.client.list_resource_provider_usages, + 'tempest.lib.common.rest_client.RestClient.get', + self.FAKE_RESOURCE_PROVIDER_USAGES, + to_utf=bytes_body, + status=200, + rp_uuid=self.FAKE_RESOURCE_PROVIDER_UUID + ) + + def test_show_resource_provider_usages_with_str_body(self): + self._test_list_resource_provider_inventories() + + def test_show_resource_provider_usages_with_with_bytes_body(self): + self._test_list_resource_provider_inventories(bytes_body=True)