blob: aa98b5684946b951560de2efc457b5e3ec8ae0c0 [file] [log] [blame]
package Util;
#Holds common utility functions for MRW processing.
use strict;
use warnings;
use mrw::Targets;
#Returns the BMC target for a system.
# param[in] $targetObj = The Targets object
sub getBMCTarget
{
my ($targetObj) = @_;
for my $target (keys %{$targetObj->getAllTargets()}) {
if ($targetObj->getType($target) eq "BMC") {
return $target;
}
}
die "Could not find BMC target in the MRW XML\n";
}
#Returns an array of child units based on their Target Type.
# param[in] $targetObj = The Targets object
# param[in] $unitTargetType = The target type of the units to find
# param[in] $chip = The chip target to find the units on
sub getChildUnitsWithTargetType
{
my ($targetObj, $unitTargetType, $chip) = @_;
my @units;
my @children = $targetObj->getAllTargetChildren($chip);
for my $child (@children) {
if ($targetObj->getTargetType($child) eq $unitTargetType) {
push @units, $child;
}
}
return @units;
}
# Returns OBMC name corresponding to a Target name
# param[in] \@inventory = reference to array of inventory items
# param[in] $targetName = A Target name
sub getObmcName
{
my ($inventory_ref, $targetName) = @_;
my @inventory = @{ $inventory_ref };
for my $item (@inventory)
{
if($item->{TARGET} eq $targetName)
{
return $item->{OBMC_NAME};
}
}
return undef;
}
1;
=head1 NAME
Util
=head1 DESCRIPTION
Contains utility functions for the MRW parsers.
=head1 METHODS
=over 4
=item getBMCTarget(C<TargetsObj>)
Returns the target string for the BMC chip. If it can't find one,
it will die. Currently supports single BMC systems.
=item getChildUnitsWithTargetType(C<TargetsObj>, C<TargetType>, C<ChipTarget>)
Returns an array of targets that have target-type C<TargetType>
and are children (any level) of target C<ChipTarget>.
=item getObmcName(C<InventoryItems>, C<TargetName>)
Returns an OBMC name corresponding to a Target name. Returns
undef if the Target name is not found.
=back
=cut