Public bug reported:

Alpine linux runs qemu-img version 2.5.1-r4, where you cannot put
parameter "-f qcow2" in the end of the line, because it expects
location. Parameter must be included before source and destination.

Step to reproduce
==================

you can try it in container

1) docker run -it gliderlabs/alpine:3.4 sh
2) apk update; apk add qemu-img wget
3) wget http://download.cirros-cloud.net/0.3.4/cirros-0.3.4-i386-disk.img
4) mkdir /var/lib/nova/instances/_base/
5) qemu-img convert -O raw cirros-0.3.4-i386-disk.img 
/var/lib/nova/instances/_base/sample -f qcow2
qemu-img: Could not open '/var/lib/nova/instances/_base/sample': Could not open 
'/var/lib/nova/instances/_base/hovno': No such file or directory

correct way

qemu-img convert -f qcow2 -O raw cirros-0.3.4-i386-disk.img
/var/lib/nova/instances/_base/sample

I verified this on Ubuntu and Centos as well.

Proposed change
=================

diff --git a/nova/virt/images.py b/nova/virt/images.py
index 8242d2f..4e676b4 100644
--- a/nova/virt/images.py
+++ b/nova/virt/images.py
@@ -96,7 +96,7 @@ def convert_image_unsafe(source, dest, out_format, 
run_as_root=False):
 def _convert_image(source, dest, in_format, out_format, run_as_root):
     cmd = ('qemu-img', 'convert', '-O', out_format, source, dest)
     if in_format is not None:
-        cmd = cmd + ('-f', in_format)
+        cmd = cmd[:-2] + ('-f', in_format) + cmd[-2:]
     try:
         utils.execute(*cmd, run_as_root=run_as_root)
     except processutils.ProcessExecutionError as exp:


Logs error
==============

