summaryrefslogtreecommitdiffstats
path: root/nova/tests/integrated
diff options
context:
space:
mode:
authorMahesh K P <maheshp@thoughtworks.com>2013-04-17 11:41:41 +0530
committerNavneet Kumar <navneetk@thoughtworks.com>2013-05-17 10:42:07 +0530
commit9f9c40d56954baf183968b6ea9db9aec62f4c064 (patch)
tree4cc12f795f7fa8cd6e8329d6915acaf543a4a164 /nova/tests/integrated
parent1d5d58c96974a2e5742887aafb48675084fbfd48 (diff)
downloadnova-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')
-rw-r--r--nova/tests/integrated/api_samples/all_extensions/extensions-get-resp.json.tpl8
-rw-r--r--nova/tests/integrated/api_samples/all_extensions/extensions-get-resp.xml.tpl3
-rw-r--r--nova/tests/integrated/api_samples/os-used-limits-for-admin/usedlimitsforadmin-get-resp.json.tpl90
-rw-r--r--nova/tests/integrated/api_samples/os-used-limits-for-admin/usedlimitsforadmin-get-resp.xml.tpl37
-rw-r--r--nova/tests/integrated/test_api_samples.py19
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")