summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAlex Meade <alex.meade@rackspace.com>2011-05-17 15:14:52 -0400
committerAlex Meade <alex.meade@rackspace.com>2011-05-17 15:14:52 -0400
commit7ab16489276daa2ec6f51fea6ec24cc0c46a8e14 (patch)
tree41aaad6b1fc0230515f13ef39d4679b2285efa3c
parent6fc708b463e47de560fe388ada0639eb2b2383d5 (diff)
downloadnova-7ab16489276daa2ec6f51fea6ec24cc0c46a8e14.tar.gz
nova-7ab16489276daa2ec6f51fea6ec24cc0c46a8e14.tar.xz
nova-7ab16489276daa2ec6f51fea6ec24cc0c46a8e14.zip
Changed builder to match specs and added test
-rw-r--r--nova/api/openstack/limits.py9
-rw-r--r--nova/api/openstack/views/limits.py24
-rw-r--r--nova/tests/api/openstack/test_limits.py10
3 files changed, 24 insertions, 19 deletions
diff --git a/nova/api/openstack/limits.py b/nova/api/openstack/limits.py
index cf96b1bce..e383b5efc 100644
--- a/nova/api/openstack/limits.py
+++ b/nova/api/openstack/limits.py
@@ -42,6 +42,9 @@ PER_MINUTE = 60
PER_HOUR = 60 * 60
PER_DAY = 60 * 60 * 24
+#TODO remove when mark catches up
+TEST_ABSOLUTE_LIMITS = {}
+
class LimitsController(common.OpenstackController):
"""
@@ -53,7 +56,8 @@ class LimitsController(common.OpenstackController):
"attributes": {
"limit": ["verb", "URI", "uri", "regex", "value", "unit",
"resetTime", "next-available", "remaining", "name"],
- "absolute_limit": ["limit", "value"],
+ "absolute_limit": ["maxTotalRAMSize", "maxTotalInstances",
+ "maxTotalCores"],
},
"plurals": {
"rate": "limit",
@@ -69,7 +73,8 @@ class LimitsController(common.OpenstackController):
# TODO(alex.meade) make this work
#project_quota = quota.get_project_quota(...)
#abs_limits = project_quota.limits
- abs_limits = {}
+ #TODO remove when mark catches up
+ abs_limits = TEST_ABSOLUTE_LIMITS
rate_limits = req.environ.get("nova.limits", [])
builder = self._get_view_builder(req)
diff --git a/nova/api/openstack/views/limits.py b/nova/api/openstack/views/limits.py
index 7fae2d166..ef1243f3d 100644
--- a/nova/api/openstack/views/limits.py
+++ b/nova/api/openstack/views/limits.py
@@ -112,25 +112,19 @@ class ViewBuilderV11(ViewBuilder):
For example: {"ram": 512, "gigabytes": 1024}.
"""
- limits = []
+ limits = {}
#loops through absolute limits and their values
for absolute_limit_key, absolute_limit_value \
in absolute_limits.items():
- _abs_limit = None
- # check for existing key
- for limit in limits:
- if limit["limit"] == absolute_limit_key:
- _abs_limit = limit
- break
-
- # ensure we have a key if we didn't find one
- if not _abs_limit:
- _abs_limit = {
- "limit": absolute_limit_key,
- "value": absolute_limit_value,
- }
+ _abs_limit_map = {
+ "ram": "maxTotalRAMSize",
+ "instances": "maxTotalInstances",
+ "cores": "maxTotalCores",
+ }
- limits.append(_abs_limit)
+ if not absolute_limit_value is None:
+ limits[_abs_limit_map[absolute_limit_key]] \
+ = absolute_limit_value
return limits
diff --git a/nova/tests/api/openstack/test_limits.py b/nova/tests/api/openstack/test_limits.py
index 2689c7a24..c8a7dd7f2 100644
--- a/nova/tests/api/openstack/test_limits.py
+++ b/nova/tests/api/openstack/test_limits.py
@@ -199,6 +199,9 @@ class LimitsControllerV11Test(BaseLimitTestSuite):
5, 60).display(),
]
request.environ["nova.limits"] = _limits
+ #set absolute limits here
+ limits.TEST_ABSOLUTE_LIMITS = {"ram": 512, "instances": 5}
+
return request
def test_empty_index_json(self):
@@ -208,7 +211,7 @@ class LimitsControllerV11Test(BaseLimitTestSuite):
expected = {
"limits": {
"rate": [],
- "absolute": [],
+ "absolute": {},
},
}
body = json.loads(response.body)
@@ -257,7 +260,10 @@ class LimitsControllerV11Test(BaseLimitTestSuite):
},
],
- "absolute": [],
+ "absolute": {
+ "maxTotalRAMSize": 512,
+ "maxTotalInstances": 5,
+ },
},
}
body = json.loads(response.body)