boot from volume - invalid flow in libvirt driver
Affects | Status | Importance | Assigned to | Milestone | |
---|---|---|---|---|---|
OpenStack Compute (nova) |
Fix Released
|
High
|
Nikola Đipanov |
Bug Description
(Testing grizzly trunk from ubuntu)
I had different bugs when booting from volume:
libvirt could not pre-create chardev file
libvirt could not find disk.config (when using a config drive)
libvirt could not create the console.log file
(these cases result in complete failure to spawn the VM, libvirt aborts)
this is was in various scenarios (config drive, no config drive, etc..) but always when booting from volume (not providing any image), all three problems got solved when I decided to ALWAYS call self._create_image at the beginning of the spawn() function of the libvirt driver:
/usr/lib/
def spawn(self, context, instance, image_meta, injected_files,
# couple of lines removed...
if image_meta:
if remove the check for image_meta, _create_image will always be called, this seems to enable the boot from volume functionality since the /var/lib/
I think since we're now able to boot from volume without specifying any kind of image, we cannot simply check for image_meta and decide wether or not to call create_image, we still need to create the instance directory and prepare files before calling libvirt to instanciate.
I can say that all my different BFV scenarios work when I call _create_image no matter what.
Could someone with a better understanding of the libvirt driver have a look and maybe rethink this check for image_meta?
thank you guys
Changed in nova: | |
importance: | Undecided → High |
status: | New → Triaged |
assignee: | nobody → Rafi Khardalian (rkhardalian) |
Changed in nova: | |
milestone: | none → grizzly-rc1 |
Changed in nova: | |
status: | Fix Committed → Fix Released |
Changed in nova: | |
milestone: | grizzly-rc1 → 2013.1 |
Thanks for the detailed report. I'll take a deeper look at this, as it's likely there are other similar cases throughout the driver.