Cisco-UCS

 view release on metacpan or  search on metacpan

lib/Cisco/UCS/Chassis.pm  view on Meta::CPAN

package Cisco::UCS::Chassis;

use warnings;
use strict;

use Cisco::UCS::FEX;
use Cisco::UCS::Common::FanModule;
use Cisco::UCS::Common::Fan;
use Cisco::UCS::Chassis::PSU;
use Cisco::UCS::Chassis::Stats;
use Carp qw(croak);
use Scalar::Util qw(weaken);
use vars qw(@ISA);

@ISA = qw(Cisco::UCS);

our $VERSION = '0.51';

our %ATTRIBUTES = (
	adminState	=> 'admin_state',
	connPath	=> 'conn_path',
	connStatus	=> 'conn_status',
	dn		=> 'dn',
	id		=> 'id',
	managingInst	=> 'managing_instance',
	model		=> 'model',
	operState	=> 'oper_state',
	operability	=> 'operability',
	power		=> 'power',
	presence	=> 'presence',
	seepromOperState=> 'seeprom_oper_state',
	serial		=> 'serial',
	thermal		=> 'thermal',
	usrLbl		=> 'label',
	vendor		=> 'vendor',
);

{
        no strict 'refs';

        while ( my ($attribute, $pseudo) = each %ATTRIBUTES ) {
                *{ __PACKAGE__ . '::' . $pseudo } = 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}->{equipmentChassis}};

	while ( my ($k, $v) = each %attr ) { $self->{$k} = $v }

	return $self;
}

sub blade {
	my ( $self, $id ) = @_;

	return ( 
		defined $self->{blade}->{$id}
			? $self->{blade}->{$id}
			: $self->get_blades( $id ) 
	)
}

sub get_blade {
	my ( $self, $id ) = @_;

	return (	
		$id	? $self->get_blades( $id ) 
			: undef 
	)
}

sub get_blades {
        my ( $self, $id ) = @_;

	return $self->_get_child_objects(
			id		=> $id,
			type		=> 'computeBlade', 
			class		=> 'Cisco::UCS::Blade', 
			attr		=> 'blade', 
			uid		=> 'slotId',
			class_filter	=> { 
					    classId   => 'computeBlade',
					    chassisId => $self->{id} 
					  } 
	)
}

sub fex {
	my ( $self, $id ) = @_;

	return ( 
		defined $self->{fex}->{$id} 
			? $self->{fex}->{$id}
			: $self->get_fexs( $id ) 
	)
}

sub get_fex {
	my ( $self, $id ) = @_;

	return ( 



( run in 2.164 seconds using v1.01-cache-2.11-cpan-75ffa21a3d4 )