Cisco-UCS
view release on metacpan or search on metacpan
lib/Cisco/UCS/Blade.pm view on Meta::CPAN
package Cisco::UCS::Blade;
use warnings;
use strict;
use Carp qw(croak);
use Scalar::Util qw(weaken);
use Cisco::UCS::Blade::Adaptor;
use Cisco::UCS::Blade::CPU;
use Cisco::UCS::Blade::PowerBudget;
use Cisco::UCS::Common::PowerStats;
our $VERSION = '0.51';
our @ATTRIBUTES = qw(association availability discovery dn model name
operability presence revision serial uuid vendor);
our %ATTRIBUTES = (
admin_state => 'adminState',
assignment => 'assignedToDn',
conn_path => 'connPath',
conn_status => 'connStatus',
cores_enabled => 'numOfCoresEnabled',
chassis => 'chassisId',
checkpoint => 'checkPoint',
description => 'descr',
id => 'slotId',
managing_instance => 'managingInst',
memory_speed => 'memorySpeed',
memory_available => 'availableMemory',
memory_total => 'totalMemory',
num_adaptors => 'numOfAdaptors',
num_cores => 'numOfCores',
num_cpus => 'numOfCpus',
num_eth_ifs => 'numOfEthHostIfs',
num_fc_ifs => 'numOfFcHostIfs',
num_threads => 'numOfThreads',
oper_power => 'operPower',
oper_state => 'operState',
server_id => 'serverId',
slot_id => 'slotId',
user_label => 'usrLbl',
uuid_original => 'originalUuid'
);
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 'dn not defined';
my %attr = %{ $self->{ucs}->resolve_dn(
dn => $self->{dn})->{outConfig}->{computeBlade}
};
while ( my ($k, $v) = each %attr ) { $self->{$k} = $v }
return $self
}
{
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 led {
my ( $self, $state ) = @_;
$state = lc $state;
$state eq 'on' || $state eq 'off' or return;
my $req = <<XML;
<configConfMos cookie="$self->{ucs}->{cookie}" inHierarchical="false">
<inConfigs>
<pair key="sys/chassis-$self->{chassisId}/blade-$self->{slotId}/locator-led">
<equipmentLocatorLed adminState="$state"
dn="sys/chassis-$self->{chassisId}/blade-$self->{slotId}/locator-led"
id="1" name="" >
</equipmentLocatorLed>
</pair>
</inConfigs>
</configConfMos>
XML
my $xml = $self->{ucs}->_ucsm_request( $req );
if ( defined $xml->{'errorCode'} ) {
my $self->{error} =
( defined $xml->{'errorDescr'}
? $xml->{'errorDescr'}
: "Unspecified error"
);
print "got error: $self->{error}\n";
return
}
( run in 1.564 second using v1.01-cache-2.11-cpan-600a1bdf6e4 )