summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJenkins <jenkins@review.openstack.org>2012-11-27 02:27:15 +0000
committerGerrit Code Review <review@openstack.org>2012-11-27 02:27:15 +0000
commit6d9d7dccf569fc55cc1cce055ce339e67c141a89 (patch)
treef6d4994b96b377fcf4113ec2204694d56a85e5a6
parent2bed9d4af4697a7f8090585084a280f78cb71c0c (diff)
parenta369303b93500694b22b7d49785b47dcd734acf4 (diff)
downloadnova-6d9d7dccf569fc55cc1cce055ce339e67c141a89.tar.gz
Merge "Always use bdm in instance_block_mapping on Xen" into stable/folsom
-rw-r--r--nova/block_device.py9
-rw-r--r--nova/tests/compute/test_compute_utils.py40
2 files changed, 36 insertions, 13 deletions
diff --git a/nova/block_device.py b/nova/block_device.py
index bce71e1834..031fcae161 100644
--- a/nova/block_device.py
+++ b/nova/block_device.py
@@ -17,6 +17,9 @@
import re
+from nova import flags
+
+FLAGS = flags.FLAGS
DEFAULT_ROOT_DEV_NAME = '/dev/sda1'
_DEFAULT_MAPPINGS = {'ami': 'sda1',
@@ -89,8 +92,12 @@ def strip_prefix(device_name):
def instance_block_mapping(instance, bdms):
root_device_name = instance['root_device_name']
+ # NOTE(clayg): remove this when xenapi is setting default_root_device
if root_device_name is None:
- return _DEFAULT_MAPPINGS
+ if FLAGS.compute_driver.endswith('xenapi.XenAPIDriver'):
+ root_device_name = '/dev/xvda'
+ else:
+ return _DEFAULT_MAPPINGS
mappings = {}
mappings['ami'] = strip_dev(root_device_name)
diff --git a/nova/tests/compute/test_compute_utils.py b/nova/tests/compute/test_compute_utils.py
index 1573d4919f..0564507088 100644
--- a/nova/tests/compute/test_compute_utils.py
+++ b/nova/tests/compute/test_compute_utils.py
@@ -44,12 +44,21 @@ class ComputeValidateDeviceTestCase(test.TestCase):
def setUp(self):
super(ComputeValidateDeviceTestCase, self).setUp()
self.context = context.RequestContext('fake', 'fake')
- self.instance = {
- 'uuid': 'fake',
- 'root_device_name': '/dev/vda',
- 'default_ephemeral_device': '/dev/vdb',
- 'instance_type_id': 'fake',
- }
+ # check if test name includes "xen"
+ if 'xen' in self.id():
+ self.flags(compute_driver='xenapi.XenAPIDriver')
+ self.instance = {
+ 'uuid': 'fake',
+ 'root_device_name': None,
+ 'instance_type_id': 'fake',
+ }
+ else:
+ self.instance = {
+ 'uuid': 'fake',
+ 'root_device_name': '/dev/vda',
+ 'default_ephemeral_device': '/dev/vdb',
+ 'instance_type_id': 'fake',
+ }
self.data = []
def fake_get(instance_type_id, ctxt=None):
@@ -150,8 +159,6 @@ class ComputeValidateDeviceTestCase(test.TestCase):
self.assertEqual(device, '/dev/vdc')
def test_ephemeral_xenapi(self):
- self.flags(compute_driver='xenapi.XenAPIDriver')
- del self.instance['default_ephemeral_device']
self.instance_type = {
'ephemeral_gb': 10,
'swap': 0,
@@ -162,8 +169,6 @@ class ComputeValidateDeviceTestCase(test.TestCase):
self.assertEqual(device, '/dev/xvdc')
def test_swap_xenapi(self):
- self.flags(compute_driver='xenapi.XenAPIDriver')
- del self.instance['default_ephemeral_device']
self.instance_type = {
'ephemeral_gb': 0,
'swap': 10,
@@ -174,8 +179,6 @@ class ComputeValidateDeviceTestCase(test.TestCase):
self.assertEqual(device, '/dev/xvdb')
def test_swap_and_ephemeral_xenapi(self):
- self.flags(compute_driver='xenapi.XenAPIDriver')
- del self.instance['default_ephemeral_device']
self.instance_type = {
'ephemeral_gb': 10,
'swap': 10,
@@ -185,6 +188,19 @@ class ComputeValidateDeviceTestCase(test.TestCase):
device = self._validate_device()
self.assertEqual(device, '/dev/xvdd')
+ def test_swap_and_one_attachment_xenapi(self):
+ self.instance_type = {
+ 'ephemeral_gb': 0,
+ 'swap': 10,
+ }
+ self.stubs.Set(instance_types, 'get_instance_type',
+ lambda instance_type_id, ctxt=None: self.instance_type)
+ device = self._validate_device()
+ self.assertEqual(device, '/dev/xvdb')
+ self.data.append(self._fake_bdm(device))
+ device = self._validate_device()
+ self.assertEqual(device, '/dev/xvdd')
+
class UsageInfoTestCase(test.TestCase):