diff --git a/nova/quota.py b/nova/quota.py index 96eb5444849..719f8946298 100644 --- a/nova/quota.py +++ b/nova/quota.py @@ -651,6 +651,18 @@ def get_class_quotas(self, context, resources, quota_class, quotas[resource.name] = -1 return quotas + def _get_noop_quotas(self, resources, usages=None, remains=False): + quotas = {} + for resource in resources.values(): + quotas[resource.name] = {} + quotas[resource.name]['limit'] = -1 + if usages: + quotas[resource.name]['in_use'] = -1 + quotas[resource.name]['reserved'] = -1 + if remains: + quotas[resource.name]['remains'] = -1 + return quotas + def get_user_quotas(self, context, resources, project_id, user_id, quota_class=None, defaults=True, usages=True): @@ -674,10 +686,7 @@ def get_user_quotas(self, context, resources, project_id, user_id, :param usages: If True, the current in_use and reserved counts will also be returned. """ - quotas = {} - for resource in resources.values(): - quotas[resource.name] = -1 - return quotas + return self._get_noop_quotas(resources, usages=usages) def get_project_quotas(self, context, resources, project_id, quota_class=None, defaults=True, @@ -703,10 +712,7 @@ def get_project_quotas(self, context, resources, project_id, :param remains: If True, the current remains of the project will will be returned. """ - quotas = {} - for resource in resources.values(): - quotas[resource.name] = -1 - return quotas + return self._get_noop_quotas(resources, usages=usages, remains=remains) def get_settable_quotas(self, context, resources, project_id, user_id=None): diff --git a/nova/tests/test_quota.py b/nova/tests/test_quota.py index 653bf697fe9..795b502ec9e 100644 --- a/nova/tests/test_quota.py +++ b/nova/tests/test_quota.py @@ -2356,47 +2356,55 @@ def setUp(self): max_age=0, ) - self.expected_quotas = dict([(r, -1) - for r in quota.QUOTAS._resources]) + self.expected_with_usages = {} + self.expected_without_usages = {} + self.expected_without_dict = {} + for r in quota.QUOTAS._resources: + self.expected_with_usages[r] = dict(limit=-1, + in_use=-1, + reserved=-1) + self.expected_without_usages[r] = dict(limit=-1) + self.expected_without_dict[r] = -1 + self.driver = quota.NoopQuotaDriver() def test_get_defaults(self): # Use our pre-defined resources result = self.driver.get_defaults(None, quota.QUOTAS._resources) - self.assertEqual(self.expected_quotas, result) + self.assertEqual(self.expected_without_dict, result) def test_get_class_quotas(self): result = self.driver.get_class_quotas(None, quota.QUOTAS._resources, 'test_class') - self.assertEqual(self.expected_quotas, result) + self.assertEqual(self.expected_without_dict, result) def test_get_class_quotas_no_defaults(self): result = self.driver.get_class_quotas(None, quota.QUOTAS._resources, 'test_class', False) - self.assertEqual(self.expected_quotas, result) + self.assertEqual(self.expected_without_dict, result) def test_get_project_quotas(self): result = self.driver.get_project_quotas(None, quota.QUOTAS._resources, 'test_project') - self.assertEqual(self.expected_quotas, result) + self.assertEqual(self.expected_with_usages, result) def test_get_user_quotas(self): result = self.driver.get_user_quotas(None, quota.QUOTAS._resources, 'test_project', 'fake_user') - self.assertEqual(self.expected_quotas, result) + self.assertEqual(self.expected_with_usages, result) def test_get_project_quotas_no_defaults(self): result = self.driver.get_project_quotas(None, quota.QUOTAS._resources, 'test_project', defaults=False) - self.assertEqual(self.expected_quotas, result) + self.assertEqual(self.expected_with_usages, result) def test_get_user_quotas_no_defaults(self): result = self.driver.get_user_quotas(None, @@ -2404,14 +2412,14 @@ def test_get_user_quotas_no_defaults(self): 'test_project', 'fake_user', defaults=False) - self.assertEqual(self.expected_quotas, result) + self.assertEqual(self.expected_with_usages, result) def test_get_project_quotas_no_usages(self): result = self.driver.get_project_quotas(None, quota.QUOTAS._resources, 'test_project', usages=False) - self.assertEqual(self.expected_quotas, result) + self.assertEqual(self.expected_without_usages, result) def test_get_user_quotas_no_usages(self): result = self.driver.get_user_quotas(None, @@ -2419,4 +2427,4 @@ def test_get_user_quotas_no_usages(self): 'test_project', 'fake_user', usages=False) - self.assertEqual(self.expected_quotas, result) + self.assertEqual(self.expected_without_usages, result)