2016-10-14 13:27:20.678 63743 ERROR nova.compute.manager 
[req-2d77222d-766c-41f9-86b3-57f0319ae6e9 573e69f9429749fc84d1c89d56e7ee4f 
cbf99832c4ca4feb8a17adbab21f78e7 - - -] [instance: 568c6af
a-d164-43fb-bd95-97f9dd48fa26] Instance failed to spawn
2016-10-14 13:27:20.678 63743 ERROR nova.compute.manager [instance: 
568c6afa-d164-43fb-bd95-97f9dd48fa26] Traceback (most recent call last):
2016-10-14 13:27:20.678 63743 ERROR nova.compute.manager [instance: 
568c6afa-d164-43fb-bd95-97f9dd48fa26]   File 
"/opt/nova/lib/python2.7/site-packages/nova/compute/manager.py", line 2218, i
n _build_resources
2016-10-14 13:27:20.678 63743 ERROR nova.compute.manager [instance: 
568c6afa-d164-43fb-bd95-97f9dd48fa26]     yield resources
2016-10-14 13:27:20.678 63743 ERROR nova.compute.manager [instance: 
568c6afa-d164-43fb-bd95-97f9dd48fa26]   File 
"/opt/nova/lib/python2.7/site-packages/nova/compute/manager.py", line 2064, i
n _build_and_run_instance
2016-10-14 13:27:20.678 63743 ERROR nova.compute.manager [instance: 
568c6afa-d164-43fb-bd95-97f9dd48fa26]     block_device_info=block_device_info)
2016-10-14 13:27:20.678 63743 ERROR nova.compute.manager [instance: 
568c6afa-d164-43fb-bd95-97f9dd48fa26]   File 
"/opt/nova/lib/python2.7/site-packages/nova/virt/libvirt/driver.py", line 277
2, in spawn
2016-10-14 13:27:20.678 63743 ERROR nova.compute.manager [instance: 
568c6afa-d164-43fb-bd95-97f9dd48fa26]     admin_pass=admin_password)
2016-10-14 13:27:20.678 63743 ERROR nova.compute.manager [instance: 
568c6afa-d164-43fb-bd95-97f9dd48fa26]   File 
"/opt/nova/lib/python2.7/site-packages/nova/virt/libvirt/driver.py", line 319
0, in _create_image
2016-10-14 13:27:20.678 63743 ERROR nova.compute.manager [instance: 
568c6afa-d164-43fb-bd95-97f9dd48fa26]     instance, size, fallback_from_host)
2016-10-14 13:27:20.678 63743 ERROR nova.compute.manager [instance: 
568c6afa-d164-43fb-bd95-97f9dd48fa26]   File 
"/opt/nova/lib/python2.7/site-packages/nova/virt/libvirt/driver.py", line 678
7, in _try_fetch_image_cache
2016-10-14 13:27:20.678 63743 ERROR nova.compute.manager [instance: 
568c6afa-d164-43fb-bd95-97f9dd48fa26]     size=size)
2016-10-14 13:27:20.678 63743 ERROR nova.compute.manager [instance: 
568c6afa-d164-43fb-bd95-97f9dd48fa26]   File 
"/opt/nova/lib/python2.7/site-packages/nova/virt/libvirt/imagebackend.py", li
ne 251, in cache
2016-10-14 13:27:20.678 63743 ERROR nova.compute.manager [instance: 
568c6afa-d164-43fb-bd95-97f9dd48fa26]     *args, **kwargs)
2016-10-14 13:27:20.678 63743 ERROR nova.compute.manager [instance: 
568c6afa-d164-43fb-bd95-97f9dd48fa26]   File 
"/opt/nova/lib/python2.7/site-packages/nova/virt/libvirt/imagebackend.py", li
ne 593, in create_image
2016-10-14 13:27:20.678 63743 ERROR nova.compute.manager [instance: 
568c6afa-d164-43fb-bd95-97f9dd48fa26]     prepare_template(target=base, 
max_size=size, *args, **kwargs)
2016-10-14 13:27:20.678 63743 ERROR nova.compute.manager [instance: 
568c6afa-d164-43fb-bd95-97f9dd48fa26]   File 
"/opt/nova/lib/python2.7/site-packages/oslo_concurrency/lockutils.py", line 2
71, in inner
2016-10-14 13:27:20.678 63743 ERROR nova.compute.manager [instance: 
568c6afa-d164-43fb-bd95-97f9dd48fa26]     return f(*args, **kwargs)
2016-10-14 13:27:20.678 63743 ERROR nova.compute.manager [instance: 
568c6afa-d164-43fb-bd95-97f9dd48fa26]   File 
"/opt/nova/lib/python2.7/site-packages/nova/virt/libvirt/imagebackend.py", li
ne 241, in fetch_func_sync
2016-10-14 13:27:20.678 63743 ERROR nova.compute.manager [instance: 
568c6afa-d164-43fb-bd95-97f9dd48fa26]     fetch_func(target=target, *args, 
**kwargs)
2016-10-14 13:27:20.678 63743 ERROR nova.compute.manager [instance: 
568c6afa-d164-43fb-bd95-97f9dd48fa26]   File 
"/opt/nova/lib/python2.7/site-packages/nova/virt/libvirt/utils.py", line 429,
 in fetch_image
2016-10-14 13:27:20.678 63743 ERROR nova.compute.manager [instance: 
568c6afa-d164-43fb-bd95-97f9dd48fa26]     max_size=max_size)
2016-10-14 13:27:20.678 63743 ERROR nova.compute.manager [instance: 
568c6afa-d164-43fb-bd95-97f9dd48fa26]   File 
"/opt/nova/lib/python2.7/site-packages/nova/virt/images.py", line 165, in fet
ch_to_raw
2016-10-14 13:27:20.678 63743 ERROR nova.compute.manager [instance: 
568c6afa-d164-43fb-bd95-97f9dd48fa26]     % {'exp': exp})
2016-10-14 13:27:20.678 63743 ERROR nova.compute.manager [instance: 
568c6afa-d164-43fb-bd95-97f9dd48fa26] ImageUnacceptable: Image 
4c7d8a04-fcb6-4c25-bd18-749361d47637 is unacceptable: Unabl
e to convert image to raw: Image 
/var/lib/nova/instances/_base/594054a605f6d769702d6ab0d13ac7537a86b174.part is 
unacceptable: Unable to convert image to raw: Unexpected error while running c
ommand.
2016-10-14 13:27:20.678 63743 ERROR nova.compute.manager [instance: 
568c6afa-d164-43fb-bd95-97f9dd48fa26] Command: qemu-img convert -O raw 
/var/lib/nova/instances/_base/594054a605f6d769702d6
ab0d13ac7537a86b174.part 
/var/lib/nova/instances/_base/594054a605f6d769702d6ab0d13ac7537a86b174.converted
 -f qcow2
