summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDan Prince <dprince@redhat.com>2012-04-03 15:23:48 -0400
committerVishvananda Ishaya <vishvananda@gmail.com>2012-04-03 17:43:20 -0700
commitd9465624ba68e513c02539c685d5d834ca3094ba (patch)
tree78c4978425aa721bb2406941457e4bd738ed1f0f
parent15ce773e2ee91acbbd0ff259206988878be2f737 (diff)
downloadnova-essex-rc3.tar.gz
Treat -1 quotas as unlimited.essex-rc3
Updates quota db API calls so they treat -1 quotas as unlimited for consistency with the Nova flags. Fixes LP Bug #972034. Change-Id: I56456c2780110f8fd55afa9d1fe30193bf99d928
-rw-r--r--nova/db/sqlalchemy/api.py6
-rw-r--r--nova/tests/test_quota.py24
2 files changed, 30 insertions, 0 deletions
diff --git a/nova/db/sqlalchemy/api.py b/nova/db/sqlalchemy/api.py
index e9c34ab1fc..69e44cda17 100644
--- a/nova/db/sqlalchemy/api.py
+++ b/nova/db/sqlalchemy/api.py
@@ -2232,6 +2232,9 @@ def quota_get_all_by_project(context, project_id):
@require_admin_context
def quota_create(context, project_id, resource, limit):
+ # NOTE: Treat -1 as unlimited for consistency w/ flags
+ if limit == -1:
+ limit = None
quota_ref = models.Quota()
quota_ref.project_id = project_id
quota_ref.resource = resource
@@ -2242,6 +2245,9 @@ def quota_create(context, project_id, resource, limit):
@require_admin_context
def quota_update(context, project_id, resource, limit):
+ # NOTE: Treat -1 as unlimited for consistency w/ flags
+ if limit == -1:
+ limit = None
session = get_session()
with session.begin():
quota_ref = quota_get(context, project_id, resource, session=session)
diff --git a/nova/tests/test_quota.py b/nova/tests/test_quota.py
index a3ec9727bf..28c92ca9c4 100644
--- a/nova/tests/test_quota.py
+++ b/nova/tests/test_quota.py
@@ -152,6 +152,10 @@ class QuotaTestCase(test.TestCase):
num_instances = quota.allowed_instances(self.context, 100,
instance_type)
self.assertEqual(num_instances, 100)
+ db.quota_create(self.context, self.project_id, 'instances', -1)
+ num_instances = quota.allowed_instances(self.context, 100,
+ instance_type)
+ self.assertEqual(num_instances, 100)
num_instances = quota.allowed_instances(self.context, 101,
instance_type)
self.assertEqual(num_instances, 101)
@@ -166,6 +170,10 @@ class QuotaTestCase(test.TestCase):
num_instances = quota.allowed_instances(self.context, 100,
instance_type)
self.assertEqual(num_instances, 100)
+ db.quota_create(self.context, self.project_id, 'ram', -1)
+ num_instances = quota.allowed_instances(self.context, 100,
+ instance_type)
+ self.assertEqual(num_instances, 100)
num_instances = quota.allowed_instances(self.context, 101,
instance_type)
self.assertEqual(num_instances, 101)
@@ -180,6 +188,10 @@ class QuotaTestCase(test.TestCase):
num_instances = quota.allowed_instances(self.context, 100,
instance_type)
self.assertEqual(num_instances, 100)
+ db.quota_create(self.context, self.project_id, 'cores', -1)
+ num_instances = quota.allowed_instances(self.context, 100,
+ instance_type)
+ self.assertEqual(num_instances, 100)
num_instances = quota.allowed_instances(self.context, 101,
instance_type)
self.assertEqual(num_instances, 101)
@@ -191,6 +203,9 @@ class QuotaTestCase(test.TestCase):
db.quota_create(self.context, self.project_id, 'volumes', None)
volumes = quota.allowed_volumes(self.context, 100, 1)
self.assertEqual(volumes, 100)
+ db.quota_create(self.context, self.project_id, 'volumes', -1)
+ volumes = quota.allowed_volumes(self.context, 100, 1)
+ self.assertEqual(volumes, 100)
volumes = quota.allowed_volumes(self.context, 101, 1)
self.assertEqual(volumes, 101)
@@ -201,6 +216,9 @@ class QuotaTestCase(test.TestCase):
db.quota_create(self.context, self.project_id, 'gigabytes', None)
volumes = quota.allowed_volumes(self.context, 100, 1)
self.assertEqual(volumes, 100)
+ db.quota_create(self.context, self.project_id, 'gigabytes', -1)
+ volumes = quota.allowed_volumes(self.context, 100, 1)
+ self.assertEqual(volumes, 100)
volumes = quota.allowed_volumes(self.context, 101, 1)
self.assertEqual(volumes, 101)
@@ -211,6 +229,9 @@ class QuotaTestCase(test.TestCase):
db.quota_create(self.context, self.project_id, 'floating_ips', None)
floating_ips = quota.allowed_floating_ips(self.context, 100)
self.assertEqual(floating_ips, 100)
+ db.quota_create(self.context, self.project_id, 'floating_ips', -1)
+ floating_ips = quota.allowed_floating_ips(self.context, 100)
+ self.assertEqual(floating_ips, 100)
floating_ips = quota.allowed_floating_ips(self.context, 101)
self.assertEqual(floating_ips, 101)
@@ -221,6 +242,9 @@ class QuotaTestCase(test.TestCase):
db.quota_create(self.context, self.project_id, 'metadata_items', None)
items = quota.allowed_metadata_items(self.context, 100)
self.assertEqual(items, 100)
+ db.quota_create(self.context, self.project_id, 'metadata_items', -1)
+ items = quota.allowed_metadata_items(self.context, 100)
+ self.assertEqual(items, 100)
items = quota.allowed_metadata_items(self.context, 101)
self.assertEqual(items, 101)