summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJenkins <jenkins@review.openstack.org>2013-01-21 19:06:56 +0000
committerGerrit Code Review <review@openstack.org>2013-01-21 19:06:56 +0000
commit46448e18a78dc4bf5adf530a509e9d6ec89f0aa1 (patch)
treea5e7a5c47e524bbbecccd1d2d6fdfb4e145e2d3a
parent05a350349b5b49d937cad19ef8eea1ab5c485ca2 (diff)
parentdf6302117c66b4c90142362bd3e9e89d78c6931c (diff)
downloadnova-46448e18a78dc4bf5adf530a509e9d6ec89f0aa1.tar.gz
nova-46448e18a78dc4bf5adf530a509e9d6ec89f0aa1.tar.xz
nova-46448e18a78dc4bf5adf530a509e9d6ec89f0aa1.zip
Merge "Refactor compute_utils to avoid db lookup"
-rw-r--r--nova/compute/manager.py3
-rw-r--r--nova/compute/utils.py4
-rw-r--r--nova/tests/compute/test_compute_utils.py3
3 files changed, 7 insertions, 3 deletions
diff --git a/nova/compute/manager.py b/nova/compute/manager.py
index 86f41cd3c..03c54a363 100644
--- a/nova/compute/manager.py
+++ b/nova/compute/manager.py
@@ -2464,8 +2464,11 @@ class ComputeManager(manager.SchedulerDependentManager):
@lockutils.synchronized(instance['uuid'], 'nova-')
def do_reserve():
+ bdms = self.conductor_api.block_device_mapping_get_all_by_instance(
+ context, instance)
result = compute_utils.get_device_name_for_instance(context,
instance,
+ bdms,
device)
# NOTE(vish): create bdm here to avoid race condition
values = {'instance_uuid': instance['uuid'],
diff --git a/nova/compute/utils.py b/nova/compute/utils.py
index f07346c6b..2b1286e16 100644
--- a/nova/compute/utils.py
+++ b/nova/compute/utils.py
@@ -71,7 +71,7 @@ def add_instance_fault_from_exc(context, instance, fault, exc_info=None):
db.instance_fault_create(context, values)
-def get_device_name_for_instance(context, instance, device):
+def get_device_name_for_instance(context, instance, bdms, device):
"""Validates (or generates) a device name for instance.
If device is not set, it will generate a unique device appropriate
@@ -88,8 +88,6 @@ def get_device_name_for_instance(context, instance, device):
req_prefix, req_letters = block_device.match_device(device)
except (TypeError, AttributeError, ValueError):
raise exception.InvalidDevicePath(path=device)
- bdms = db.block_device_mapping_get_all_by_instance(context,
- instance['uuid'])
mappings = block_device.instance_block_mapping(instance, bdms)
try:
prefix = block_device.match_device(mappings['root'])[0]
diff --git a/nova/tests/compute/test_compute_utils.py b/nova/tests/compute/test_compute_utils.py
index f29c68627..6e7227d4c 100644
--- a/nova/tests/compute/test_compute_utils.py
+++ b/nova/tests/compute/test_compute_utils.py
@@ -69,8 +69,11 @@ class ComputeValidateDeviceTestCase(test.TestCase):
lambda context, instance: self.data)
def _validate_device(self, device=None):
+ bdms = db.block_device_mapping_get_all_by_instance(
+ self.context, self.instance['uuid'])
return compute_utils.get_device_name_for_instance(self.context,
self.instance,
+ bdms,
device)
@staticmethod