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 )