def test_quota_overrides(self): """Make sure overriding a projects quotas works""" num_instances = quota.allowed_instances( self.context, 100, self._get_instance_type('m1.small')) self.assertEqual(num_instances, 2) db.quota_create(self.context, self.project_id, 'instances', 10) num_instances = quota.allowed_instances( self.context, 100, self._get_instance_type('m1.small')) self.assertEqual(num_instances, 4) db.quota_create(self.context, self.project_id, 'cores', 100) num_instances = quota.allowed_instances( self.context, 100, self._get_instance_type('m1.small')) self.assertEqual(num_instances, 10) db.quota_create(self.context, self.project_id, 'ram', 3 * 2048) num_instances = quota.allowed_instances( self.context, 100, self._get_instance_type('m1.small')) self.assertEqual(num_instances, 3) # metadata_items too_many_items = FLAGS.quota_metadata_items + 1000 num_metadata_items = quota.allowed_metadata_items( self.context, too_many_items) self.assertEqual(num_metadata_items, FLAGS.quota_metadata_items) db.quota_create(self.context, self.project_id, 'metadata_items', 5) num_metadata_items = quota.allowed_metadata_items( self.context, too_many_items) self.assertEqual(num_metadata_items, 5) # Cleanup db.quota_destroy_all_by_project(self.context, self.project_id)
def test_quota_overrides(self): """Make sure overriding a projects quotas works""" num_instances = quota.allowed_instances(self.context, 100, self._get_instance_type('m1.small')) self.assertEqual(num_instances, 2) db.quota_create(self.context, self.project_id, 'instances', 10) num_instances = quota.allowed_instances(self.context, 100, self._get_instance_type('m1.small')) self.assertEqual(num_instances, 4) db.quota_create(self.context, self.project_id, 'cores', 100) num_instances = quota.allowed_instances(self.context, 100, self._get_instance_type('m1.small')) self.assertEqual(num_instances, 10) db.quota_create(self.context, self.project_id, 'ram', 3 * 2048) num_instances = quota.allowed_instances(self.context, 100, self._get_instance_type('m1.small')) self.assertEqual(num_instances, 3) # metadata_items too_many_items = FLAGS.quota_metadata_items + 1000 num_metadata_items = quota.allowed_metadata_items(self.context, too_many_items) self.assertEqual(num_metadata_items, FLAGS.quota_metadata_items) db.quota_create(self.context, self.project_id, 'metadata_items', 5) num_metadata_items = quota.allowed_metadata_items(self.context, too_many_items) self.assertEqual(num_metadata_items, 5) # Cleanup db.quota_destroy_all_by_project(self.context, self.project_id)
def test_unlimited_metadata_items(self): self.flags(quota_metadata_items=10) items = quota.allowed_metadata_items(self.context, 100) self.assertEqual(items, 10) db.quota_create(self.context, self.project_id, 'metadata_items', None) items = quota.allowed_metadata_items(self.context, 100) self.assertEqual(items, 100) items = quota.allowed_metadata_items(self.context, 101) self.assertEqual(items, 101)
def check_img_metadata_quota_limit(context, metadata): if metadata is None: return num_metadata = len(metadata) quota_metadata = quota.allowed_metadata_items(context, num_metadata) if quota_metadata < num_metadata: expl = _("Image metadata limit exceeded") raise webob.exc.HTTPRequestEntityTooLarge(explanation=expl, headers={'Retry-After': 0})