On Wed, Apr 13, 2022 at 09:05:34AM +0200, Laszlo Ersek wrote:
> The openstack output module currently passes the "--non-bootable" and
> "--read-write" options to the "openstack volume create" command. There is
> a bug in the "openstack" utility however (that is, in the
> python-openstackclient project @ dabaec5a7b1b) where it assumes that the
> image creation API blocks, and as soon as it completes, the readonly and
> bootable flags can be tweaked with the APIs that exist for those purposes.
> 
> The image creation API does not block however, and when the "openstack"
> command line utility tries to set the readonly & bootable flags, those
> APIs fail because image creation is still in progress. This results in an
> obscure error message on the virt-v2v standard error:
> 
> > [ 322.8] Initializing the target -o openstack
> > openstack [...] volume create -f json --size 20 --description virt-v2v
> > temporary volume for esx6.7-win2016-x86_64 --non-bootable --read-write
> > esx6.7-win2016-x86_64-sda
> > Failed to set volume read-only access mode flag: Invalid volume: Volume
> > 009dc6bd-2f80-4ac3-b5e7-771863aca237 status must be available to update
> > readonly flag, but current status is: creating. (HTTP 400) (Request-ID:
> > req-6f56ce4c-249b-4112-9c52-dd91b7f5aae9)
> 
> Given that "--non-bootable" and "--read-write" are both defaults for VM
> image creation, according to
> <https://docs.openstack.org/python-openstackclient/yoga/cli/command-objects/volume.html>,
> work the symptom around by simply not passing these options.
> 
> (Tested only with "make check"; I don't have an Openstack setup.)
> 
> Bugzilla: https://bugzilla.redhat.com/show_bug.cgi?id=2074801
> Signed-off-by: Laszlo Ersek <[email protected]>
> ---
>  output/output_openstack.ml | 4 +---
>  1 file changed, 1 insertion(+), 3 deletions(-)
> 
> diff --git a/output/output_openstack.ml b/output/output_openstack.ml
> index d0af2ac79e7e..aa01d5a67c50 100644
> --- a/output/output_openstack.ml
> +++ b/output/output_openstack.ml
> @@ -277,9 +277,7 @@ The os-* parameters and environment variables are 
> optional.
>        List.push_back_list args [ "volume"; "create";
>                                   "-f"; "json";
>                                   "--size"; size_gb;
> -                                 "--description"; description;
> -                                 "--non-bootable";
> -                                 "--read-write" ];
> +                                 "--description"; description ];
>        Option.may (
>          fun os -> List.push_back_list args [ "--type"; os ]
>        ) output_storage;

Looks sensible, so:

Reviewed-by: Richard W.M. Jones <[email protected]>

Rich.

-- 
Richard Jones, Virtualization Group, Red Hat http://people.redhat.com/~rjones
Read my programming and virtualization blog: http://rwmj.wordpress.com
Fedora Windows cross-compiler. Compile Windows programs, test, and
build Windows installers. Over 100 libraries supported.
http://fedoraproject.org/wiki/MinGW
_______________________________________________
Libguestfs mailing list
[email protected]
https://listman.redhat.com/mailman/listinfo/libguestfs

Reply via email to