RESOURCE_COLLECTION: {}
}
-for quota_resource in QUOTAS.resources.iterkeys():
- attr_dict = EXTENDED_ATTRIBUTES_2_0[RESOURCE_COLLECTION]
- attr_dict[quota_resource] = {'allow_post': False,
- 'allow_put': True,
- 'convert_to': int,
- 'is_visible': True}
-
class QuotaSetsController(wsgi.Controller):
self._resource_name = RESOURCE_NAME
self._plugin = plugin
self._driver = importutils.import_class(DB_QUOTA_DRIVER)
+ self._update_extended_attributes = True
+
+ def _update_attributes(self):
+ for quota_resource in QUOTAS.resources.iterkeys():
+ attr_dict = EXTENDED_ATTRIBUTES_2_0[RESOURCE_COLLECTION]
+ attr_dict[quota_resource] = {'allow_post': False,
+ 'allow_put': True,
+ 'convert_to': int,
+ 'is_visible': True}
+ self._update_extended_attributes = False
def _get_body(self, request):
body = self._deserialize(request.body,
request.best_match_content_type())
+ if self._update_extended_attributes is True:
+ self._update_attributes()
+
attr_info = EXTENDED_ATTRIBUTES_2_0[RESOURCE_COLLECTION]
req_body = base.Controller.prepare_request_body(
request.context, body, False, self._resource_name, attr_info)
quota = self.deserialize(res)
self.assertEqual(100, quota['quota']['network'])
+ def test_update_attributes(self):
+ tenant_id = 'tenant_id1'
+ env = {'quantum.context': context.Context('', tenant_id + '2',
+ is_admin=True)}
+ quotas = {'quota': {'extra1': 100}}
+ res = self.api.put(_get_path('quotas', id=tenant_id, fmt=self.fmt),
+ self.serialize(quotas), extra_environ=env)
+ self.assertEqual(200, res.status_int)
+ env2 = {'quantum.context': context.Context('', tenant_id)}
+ res = self.api.get(_get_path('quotas', id=tenant_id, fmt=self.fmt),
+ extra_environ=env2)
+ quota = self.deserialize(res)
+ self.assertEqual(100, quota['quota']['extra1'])
+
def test_delete_quotas_with_admin(self):
tenant_id = 'tenant_id1'
env = {'quantum.context': context.Context('', tenant_id + '2',