2016-10-14 13:27:20.678 63743 ERROR nova.compute.manager [instance: 
568c6afa-d164-43fb-bd95-97f9dd48fa26] Exit code: 1
2016-10-14 13:27:20.678 63743 ERROR nova.compute.manager [instance: 
568c6afa-d164-43fb-bd95-97f9dd48fa26] Stdout: u''
2016-10-14 13:27:20.678 63743 ERROR nova.compute.manager [instance: 
568c6afa-d164-43fb-bd95-97f9dd48fa26] Stderr: u"qemu-img: Could not open 
'/var/lib/nova/instances/_base/594054a605f6d76970
2d6ab0d13ac7537a86b174.converted': Could not open 
'/var/lib/nova/instances/_base/594054a605f6d769702d6ab0d13ac7537a86b174.converted':
 No such file or directory\n"
2016-10-14 13:27:20.678 63743 ERROR nova.compute.manager [instance: 
568c6afa-d164-43fb-bd95-97f9dd48fa26]

** Affects: nova
     Importance: Undecided
     Assignee: Jakub Pavlik (pavlk-jakub)
         Status: New

** Changed in: nova
     Assignee: (unassigned) => Jakub Pavlik (pavlk-jakub)

-- 
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/1634156

Title:
  qemu-img convert image incompatability in alpine linux

Status in OpenStack Compute (nova):
  New

Bug description:
  Alpine linux runs qemu-img version 2.5.1-r4, where you cannot put
  parameter "-f qcow2" in the end of the line, because it expects
  location. Parameter must be included before source and destination.

  Step to reproduce
  ==================

  you can try it in container

  1) docker run -it gliderlabs/alpine:3.4 sh
  2) apk update; apk add qemu-img wget
  3) wget http://download.cirros-cloud.net/0.3.4/cirros-0.3.4-i386-disk.img
  4) mkdir /var/lib/nova/instances/_base/
  5) qemu-img convert -O raw cirros-0.3.4-i386-disk.img 
/var/lib/nova/instances/_base/sample -f qcow2
  qemu-img: Could not open '/var/lib/nova/instances/_base/sample': Could not 
open '/var/lib/nova/instances/_base/hovno': No such file or directory

  correct way

  qemu-img convert -f qcow2 -O raw cirros-0.3.4-i386-disk.img
  /var/lib/nova/instances/_base/sample

  I verified this on Ubuntu and Centos as well.

  Proposed change
  =================

  diff --git a/nova/virt/images.py b/nova/virt/images.py
  index 8242d2f..4e676b4 100644
  --- a/nova/virt/images.py
  +++ b/nova/virt/images.py
  @@ -96,7 +96,7 @@ def convert_image_unsafe(source, dest, out_format, 
run_as_root=False):
   def _convert_image(source, dest, in_format, out_format, run_as_root):
       cmd = ('qemu-img', 'convert', '-O', out_format, source, dest)
       if in_format is not None:
  -        cmd = cmd + ('-f', in_format)
  +        cmd = cmd[:-2] + ('-f', in_format) + cmd[-2:]
       try:
           utils.execute(*cmd, run_as_root=run_as_root)
       except processutils.ProcessExecutionError as exp:

  
  Logs error
  ==============

  2016-10-14 13:27:20.678 63743 ERROR nova.compute.manager 
