From: Richard Jones Date: Mon, 20 Jul 2009 14:09:11 +0000 (+0100) Subject: virt-inspector --fish: Fix incorrect '-a' parameter (RHBZ#512709) X-Git-Tag: 1.0.63~16 X-Git-Url: http://git.annexia.org/?p=libguestfs.git;a=commitdiff_plain;h=7a14e0509d5cc976deda9b5299f56930e0317502;hp=06f6cc32f02c25b88e763237332b17dc7c6c6837 virt-inspector --fish: Fix incorrect '-a' parameter (RHBZ#512709) virt-inspector --fish dom virt-inspector --ro-fish dom Both of the above commands give incorrect results if run on a libvirt domain, eg: $ virt-inspector --ro-fish RHEL54Betax64 ==> --ro -a RHEL54Betax64 -m /dev/VolGroup00/LogVol00:/ -m /dev/sda1:/boot ^^^^^^^^^^^^^ This is because the current code just prints back the original @ARGV parameters. This patch fixes this by getting the image names instead. --- diff --git a/inspector/virt-inspector.pl b/inspector/virt-inspector.pl index cd53bcb..09edbae 100755 --- a/inspector/virt-inspector.pl +++ b/inspector/virt-inspector.pl @@ -207,10 +207,15 @@ pod2usage (__"virt-inspector: no image or VM names given") if @ARGV == 0; my $rw = 0; $rw = 1 if $output eq "fish"; my $g; +my @images; if ($uri) { - $g = open_guest (\@ARGV, rw => $rw, address => $uri); + my ($conn, $dom); + ($g, $conn, $dom, @images) = + open_guest (\@ARGV, rw => $rw, address => $uri); } else { - $g = open_guest (\@ARGV, rw => $rw); + my ($conn, $dom); + ($g, $conn, $dom, @images) = + open_guest (\@ARGV, rw => $rw); } $g->launch (); @@ -302,7 +307,7 @@ if ($output eq "fish" || $output eq "ro-fish") { print "--ro "; } - print "-a $_ " foreach @ARGV; + print "-a $_ " foreach @images; my $mounts = $oses->{$root_dev}->{mounts}; # Have to mount / first. Luckily '/' is early in the ASCII diff --git a/perl/lib/Sys/Guestfs/Lib.pm b/perl/lib/Sys/Guestfs/Lib.pm index f084090..a581def 100644 --- a/perl/lib/Sys/Guestfs/Lib.pm +++ b/perl/lib/Sys/Guestfs/Lib.pm @@ -78,7 +78,7 @@ use vars qw(@EXPORT_OK @ISA); $g = open_guest ([$img1, $img2, ...], address => $uri, ...); - ($g, $conn, $dom) = open_guest ($name); + ($g, $conn, $dom, @images) = open_guest ($name); This function opens a libguestfs handle for either the libvirt domain called C<$name>, or the disk image called C<$name>. Any disk images @@ -108,10 +108,10 @@ passed through to Cnew> unchanged. The implicit libvirt handle is closed after this function, I you call the function in C context, in which case the function returns a tuple of: the open libguestfs handle, the open -libvirt handle, and the open libvirt domain handle. (This is useful -if you want to do other things like pulling the XML description of the -guest). Note that if this is a straight disk image, then C<$conn> and -C<$dom> will be C. +libvirt handle, and the open libvirt domain handle, and a list of +images. (This is useful if you want to do other things like pulling +the XML description of the guest). Note that if this is a straight +disk image, then C<$conn> and C<$dom> will be C. If the C module is not available, then libvirt is bypassed, and this function can only open disk images. @@ -204,7 +204,7 @@ sub open_guest } } - return wantarray ? ($g, $conn, $dom) : $g + return wantarray ? ($g, $conn, $dom, @images) : $g } =head2 get_partitions