summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorEric Day <eday@oddments.org>2011-01-03 11:19:36 -0800
committerEric Day <eday@oddments.org>2011-01-03 11:19:36 -0800
commita36b38d78ef887e23451c1dd22fdde8615c40b08 (patch)
tree461e05c5bfb747bec0a4bdfba61b0b7cb5dc5947
parent806e4e5621ada77c1a072a89fa9981a5ab40dd10 (diff)
downloadnova-a36b38d78ef887e23451c1dd22fdde8615c40b08.tar.gz
nova-a36b38d78ef887e23451c1dd22fdde8615c40b08.tar.xz
nova-a36b38d78ef887e23451c1dd22fdde8615c40b08.zip
Removed compute dependency in quota.py.
-rw-r--r--nova/compute/__init__.py4
-rw-r--r--nova/quota.py8
-rw-r--r--nova/tests/test_quota.py6
3 files changed, 8 insertions, 10 deletions
diff --git a/nova/compute/__init__.py b/nova/compute/__init__.py
index f096dab63..7d797282a 100644
--- a/nova/compute/__init__.py
+++ b/nova/compute/__init__.py
@@ -83,8 +83,9 @@ class API(base.Base):
"""Create the number of instances requested if quota and
other arguments check out ok."""
+ type_data = instance_types.INSTANCE_TYPES[instance_type]
num_instances = quota.allowed_instances(context, max_count,
- instance_type)
+ type_data['vcpus'])
if num_instances < min_count:
logging.warn("Quota exceeeded for %s, tried to run %s instances",
context.project_id, min_count)
@@ -127,7 +128,6 @@ class API(base.Base):
key_pair = db.key_pair_get(context, context.user_id, key_name)
key_data = key_pair['public_key']
- type_data = instance_types.INSTANCE_TYPES[instance_type]
base_options = {
'reservation_id': utils.generate_uid('r'),
'image_id': image_id,
diff --git a/nova/quota.py b/nova/quota.py
index f6ca9f77c..12dbfcf43 100644
--- a/nova/quota.py
+++ b/nova/quota.py
@@ -22,7 +22,6 @@ Quotas for instances, volumes, and floating ips
from nova import db
from nova import exception
from nova import flags
-from nova.compute import instance_types
FLAGS = flags.FLAGS
@@ -54,7 +53,7 @@ def get_quota(context, project_id):
return rval
-def allowed_instances(context, num_instances, instance_type):
+def allowed_instances(context, num_instances, cores_per_instance):
"""Check quota and return min(num_instances, allowed_instances)"""
project_id = context.project_id
context = context.elevated()
@@ -63,10 +62,9 @@ def allowed_instances(context, num_instances, instance_type):
quota = get_quota(context, project_id)
allowed_instances = quota['instances'] - used_instances
allowed_cores = quota['cores'] - used_cores
- type_cores = instance_types.INSTANCE_TYPES[instance_type]['vcpus']
- num_cores = num_instances * type_cores
+ num_cores = num_instances * cores_per_instance
allowed_instances = min(allowed_instances,
- int(allowed_cores // type_cores))
+ int(allowed_cores // cores_per_instance))
return min(num_instances, allowed_instances)
diff --git a/nova/tests/test_quota.py b/nova/tests/test_quota.py
index 8cf2a5e54..c15818774 100644
--- a/nova/tests/test_quota.py
+++ b/nova/tests/test_quota.py
@@ -78,14 +78,14 @@ class QuotaTestCase(test.TestCase):
def test_quota_overrides(self):
"""Make sure overriding a projects quotas works"""
- num_instances = quota.allowed_instances(self.context, 100, 'm1.small')
+ num_instances = quota.allowed_instances(self.context, 100, 1)
self.assertEqual(num_instances, 2)
db.quota_create(self.context, {'project_id': self.project.id,
'instances': 10})
- num_instances = quota.allowed_instances(self.context, 100, 'm1.small')
+ num_instances = quota.allowed_instances(self.context, 100, 1)
self.assertEqual(num_instances, 4)
db.quota_update(self.context, self.project.id, {'cores': 100})
- num_instances = quota.allowed_instances(self.context, 100, 'm1.small')
+ num_instances = quota.allowed_instances(self.context, 100, 1)
self.assertEqual(num_instances, 10)
db.quota_destroy(self.context, self.project.id)