[req-2d77222d-766c-41f9-86b3-57f0319ae6e9 573e69f9429749fc84d1c89d56e7ee4f 
cbf99832c4ca4feb8a17adbab21f78e7 - - -] [instance: 568c6af
  a-d164-43fb-bd95-97f9dd48fa26] Instance failed to spawn
  2016-10-14 13:27:20.678 63743 ERROR nova.compute.manager [instance: 
568c6afa-d164-43fb-bd95-97f9dd48fa26] Traceback (most recent call last):
  2016-10-14 13:27:20.678 63743 ERROR nova.compute.manager [instance: 
568c6afa-d164-43fb-bd95-97f9dd48fa26]   File 
"/opt/nova/lib/python2.7/site-packages/nova/compute/manager.py", line 2218, i
  n _build_resources
  2016-10-14 13:27:20.678 63743 ERROR nova.compute.manager [instance: 
568c6afa-d164-43fb-bd95-97f9dd48fa26]     yield resources
  2016-10-14 13:27:20.678 63743 ERROR nova.compute.manager [instance: 
568c6afa-d164-43fb-bd95-97f9dd48fa26]   File 
"/opt/nova/lib/python2.7/site-packages/nova/compute/manager.py", line 2064, i
  n _build_and_run_instance
  2016-10-14 13:27:20.678 63743 ERROR nova.compute.manager [instance: 
568c6afa-d164-43fb-bd95-97f9dd48fa26]     block_device_info=block_device_info)
  2016-10-14 13:27:20.678 63743 ERROR nova.compute.manager [instance: 
568c6afa-d164-43fb-bd95-97f9dd48fa26]   File 
"/opt/nova/lib/python2.7/site-packages/nova/virt/libvirt/driver.py", line 277
  2, in spawn
  2016-10-14 13:27:20.678 63743 ERROR nova.compute.manager [instance: 
568c6afa-d164-43fb-bd95-97f9dd48fa26]     admin_pass=admin_password)
  2016-10-14 13:27:20.678 63743 ERROR nova.compute.manager [instance: 
568c6afa-d164-43fb-bd95-97f9dd48fa26]   File 
"/opt/nova/lib/python2.7/site-packages/nova/virt/libvirt/driver.py", line 319
  0, in _create_image
  2016-10-14 13:27:20.678 63743 ERROR nova.compute.manager [instance: 
568c6afa-d164-43fb-bd95-97f9dd48fa26]     instance, size, fallback_from_host)
  2016-10-14 13:27:20.678 63743 ERROR nova.compute.manager [instance: 
568c6afa-d164-43fb-bd95-97f9dd48fa26]   File 
"/opt/nova/lib/python2.7/site-packages/nova/virt/libvirt/driver.py", line 678
  7, in _try_fetch_image_cache
  2016-10-14 13:27:20.678 63743 ERROR nova.compute.manager [instance: 
568c6afa-d164-43fb-bd95-97f9dd48fa26]     size=size)
  2016-10-14 13:27:20.678 63743 ERROR nova.compute.manager [instance: 
568c6afa-d164-43fb-bd95-97f9dd48fa26]   File 
"/opt/nova/lib/python2.7/site-packages/nova/virt/libvirt/imagebackend.py", li
  ne 251, in cache
  2016-10-14 13:27:20.678 63743 ERROR nova.compute.manager [instance: 
568c6afa-d164-43fb-bd95-97f9dd48fa26]     *args, **kwargs)
  2016-10-14 13:27:20.678 63743 ERROR nova.compute.manager [instance: 
568c6afa-d164-43fb-bd95-97f9dd48fa26]   File 
"/opt/nova/lib/python2.7/site-packages/nova/virt/libvirt/imagebackend.py", li
  ne 593, in create_image
  2016-10-14 13:27:20.678 63743 ERROR nova.compute.manager [instance: 
568c6afa-d164-43fb-bd95-97f9dd48fa26]     prepare_template(target=base, 
max_size=size, *args, **kwargs)
  2016-10-14 13:27:20.678 63743 ERROR nova.compute.manager [instance: 
568c6afa-d164-43fb-bd95-97f9dd48fa26]   File 
"/opt/nova/lib/python2.7/site-packages/oslo_concurrency/lockutils.py", line 2
  71, in inner
  2016-10-14 13:27:20.678 63743 ERROR nova.compute.manager [instance: 
568c6afa-d164-43fb-bd95-97f9dd48fa26]     return f(*args, **kwargs)
  2016-10-14 13:27:20.678 63743 ERROR nova.compute.manager [instance: 
568c6afa-d164-43fb-bd95-97f9dd48fa26]   File 
"/opt/nova/lib/python2.7/site-packages/nova/virt/libvirt/imagebackend.py", li
  ne 241, in fetch_func_sync
  2016-10-14 13:27:20.678 63743 ERROR nova.compute.manager [instance: 
568c6afa-d164-43fb-bd95-97f9dd48fa26]     fetch_func(target=target, *args, 
**kwargs)
  2016-10-14 13:27:20.678 63743 ERROR nova.compute.manager [instance: 
568c6afa-d164-43fb-bd95-97f9dd48fa26]   File 
"/opt/nova/lib/python2.7/site-packages/nova/virt/libvirt/utils.py", line 429,
   in fetch_image
  2016-10-14 13:27:20.678 63743 ERROR nova.compute.manager [instance: 
568c6afa-d164-43fb-bd95-97f9dd48fa26]     max_size=max_size)
  2016-10-14 13:27:20.678 63743 ERROR nova.compute.manager [instance: 
568c6afa-d164-43fb-bd95-97f9dd48fa26]   File 
"/opt/nova/lib/python2.7/site-packages/nova/virt/images.py", line 165, in fet
  ch_to_raw
  2016-10-14 13:27:20.678 63743 ERROR nova.compute.manager [instance: 
568c6afa-d164-43fb-bd95-97f9dd48fa26]     % {'exp': exp})
  2016-10-14 13:27:20.678 63743 ERROR nova.compute.manager [instance: 
568c6afa-d164-43fb-bd95-97f9dd48fa26] ImageUnacceptable: Image 
4c7d8a04-fcb6-4c25-bd18-749361d47637 is unacceptable: Unabl
  e to convert image to raw: Image 
