- if ($output eq "ro-fish") {
- print "--ro ";
- }
-
- print "-a $_ " foreach @images;
-
- my $mounts = $oses->{$root_dev}->{mounts};
- # Have to mount / first. Luckily '/' is early in the ASCII
- # character set, so this should be OK.
- foreach (sort keys %$mounts) {
- print "-m $mounts->{$_}:$_ " if $_ ne "swap" && $_ ne "none";
- }
- print "\n"
-}
-
-# Perl output.
-elsif ($output eq "perl") {
- print Dumper(%$oses);
-}
-
-# YAML output
-elsif ($output eq "yaml") {
- die __"virt-inspector: no YAML support\n"
- unless exists $INC{"YAML/Any.pm"};
-
- print Dump(%$oses);
-}
-
-# Plain text output (the default).
-elsif ($output eq "text") {
- output_text ();
-}
-
-# XML output.
-elsif ($output eq "xml") {
- output_xml ();
-}
-
-# Query mode.
-elsif ($output eq "query") {
- output_query ();
-}
-
-sub output_text
-{
- output_text_os ($oses->{$_}) foreach sort keys %$oses;
-}
-
-sub output_text_os
-{
- my $os = shift;
-
- print $os->{os}, " " if exists $os->{os};
- print $os->{distro}, " " if exists $os->{distro};
- print $os->{arch}, " " if exists $os->{arch};
- print $os->{major_version} if exists $os->{major_version};
- print ".", $os->{minor_version} if exists $os->{minor_version};
- print " (", $os->{product_name}, ")" if exists $os->{product_name};
- print " ";
- print "on ", $os->{root_device}, ":\n";
-
- print __" Mountpoints:\n";
- my $mounts = $os->{mounts};
- foreach (sort keys %$mounts) {
- printf " %-30s %s\n", $mounts->{$_}, $_
- }
-
- print __" Filesystems:\n";
- my $filesystems = $os->{filesystems};
- foreach (sort keys %$filesystems) {
- print " $_:\n";
- print " label: $filesystems->{$_}{label}\n"
- if exists $filesystems->{$_}{label};
- print " UUID: $filesystems->{$_}{uuid}\n"
- if exists $filesystems->{$_}{uuid};
- print " type: $filesystems->{$_}{fstype}\n"
- if exists $filesystems->{$_}{fstype};
- print " content: $filesystems->{$_}{content}\n"
- if exists $filesystems->{$_}{content};
- }
-
- if (exists $os->{modprobe_aliases}) {
- my %aliases = %{$os->{modprobe_aliases}};
- my @keys = sort keys %aliases;
- if (@keys) {
- print __" Modprobe aliases:\n";
- foreach (@keys) {
- printf " %-30s %s\n", $_, $aliases{$_}->{modulename}
- }
- }
- }
-
- if (exists $os->{initrd_modules}) {
- my %modvers = %{$os->{initrd_modules}};
- my @keys = sort keys %modvers;
- if (@keys) {
- print __" Initrd modules:\n";
- foreach (@keys) {
- my @modules = @{$modvers{$_}};
- print " $_:\n";
- print " $_\n" foreach @modules;
- }
- }
- }
-
- print __" Applications:\n";
- my @apps = @{$os->{apps}};
- foreach (@apps) {
- print " $_->{name} $_->{version}\n"
- }
-
- if ($os->{kernels}) {
- print __" Kernels:\n";
- my @kernels = @{$os->{kernels}};
- foreach (@kernels) {
- print " $_->{version} ($_->{arch})\n";
- my @modules = @{$_->{modules}};
- foreach (@modules) {
- print " $_\n";
- }
- }
- }
-
- if (exists $os->{root}->{registry}) {
- print __" Windows Registry entries:\n";
- # These are just lumps of text - dump them out.
- foreach (@{$os->{root}->{registry}}) {
- print "$_\n";
- }
- }
-}
-
-sub output_xml
-{
- my $xml = new XML::Writer(DATA_MODE => 1, DATA_INDENT => 2);
-
- $xml->startTag("operatingsystems");
- output_xml_os ($oses->{$_}, $xml) foreach sort keys %$oses;
- $xml->endTag("operatingsystems");
-
- $xml->end();
-}
-
-sub output_xml_os
-{
- my ($os, $xml) = @_;
-
- $xml->startTag("operatingsystem");
-
- foreach ( [ "name" => "os" ],
- [ "distro" => "distro" ],
- [ "product_name" => "product_name" ],
- [ "arch" => "arch" ],
- [ "major_version" => "major_version" ],
- [ "minor_version" => "minor_version" ],
- [ "package_format" => "package_format" ],
- [ "package_management" => "package_management" ],
- [ "root" => "root_device" ] ) {
- $xml->dataElement($_->[0], $os->{$_->[1]}) if exists $os->{$_->[1]};
- }