1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103
|
package FusionInventory::Agent::Task::Inventory::AIX;
use strict;
use warnings;
use English qw(-no_match_vars);
use List::Util qw(first);
use FusionInventory::Agent::Tools;
use FusionInventory::Agent::Tools::AIX;
our $runAfter = ["FusionInventory::Agent::Task::Inventory::Generic"];
sub isEnabled {
return $OSNAME eq 'aix';
}
sub doInventory {
my (%params) = @_;
my $inventory = $params{inventory};
my $logger = $params{logger};
# Operating system informations
my $OSName = getFirstLine(command => 'uname -s');
my $OSVersion = getFirstLine(command => 'oslevel');
$OSVersion =~ s/(.0)*$//;
my $OSLevel = getFirstLine(command => 'oslevel -r');
my @OSLevelParts = split(/-/, $OSLevel);
my $Revision = getFirstLine(command => 'oslevel -s');
my @RevisionParts = split(/-/, $Revision);
my $ssn;
my $vmsystem;
my $vmid;
my $vmname;
my $vmhostserial;
my @infos = getLsvpdInfos(logger => $logger);
# Get the BIOS version from the System Microcode Image (MI) version, in
# 'System Firmware' section of VPD, containing three space separated values:
# - the microcode image the system currently runs
# - the 'permanent' microcode image
# - the 'temporary' microcode image
# See http://www.systemscanaix.com/sample_reports/aix61/hardware_configuration.html
my $bios_version;
my $system = first { $_->{DS} eq 'System Firmware' } @infos;
if ($system) {
# we only return the currently booted firmware
my @firmwares = split(' ', $system->{MI});
$bios_version = $firmwares[0];
}
my $vpd = first { $_->{DS} eq 'System VPD' } @infos;
my $unameL = getFirstLine(command => 'uname -L');
# LPAR partition can access the serial number of the host computer
# If we are such system, the serial number must be stored in the
# VMHOSTSERIAL key.
if ($unameL && $unameL =~ /^(\d+)\s+(\S+)/) {
$vmsystem = "AIX_LPAR";
$vmid = $1;
$vmname = $2;
$vmhostserial = $vpd->{SE};
$ssn = "aixlpar-$vmhostserial-$vmid";
} else {
$ssn = $vpd->{SE};
}
$inventory->setHardware({
OSNAME => "$OSName $OSVersion",
OSVERSION => $OSLevel,
OSCOMMENTS => "Maintenance Level: $OSLevelParts[1]",
VMID => $vmid,
VMNAME => $vmname,
VMSYSTEM => $vmsystem,
VMHOSTSERIAL => $vmhostserial
});
$inventory->setOperatingSystem({
NAME => "AIX",
VERSION => $OSVersion,
SERVICE_PACK => "$RevisionParts[2]-$RevisionParts[3]",
FULL_NAME => "$OSName $OSVersion"
});
$inventory->setBios({
BMANUFACTURER => 'IBM',
SMANUFACTURER => 'IBM',
SMODEL => $vpd->{TM},
SSN => $ssn,
BVERSION => $bios_version,
});
}
1;
|