From 14e9da0fb757ea8ddaff771ee017f2b05dc1e282 Mon Sep 17 00:00:00 2001 From: Andrey Pazychev Date: Wed, 20 May 2020 05:43:58 +0300 Subject: [PATCH] Qtech vendor refactored. --- lib/SNMP/Info/Layer3/Qtech.pm | 48 ++++++++++++++++++++++++++++++----- 1 file changed, 41 insertions(+), 7 deletions(-) diff --git a/lib/SNMP/Info/Layer3/Qtech.pm b/lib/SNMP/Info/Layer3/Qtech.pm index d5b5b35c..e2166099 100644 --- a/lib/SNMP/Info/Layer3/Qtech.pm +++ b/lib/SNMP/Info/Layer3/Qtech.pm @@ -9,6 +9,7 @@ use strict; use warnings; use Exporter; use SNMP::Info::Layer3; +use Data::Dumper; @SNMP::Info::Layer3::Qtech::ISA = qw/SNMP::Info::Layer3 Exporter/; @SNMP::Info::Layer3::Qtech::EXPORT_OK = qw//; @@ -33,11 +34,46 @@ $VERSION = '3.70-135'; %MUNGE = ( %SNMP::Info::Layer3::MUNGE, ); +sub main { + #no strict 'refs'; + my $obj = shift; + my $response = undef; my $serial = undef; my $model = undef; my $hw = undef; my $os_ver = undef; my $brom = undef; + if ( $obj->id() =~ /27514\.1\.3\.25\.2$/ ) { + #QSW-2900 enterprises.27514.1.3.25.2 + $response = $obj->session()->get('enterprises.27514.1.2.1.1.2.2.0'); + $response =~ s/QTECH\s+//; + ($model, $os_ver) = $response =~ /([\w,\d,-]+)\s([\w,\d]+)$/; + $hw = $obj->session()->get('enterprises.27514.1.2.1.1.2.8.0'); + $brom = $obj->session()->get('enterprises.27514.1.2.1.1.2.9.0'); + $serial = $obj->session()->get('enterprises.27514.1.2.1.1.2.19.0'); + } + elsif ( $obj->id() =~ /27514\.6\.55$/ ) { + #QSW-2500E enterprises.27514.6.55 + ($os_ver, $model) = $obj->session->get('enterprises.27514.6.1.1.1.1.0') =~ /QOS_([\d,\.]+)\.(QSW[-,\w,\d]+)/; + } + else { + $model = $obj->model_oid; + $hw = $obj->hw_oid; + $os_ver = $obj->os_ver_oid; + $brom = $obj->bootrom_oid; + $serial = $obj->serial_oid; + } + + if (not defined($serial) or $serial eq "N/A") { + #QSW-2800 enterprises.27514.1.1.1.48 could be N/A serial under specific OID. + #Try to get from Descr.0 + my $descr = $obj->description(); + ($serial) = $descr =~ /Serial\sNo\.:\s*([\d,\w]+)/; + } + + $model = join ' HW:', ($model, $hw) if defined($model) and defined($hw); + $os_ver = join ' bootrom:', ($os_ver, $brom) if defined($os_ver) and defined($brom); + return { 'model' => $model, 'os_ver' => $os_ver, 'serial' => $serial}; +} + sub model { my $qtech = shift; - my $model = $qtech->model_oid; - my $hw = $qtech->hw_oid; - return $model . ' HW:' . $hw; + return $qtech->main->{model}; } sub vendor { @@ -50,14 +86,12 @@ sub os { sub os_ver { my $qtech = shift; - my $os_ver = $qtech->os_ver_oid; - return $os_ver . ' bootrom: ' . $qtech->bootrom_oid; + return $qtech->main->{os_ver}; } sub serial { my $qtech = shift; - my $serial = $qtech->serial_oid; - return $serial; + return $qtech->main->{serial}; } 1;