[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]

[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
>From 01623099b24d3ec28c8123407180f9d42755386c Mon Sep 17 00:00:00 2001
From: Richard Jones <rjones 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


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]