Merge "quota: remove QuotaEngine.register_resources()"
This commit is contained in:
commit
7524a21527
|
@ -871,9 +871,18 @@ class CountableResource(AbsoluteResource):
|
|||
class QuotaEngine(object):
|
||||
"""Represent the set of recognized quotas."""
|
||||
|
||||
def __init__(self, quota_driver=None):
|
||||
"""Initialize a Quota object."""
|
||||
self._resources = {}
|
||||
def __init__(self, quota_driver=None, resources=None):
|
||||
"""Initialize a Quota object.
|
||||
|
||||
:param quota_driver: a QuotaDriver object (only used in testing. if
|
||||
None (default), instantiates a driver from the
|
||||
CONF.quota.driver option)
|
||||
:param resources: iterable of Resource objects
|
||||
"""
|
||||
resources = resources or []
|
||||
self._resources = {
|
||||
resource.name: resource for resource in resources
|
||||
}
|
||||
# NOTE(mriedem): quota_driver is ever only supplied in tests with a
|
||||
# fake driver.
|
||||
self.__driver = quota_driver
|
||||
|
@ -890,12 +899,6 @@ class QuotaEngine(object):
|
|||
|
||||
self._resources[resource.name] = resource
|
||||
|
||||
def register_resources(self, resources):
|
||||
"""Register a list of resources."""
|
||||
|
||||
for resource in resources:
|
||||
self.register_resource(resource)
|
||||
|
||||
def get_defaults(self, context):
|
||||
"""Retrieve the default quotas.
|
||||
|
||||
|
@ -1217,36 +1220,40 @@ def _security_group_rule_count_by_group(context, security_group_id):
|
|||
return {'user': {'security_group_rules': count}}
|
||||
|
||||
|
||||
QUOTAS = QuotaEngine()
|
||||
|
||||
|
||||
resources = [
|
||||
CountableResource('instances', _instances_cores_ram_count, 'instances'),
|
||||
CountableResource('cores', _instances_cores_ram_count, 'cores'),
|
||||
CountableResource('ram', _instances_cores_ram_count, 'ram'),
|
||||
CountableResource('security_groups', _security_group_count,
|
||||
'security_groups'),
|
||||
CountableResource('fixed_ips', _fixed_ip_count, 'fixed_ips'),
|
||||
CountableResource('floating_ips', _floating_ip_count,
|
||||
'floating_ips'),
|
||||
AbsoluteResource('metadata_items', 'metadata_items'),
|
||||
AbsoluteResource('injected_files', 'injected_files'),
|
||||
AbsoluteResource('injected_file_content_bytes',
|
||||
'injected_file_content_bytes'),
|
||||
AbsoluteResource('injected_file_path_bytes',
|
||||
'injected_file_path_length'),
|
||||
CountableResource('security_group_rules',
|
||||
_security_group_rule_count_by_group,
|
||||
'security_group_rules'),
|
||||
CountableResource('key_pairs', _keypair_get_count_by_user, 'key_pairs'),
|
||||
CountableResource('server_groups', _server_group_count, 'server_groups'),
|
||||
CountableResource('server_group_members',
|
||||
_server_group_count_members_by_user,
|
||||
'server_group_members'),
|
||||
]
|
||||
|
||||
|
||||
QUOTAS.register_resources(resources)
|
||||
QUOTAS = QuotaEngine(
|
||||
resources=[
|
||||
CountableResource(
|
||||
'instances', _instances_cores_ram_count, 'instances'),
|
||||
CountableResource(
|
||||
'cores', _instances_cores_ram_count, 'cores'),
|
||||
CountableResource(
|
||||
'ram', _instances_cores_ram_count, 'ram'),
|
||||
CountableResource(
|
||||
'security_groups', _security_group_count, 'security_groups'),
|
||||
CountableResource(
|
||||
'fixed_ips', _fixed_ip_count, 'fixed_ips'),
|
||||
CountableResource(
|
||||
'floating_ips', _floating_ip_count, 'floating_ips'),
|
||||
AbsoluteResource(
|
||||
'metadata_items', 'metadata_items'),
|
||||
AbsoluteResource(
|
||||
'injected_files', 'injected_files'),
|
||||
AbsoluteResource(
|
||||
'injected_file_content_bytes', 'injected_file_content_bytes'),
|
||||
AbsoluteResource(
|
||||
'injected_file_path_bytes', 'injected_file_path_length'),
|
||||
CountableResource(
|
||||
'security_group_rules', _security_group_rule_count_by_group,
|
||||
'security_group_rules'),
|
||||
CountableResource(
|
||||
'key_pairs', _keypair_get_count_by_user, 'key_pairs'),
|
||||
CountableResource(
|
||||
'server_groups', _server_group_count, 'server_groups'),
|
||||
CountableResource(
|
||||
'server_group_members', _server_group_count_members_by_user,
|
||||
'server_group_members'),
|
||||
],
|
||||
)
|
||||
|
||||
|
||||
def _valid_method_call_check_resource(name, method, resources):
|
||||
|
|
|
@ -393,14 +393,10 @@ class BaseResourceTestCase(test.TestCase):
|
|||
class QuotaEngineTestCase(test.TestCase):
|
||||
def test_init(self):
|
||||
quota_obj = quota.QuotaEngine()
|
||||
|
||||
self.assertEqual(quota_obj._resources, {})
|
||||
self.assertIsInstance(quota_obj._driver, quota.DbQuotaDriver)
|
||||
|
||||
def test_init_override_obj(self):
|
||||
quota_obj = quota.QuotaEngine(quota_driver=FakeDriver)
|
||||
|
||||
self.assertEqual(quota_obj._resources, {})
|
||||
self.assertEqual(quota_obj._driver, FakeDriver)
|
||||
|
||||
def test_register_resource(self):
|
||||
|
@ -410,37 +406,19 @@ class QuotaEngineTestCase(test.TestCase):
|
|||
|
||||
self.assertEqual(quota_obj._resources, dict(test_resource=resource))
|
||||
|
||||
def test_register_resources(self):
|
||||
quota_obj = quota.QuotaEngine()
|
||||
resources = [
|
||||
quota.AbsoluteResource('test_resource1'),
|
||||
quota.AbsoluteResource('test_resource2'),
|
||||
quota.AbsoluteResource('test_resource3'),
|
||||
]
|
||||
quota_obj.register_resources(resources)
|
||||
|
||||
self.assertEqual(quota_obj._resources, dict(
|
||||
test_resource1=resources[0],
|
||||
test_resource2=resources[1],
|
||||
test_resource3=resources[2],
|
||||
))
|
||||
|
||||
def _make_quota_obj(self, driver):
|
||||
quota_obj = quota.QuotaEngine(quota_driver=driver)
|
||||
resources = [
|
||||
def _get_quota_engine(self, driver, resources=None):
|
||||
resources = resources or [
|
||||
quota.AbsoluteResource('test_resource4'),
|
||||
quota.AbsoluteResource('test_resource3'),
|
||||
quota.AbsoluteResource('test_resource2'),
|
||||
quota.AbsoluteResource('test_resource1'),
|
||||
]
|
||||
quota_obj.register_resources(resources)
|
||||
|
||||
return quota_obj
|
||||
]
|
||||
return quota.QuotaEngine(quota_driver=driver, resources=resources)
|
||||
|
||||
def test_get_defaults(self):
|
||||
context = FakeContext(None, None)
|
||||
driver = FakeDriver()
|
||||
quota_obj = self._make_quota_obj(driver)
|
||||
quota_obj = self._get_quota_engine(driver)
|
||||
result = quota_obj.get_defaults(context)
|
||||
|
||||
self.assertEqual(driver.called, [
|
||||
|
@ -451,7 +429,7 @@ class QuotaEngineTestCase(test.TestCase):
|
|||
def test_get_class_quotas(self):
|
||||
context = FakeContext(None, None)
|
||||
driver = FakeDriver()
|
||||
quota_obj = self._make_quota_obj(driver)
|
||||
quota_obj = self._get_quota_engine(driver)
|
||||
result1 = quota_obj.get_class_quotas(context, 'test_class')
|
||||
|
||||
self.assertEqual(driver.called, [
|
||||
|
@ -463,7 +441,7 @@ class QuotaEngineTestCase(test.TestCase):
|
|||
def test_get_user_quotas(self):
|
||||
context = FakeContext(None, None)
|
||||
driver = FakeDriver()
|
||||
quota_obj = self._make_quota_obj(driver)
|
||||
quota_obj = self._get_quota_engine(driver)
|
||||
result1 = quota_obj.get_user_quotas(context, 'test_project',
|
||||
'fake_user')
|
||||
result2 = quota_obj.get_user_quotas(context, 'test_project',
|
||||
|
@ -484,7 +462,7 @@ class QuotaEngineTestCase(test.TestCase):
|
|||
def test_get_project_quotas(self):
|
||||
context = FakeContext(None, None)
|
||||
driver = FakeDriver()
|
||||
quota_obj = self._make_quota_obj(driver)
|
||||
quota_obj = self._get_quota_engine(driver)
|
||||
result1 = quota_obj.get_project_quotas(context, 'test_project')
|
||||
result2 = quota_obj.get_project_quotas(context, 'test_project',
|
||||
quota_class='test_class',
|
||||
|
@ -503,7 +481,7 @@ class QuotaEngineTestCase(test.TestCase):
|
|||
def test_count_as_dict_no_resource(self):
|
||||
context = FakeContext(None, None)
|
||||
driver = FakeDriver()
|
||||
quota_obj = self._make_quota_obj(driver)
|
||||
quota_obj = self._get_quota_engine(driver)
|
||||
self.assertRaises(exception.QuotaResourceUnknown,
|
||||
quota_obj.count_as_dict, context, 'test_resource5',
|
||||
True, foo='bar')
|
||||
|
@ -511,7 +489,7 @@ class QuotaEngineTestCase(test.TestCase):
|
|||
def test_count_as_dict_wrong_resource(self):
|
||||
context = FakeContext(None, None)
|
||||
driver = FakeDriver()
|
||||
quota_obj = self._make_quota_obj(driver)
|
||||
quota_obj = self._get_quota_engine(driver)
|
||||
self.assertRaises(exception.QuotaResourceUnknown,
|
||||
quota_obj.count_as_dict, context, 'test_resource1',
|
||||
True, foo='bar')
|
||||
|
@ -524,9 +502,10 @@ class QuotaEngineTestCase(test.TestCase):
|
|||
|
||||
context = FakeContext(None, None)
|
||||
driver = FakeDriver()
|
||||
quota_obj = self._make_quota_obj(driver)
|
||||
quota_obj.register_resource(
|
||||
quota.CountableResource('test_resource5', fake_count_as_dict))
|
||||
resources = [
|
||||
quota.CountableResource('test_resource5', fake_count_as_dict),
|
||||
]
|
||||
quota_obj = self._get_quota_engine(driver, resources)
|
||||
result = quota_obj.count_as_dict(context, 'test_resource5', True,
|
||||
foo='bar')
|
||||
|
||||
|
@ -535,7 +514,7 @@ class QuotaEngineTestCase(test.TestCase):
|
|||
def test_limit_check(self):
|
||||
context = FakeContext(None, None)
|
||||
driver = FakeDriver()
|
||||
quota_obj = self._make_quota_obj(driver)
|
||||
quota_obj = self._get_quota_engine(driver)
|
||||
quota_obj.limit_check(context, test_resource1=4, test_resource2=3,
|
||||
test_resource3=2, test_resource4=1)
|
||||
|
||||
|
@ -551,7 +530,7 @@ class QuotaEngineTestCase(test.TestCase):
|
|||
def test_limit_check_project_and_user(self):
|
||||
context = FakeContext(None, None)
|
||||
driver = FakeDriver()
|
||||
quota_obj = self._make_quota_obj(driver)
|
||||
quota_obj = self._get_quota_engine(driver)
|
||||
project_values = dict(test_resource1=4, test_resource2=3)
|
||||
user_values = dict(test_resource3=2, test_resource4=1)
|
||||
quota_obj.limit_check_project_and_user(context,
|
||||
|
@ -566,7 +545,7 @@ class QuotaEngineTestCase(test.TestCase):
|
|||
driver.called)
|
||||
|
||||
def test_resources(self):
|
||||
quota_obj = self._make_quota_obj(None)
|
||||
quota_obj = self._get_quota_engine(None)
|
||||
|
||||
self.assertEqual(quota_obj.resources,
|
||||
['test_resource1', 'test_resource2',
|
||||
|
|
Loading…
Reference in New Issue