- 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]};
- }
-
- $xml->startTag("mountpoints");
- my $mounts = $os->{mounts};
- foreach (sort keys %$mounts) {
- $xml->dataElement("mountpoint", $_, "dev" => $mounts->{$_});
- }
- $xml->endTag("mountpoints");
-
- $xml->startTag("filesystems");
- my $filesystems = $os->{filesystems};
- foreach (sort keys %$filesystems) {
- $xml->startTag("filesystem", "dev" => $_);
-
- foreach my $field ( [ "label" => "label" ],
- [ "uuid" => "uuid" ],
- [ "type" => "fstype" ],
- [ "content" => "content" ],
- [ "spec" => "spec" ] ) {
- $xml->dataElement($field->[0], $filesystems->{$_}{$field->[1]})
- if exists $filesystems->{$_}{$field->[1]};
- }
-
- $xml->endTag("filesystem");
- }
- $xml->endTag("filesystems");
-
- if (exists $os->{modprobe_aliases}) {
- my %aliases = %{$os->{modprobe_aliases}};
- my @keys = sort keys %aliases;
- if (@keys) {
- $xml->startTag("modprobealiases");
- foreach (@keys) {
- $xml->startTag("alias", "device" => $_);
-
- foreach my $field ( [ "modulename" => "modulename" ],
- [ "augeas" => "augeas" ],
- [ "file" => "file" ] ) {
- $xml->dataElement($field->[0], $aliases{$_}->{$field->[1]});
- }
-
- $xml->endTag("alias");
- }
- $xml->endTag("modprobealiases");
- }
- }
-
- if (exists $os->{initrd_modules}) {
- my %modvers = %{$os->{initrd_modules}};
- my @keys = sort keys %modvers;
- if (@keys) {
- $xml->startTag("initrds");
- foreach (@keys) {
- my @modules = @{$modvers{$_}};
- $xml->startTag("initrd", "version" => $_);
- $xml->dataElement("module", $_) foreach @modules;
- $xml->endTag("initrd");
- }
- $xml->endTag("initrds");
- }
- }