From: Richard Jones Date: Thu, 9 Jul 2009 13:35:34 +0000 (+0100) Subject: Move 'get_partitions' call into Sys::Guestfs::Lib. X-Git-Tag: 1.0.57~15 X-Git-Url: http://git.annexia.org/?p=libguestfs.git;a=commitdiff_plain;h=7058e5c63ecc8ed41c9fcc011fbe215bad6f6369 Move 'get_partitions' call into Sys::Guestfs::Lib. --- diff --git a/inspector/virt-inspector.pl b/inspector/virt-inspector.pl index 2922ecc..5b225b2 100755 --- a/inspector/virt-inspector.pl +++ b/inspector/virt-inspector.pl @@ -20,7 +20,7 @@ use warnings; use strict; use Sys::Guestfs; -use Sys::Guestfs::Lib qw(open_guest); +use Sys::Guestfs::Lib qw(open_guest get_partitions); use Pod::Usage; use Getopt::Long; use Data::Dumper; @@ -212,21 +212,6 @@ if ($uri) { $g->launch (); $g->wait_ready (); -# We want to get the list of LVs and partitions (ie. anything that -# could contain a filesystem). Discard any partitions which are PVs. -my @partitions = $g->list_partitions (); -my @pvs = $g->pvs (); -sub is_pv { - my $t = shift; - foreach (@pvs) { - return 1 if $_ eq $t; - } - 0; -} -@partitions = grep { ! is_pv ($_) } @partitions; - -my @lvs = $g->lvs (); - =head1 OUTPUT FORMAT Operating system(s) @@ -270,7 +255,7 @@ right place. For example: =cut # List of possible filesystems. -my @devices = sort (@lvs, @partitions); +my @devices = get_partitions ($g); # Now query each one to build up a picture of what's in it. my %fses = map { $_ => check_fs ($_) } @devices; diff --git a/perl/lib/Sys/Guestfs/Lib.pm b/perl/lib/Sys/Guestfs/Lib.pm index ae49740..75b2056 100644 --- a/perl/lib/Sys/Guestfs/Lib.pm +++ b/perl/lib/Sys/Guestfs/Lib.pm @@ -58,7 +58,7 @@ require Exporter; use vars qw(@EXPORT_OK @ISA); @ISA = qw(Exporter); -@EXPORT_OK = qw(open_guest); +@EXPORT_OK = qw(open_guest get_partitions); =head2 open_guest @@ -182,6 +182,43 @@ sub open_guest return wantarray ? ($g, $conn, $dom) : $g } +=head2 get_partitions + + @partitions = get_partitions ($g); + +This function takes an open libguestfs handle C<$g> and returns all +partitions and logical volumes found on it. + +What is returned is everything that could contain a filesystem (or +swap). Physical volumes are excluded from the list, and so are any +devices which are partitioned (eg. C would not be returned +if C exists). + +=cut + +sub get_partitions +{ + my $g = shift; + + my @partitions = $g->list_partitions (); + my @pvs = $g->pvs (); + @partitions = grep { ! is_pv ($_, @pvs) } @partitions; + + my @lvs = $g->lvs (); + + return sort (@lvs, @partitions); +} + +sub is_pv { + local $_; + my $t = shift; + + foreach (@_) { + return 1 if $_ eq $t; + } + 0; +} + 1; =head1 COPYRIGHT