Matthew Booth
2011-Apr-21 17:01 UTC
[Libguestfs] [PATCH] v2v: Filter out the transfer iso if it's returned by inspect_os()
inspect_os() shouldn't do this, but ultimately it's heuristic. As we know what the transfer device is, we can double-check the output. --- v2v/virt-v2v.pl | 18 +++++++++++++++++- 1 files changed, 17 insertions(+), 1 deletions(-) diff --git a/v2v/virt-v2v.pl b/v2v/virt-v2v.pl index fe07ae9..6e73102 100755 --- a/v2v/virt-v2v.pl +++ b/v2v/virt-v2v.pl @@ -496,11 +496,18 @@ my $g = new Sys::VirtConvert::GuestfsHandle( $output_method eq 'rhev' ); +# Get the name of the appliance's transfer device, if it has one +my $transferdev; +if (defined($transferiso)) { + my @devices = $g->list_devices(); + $transferdev = pop(@devices); +} + my $guestcaps; my $desc; eval { # Inspect the guest - $desc = inspect_guest($g); + $desc = inspect_guest($g, $transferdev); # Modify the guest and its metadata $guestcaps @@ -559,9 +566,18 @@ sub signal_exit sub inspect_guest { my $g = shift; + my $transferdev = shift; # Get list of roots, sorted. my @roots = $g->inspect_os (); + + # Filter out the transfer device from the results of inspect_os + # There's a libguestfs bug (fixed upstream) which meant the transfer ISO + # could be erroneously detected as an unknown Windows OS. As we know what it + # is, we can filter out the transfer device here. Even when the fix is + # released this is reasonable belt & braces. + @roots = grep(!/^\Q$transferdev\E$/, @roots); + @roots = sort @roots; my $root_dev; -- 1.7.4.4
Richard W.M. Jones
2011-Apr-21 20:58 UTC
[Libguestfs] [PATCH] v2v: Filter out the transfer iso if it's returned by inspect_os()
On Thu, Apr 21, 2011 at 06:01:24PM +0100, Matthew Booth wrote:> inspect_os() shouldn't do this, but ultimately it's heuristic. As we know what > the transfer device is, we can double-check the output. > --- > v2v/virt-v2v.pl | 18 +++++++++++++++++- > 1 files changed, 17 insertions(+), 1 deletions(-) > > diff --git a/v2v/virt-v2v.pl b/v2v/virt-v2v.pl > index fe07ae9..6e73102 100755 > --- a/v2v/virt-v2v.pl > +++ b/v2v/virt-v2v.pl > @@ -496,11 +496,18 @@ my $g = new Sys::VirtConvert::GuestfsHandle( > $output_method eq 'rhev' > ); > > +# Get the name of the appliance's transfer device, if it has one > +my $transferdev; > +if (defined($transferiso)) { > + my @devices = $g->list_devices(); > + $transferdev = pop(@devices); > +} > + > my $guestcaps; > my $desc; > eval { > # Inspect the guest > - $desc = inspect_guest($g); > + $desc = inspect_guest($g, $transferdev); > > # Modify the guest and its metadata > $guestcaps > @@ -559,9 +566,18 @@ sub signal_exit > sub inspect_guest > { > my $g = shift; > + my $transferdev = shift; > > # Get list of roots, sorted. > my @roots = $g->inspect_os (); > + > + # Filter out the transfer device from the results of inspect_os > + # There's a libguestfs bug (fixed upstream) which meant the transfer ISO > + # could be erroneously detected as an unknown Windows OS. As we know what it > + # is, we can filter out the transfer device here. Even when the fix is > + # released this is reasonable belt & braces. > + @roots = grep(!/^\Q$transferdev\E$/, @roots); > + > @roots = sort @roots; > > my $root_dev;ACK. Rich. -- Richard Jones, Virtualization Group, Red Hat http://people.redhat.com/~rjones Read my programming blog: http://rwmj.wordpress.com Fedora now supports 80 OCaml packages (the OPEN alternative to F#) http://cocan.org/getting_started_with_ocaml_on_red_hat_and_fedora
Seemingly Similar Threads
- [PATCH] v2v: More accurately match root choice specified as a specific device
- [PATCH 1/7] Push $desc creation into Sys::VirtConvert::Converter->convert
- [PATCH] Improve cleanup of libguestfs handle with Sys::VirtV2V::GuestfsHandle
- [PATCH] virt-v2v: Add verbose message logging
- [PATCH 1/3] Fix RHEV cleanup on unclean shutdown