diff options
-rw-r--r-- | nova/block_device.py | 9 | ||||
-rw-r--r-- | nova/tests/compute/test_compute_utils.py | 40 |
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): |