diff options
| author | Mark Washenberger <mark.washenberger@rackspace.com> | 2011-05-25 20:35:16 +0000 |
|---|---|---|
| committer | Tarmac <> | 2011-05-25 20:35:16 +0000 |
| commit | ec0e674ce1a8539143e9b99deb8cc62b9d42d6b2 (patch) | |
| tree | eb2d9a64fd7b1e3145976fc5e3c58cefe7bdcb96 /nova/api | |
| parent | 9ec9a8b39db2d65b7ce8d74f994cb32c49a56df8 (diff) | |
| parent | aebbb90f84e8793040c7dd75eb67ae4914186301 (diff) | |
| download | nova-ec0e674ce1a8539143e9b99deb8cc62b9d42d6b2.tar.gz nova-ec0e674ce1a8539143e9b99deb8cc62b9d42d6b2.tar.xz nova-ec0e674ce1a8539143e9b99deb8cc62b9d42d6b2.zip | |
Several changes designed to bring the openstack api 1.1 closer to spec
- add ram limits to the nova compute quotas
- enable injected file limits and injected file size limits to be overridden in the quota database table
- expose quota limits as absolute limits in the openstack api 1.1 limits resource
- add support for controlling 'unlimited' quotas to nova-manage
Diffstat (limited to 'nova/api')
| -rw-r--r-- | nova/api/openstack/limits.py | 4 | ||||
| -rw-r--r-- | nova/api/openstack/views/limits.py | 34 |
2 files changed, 31 insertions, 7 deletions
diff --git a/nova/api/openstack/limits.py b/nova/api/openstack/limits.py index 47bc238f1..bd0250a7f 100644 --- a/nova/api/openstack/limits.py +++ b/nova/api/openstack/limits.py @@ -30,6 +30,7 @@ from collections import defaultdict from webob.dec import wsgify +from nova import quota from nova import wsgi from nova.api.openstack import common from nova.api.openstack import faults @@ -64,7 +65,8 @@ class LimitsController(common.OpenstackController): """ Return all global and rate limit information. """ - abs_limits = {} + context = req.environ['nova.context'] + abs_limits = quota.get_project_quotas(context, context.project_id) 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 22d1c260d..33be12c0c 100644 --- a/nova/api/openstack/views/limits.py +++ b/nova/api/openstack/views/limits.py @@ -45,6 +45,34 @@ class ViewBuilder(object): return output + def _build_absolute_limits(self, absolute_limits): + """Builder for absolute limits + + absolute_limits should be given as a dict of limits. + For example: {"ram": 512, "gigabytes": 1024}. + + """ + limit_names = { + "ram": ["maxTotalRAMSize"], + "instances": ["maxTotalInstances"], + "cores": ["maxTotalCores"], + "metadata_items": ["maxServerMeta", "maxImageMeta"], + "injected_files": ["maxPersonality"], + "injected_file_content_bytes": ["maxPersonalitySize"], + } + limits = {} + for name, value in absolute_limits.iteritems(): + if name in limit_names and value is not None: + for name in limit_names[name]: + limits[name] = value + return limits + + def _build_rate_limits(self, rate_limits): + raise NotImplementedError() + + def _build_rate_limit(self, rate_limit): + raise NotImplementedError() + class ViewBuilderV10(ViewBuilder): """Openstack API v1.0 limits view builder.""" @@ -63,9 +91,6 @@ class ViewBuilderV10(ViewBuilder): "resetTime": rate_limit["resetTime"], } - def _build_absolute_limits(self, absolute_limit): - return {} - class ViewBuilderV11(ViewBuilder): """Openstack API v1.1 limits view builder.""" @@ -104,6 +129,3 @@ class ViewBuilderV11(ViewBuilder): "unit": rate_limit["unit"], "next-available": rate_limit["resetTime"], } - - def _build_absolute_limits(self, absolute_limit): - return {} |
