Cisco-UCS
view release on metacpan or search on metacpan
lib/Cisco/UCS/Common/FanModule.pm view on Meta::CPAN
package Cisco::UCS::Common::FanModule;
use warnings;
use strict;
use Carp qw(croak);
use Scalar::Util qw(weaken);
our $VERSION = '0.51';
our @ATTRIBUTES = qw(dn id model operability power presence revision serial
thermal tray vendor voltage);
our %ATTRIBUTES = (
performance => 'perf',
oper_state => 'operState'
);
{
no strict 'refs';
while ( my ( $pseudo, $attribute ) = each %ATTRIBUTES ) {
*{ __PACKAGE__ . '::' . $pseudo } = sub {
my $self = shift;
return $self->{$attribute}
}
}
foreach my $attribute ( @ATTRIBUTES ) {
*{ __PACKAGE__ . '::' . $attribute } = sub {
my $self = shift;
return $self->{$attribute}
}
}
}
sub new {
my ( $class, %args ) = @_;
my $self = {};
bless $self, $class;
defined $args{dn}
? $self->{dn} = $args{dn}
: croak 'dn not defined';
defined $args{ucs}
? weaken($self->{ucs} = $args{ucs})
: croak 'ucs not defined';
my %attr = %{ $self->{ucs}->resolve_dn(
dn => $self->{dn}
)->{outConfig}->{equipmentFanModule} };
while ( my ( $k, $v ) = each %attr ) { $self->{$k} = $v }
return $self;
}
sub fan {
my ( $self, $id ) = @_;
return ( defined $self->{fan}->{$id}
? $self->{fan}->{$id}
: $self->get_fan($id)
)
}
sub get_fan {
my ( $self, $id ) = @_;
return $self->get_fans( $id )
}
sub get_fans {
my ( $self, $id ) = @_;
return $self->{ucs}->_get_child_objects(
id => $id,
type => 'equipmentFan',
class => 'Cisco::UCS::Common::Fan',
attr => 'fan',
self => $self
)
}
1;
__END__
=pod
=head1 NAME
Cisco::UCS::Common::FanModule - Class for operations with a Cisco UCS Fan
Module.
=cut
=head1 SYNOPSIS
print "Fan module " . $ucs->chassis(1)->fan_module(1)->id .
" thermal: " . $ucs->chassis(1)->fan_module(1)->thermal . "\n";
my @fans = $ucs->chassis(1)->fan_module(1)->get_fans;
=head1 DESCRIPTION
( run in 2.250 seconds using v1.01-cache-2.11-cpan-39bf76dae61 )