/var/lib/nova/instances/_base/594054a605f6d769702d6ab0d13ac7537a86b174.part is 
unacceptable: Unable to convert image to raw: Unexpected error while running c
  ommand.
  2016-10-14 13:27:20.678 63743 ERROR nova.compute.manager [instance: 
568c6afa-d164-43fb-bd95-97f9dd48fa26] Command: qemu-img convert -O raw 
/var/lib/nova/instances/_base/594054a605f6d769702d6
  ab0d13ac7537a86b174.part 
/var/lib/nova/instances/_base/594054a605f6d769702d6ab0d13ac7537a86b174.converted
 -f qcow2
  2016-10-14 13:27:20.678 63743 ERROR nova.compute.manager [instance: 
568c6afa-d164-43fb-bd95-97f9dd48fa26] Exit code: 1
  2016-10-14 13:27:20.678 63743 ERROR nova.compute.manager [instance: 
568c6afa-d164-43fb-bd95-97f9dd48fa26] Stdout: u''
  2016-10-14 13:27:20.678 63743 ERROR nova.compute.manager [instance: 
568c6afa-d164-43fb-bd95-97f9dd48fa26] Stderr: u"qemu-img: Could not open 
'/var/lib/nova/instances/_base/594054a605f6d76970
  2d6ab0d13ac7537a86b174.converted': Could not open 
'/var/lib/nova/instances/_base/594054a605f6d769702d6ab0d13ac7537a86b174.converted':
 No such file or directory\n"
  2016-10-14 13:27:20.678 63743 ERROR nova.compute.manager [instance: 
568c6afa-d164-43fb-bd95-97f9dd48fa26]

To manage notifications about this bug go to:
https://bugs.launchpad.net/nova/+bug/1634156/+subscriptions

-- 
Mailing list: https://launchpad.net/~yahoo-eng-team
Post to     : yahoo-eng-team@lists.launchpad.net
Unsubscribe : https://launchpad.net/~yahoo-eng-team
More help   : https://help.launchpad.net/ListHelp

Reply via email to