Cisco-UCS

 view release on metacpan or  search on metacpan

lib/Cisco/UCS/Blade/Adaptor.pm  view on Meta::CPAN

package Cisco::UCS::Blade::Adaptor;

use strict;
use warnings;

use Scalar::Util qw(weaken);

our $VERSION = '0.51';

our %V_MAP = (
	'adminPowerState'	=> 'admin_pwoer_state',
	'baseMac'		=> 'base_mac',
	'bladeId'		=> 'blade_id',
	'chassisId'		=> 'chassis_id',
	'connPath'		=> 'conn_path',
	'connStatus'		=> 'conn_status',
	'dn'			=> 'dn',
	'integrated'		=> 'integrated',
	'managingInst'		=> 'managing_instance',
	'model'			=> 'model',
	'operability'		=> 'operability',
	'operState'		=> 'oper_state',
	'pciSlot'		=> 'pci_slot',
	'partNumber'		=> 'part_number',
	'pciAddr'		=> 'pci_addr',
	'perf'			=> 'perf',
	'power'			=> 'power',
	'presence'		=> 'presence',
	'reachability'		=> 'reachability',
	'revision'		=> 'revision',
	'serial'		=> 'serial',
	'thermal'		=> 'thermal',
	'voltage'		=> 'voltage',
	'vendor'		=> 'vendor'
);

{ no strict 'refs';

        while ( my ($attribute, $pseudo) = each %V_MAP ) { 
                *{ __PACKAGE__ .'::'. $pseudo } = sub {
                        my $self = shift;
                        return $self->{$attribute}
                }   
        }   
}

sub new {
        my ( $class, $ucs, $args ) = @_; 

        my $self = bless {}, $class;
	weaken( $self->{ucs} = $ucs );
            
        foreach my $var ( keys %$args ) {
                $self->{ $var } = $args->{ $var };
        }

        return $self
}

sub env_stats {
        my $self = shift;

        return Cisco::UCS::Common::EnvironmentalStats->new(
                $self->{ucs}->resolve_dn( 
				dn => "$self->{dn}/env-stats" 
			)->{outConfig}->{processorEnvStats} 
	)
}

1;

__END__

=pod

=head1 NAME

Cisco::UCS::Blade::CPU - Class for operations with a Cisco UCS Blade CPUs.

=cut

=head1 SYNOPSIS

	# Print all blades in all chassis along with a cacti-style listing of 
	# the blades current, minimum and maximum power consumption values.

	map { 
		print "Chassis: " . $_->id ."\n";
		map { print "\tCommon::PowerStats: "
			  . $_->id ." - Power consumed -"
			  . " Current:". $_->power_stats->consumed_power 
			  . " Max:". $_->power_stats->consumed_power_max 
			  . " Min:". $_->power_stats->consumed_power_min ."\n" 
		} 
		sort { $a->id <=> $b->id } $_->get_blades
	} 
	sort { 
		$a->id <=> $b->id 
	} $ucs->get_chassiss;

	# Prints something like:
	#
	# Chassis: 1
	#	Blade: 1 - Power consumed - Current:115.656647 Max:120.913757 Min:110.399513
	#	Blade: 2 - Power consumed - Current:131.427994 Max:139.313675 Min:126.170883
	#	Blade: 3 - Power consumed - Current:131.427994 Max:157.713593 Min:126.170883
	#	Blade: 4 - Power consumed - Current:0.000000 Max:0.000000 Min:0.000000
	#	Blade: 5 - Power consumed - Current:0.000000 Max:0.000000 Min:0.000000
	#	Blade: 6 - Power consumed - Current:0.000000 Max:0.000000 Min:0.000000
	#	Blade: 7 - Power consumed - Current:0.000000 Max:0.000000 Min:0.000000
	#	Blade: 8 - Power consumed - Current:0.000000 Max:0.000000 Min:0.000000



( run in 1.274 second using v1.01-cache-2.11-cpan-600a1bdf6e4 )