SNMP::Info::Layer3::Arista - SNMP Interface to Arista Networks EOS


SNMP-Info documentation Contained in the SNMP-Info distribution.

Index


Code Index:

NAME

Top

SNMP::Info::Layer3::Arista - SNMP Interface to Arista Networks EOS

AUTHOR

Top

Bill Fenner

SYNOPSIS

Top

 # Let SNMP::Info determine the correct subclass for you. 
 my $arista = new SNMP::Info(
                        AutoSpecify => 1,
                        Debug       => 1,
                        # These arguments are passed directly to SNMP::Session
                        DestHost    => 'myswitch',
                        Community   => 'public',
                        Version     => 2
                        ) 
    or die "Can't connect to DestHost.\n";

 my $class      = $arista->class();
 print "SNMP::Info determined this device to fall under subclass : $class\n";

DESCRIPTION

Top

Subclass for Arista Networks EOS-based devices

Inherited Classes

SNMP::Info::Layer3
SNMP::Info::MAU
SNMP::Info::LLDP

Required MIBs

ARISTA-PRODUCTS-MIB
Inherited Classes' MIBs

See "Required MIBs" in SNMP::Info::Layer3 for its own MIB requirements.

See "Required MIBs" in SNMP::Info::MAU for its own MIB requirements.

See "Required MIBs" in SNMP::Info::LLDP for its own MIB requirements.

GLOBALS

Top

These are methods that return scalar values from SNMP

$arista->vendor()
    Returns 'Arista Networks, Inc.'

$arista->hasCDP()
    Returns whether LLDP is enabled.

$arista->model()

Tries to reference $arista->id() to one of the product MIBs listed above

Removes 'arista' from the name for readability.

$arista->os()

Returns 'EOS'

$arista->os_ver()

Grabs the os version from sysDescr

Global Methods imported from SNMP::Info::Layer3

See documentation in "GLOBALS" in SNMP::Info::Layer3 for details.

Global Methods imported from SNMP::Info::MAU

See documentation in "GLOBALS" in SNMP::Info::MAU for details.

Global Methods imported from SNMP::Info::Layer3

See documentation in "GLOBALS" in SNMP::Info::Layer3 for details.

TABLE METHODS

Top

These are methods that return tables of information in the form of a reference to a hash.

$arista->fw_mac()

Use the Q-BRIDGE-MIB instead of BRIDGE-MIB

$arista->fw_port()

Use the Q-BRIDGE-MIB instead of BRIDGE-MIB

$arista->c_id()

Returns LLDP information.

$arista->c_if()

Returns LLDP information.

$arista->c_ip()

Returns LLDP information.

$arista->c_platform()

Returns LLDP information.

$arista->c_port()

Returns LLDP information.

$arista->i_duplex_admin()

Returns info from MAU-MIB

$arista->i_speed_admin()

Returns info from MAU-MIB

Table Methods imported from SNMP::Info::Layer3

See documentation in "TABLE METHODS" in SNMP::Info::Layer3 for details.

Table Methods imported from SNMP::Info::MAU

See documentation in "TABLE METHODS" in SNMP::Info::MAU for details.

Table Methods imported from SNMP::Info::LLDP

See documentation in "TABLE METHODS" in SNMP::Info::LLDP for details.


SNMP-Info documentation Contained in the SNMP-Info distribution.

# SNMP::Info::Layer3::Arista
# $Id$
#
# Copyright (c) 2008 Arista Networks, Inc.
# All rights reserved.
#
# Redistribution and use in source and binary forms, with or without
# modification, are permitted provided that the following conditions are met:
#
#     * Redistributions of source code must retain the above copyright notice,
#       this list of conditions and the following disclaimer.
#     * Redistributions in binary form must reproduce the above copyright
#       notice, this list of conditions and the following disclaimer in the
#       documentation and/or other materials provided with the distribution.
#     * Neither the name of Arista Networks, Inc. nor the
#       names of its contributors may be used to endorse or promote products
#       derived from this software without specific prior written permission.
#
# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
# AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
# ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
# LIABLE FOR # ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
# CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
# SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
# INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
# CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
# ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
# POSSIBILITY OF SUCH DAMAGE.

package SNMP::Info::Layer3::Arista;

use strict;
use Exporter;

use SNMP::Info::Layer3;
use SNMP::Info::MAU;
use SNMP::Info::LLDP;

@SNMP::Info::Layer3::Arista::ISA = qw/SNMP::Info::LLDP SNMP::Info::MAU
    SNMP::Info::Layer3 Exporter/;
@SNMP::Info::Layer3::Arista::EXPORT_OK = qw//;

use vars qw/$VERSION %GLOBALS %MIBS %FUNCS %MUNGE/;

$VERSION = '2.05';

%MIBS = (
    %SNMP::Info::Layer3::MIBS,
    %SNMP::Info::MAU::MIBS,
    %SNMP::Info::LLDP::MIBS,
    'ARISTA-PRODUCTS-MIB' => 'aristaProducts',
);

%GLOBALS = (
    %SNMP::Info::Layer3::GLOBALS,
    %SNMP::Info::MAU::GLOBALS,
    %SNMP::Info::LLDP::GLOBALS,
);

%FUNCS = (
    %SNMP::Info::Layer3::FUNCS,
    %SNMP::Info::MAU::FUNCS,
    %SNMP::Info::LLDP::FUNCS,
);

%MUNGE = (
    %SNMP::Info::Layer3::MUNGE,
    %SNMP::Info::MAU::MUNGE,
    %SNMP::Info::LLDP::MUNGE,
);

# use MAU-MIB for admin. duplex and admin. speed
*SNMP::Info::Layer3::Arista::i_duplex_admin
    = \&SNMP::Info::MAU::mau_i_duplex_admin;
*SNMP::Info::Layer3::Arista::i_speed_admin
    = \&SNMP::Info::MAU::mau_i_speed_admin;

sub vendor {
    return 'arista';
}

sub os {
    return 'EOS';
}

sub os_ver {
    my $arista = shift;
    my $descr   = $arista->description();
    my $os_ver  = undef;

    $os_ver = $1 if ( $descr =~ /\s+EOS\s+version\s+(\S+)\s+/ );
    return $os_ver;
}

sub model {
    my $arista = shift;
    my $id     = $arista->id();

    my $model = &SNMP::translateObj($id);
    return $id unless defined $model;

    $model =~ s/^arista//;
    return $model;
}

# Use Q-BRIDGE-MIB

sub fw_mac {
    my $arista  = shift;
    my $partial = shift;

    return $arista->qb_fw_mac($partial);
}

sub fw_port {
    my $arista  = shift;
    my $partial = shift;

    return $arista->qb_fw_port($partial);
}

# Use LLDP

sub hasCDP {
    my $arista = shift;

    return $arista->hasLLDP();
}

sub c_ip {
    my $arista  = shift;
    my $partial = shift;

    return $arista->lldp_ip($partial);
}

sub c_if {
    my $arista  = shift;
    my $partial = shift;

    return $arista->lldp_if($partial);
}

sub c_port {
    my $arista  = shift;
    my $partial = shift;

    return $arista->lldp_port($partial);
}

sub c_id {
    my $arista  = shift;
    my $partial = shift;

    return $arista->lldp_id($partial);
}

sub c_platform {
    my $arista  = shift;
    my $partial = shift;

    return $arista->lldp_rem_sysdesc($partial);
}

1;
__END__