diff --git a/Changes b/Changes index 08908d88..5ecf191b 100644 --- a/Changes +++ b/Changes @@ -1,3 +1,9 @@ +Version 3.59 + + [NEW FEATURES] + + * #214 SNMP::Info Device models Genua, ATMedia, Liebert + Version 3.58 (2018-04-29) [NEW FEATURES] diff --git a/MANIFEST b/MANIFEST index 4ad77ba8..1f98ca56 100644 --- a/MANIFEST +++ b/MANIFEST @@ -46,6 +46,7 @@ lib/SNMP/Info/Layer2/Aerohive.pm lib/SNMP/Info/Layer2/Airespace.pm lib/SNMP/Info/Layer2/Aironet.pm lib/SNMP/Info/Layer2/Allied.pm +lib/SNMP/Info/Layer2/Atmedia.pm lib/SNMP/Info/Layer2/Baystack.pm lib/SNMP/Info/Layer2/C1900.pm lib/SNMP/Info/Layer2/C2900.pm @@ -95,6 +96,7 @@ lib/SNMP/Info/Layer3/F5.pm lib/SNMP/Info/Layer3/Force10.pm lib/SNMP/Info/Layer3/Fortinet.pm lib/SNMP/Info/Layer3/Foundry.pm +lib/SNMP/Info/Layer3/Genua.pm lib/SNMP/Info/Layer3/H3C.pm lib/SNMP/Info/Layer3/HP9300.pm lib/SNMP/Info/Layer3/Huawei.pm @@ -125,6 +127,7 @@ lib/SNMP/Info/Layer7/APC.pm lib/SNMP/Info/Layer7/Arbor.pm lib/SNMP/Info/Layer7/CiscoIPS.pm lib/SNMP/Info/Layer7/Gigamon.pm +lib/SNMP/Info/Layer7/Liebert.pm lib/SNMP/Info/Layer7/Neoteris.pm lib/SNMP/Info/Layer7/Netscaler.pm lib/SNMP/Info/LLDP.pm @@ -187,6 +190,7 @@ xt/lib/Test/SNMP/Info/Layer2/Aerohive.pm xt/lib/Test/SNMP/Info/Layer2/Airespace.pm xt/lib/Test/SNMP/Info/Layer2/Aironet.pm xt/lib/Test/SNMP/Info/Layer2/Allied.pm +xt/lib/Test/SNMP/Info/Layer2/Atmedia.pm xt/lib/Test/SNMP/Info/Layer2/Baystack.pm xt/lib/Test/SNMP/Info/Layer2/C1900.pm xt/lib/Test/SNMP/Info/Layer2/C2900.pm @@ -236,6 +240,7 @@ xt/lib/Test/SNMP/Info/Layer3/F5.pm xt/lib/Test/SNMP/Info/Layer3/Force10.pm xt/lib/Test/SNMP/Info/Layer3/Fortinet.pm xt/lib/Test/SNMP/Info/Layer3/Foundry.pm +xt/lib/Test/SNMP/Info/Layer3/Genua.pm xt/lib/Test/SNMP/Info/Layer3/H3C.pm xt/lib/Test/SNMP/Info/Layer3/HP9300.pm xt/lib/Test/SNMP/Info/Layer3/Huawei.pm @@ -266,6 +271,7 @@ xt/lib/Test/SNMP/Info/Layer7/APC.pm xt/lib/Test/SNMP/Info/Layer7/Arbor.pm xt/lib/Test/SNMP/Info/Layer7/CiscoIPS.pm xt/lib/Test/SNMP/Info/Layer7/Gigamon.pm +xt/lib/Test/SNMP/Info/Layer7/Liebert.pm xt/lib/Test/SNMP/Info/Layer7/Neoteris.pm xt/lib/Test/SNMP/Info/Layer7/Netscaler.pm xt/lib/Test/SNMP/Info/LLDP.pm diff --git a/lib/SNMP/Info.pm b/lib/SNMP/Info.pm index f81e973e..5c150a64 100644 --- a/lib/SNMP/Info.pm +++ b/lib/SNMP/Info.pm @@ -532,6 +532,12 @@ Allied Telesis switches. See documentation in L for details. +=item SNMP::Info::Layer2::Atmedia + +Subclass for atmedia encryptors. + +See documentation in L for details. + =item SNMP::Info::Layer2::Baystack Subclass for Avaya/Nortel/Bay Ethernet Switch/Baystack switches. This @@ -846,6 +852,12 @@ Subclass for Brocade (Foundry) Network devices. See documentation in L for details. +=item SNMP::Info::Layer3::Genua + +Subclass for Genua security devices. + +See documentation in L for details. + =item SNMP::Info::Layer3::H3C SNMP Interface to Layer 3 Devices, H3C & HP A-series. @@ -1035,6 +1047,12 @@ Subclass for Gigamon devices See documentation in L for details. +=item SNMP::Info::Layer7::Liebert + +Subclass for Liebert devices + +See documentation in L for details. + =item SNMP::Info::Layer7::Netscaler Subclass for Citrix Netscaler appliances @@ -1609,6 +1627,7 @@ sub device_type { 3224 => 'SNMP::Info::Layer3::Netscreen', 3375 => 'SNMP::Info::Layer3::F5', 3417 => 'SNMP::Info::Layer3::BlueCoatSG', + 3717 => 'SNMP::Info::Layer3::Genua', 4526 => 'SNMP::Info::Layer2::Netgear', 4874 => 'SNMP::Info::Layer3::ERX', 5624 => 'SNMP::Info::Layer3::Enterasys', @@ -1664,6 +1683,7 @@ sub device_type { 9303 => 'SNMP::Info::Layer3::PacketFront', 10418 => 'SNMP::Info::Layer1::Cyclades', 11898 => 'SNMP::Info::Layer2::Orinoco', + 13458 => 'SNMP::Info::Layer2::Atmedia', 14179 => 'SNMP::Info::Layer2::Airespace', 14525 => 'SNMP::Info::Layer2::Trapeze', 14823 => 'SNMP::Info::Layer3::Aruba', @@ -1680,6 +1700,7 @@ sub device_type { my %l7sysoidmap = ( 318 => 'SNMP::Info::Layer7::APC', + 476 => 'SNMP::Info::Layer7::Liebert', 5951 => 'SNMP::Info::Layer7::Netscaler', 9694 => 'SNMP::Info::Layer7::Arbor', 14525 => 'SNMP::Info::Layer2::Trapeze', diff --git a/lib/SNMP/Info/Layer2/Atmedia.pm b/lib/SNMP/Info/Layer2/Atmedia.pm new file mode 100644 index 00000000..40a3b72a --- /dev/null +++ b/lib/SNMP/Info/Layer2/Atmedia.pm @@ -0,0 +1,165 @@ +# SNMP::Info::Layer2::Atmedia +# +# Copyright (c) 2018 Netdisco Developers +# 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 the University of California, Santa Cruz 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::Layer2::Atmedia; + +use strict; +use Exporter; +use SNMP::Info::Layer2; + +@SNMP::Info::Layer2::Atmedia::ISA = qw/SNMP::Info::Layer2/; +@SNMP::Info::Layer2::Atmedia::EXPORT_OK = qw//; + +use vars qw/$VERSION %FUNCS %GLOBALS %MIBS %MUNGE/; + +$VERSION = '3.58'; + +%MIBS = ( %SNMP::Info::Layer2::MIBS ); + +%GLOBALS = ( + %SNMP::Info::Layer2::GLOBALS, + 'os_ver' => '.1.3.6.1.4.1.13458.1.2.1.0', + 'atm_serial' => '.1.3.6.1.4.1.13458.1.1.2.0', + 'atm_hardversion' => '.1.3.6.1.4.1.13458.1.3.1.0', + 'atm_model' => '.1.3.6.1.4.1.13458.1.1.6.0', +); + +%FUNCS = (%SNMP::Info::Layer2::FUNCS); + +%MUNGE = (%SNMP::Info::Layer2::MUNGE); + +sub serial { + my $atmedia = shift; + + return $atmedia->atm_serial(); +} + +sub os { + return 'Atmedia-OS'; +} + +sub model { + my $atmedia = shift; + + my $atmedia_model = $atmedia->atm_model(); + $atmedia_model =~ s/\<|\>//g; + $atmedia_model =~ s/\//_/g; + + return $atmedia_model; +} + +sub vendor { + return 'atmedia'; +} + +1; + +__END__ + +=head1 NAME + +SNMP::Info::Layer2::Atmedia - SNMP Interface to atmedia encryptors + +=head1 AUTHOR + +Netdisco Developers + +=head1 SYNOPSIS + + # Let SNMP::Info determine the correct subclass for you. + my $atmedia = new SNMP::Info( + AutoSpecify => 1, + Debug => 1, + DestHost => 'myhub', + Community => 'public', + Version => 1 + ) + or die "Can't connect to DestHost.\n"; + + my $class = $atmedia->class(); + print "SNMP::Info determined this device to fall under subclass : $class\n"; + +=head1 DESCRIPTION + +Provides abstraction to information obtainable from a atmedia encryptor +through SNMP. See inherited classes' documentation for inherited methods. + +=head2 Inherited Classes + +=over + +=item SNMP::Info::Layer2 + +=back + +=head2 Inherited MIBs + +See L for its MIB requirements. + +=head1 GLOBALS + +These are methods that return scalar value from SNMP + +=head2 Overrides + +=over + +=item $atmedia->vendor() + +Returns 'atmedia' + +=item $atmedia->os() + +Returns 'Atmedia-OS' + +=item $atmedia->os_ver() + +(C) + +=item $atmedia->model() + +(C) + +=item $atmedia->serial() + +(C) + +=back + +=head2 Globals imported from SNMP::Info::Layer2 + +See L for details. + +=head1 TABLE METHODS + +=head2 Table Methods imported from SNMP::Info::Layer2 + +See L for details. + +=cut diff --git a/lib/SNMP/Info/Layer3/Genua.pm b/lib/SNMP/Info/Layer3/Genua.pm new file mode 100644 index 00000000..9a330314 --- /dev/null +++ b/lib/SNMP/Info/Layer3/Genua.pm @@ -0,0 +1,188 @@ +# SNMP::Info::Layer3::Genua +# +# Copyright (c) 2018 Netdisco Developers +# +# 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 the University of California, Santa Cruz 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::Genua; + +use strict; +use Exporter; +use SNMP::Info::Layer3; + +@SNMP::Info::Layer3::Genua::ISA = qw/SNMP::Info::Layer3/; +@SNMP::Info::Layer3::Genua::EXPORT_OK = qw//; + +use vars qw/$VERSION %FUNCS %GLOBALS %MIBS %MUNGE/; + +$VERSION = '3.58'; + +%MIBS = (%SNMP::Info::Layer3::MIBS); + +%GLOBALS = ( + %SNMP::Info::Layer3::GLOBALS, + 'genua_os' => '.1.3.6.1.4.1.3717.2.3.1.0', + 'genua_osver_rel' => '.1.3.6.1.4.1.3717.2.3.3.0', + 'genua_osver_patch' => '.1.3.6.1.4.1.3717.2.3.4.0', + 'genua_model' => '.1.3.6.1.4.1.3717.2.3.5.0', + 'genua_serial' => '.1.3.6.1.4.1.3717.2.3.6.0', +); + +%FUNCS = (%SNMP::Info::Layer3::FUNCS); + +%MUNGE = (%SNMP::Info::Layer3::MUNGE); + +sub serial { + my $genua = shift; + + return $genua->genua_serial(); +} + +sub os { + my $genua = shift; + + return $genua->genua_os(); +} + +sub os_ver { + my $genua = shift; + + my $genua_osver_rel = $genua->genua_osver_rel(); + my $genua_osver_patch = $genua->genua_osver_patch(); + + my $genua_osver; + + if ( defined $genua_osver_rel and defined $genua_osver_patch ) { + return $genua_osver_rel . "_PL_" . $genua_osver_patch; + } + return $genua_osver; +} + +sub model { + my $genua = shift; + + my $genua_model = $genua->genua_model(); + + if ( $genua_model =~ m/GeNUA.+(GS.+?)\s/i ) { + $genua_model = $1; + } + elsif ( $genua_model =~ m/genua\s+(.+?)\s+/i ) { + $genua_model = $1; + } + else { + $genua_model = 'unknown'; + } + return $genua_model; +} + +sub vendor { + return 'genua'; +} + +1; + +__END__ + +=head1 NAME + +SNMP::Info::Layer3::Genua - SNMP Interface to Genua security devices + +=head1 AUTHOR + +Netdisco Developers + +=head1 SYNOPSIS + + # Let SNMP::Info determine the correct subclass for you. + my $genua = new SNMP::Info( + AutoSpecify => 1, + Debug => 1, + DestHost => 'myhub', + Community => 'public', + Version => 1 + ) + or die "Can't connect to DestHost.\n"; + + my $class = $genua->class(); + print "SNMP::Info determined this device to fall under subclass : $class\n"; + +=head1 DESCRIPTION + +Provides abstraction to information obtainable from a Genua security device +through SNMP. See inherited classes' documentation for inherited methods. + +=head2 Inherited Classes + +=over + +=item SNMP::Info::Layer3 + +=back + +=head2 Inherited MIBs + +See L for its MIB requirements. + +=head1 GLOBALS + +These are methods that return scalar value from SNMP + +=head2 Overrides + +=over + +=item $genua->vendor() + +Returns 'genua' + +=item $genua->os() + +(C) + +=item $genua->os_ver() + +(C) and (C) + +=item $genua->model() + +(C) + +=item $genua->serial() + +(C) + +=back + +=head2 Globals imported from SNMP::Info::Layer3 + +See L for details. + +=head1 TABLE METHODS + +=head2 Table Methods imported from SNMP::Info::Layer3 + +See L for details. + +=cut diff --git a/lib/SNMP/Info/Layer7/Liebert.pm b/lib/SNMP/Info/Layer7/Liebert.pm new file mode 100644 index 00000000..293de73e --- /dev/null +++ b/lib/SNMP/Info/Layer7/Liebert.pm @@ -0,0 +1,165 @@ +# SNMP::Info::Layer7::Liebert +# +# Copyright (c) 2018 Netdisco Developers +# 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 the University of California, Santa Cruz 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::Layer7::Liebert; + +use strict; +use Exporter; +use SNMP::Info::Layer7; + +@SNMP::Info::Layer7::Liebert::ISA = qw/SNMP::Info::Layer7/; +@SNMP::Info::Layer7::Liebert::EXPORT_OK = qw//; + +use vars qw/$VERSION %FUNCS %GLOBALS %MIBS %MUNGE/; + +$VERSION = '3.58'; + +%MIBS = ( + %SNMP::Info::Layer7::MIBS, + 'LIEBERT-GP-AGENT-MIB' => 'lgpAgentDeviceSerialNumber', +); + +%GLOBALS = ( + %SNMP::Info::Layer7::GLOBALS, + 'serial' => 'lgpAgentDeviceSerialNumber.1', + 'os_ver' => 'lgpAgentDeviceFirmwareVersion.1', + 'liebert_model' => 'lgpAgentDeviceModel.1', +); + +%FUNCS = (%SNMP::Info::Layer7::FUNCS); + +%MUNGE = (%SNMP::Info::Layer7::MUNGE); + +sub os { + return 'LiebertOS'; +} + +sub model { + my $liebert = shift; + + return $liebert->liebert_model(); +} + +sub vendor { + return 'liebert'; +} + +1; + +__END__ + +=head1 NAME + +SNMP::Info::Layer7::Liebert - SNMP Interface to Liebert devices + +=head1 AUTHOR + +Netdisco Developers + +=head1 SYNOPSIS + + # Let SNMP::Info determine the correct subclass for you. + my $liebert = new SNMP::Info( + AutoSpecify => 1, + Debug => 1, + DestHost => 'myhub', + Community => 'public', + Version => 1 + ) + or die "Can't connect to DestHost.\n"; + + my $class = $liebert->class(); + print "SNMP::Info determined this device to fall under subclass : $class\n"; + +=head1 DESCRIPTION + +Provides abstraction to information obtainable from a Liebert device +through SNMP. See inherited classes' documentation for inherited methods. + +=head2 Inherited Classes + +=over + +=item SNMP::Info::Layer7 + +=back + +=head2 Required MIBs + +=over + +=item F + +=back + +=head2 Inherited MIBs + +See L for its MIB requirements. + +=head1 GLOBALS + +These are methods that return scalar value from SNMP + +=head2 Overrides + +=over + +=item $liebert->vendor() + +Returns 'liebert' + +=item $liebert->os() + +Returns 'LiebertOS' + +=item $liebert->os_ver() + +(C) + +=item $liebert->model() + +(C) + +=item $liebert->serial() + +(C) + +=back + +=head2 Globals imported from SNMP::Info::Layer7 + +See L for details. + +=head1 TABLE METHODS + +=head2 Table Methods imported from SNMP::Info::Layer7 + +See L for details. + +=cut diff --git a/xt/lib/Test/SNMP/Info/Layer2/Atmedia.pm b/xt/lib/Test/SNMP/Info/Layer2/Atmedia.pm new file mode 100644 index 00000000..ec8e91e3 --- /dev/null +++ b/xt/lib/Test/SNMP/Info/Layer2/Atmedia.pm @@ -0,0 +1,89 @@ +# Test::SNMP::Info::Layer2::Atmedia +# +# Copyright (c) 2018 Eric Miller +# 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 the University of California, Santa Cruz 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 Test::SNMP::Info::Layer2::Atmedia; + +use Test::Class::Most parent => 'My::Test::Class'; + +use SNMP::Info::Layer2::Atmedia; + +sub setup : Tests(setup) { + my $test = shift; + $test->SUPER::setup; + + # Start with a common cache that will serve most tests + my $cache_data = { + '_layers' => 2, + '_description' => 'ATMedia Crypt 3.3.0 <1000Base-X>', + + # AT-PRODUCT-MIB::atGS970M10 + '_id' => '.1.3.6.1.4.1.13458.1.1', + '_atm_serial' => '123456', + '_atm_model' => '<1000Base-X>', + 'store' => {}, + }; + $test->{info}->cache($cache_data); +} + +sub os : Tests(2) { + my $test = shift; + + can_ok($test->{info}, 'os'); + is($test->{info}->os(), 'Atmedia-OS', q(OS returns 'Atmedia-OS')); +} + +sub vendor : Tests(2) { + my $test = shift; + + can_ok($test->{info}, 'vendor'); + is($test->{info}->vendor(), 'atmedia', q(Vendor returns 'atmedia')); +} + +sub model : Tests(3) { + my $test = shift; + + can_ok($test->{info}, 'model'); + is($test->{info}->model(), '1000Base-X', q(Model is expected value)); + + $test->{info}->clear_cache(); + is($test->{info}->model(), undef, q(No description returns undef model)); +} + +sub serial : Tests(3) { + my $test = shift; + + can_ok($test->{info}, 'serial'); + is($test->{info}->serial(), '123456', q(Serial is expected value)); + + $test->{info}->clear_cache(); + is($test->{info}->serial(), undef, + q(No description returns undef OS version)); +} + +1; diff --git a/xt/lib/Test/SNMP/Info/Layer3/Genua.pm b/xt/lib/Test/SNMP/Info/Layer3/Genua.pm new file mode 100644 index 00000000..0368bbbb --- /dev/null +++ b/xt/lib/Test/SNMP/Info/Layer3/Genua.pm @@ -0,0 +1,105 @@ +# Test::SNMP::Info::Layer3::Genua +# +# Copyright (c) 2018 Eric Miller +# 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 the University of California, Santa Cruz 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 Test::SNMP::Info::Layer3::Genua; + +use Test::Class::Most parent => 'My::Test::Class'; + +use SNMP::Info::Layer3::Genua; + +sub setup : Tests(setup) { + my $test = shift; + $test->SUPER::setup; + + # Start with a common cache that will serve most tests + my $cache_data = { + '_layers' => 4, + '_description' => 'GeNUScreen 3.0 patchlevel 5 (build.8.D026)', + '_id' => '.1.3.6.1.4.1.3717.4.4', + '_genua_os' => 'GeNUScreen', + '_genua_osver_rel' => '3.0', + '_genua_osver_patch' => '5', + '_genua_model' => 'GeNUA GS0300 - 20100526 005', + '_genua_serial' => '16792-GS-CQTP-7UAR-CEPF-9Z5M', + 'store' => {}, + }; + $test->{info}->cache($cache_data); +} + +sub os : Tests(2) { + my $test = shift; + + can_ok($test->{info}, 'os'); + is($test->{info}->os(), 'GeNUScreen', q(OS returns 'GeNUScreen')); +} + +sub os_ver : Tests(3) { + my $test = shift; + + can_ok($test->{info}, 'os_ver'); + is($test->{info}->os_ver(), '3.0_PL_5', q(OS version is expected value)); + + $test->{info}->clear_cache(); + is($test->{info}->os_ver(), undef, + q(No description returns undef OS version)); +} + +sub vendor : Tests(2) { + my $test = shift; + + can_ok($test->{info}, 'vendor'); + is($test->{info}->vendor(), 'genua', q(Vendor returns 'genua')); +} + +sub model : Tests(3) { + my $test = shift; + + can_ok($test->{info}, 'model'); + is($test->{info}->model(), 'GS0300', q(Model is expected value)); + + $test->{info}->clear_cache(); + is($test->{info}->model(), 'unknown', q(No description returns 'unknown')); +} + +sub serial : Tests(3) { + my $test = shift; + + can_ok($test->{info}, 'serial'); + is( + $test->{info}->serial(), + '16792-GS-CQTP-7UAR-CEPF-9Z5M', + q(Serial is expected value) + ); + + $test->{info}->clear_cache(); + is($test->{info}->serial(), undef, + q(No description returns undef OS version)); +} + +1; diff --git a/xt/lib/Test/SNMP/Info/Layer7/Liebert.pm b/xt/lib/Test/SNMP/Info/Layer7/Liebert.pm new file mode 100644 index 00000000..2f232fc0 --- /dev/null +++ b/xt/lib/Test/SNMP/Info/Layer7/Liebert.pm @@ -0,0 +1,81 @@ +# Test::SNMP::Info::Layer7::Liebert +# +# Copyright (c) 2018 Eric Miller +# 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 the University of California, Santa Cruz 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 Test::SNMP::Info::Layer7::Liebert; + +use Test::Class::Most parent => 'My::Test::Class'; + +use SNMP::Info::Layer7::Liebert; + +sub setup : Tests(setup) { + my $test = shift; + $test->SUPER::setup; + + # Start with a common cache that will serve most tests + my $cache_data = { + '_layers' => 72, + '_description' => '', + + # LIEBERT-GP-REGISTRATION-MIB::liebertGlobalProducts + '_id' => '.1.3.6.1.4.1.476.1.42', + '_liebert_model' => 'Advanced Microprocessor Control', + 'store' => {}, + }; + $test->{info}->cache($cache_data); +} + +sub vendor : Tests(2) { + my $test = shift; + + can_ok($test->{info}, 'vendor'); + is($test->{info}->vendor(), 'liebert', q(Vendor returns 'liebert')); +} + +sub os : Tests(2) { + my $test = shift; + + can_ok($test->{info}, 'os'); + is($test->{info}->os(), 'LiebertOS', q(OS returns 'LiebertOS')); +} + +sub model : Tests(3) { + my $test = shift; + + can_ok($test->{info}, 'model'); + is( + $test->{info}->model(), + 'Advanced Microprocessor Control', + q(Model is expected value) + ); + + $test->{info}->clear_cache(); + is($test->{info}->model(), undef, q(No data returns undef model)); +} + +1;