yahoo-eng-team team mailing list archive
-
yahoo-eng-team team
-
Mailing list archive
-
Message #33084
[Bug 1458354] [NEW] LXC instances cannot boot from volume
Public bug reported:
Nova Version: Kilo; 1:2015.1.0-0ubuntu1~cloud0
Steps to reproduce:
1. Create volume from image
2. Boot new instance from this volume
3. Observe error in nova-compute.log
Expected result: Instance boots successfully
Actual result: Failed to prep block device error
----------------------------------------------------------------------------------------------------------
When booting an LXC instance from an existing volume, nova-compute fails with:
File "/usr/lib/python2.7/dist-packages/nova/virt/libvirt/driver.py", line 4290, in _lxc_disk_handler
block_device_info, disk_info)
File "/usr/lib/python2.7/dist-packages/nova/virt/libvirt/driver.py", line 4226, in _create_domain_setup_lxc
disk_path = root_disk['connection_info']['data']['device_path']
KeyError: 'device_path'
This happens directly before connecting the volume. Debugging shows that the device path is indeed not present at this stage - but rather it shows up directly after _connect_volume(). Moving the faulting line down seems to solve the issue:
--- a/nova/virt/libvirt/driver.py 2015-05-24 19:37:34.909039728 +0200
+++ b/nova/virt/libvirt/driver.py 2015-05-24 19:36:58.225923316 +0200
@@ -4221,10 +4221,10 @@
if self._is_booted_from_volume(instance, disk_mapping):
root_disk = block_device.get_root_bdm(block_device_mapping)
- disk_path = root_disk['connection_info']['data']['device_path']
disk_info = blockinfo.get_info_from_bdm(
CONF.libvirt.virt_type, image_meta, root_disk)
self._connect_volume(root_disk['connection_info'], disk_info)
+ disk_path = root_disk['connection_info']['data']['device_path']
# Get the system metadata from the instance
use_cow = instance.system_metadata['image_disk_format'] == 'qcow2'
** Affects: nova
Importance: Undecided
Status: New
--
You received this bug notification because you are a member of Yahoo!
Engineering Team, which is subscribed to OpenStack Compute (nova).
https://bugs.launchpad.net/bugs/1458354
Title:
LXC instances cannot boot from volume
Status in OpenStack Compute (Nova):
New
Bug description:
Nova Version: Kilo; 1:2015.1.0-0ubuntu1~cloud0
Steps to reproduce:
1. Create volume from image
2. Boot new instance from this volume
3. Observe error in nova-compute.log
Expected result: Instance boots successfully
Actual result: Failed to prep block device error
----------------------------------------------------------------------------------------------------------
When booting an LXC instance from an existing volume, nova-compute fails with:
File "/usr/lib/python2.7/dist-packages/nova/virt/libvirt/driver.py", line 4290, in _lxc_disk_handler
block_device_info, disk_info)
File "/usr/lib/python2.7/dist-packages/nova/virt/libvirt/driver.py", line 4226, in _create_domain_setup_lxc
disk_path = root_disk['connection_info']['data']['device_path']
KeyError: 'device_path'
This happens directly before connecting the volume. Debugging shows that the device path is indeed not present at this stage - but rather it shows up directly after _connect_volume(). Moving the faulting line down seems to solve the issue:
--- a/nova/virt/libvirt/driver.py 2015-05-24 19:37:34.909039728 +0200
+++ b/nova/virt/libvirt/driver.py 2015-05-24 19:36:58.225923316 +0200
@@ -4221,10 +4221,10 @@
if self._is_booted_from_volume(instance, disk_mapping):
root_disk = block_device.get_root_bdm(block_device_mapping)
- disk_path = root_disk['connection_info']['data']['device_path']
disk_info = blockinfo.get_info_from_bdm(
CONF.libvirt.virt_type, image_meta, root_disk)
self._connect_volume(root_disk['connection_info'], disk_info)
+ disk_path = root_disk['connection_info']['data']['device_path']
# Get the system metadata from the instance
use_cow = instance.system_metadata['image_disk_format'] == 'qcow2'
To manage notifications about this bug go to:
https://bugs.launchpad.net/nova/+bug/1458354/+subscriptions
Follow ups
References