Richard W.M. Jones
2010-May-12 17:15 UTC
[Libguestfs] [PATCH] Improved error if virt-inspector cannot find OSes in image (RHBZ#591142).
-- Richard Jones, Virtualization Group, Red Hat http://people.redhat.com/~rjones New in Fedora 11: Fedora Windows cross-compiler. Compile Windows programs, test, and build Windows installers. Over 70 libraries supprt'd http://fedoraproject.org/wiki/MinGW http://www.annexia.org/fedora_mingw -------------- next part -------------->From 01623099b24d3ec28c8123407180f9d42755386c Mon Sep 17 00:00:00 2001From: Richard Jones <rjones at redhat.com> Date: Wed, 12 May 2010 18:11:37 +0100 Subject: [PATCH] Improved error if virt-inspector cannot find OSes in image (RHBZ#591142). --- perl/lib/Sys/Guestfs/Lib.pm | 10 ++++++++-- tools/virt-cat | 1 - tools/virt-edit | 1 - tools/virt-ls | 1 - tools/virt-tar | 1 - tools/virt-win-reg | 1 - 6 files changed, 8 insertions(+), 7 deletions(-) diff --git a/perl/lib/Sys/Guestfs/Lib.pm b/perl/lib/Sys/Guestfs/Lib.pm index fc3163f..2c5c837 100644 --- a/perl/lib/Sys/Guestfs/Lib.pm +++ b/perl/lib/Sys/Guestfs/Lib.pm @@ -25,7 +25,7 @@ use warnings; # make a change which is not backwards compatible. It is not related # to the libguestfs version number. use vars qw($VERSION); -$VERSION = '0.1'; +$VERSION = '0.2'; use Carp qw(croak); @@ -1119,7 +1119,8 @@ like: '/dev/VG/Root' => \%os, } -(There can be multiple roots for a multi-boot VM). +There can be multiple roots for a multi-boot VM, but this function +will throw an error if no roots (ie. OSes) could be found. The C<\%os> hash contains the following keys (any can be omitted): @@ -1202,6 +1203,11 @@ sub inspect_operating_systems } } + # If we didn't find any operating systems then it's an error (RHBZ#591142). + if (0 == keys %oses) { + die __"No operating system could be detected inside this disk image.\n\nThis may be because the file is not a disk image, or is not a virtual machine\nimage, or because the OS type is not understood by virt-inspector.\n\nIf you feel this is an error, please file a bug report including as much\ninformation about the disk image as possible.\n"; + } + return \%oses; } diff --git a/tools/virt-cat b/tools/virt-cat index c8cdd19..e000e25 100755 --- a/tools/virt-cat +++ b/tools/virt-cat @@ -150,7 +150,6 @@ my %fses my $oses = inspect_operating_systems ($g, \%fses); my @roots = keys %$oses; -die __"no root device found in this operating system image" if @roots == 0; die __"multiboot operating systems are not supported by virt-cat" if @roots > 1; my $root_dev = $roots[0]; diff --git a/tools/virt-edit b/tools/virt-edit index c133e6a..e00e4cf 100755 --- a/tools/virt-edit +++ b/tools/virt-edit @@ -133,7 +133,6 @@ my %fses my $oses = inspect_operating_systems ($g, \%fses); my @roots = keys %$oses; -die __"no root device found in this operating system image" if @roots == 0; die __"multiboot operating systems are not supported by virt-edit" if @roots > 1; my $root_dev = $roots[0]; diff --git a/tools/virt-ls b/tools/virt-ls index 8add52e..8813d2f 100755 --- a/tools/virt-ls +++ b/tools/virt-ls @@ -183,7 +183,6 @@ my %fses my $oses = inspect_operating_systems ($g, \%fses); my @roots = keys %$oses; -die __"no root device found in this operating system image\n" if @roots == 0; die __"multiboot operating systems are not supported by virt-ls\n" if @roots > 1; my $root_dev = $roots[0]; diff --git a/tools/virt-tar b/tools/virt-tar index 839ff8e..07c65f4 100755 --- a/tools/virt-tar +++ b/tools/virt-tar @@ -227,7 +227,6 @@ my %fses my $oses = inspect_operating_systems ($g, \%fses); my @roots = keys %$oses; -die __"no root device found in this operating system image\n" if @roots == 0; die __"multiboot operating systems are not supported by virt-tar\n" if @roots > 1; my $root_dev = $roots[0]; diff --git a/tools/virt-win-reg b/tools/virt-win-reg index 74881b6..afa8087 100755 --- a/tools/virt-win-reg +++ b/tools/virt-win-reg @@ -280,7 +280,6 @@ my %fses my $oses = inspect_operating_systems ($g, \%fses); my @roots = keys %$oses; -die __"no root device found in this operating system image" if @roots == 0; die __"multiboot operating systems are not supported by virt-win-reg" if @roots > 1; my $root_dev = $roots[0]; -- 1.6.6.1
Matthew Booth
2010-May-13 14:23 UTC
[Libguestfs] [PATCH] Improved error if virt-inspector cannot find OSes in image (RHBZ#591142).
On 12/05/10 18:15, Richard W.M. Jones wrote:>>From 01623099b24d3ec28c8123407180f9d42755386c Mon Sep 17 00:00:00 2001 > From: Richard Jones <rjones at redhat.com> > Date: Wed, 12 May 2010 18:11:37 +0100 > Subject: [PATCH] Improved error if virt-inspector cannot find OSes in image (RHBZ#591142). > > --- > perl/lib/Sys/Guestfs/Lib.pm | 10 ++++++++-- > tools/virt-cat | 1 - > tools/virt-edit | 1 - > tools/virt-ls | 1 - > tools/virt-tar | 1 - > tools/virt-win-reg | 1 - > 6 files changed, 8 insertions(+), 7 deletions(-)ACK. Matt -- Matthew Booth, RHCA, RHCSS Red Hat Engineering, Virtualisation Team M: +44 (0)7977 267231 GPG ID: D33C3490 GPG FPR: 3733 612D 2D05 5458 8A8A 1600 3441 EA19 D33C 3490