Merge "Add list resource provider usage"
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 0000000..d31a33c
--- /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 e6fbcb2..3214053 100644
--- a/tempest/lib/services/placement/resource_providers_client.py
+++ b/tempest/lib/services/placement/resource_providers_client.py
@@ -26,6 +26,7 @@
* resource providers
* resource provider inventories
* resource provider aggregates
+ * resource provider usages
"""
def list_resource_providers(self, **params):
@@ -69,6 +70,19 @@
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 485f584..2871395 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 @@
},
"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 @@
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)