diff options
author | Mahesh K P <maheshp@thoughtworks.com> | 2013-04-17 11:41:41 +0530 |
---|---|---|
committer | Navneet Kumar <navneetk@thoughtworks.com> | 2013-05-17 10:42:07 +0530 |
commit | 9f9c40d56954baf183968b6ea9db9aec62f4c064 (patch) | |
tree | 4cc12f795f7fa8cd6e8329d6915acaf543a4a164 /nova/tests/integrated | |
parent | 1d5d58c96974a2e5742887aafb48675084fbfd48 (diff) | |
download | nova-9f9c40d56954baf183968b6ea9db9aec62f4c064.tar.gz nova-9f9c40d56954baf183968b6ea9db9aec62f4c064.tar.xz nova-9f9c40d56954baf183968b6ea9db9aec62f4c064.zip |
Return Customer's Quota Usage through Admin API
DocImpact: This patch adds an extension 'UsedLimitsForAdmin'. If this
extention is enabled then it extends the used limits API behavior, such
that admin can fetch the details of any customer's quota usage by passing
the customer's tenant id in query parameters.The API signature for the
same is 'v2/{tenant_id}/limits?tenant_id={customer_tenant_id}'
Change-Id: I89b8b5083e46b899458407426c89a3865e960faa
Implements: blueprint customer-quota-through-admin-api
Diffstat (limited to 'nova/tests/integrated')
5 files changed, 157 insertions, 0 deletions
diff --git a/nova/tests/integrated/api_samples/all_extensions/extensions-get-resp.json.tpl b/nova/tests/integrated/api_samples/all_extensions/extensions-get-resp.json.tpl index d559b4890..33b6a74b9 100644 --- a/nova/tests/integrated/api_samples/all_extensions/extensions-get-resp.json.tpl +++ b/nova/tests/integrated/api_samples/all_extensions/extensions-get-resp.json.tpl @@ -489,6 +489,14 @@ "updated": "%(timestamp)s" }, { + "alias": "os-used-limits-for-admin", + "description": "%(text)s", + "links": [], + "name": "UsedLimitsForAdmin", + "namespace": "http://docs.openstack.org/compute/ext/used_limits_for_admin/api/v1.1", + "updated": "%(timestamp)s" + }, + { "alias": "os-user-data", "description": "%(text)s", "links": [], diff --git a/nova/tests/integrated/api_samples/all_extensions/extensions-get-resp.xml.tpl b/nova/tests/integrated/api_samples/all_extensions/extensions-get-resp.xml.tpl index cc9ae4c02..9ca1739e5 100644 --- a/nova/tests/integrated/api_samples/all_extensions/extensions-get-resp.xml.tpl +++ b/nova/tests/integrated/api_samples/all_extensions/extensions-get-resp.xml.tpl @@ -183,6 +183,9 @@ <extension alias="os-used-limits" updated="%(timestamp)s" namespace="http://docs.openstack.org/compute/ext/used_limits/api/v1.1" name="UsedLimits"> <description>%(text)s</description> </extension> + <extension alias="os-used-limits-for-admin" updated="%(timestamp)s" namespace="http://docs.openstack.org/compute/ext/used_limits_for_admin/api/v1.1" name="UsedLimitsForAdmin"> + <description>%(text)s</description> + </extension> <extension alias="os-user-data" updated="%(timestamp)s" namespace="http://docs.openstack.org/compute/ext/userdata/api/v1.1" name="UserData"> <description>%(text)s</description> </extension> diff --git a/nova/tests/integrated/api_samples/os-used-limits-for-admin/usedlimitsforadmin-get-resp.json.tpl b/nova/tests/integrated/api_samples/os-used-limits-for-admin/usedlimitsforadmin-get-resp.json.tpl new file mode 100644 index 000000000..d83dd87c3 --- /dev/null +++ b/nova/tests/integrated/api_samples/os-used-limits-for-admin/usedlimitsforadmin-get-resp.json.tpl @@ -0,0 +1,90 @@ +{ + "limits": { + "absolute": { + "maxImageMeta": 128, + "maxPersonality": 5, + "maxPersonalitySize": 10240, + "maxSecurityGroupRules": 20, + "maxSecurityGroups": 10, + "maxServerMeta": 128, + "maxTotalCores": 20, + "maxTotalFloatingIps": 10, + "maxTotalInstances": 10, + "maxTotalKeypairs": 100, + "maxTotalRAMSize": 51200, + "totalCoresUsed": 0, + "totalInstancesUsed": 0, + "totalRAMUsed": 0, + "totalSecurityGroupsUsed": 0, + "totalFloatingIpsUsed": 0 + }, + "rate": [ + { + "limit": [ + { + "next-available": "%(timestamp)s", + "remaining": 10, + "unit": "MINUTE", + "value": 10, + "verb": "POST" + }, + { + "next-available": "%(timestamp)s", + "remaining": 10, + "unit": "MINUTE", + "value": 10, + "verb": "PUT" + }, + { + "next-available": "%(timestamp)s", + "remaining": 100, + "unit": "MINUTE", + "value": 100, + "verb": "DELETE" + } + ], + "regex": ".*", + "uri": "*" + }, + { + "limit": [ + { + "next-available": "%(timestamp)s", + "remaining": 50, + "unit": "DAY", + "value": 50, + "verb": "POST" + } + ], + "regex": "^/servers", + "uri": "*/servers" + }, + { + "limit": [ + { + "next-available": "%(timestamp)s", + "remaining": 3, + "unit": "MINUTE", + "value": 3, + "verb": "GET" + } + ], + "regex": ".*changes-since.*", + "uri": "*changes-since*" + }, + { + "limit": [ + { + "next-available": "%(timestamp)s", + "remaining": 12, + "unit": "HOUR", + "value": 12, + "verb": "GET" + } + ], + "regex": "^/os-fping", + "uri": "*/os-fping" + } + ] + } +} diff --git a/nova/tests/integrated/api_samples/os-used-limits-for-admin/usedlimitsforadmin-get-resp.xml.tpl b/nova/tests/integrated/api_samples/os-used-limits-for-admin/usedlimitsforadmin-get-resp.xml.tpl new file mode 100644 index 000000000..c1b907670 --- /dev/null +++ b/nova/tests/integrated/api_samples/os-used-limits-for-admin/usedlimitsforadmin-get-resp.xml.tpl @@ -0,0 +1,37 @@ +<?xml version='1.0' encoding='UTF-8'?> +<limits xmlns:os-used-limits="http://docs.openstack.org/compute/ext/used_limits/api/v1.1" xmlns:atom="http://www.w3.org/2005/Atom" xmlns="http://docs.openstack.org/common/api/v1.0"> + <rates> + <rate regex=".*" uri="*"> + <limit next-available="%(timestamp)s" unit="MINUTE" verb="POST" remaining="10" value="10"/> + <limit next-available="%(timestamp)s" unit="MINUTE" verb="PUT" remaining="10" value="10"/> + <limit next-available="%(timestamp)s" unit="MINUTE" verb="DELETE" remaining="100" value="100"/> + </rate> + <rate regex="^/servers" uri="*/servers"> + <limit next-available="%(timestamp)s" unit="DAY" verb="POST" remaining="50" value="50"/> + </rate> + <rate regex=".*changes-since.*" uri="*changes-since*"> + <limit next-available="%(timestamp)s" unit="MINUTE" verb="GET" remaining="3" value="3"/> + </rate> + <rate regex="^/os-fping" uri="*/os-fping"> + <limit next-available="%(timestamp)s" unit="HOUR" verb="GET" remaining="12" value="12"/> + </rate> + </rates> + <absolute> + <limit name="maxServerMeta" value="128"/> + <limit name="maxTotalInstances" value="10"/> + <limit name="maxPersonality" value="5"/> + <limit name="maxImageMeta" value="128"/> + <limit name="maxPersonalitySize" value="10240"/> + <limit name="maxSecurityGroupRules" value="20"/> + <limit name="maxTotalKeypairs" value="100"/> + <limit name="totalCoresUsed" value="0"/> + <limit name="totalRAMUsed" value="0"/> + <limit name="totalInstancesUsed" value="0"/> + <limit name="maxSecurityGroups" value="10"/> + <limit name="maxTotalCores" value="20"/> + <limit name="totalSecurityGroupsUsed" value="0"/> + <limit name="maxTotalFloatingIps" value="10"/> + <limit name="totalFloatingIpsUsed" value="0"/> + <limit name="maxTotalRAMSize" value="51200"/> + </absolute> +</limits> diff --git a/nova/tests/integrated/test_api_samples.py b/nova/tests/integrated/test_api_samples.py index e24f24189..3f47474df 100644 --- a/nova/tests/integrated/test_api_samples.py +++ b/nova/tests/integrated/test_api_samples.py @@ -1928,6 +1928,25 @@ class UsedLimitsSamplesXmlTest(UsedLimitsSamplesJsonTest): ctype = "xml" +class UsedLimitsForAdminSamplesJsonTest(ApiSampleTestBase): + extends_name = ("nova.api.openstack.compute.contrib.used_limits." + "Used_limits") + extension_name = ( + "nova.api.openstack.compute.contrib.used_limits_for_admin." + "Used_limits_for_admin") + + def test_get_used_limits_for_admin(self): + tenant_id = 'openstack' + response = self._do_get('limits?tenant_id=%s' % tenant_id) + subs = self._get_regexes() + return self._verify_response('usedlimitsforadmin-get-resp', subs, + response, 200) + + +class UsedLimitsForAdminSamplesXmlTest(UsedLimitsForAdminSamplesJsonTest): + ctype = "xml" + + class MultipleCreateJsonTest(ServersSampleBase): extension_name = ("nova.api.openstack.compute.contrib.multiple_create." "Multiple_create") |