AIX-ODM
view release on metacpan or search on metacpan
# @EXPORT_OK = ( @{ $EXPORT_TAGS{'all'} } );
@EXPORT = qw( odm_dump );
$VERSION = "1.0.2";
#======================================================================
$^O =~ /aix/i || die "This module only runs on AIX systems.\n";
sub odm_classes {
my ${corp} = ${_[0]}?${_[0]}:'C';
my @classes;
my @devlist;
my $class;
my $devname;
my %dev;
# Retrieve the list of classes from the ODM
@classes = `lsdev -${corp} -r class`;
foreach ${class} (@classes) {
chomp(${class});
# Retrieve the list of devices associated with each class from the ODM
@devlist = `lsdev -Cc ${class} -F name`;
foreach ${devname} (@devlist) {
chomp(${devname});
${dev{${devname}}} = ${class};
}
}
return %dev;
};
################################################################
sub odm_class {
my ${corp} = ${_[0]}?${_[0]}:'C';
return -1 if ( ${corp} ne 'C' );
return -1 if (!${_[1]});
# Retrieve the class of a device from the ODM
my ${devclass} = `lsdev -${corp} -r class -l ${_[1]}`;
chomp(${devclass});
return ${devclass};
};
################################################################
sub odm_subclass {
my ${corp} = ${_[0]}?${_[0]}:'C';
return -1 if ( ${corp} ne 'C' );
return -1 if (!${_[1]});
# Retrieve the subclass of a device from the ODM
my ${devsub} = `lsdev -${corp} -r subclass -l ${_[1]}`;
chomp(${devsub});
return ${devsub};
};
################################################################
sub odm_attributes {
my @{line};
my ${ndx};
my ${aname};
my %attrib;
# Retrieve the attributes associated with the device from the ODM
# Two lines are returned, the attribute names are returned on the
# first line, the attribute values returned on the second.
my @lines = `lsattr -EOl ${_[0]}`;
my (@attr_valu) = split(/:/,${lines[1]});
${ndx} = 0;
foreach ${aname} (@attr_name) {
${attrib{${aname}}} = ${attr_valu[${ndx}]};
${ndx} = ${ndx} + 1;
}
return %{attrib};
};
################################################################
sub odm_dump {
# Create a hash of devices by their associated class
my ${corp} = ${_[0]}?${_[0]}:'C';
my %devlist = &odm_classes(${corp});
my %attrout;
my %devices;
my $ndx;
my $subndx;
foreach $ndx (keys %devlist) {
# create a hash of attributes associated with each device
%{attrout} = &odm_attributes(${ndx});
( run in 0.274 second using v1.01-cache-2.11-cpan-4d50c553e7e )