Cisco-UCS
view release on metacpan or search on metacpan
lib/Cisco/UCS/Common/EthernetPort.pm view on Meta::CPAN
package Cisco::UCS::Common::EthernetPort;
use warnings;
use strict;
use Carp qw(croak);
use Scalar::Util qw(weaken);
our $VERSION = '0.51';
our @ATTRIBUTES = qw( dn epDn mac mode type);
our %ATTRIBUTES = (
admin_state => 'adminState',
chassis_id => 'chassisId',
if_role => 'ifRole',
if_type => 'ifType',
label => 'usrLabel',
license_state => 'licState',
oper_state => 'operState',
oper_speed => 'operSpeed',
peer_dn => 'peerDn',
peer_port_id => 'peerPortId',
rcvr_type => 'xcvrType',
switch_id => 'switchId',
id => 'portId'
);
our %STATS = (
err => 'etherErrStats',
rx => 'etherRxStats',
tx => 'etherTxStats'
);
our %TX_STATS = our %RX_STATS = (
intervals => 'intervals',
timestamp => 'timeCollected',
suspect => 'suspect',
update => 'update',
broadcast_packets => 'broadcastPackets',
broadcast_packets_delta => 'broadcastPacketsDelta',
broadcast_packets_delta_avg => 'broadcastPacketsDeltaAvg',
broadcast_packets_delta_min => 'broadcastPacketsDeltaMin',
broadcast_packets_delta_max => 'broadcastPacketsDeltaMax',
jumbo_packets => 'jumboPackets',
jumbo_packets_delta => 'jumboPacketsDelta',
jumbo_packets_delta_avg => 'jumboPacketsDeltaAvg',
jumbo_packets_delta_min => 'jumboPacketsDeltaMin',
jumbo_packets_delta_max => 'jumboPacketsDeltaMax',
multicast_packets => 'multicastPackets',
multicast_packets_delta => 'multicastPacketsDelta',
multicast_packets_delta_avg => 'multicastPacketsDeltaAvg',
multicast_packets_delta_min => 'multicastPacketsDeltaMin',
multicast_packets_delta_max => 'multicastPacketsDeltaMax',
total_bytes => 'totalBytes',
total_bytes_delta => 'totalBytesDelta',
total_bytes_delta_avg => 'totalBytesDeltaAvg',
total_bytes_delta_min => 'totalBytesDeltaMin',
total_bytes_delta_max => 'totalBytesDeltaMax',
total_packets => 'totalPackets',
total_packets_delta => 'totalPacketsDelta',
total_packets_delta_avg => 'totalPacketsDeltaAvg',
total_packets_delta_min => 'totalPacketsDeltaMin',
total_packets_delta_max => 'totalPacketsDeltaMax',
unicast_packets => 'unicastPackets',
unicast_packets_delta => 'unicastPacketsDelta',
unicast_packets_delta_avg => 'unicastPacketsDeltaAvg',
lib/Cisco/UCS/Common/EthernetPort.pm view on Meta::CPAN
suspect => 'suspect',
timestamp => 'timeCollected',
align => 'align',
align_delta => 'alignDelta',
align_delta_avg => 'alignDeltaAvg',
align_delta_min => 'alignDeltaMin',
align_delta_max => 'alignDeltaMax',
deferred_tx => 'deferredTx',
deferred_tx_delta => 'deferredTxDelta',
deferred_tx_delta_avg => 'deferredTxDeltaAvg',
deferred_tx_delta_min => 'deferredTxDeltaMin',
deferred_tx_delta_max => 'deferredTxDeltaMax',
fcs => 'fcs',
fcs_delta => 'fcsDelta',
fcs_delta_avg => 'fcsDeltaAvg',
fcs_delta_min => 'fcsDeltaMin',
fcs_delta_max => 'fcsDeltaMax',
int_mac_tx => 'intMacTx',
int_mac_tx_delta => 'intMacTxDelta',
int_mac_tx_delta_avg => 'intMacTxDeltaAvg',
int_mac_tx_delta_min => 'intMacTxDeltaMin',
int_mac_tx_delta_max => 'intMacTxDeltaMax',
int_mac_rx => 'intMacRx',
int_mac_rx_delta => 'intMacRxDelta',
int_mac_rx_delta_avg => 'intMacRxDeltaAvg',
int_mac_rx_delta_min => 'intMacRxDeltaMin',
int_mac_rx_delta_max => 'intMacRxDeltaMax',
out_discard => 'outDiscard',
out_discard_delta => 'outDiscardDelta',
out_discard_delta_avg => 'outDiscardDeltaAvg',
out_discard_delta_min => 'outDiscardDeltaMin',
out_discard_delta_max => 'outDiscardDeltaMax',
rcv => 'rcv',
rcv_delta => 'rcvDelta',
rcv_delta_avg => 'rcvDeltaAvg',
rcv_delta_min => 'rcvDeltaMin',
rcv_delta_max => 'rcvDeltaMax',
undersize => 'underSize',
undersize_delta => 'underSizeDelta',
undersize_delta_avg => 'underSizeDeltaAvg',
undersize_delta_min => 'underSizeDeltaMin',
undersize_delta_max => 'underSizeDeltaMax',
xmit => 'xmit',
xmit_delta => 'xmitDelta',
xmit_delta_avg => 'xmitDeltaAvg',
xmit_delta_min => 'xmitDeltaMin',
xmit_delta_max => 'xmitDeltaMax'
);
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}->{etherPIo}};
{
no strict 'refs';
no warnings qw(redefine);
while ( my ( $pseudo, $attribute ) = each %STATS ) {
*{ __PACKAGE__ . '::' . 'get_' . $pseudo . '_stats' } = sub {
my $self = shift;
return $self->_get_stats( $pseudo, $attribute )
}
}
}
while ( my ( $k, $v ) = each %attr ) { $self->{$k} = $v }
return $self;
}
sub _get_stats {
my ( $self, $type, $class ) = @_;
my %stats = %{ ( $self->{ucs}->resolve_dn(
dn => "$self->{dn}/$type-stats"
) )->{outConfig}->{$class} };
while ( my ( $k, $v ) = each %stats ) { $self->{$type}->{$k} = $v }
return %stats
}
{
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}
}
}
foreach my $type ( keys %STATS ) {
my $type_stats = uc( $type ) . '_STATS';
while ( my ( $pseudo, $attribute ) = each %{$type_stats} ) {
*{ __PACKAGE__ . '::' . $type . "_$pseudo" } = sub {
my $self = shift;
my $method = "get_$type" . "_$pseudo";
( run in 2.430 seconds using v1.01-cache-2.11-cpan-5735350b133 )