Merge "Quota delete operation in cinder"
This commit is contained in:
commit
800ead31a9
@ -32,6 +32,7 @@ NON_QUOTA_KEYS = ['tenant_id', 'id']
|
|||||||
|
|
||||||
authorize_update = extensions.extension_authorizer('volume', 'quotas:update')
|
authorize_update = extensions.extension_authorizer('volume', 'quotas:update')
|
||||||
authorize_show = extensions.extension_authorizer('volume', 'quotas:show')
|
authorize_show = extensions.extension_authorizer('volume', 'quotas:show')
|
||||||
|
authorize_delete = extensions.extension_authorizer('volume', 'quotas:delete')
|
||||||
|
|
||||||
|
|
||||||
class QuotaTemplate(xmlutil.TemplateBuilder):
|
class QuotaTemplate(xmlutil.TemplateBuilder):
|
||||||
@ -134,6 +135,17 @@ class QuotaSetsController(wsgi.Controller):
|
|||||||
authorize_show(context)
|
authorize_show(context)
|
||||||
return self._format_quota_set(id, QUOTAS.get_defaults(context))
|
return self._format_quota_set(id, QUOTAS.get_defaults(context))
|
||||||
|
|
||||||
|
@wsgi.serializers(xml=QuotaTemplate)
|
||||||
|
def delete(self, req, id):
|
||||||
|
|
||||||
|
context = req.environ['cinder.context']
|
||||||
|
authorize_delete(context)
|
||||||
|
|
||||||
|
try:
|
||||||
|
db.quota_destroy_all_by_project(context, id)
|
||||||
|
except exception.AdminRequired:
|
||||||
|
raise webob.exc.HTTPForbidden()
|
||||||
|
|
||||||
|
|
||||||
class Quotas(extensions.ExtensionDescriptor):
|
class Quotas(extensions.ExtensionDescriptor):
|
||||||
"""Quota management support."""
|
"""Quota management support."""
|
||||||
|
@ -110,6 +110,25 @@ class QuotaSetsControllerTest(test.TestCase):
|
|||||||
self.assertRaises(webob.exc.HTTPBadRequest, self.controller.update,
|
self.assertRaises(webob.exc.HTTPBadRequest, self.controller.update,
|
||||||
self.req, 'foo', body)
|
self.req, 'foo', body)
|
||||||
|
|
||||||
|
def test_delete(self):
|
||||||
|
result_show = self.controller.show(self.req, 'foo')
|
||||||
|
self.assertDictMatch(result_show, make_body())
|
||||||
|
|
||||||
|
body = make_body(gigabytes=2000, snapshots=15,
|
||||||
|
volumes=5, tenant_id=None)
|
||||||
|
result_update = self.controller.update(self.req, 'foo', body)
|
||||||
|
self.assertDictMatch(result_update, body)
|
||||||
|
|
||||||
|
self.controller.delete(self.req, 'foo')
|
||||||
|
|
||||||
|
result_show_after = self.controller.show(self.req, 'foo')
|
||||||
|
self.assertDictMatch(result_show, result_show_after)
|
||||||
|
|
||||||
|
def test_delete_no_admin(self):
|
||||||
|
self.req.environ['cinder.context'].is_admin = False
|
||||||
|
self.assertRaises(webob.exc.HTTPForbidden, self.controller.delete,
|
||||||
|
self.req, 'test')
|
||||||
|
|
||||||
|
|
||||||
class QuotaSerializerTest(test.TestCase):
|
class QuotaSerializerTest(test.TestCase):
|
||||||
|
|
||||||
|
@ -56,6 +56,7 @@
|
|||||||
"volume_extension:hosts": [["rule:admin_api"]],
|
"volume_extension:hosts": [["rule:admin_api"]],
|
||||||
"volume_extension:quotas:show": [],
|
"volume_extension:quotas:show": [],
|
||||||
"volume_extension:quotas:update": [],
|
"volume_extension:quotas:update": [],
|
||||||
|
"volume_extension:quotas:delete": [],
|
||||||
"volume_extension:quota_classes": [],
|
"volume_extension:quota_classes": [],
|
||||||
"volume_extension:volume_manage": [["rule:admin_api"]],
|
"volume_extension:volume_manage": [["rule:admin_api"]],
|
||||||
"volume_extension:volume_unmanage": [["rule:admin_api"]],
|
"volume_extension:volume_unmanage": [["rule:admin_api"]],
|
||||||
|
Loading…
Reference in New Issue
Block a user