summaryrefslogtreecommitdiffstats
path: root/nova
diff options
context:
space:
mode:
authorHe Jie Xu <xuhj@linux.vnet.ibm.com>2013-06-25 16:07:23 +0800
committerHe Jie Xu <xuhj@linux.vnet.ibm.com>2013-06-26 12:54:40 +0800
commit7696c3c11f0de855cbc53cc04ee7d2be07ae3b9c (patch)
treea76b6ebdeff79120fa77026d4e2e9303ac56cb17 /nova
parenta4f3d0b58356f734bca8629007c6662368f453bc (diff)
Port quota API into v3 part2
This patch contains the changes required to adapt the service extension and the corresponding unittest to the v3 framework Partially implements bp v3-api-extension-versioning Change-Id: If5438d5bef5da1832e81c0b80523f9f419d5e3d5
Diffstat (limited to 'nova')
-rw-r--r--nova/api/openstack/compute/plugins/v3/quota_sets.py23
-rw-r--r--nova/tests/api/openstack/compute/plugins/v3/test_quota_sets.py34
-rw-r--r--nova/tests/fake_policy.py3
3 files changed, 35 insertions, 25 deletions
diff --git a/nova/api/openstack/compute/plugins/v3/quota_sets.py b/nova/api/openstack/compute/plugins/v3/quota_sets.py
index a0740ebe5..67af5d127 100644
--- a/nova/api/openstack/compute/plugins/v3/quota_sets.py
+++ b/nova/api/openstack/compute/plugins/v3/quota_sets.py
@@ -28,14 +28,18 @@ from nova.openstack.common import strutils
from nova import quota
+ALIAS = "os-quota-sets"
QUOTAS = quota.QUOTAS
LOG = logging.getLogger(__name__)
NON_QUOTA_KEYS = ['tenant_id', 'id', 'force']
-authorize_update = extensions.extension_authorizer('compute', 'quotas:update')
-authorize_show = extensions.extension_authorizer('compute', 'quotas:show')
-authorize_delete = extensions.extension_authorizer('compute', 'quotas:delete')
+authorize_update = extensions.extension_authorizer('compute',
+ 'v3:%s:update' % ALIAS)
+authorize_show = extensions.extension_authorizer('compute',
+ 'v3:%s:show' % ALIAS)
+authorize_delete = extensions.extension_authorizer('compute',
+ 'v3:%s:delete' % ALIAS)
class QuotaTemplate(xmlutil.TemplateBuilder):
@@ -188,20 +192,23 @@ class QuotaSetsController(object):
raise webob.exc.HTTPNotFound()
-class Quotas(extensions.ExtensionDescriptor):
+class QuotaSets(extensions.V3APIExtensionBase):
"""Quotas management support."""
name = "Quotas"
- alias = "os-quota-sets"
- namespace = "http://docs.openstack.org/compute/ext/quotas-sets/api/v1.1"
- updated = "2011-08-08T00:00:00+00:00"
+ alias = ALIAS
+ namespace = "http://docs.openstack.org/compute/ext/os-quotas-sets/api/v3"
+ version = 1
def get_resources(self):
resources = []
- res = extensions.ResourceExtension('os-quota-sets',
+ res = extensions.ResourceExtension(ALIAS,
QuotaSetsController(self.ext_mgr),
member_actions={'defaults': 'GET'})
resources.append(res)
return resources
+
+ def get_controller_extensions(self):
+ return []
diff --git a/nova/tests/api/openstack/compute/plugins/v3/test_quota_sets.py b/nova/tests/api/openstack/compute/plugins/v3/test_quota_sets.py
index 979ab3363..6eea01cff 100644
--- a/nova/tests/api/openstack/compute/plugins/v3/test_quota_sets.py
+++ b/nova/tests/api/openstack/compute/plugins/v3/test_quota_sets.py
@@ -19,7 +19,7 @@
from lxml import etree
import webob
-from nova.api.openstack.compute.contrib import quotas
+from nova.api.openstack.compute.plugins.v3 import quota_sets as quotas
from nova.api.openstack import extensions
from nova.api.openstack import wsgi
from nova import context as context_maker
@@ -77,9 +77,9 @@ class QuotaSetsTest(test.TestCase):
self.assertEqual(qs['key_pairs'], 100)
def test_quotas_defaults(self):
- uri = '/v2/fake_tenant/os-quota-sets/fake_tenant/defaults'
+ uri = '/os-quota-sets/fake_tenant/defaults'
- req = fakes.HTTPRequest.blank(uri)
+ req = fakes.HTTPRequestV3.blank(uri)
res_dict = self.controller.defaults(req, 'fake_tenant')
expected = {'quota_set': {
@@ -100,14 +100,14 @@ class QuotaSetsTest(test.TestCase):
self.assertEqual(res_dict, expected)
def test_quotas_show_as_admin(self):
- req = fakes.HTTPRequest.blank('/v2/fake4/os-quota-sets/1234',
+ req = fakes.HTTPRequestV3.blank('/os-quota-sets/1234',
use_admin_context=True)
res_dict = self.controller.show(req, 1234)
self.assertEqual(res_dict, quota_set('1234'))
def test_quotas_show_as_unauthorized_user(self):
- req = fakes.HTTPRequest.blank('/v2/fake4/os-quota-sets/1234')
+ req = fakes.HTTPRequestV3.blank('/os-quota-sets/1234')
self.assertRaises(webob.exc.HTTPForbidden, self.controller.show,
req, 1234)
@@ -124,7 +124,7 @@ class QuotaSetsTest(test.TestCase):
'security_group_rules': 20,
'key_pairs': 100, 'fixed_ips': -1}}
- req = fakes.HTTPRequest.blank('/v2/fake4/os-quota-sets/update_me',
+ req = fakes.HTTPRequestV3.blank('/os-quota-sets/update_me',
use_admin_context=True)
res_dict = self.controller.update(req, 'update_me', body)
@@ -142,7 +142,7 @@ class QuotaSetsTest(test.TestCase):
'security_group_rules': 20,
'key_pairs': 100}}
- req = fakes.HTTPRequest.blank('/v2/fake4/os-quota-sets/update_me')
+ req = fakes.HTTPRequestV3.blank('/os-quota-sets/update_me')
self.assertRaises(webob.exc.HTTPForbidden, self.controller.update,
req, 'update_me', body)
@@ -154,7 +154,7 @@ class QuotaSetsTest(test.TestCase):
'metadata_items': -2, 'injected_files': -2,
'injected_file_content_bytes': -2}}
- req = fakes.HTTPRequest.blank('/v2/fake4/os-quota-sets/update_me',
+ req = fakes.HTTPRequestV3.blank('/os-quota-sets/update_me',
use_admin_context=True)
self.assertRaises(webob.exc.HTTPBadRequest, self.controller.update,
req, 'update_me', body)
@@ -167,7 +167,7 @@ class QuotaSetsTest(test.TestCase):
'metadata_items': -2, 'injected_files': -2,
'injected_file_content_bytes': -2}}
- req = fakes.HTTPRequest.blank('/v2/fake4/os-quota-sets/update_me',
+ req = fakes.HTTPRequestV3.blank('/os-quota-sets/update_me',
use_admin_context=True)
self.assertRaises(webob.exc.HTTPBadRequest, self.controller.update,
req, 'update_me', body)
@@ -194,7 +194,7 @@ class QuotaSetsTest(test.TestCase):
'security_groups': 10,
'security_group_rules': 20,
'key_pairs': 100}}
- req = fakes.HTTPRequest.blank('/v2/fake4/os-quota-sets/update_me',
+ req = fakes.HTTPRequestV3.blank('/os-quota-sets/update_me',
use_admin_context=True)
self.ext_mgr.is_loaded('os-extended-quotas').AndReturn(True)
self.mox.ReplayAll()
@@ -222,7 +222,7 @@ class QuotaSetsTest(test.TestCase):
'security_groups': 10,
'security_group_rules': 20,
'key_pairs': 100}}
- req = fakes.HTTPRequest.blank('/v2/fake4/os-quota-sets/update_me',
+ req = fakes.HTTPRequestV3.blank('/os-quota-sets/update_me',
use_admin_context=True)
self.ext_mgr.is_loaded('os-extended-quotas').AndReturn(True)
self.mox.ReplayAll()
@@ -240,7 +240,7 @@ class QuotaSetsTest(test.TestCase):
'security_groups': 10,
'security_group_rules': 20,
'key_pairs': 100}}
- req = fakes.HTTPRequest.blank('/v2/fake4/os-quota-sets/update_me',
+ req = fakes.HTTPRequestV3.blank('/os-quota-sets/update_me',
use_admin_context=True)
self.ext_mgr.is_loaded('os-extended-quotas').AndReturn(True)
self.mox.ReplayAll()
@@ -250,20 +250,20 @@ class QuotaSetsTest(test.TestCase):
def test_delete_quotas_when_extension_not_loaded(self):
self.ext_mgr.is_loaded('os-extended-quotas').AndReturn(False)
self.mox.ReplayAll()
- req = fakes.HTTPRequest.blank('/v2/fake4/os-quota-sets/1234')
+ req = fakes.HTTPRequestV3.blank('/os-quota-sets/1234')
self.assertRaises(webob.exc.HTTPNotFound, self.controller.delete,
req, 1234)
def test_quotas_delete_as_unauthorized_user(self):
self.ext_mgr.is_loaded('os-extended-quotas').AndReturn(True)
self.mox.ReplayAll()
- req = fakes.HTTPRequest.blank('/v2/fake4/os-quota-sets/1234')
+ req = fakes.HTTPRequestV3.blank('/os-quota-sets/1234')
self.assertRaises(webob.exc.HTTPForbidden, self.controller.delete,
req, 1234)
def test_quotas_delete_as_admin(self):
context = context_maker.get_admin_context()
- self.req = fakes.HTTPRequest.blank('/v2/fake4/os-quota-sets/1234')
+ self.req = fakes.HTTPRequestV3.blank('/os-quota-sets/1234')
self.req.environ['nova.context'] = context
self.ext_mgr.is_loaded('os-extended-quotas').AndReturn(True)
self.mox.StubOutWithMock(quota.QUOTAS,
@@ -371,7 +371,7 @@ class ExtendedQuotasTest(test.TestCase):
self.stubs.Set(quotas.QuotaSetsController, '_get_quotas',
fake_get_quotas)
- req = fakes.HTTPRequest.blank('/v2/fake4/os-quota-sets/update_me',
+ req = fakes.HTTPRequestV3.blank('/os-quota-sets/update_me',
use_admin_context=True)
self.ext_mgr.is_loaded('os-extended-quotas').AndReturn(True)
self.mox.ReplayAll()
@@ -382,7 +382,7 @@ class ExtendedQuotasTest(test.TestCase):
def test_quotas_force_update_exceed_in_used(self):
self.stubs.Set(quotas.QuotaSetsController, '_get_quotas',
fake_get_quotas)
- req = fakes.HTTPRequest.blank('/v2/fake4/os-quota-sets/update_me',
+ req = fakes.HTTPRequestV3.blank('/os-quota-sets/update_me',
use_admin_context=True)
expected = {'quota_set': {'ram': 25600, 'instances': 200, 'cores': 10}}
body = {'quota_set': {'ram': 25600,
diff --git a/nova/tests/fake_policy.py b/nova/tests/fake_policy.py
index d4264153c..63589848b 100644
--- a/nova/tests/fake_policy.py
+++ b/nova/tests/fake_policy.py
@@ -166,6 +166,9 @@ policy_data = """
"compute_extension:quotas:show": "",
"compute_extension:quotas:update": "",
"compute_extension:quotas:delete": "",
+ "compute_extension:v3:os-quota-sets:show": "",
+ "compute_extension:v3:os-quota-sets:update": "",
+ "compute_extension:v3:os-quota-sets:delete": "",
"compute_extension:quota_classes": "",
"compute_extension:rescue": "",
"compute_extension:v3:os-rescue": "",