Raisecom RC. Next gen perl coding style.

This commit is contained in:
Andrey Pazychev
2020-05-20 22:01:40 +03:00
parent b019f3fa06
commit 2b1b53e539

View File

@@ -47,12 +47,12 @@ $VERSION = '3.70-135';
sub vendor { sub vendor {
my $obj = shift; my $obj = shift;
return $obj->main($obj)->{vendor}; return main($obj)->{vendor};
} }
sub os { sub os {
my $obj = shift; my $obj = shift;
return $obj->main($obj)->{os}; return main($obj)->{os};
} }
sub main { sub main {
@@ -74,102 +74,86 @@ sub main {
if ( $id =~ /41752\.26\.502/ ) { if ( $id =~ /41752\.26\.502/ ) {
$model = $obj->model_oid_41752 || undef; $model = $obj->model_oid_41752 || undef;
$hw = ($obj->hw_oid_41752 =~ /.*\sversion\s(.*)/)[0]; $hw = ($obj->hw_oid_41752 =~ /.*\sversion\s(.*)/)[0];
$obj->os_ver_oid_41752 =~ /ROS_(.*)\.(\d+)/;
$os_ver = $1 . ' (' . $2 . ')' if defined($1) and defined($2);
$obj->brom_oid_41752 =~ /.*_BOOT_(.*)_(\d+)/;
$brom = $1 . ' (' . $2 . ')' if defined($1) and defined($2);
$serial = $obj->serial_oid_41752 || undef;
} }
elsif ($id =~ /8886\.6\.(140|191|150|21[3,4])$/) { elsif ($id =~ /8886\.6\.(140|191|150|21[3,4])$/) {
$model = $obj->model_oid_8886_6_140 || undef; $model = $obj->model_oid_8886_6_140 || undef;
$model = $obj->session()->get('enterprises.8886.1.1.4.1.0')
if not defined($model); $obj->os_ver_oid_8886_6_140 =~ /ROS_(.*)\.ISCOM.*\.(\d*\.+\d*)/;
$hw = $obj->hw_oid_8886_6_140; $os_ver = $1 . ' (' . $2 . ')' if defined($1) and defined($2);
$hw =~ s/.*\s[v,V]ersion\s(.*)/$1/
if defined $1;
} }
####
# Here another ways for undetected specific crap. If you not enougth with default, place specific crap upper here
####
#All another known ways to model
$model = $obj->session()->get('enterprises.8886.1.1.4.1.0') if not defined($model);
$model .= ' HW:' . $hw #All another known ways to HW
if (defined($model) and defined($hw)); while (not defined($hw)) {
$hw = $obj->hw_oid_8886_6_140;
$hw =~ s/.*\s[v,V]ersion\s(.*)/$1/ if defined $1;
last;
}
#All another known ways to OS Version
$os_ver = $obj->os_ver_oid || undef if not defined($os_ver);
while(not defined($os_ver)) {
$obj->os_ver_oid_8886_6_140 =~ /ROS_(.*)\.ISCOM.*\.(\d*\.+\d*)/;
$os_ver = $1 . ' (' . $2 . ')' if defined($1) and defined($2);
last if defined($os_ver);
my $res = $obj->os_ver_oid_8886_6_140;
$res =~ /(\d*\.+\d*)\(Compiled/;
$os_ver = $1 if defined($1);
$res =~ /ROS_(.*\d)\.+ISCOM[\d,\w,-]+\.([\d,\.]*)/;
$os_ver = $1 . ' (' . $2 . ')' if defined($1) and defined($2);
last if defined($os_ver);
last;
}
#All another known ways to Bootrom
$obj->brom_oid_8886_6_140 =~ /Bootstrap_([\d\W]+)\.ISCOM.*\.(\d*\.+\d*)/;
$brom = $1 . ' (' . $2 . ')' if defined($1) and defined($2);
$brom = $obj->brom_oid || undef if not defined($brom);
#Serial
$serial = $obj->serial_oid_8886_6_140 || undef;
####
#final formatting before output.
####
$model .= ' HW:' . $hw if defined($model) and defined($hw);
$os_ver .= ' bootrom:' . $brom if defined($os_ver) and defined($brom);
return { 'vendor' => $vendor, 'os' => $os, 'model' => $model, 'os_ver' => $os_ver, 'serial' => $serial }; return { 'vendor' => $vendor, 'os' => $os, 'model' => $model, 'os_ver' => $os_ver, 'serial' => $serial };
} }
sub os_ver { sub os_ver {
my $obj = shift; my $obj = shift;
my $os_ver; my $brom; return main($obj)->{os_ver};
my $id = $obj->id();
if ($id =~ /41752\.26\.502/) {
$obj->os_ver_oid_41752 =~ /ROS_(.*)\.(\d+)/;
$os_ver = $1 . ' (' . $2 . ')';
$obj->brom_oid_41752 =~ /.*_BOOT_(.*)_(\d+)/;
$brom = $1 . ' (' . $2 . ')';
}
elsif ($id =~ /8886\.6\.(140|150)$/) {
$obj->os_ver_oid_8886_6_140 =~ /ROS_(.*)\.ISCOM.*\.(\d*\.+\d*)/;
$os_ver = $1 . ' (' . $2 . ')';
$obj->brom_oid_8886_6_140 =~ /Bootstrap_([\d\W]+)\.ISCOM.*\.(\d*\.+\d*)/;
$brom = $1 . ' (' . $2 . ')';
}
elsif ($id =~ /8886\.6\.(191|21[3,4])$/) {
my $os_ver_oid = $obj->os_ver_oid_8886_6_140;
if ($os_ver_oid =~ /Compiled/) {
$os_ver_oid =~ /(\d*\.+\d*)\(Compiled/;
$os_ver = $1;
}
else {
$os_ver_oid =~ /ROS_(.*\d)\.+ISCOM[\d,\w,-]+\.([\d,\.]*)/;
$os_ver = $1 . ' (' . $2 . ')';
}
$brom = $obj->brom_oid_8886_6_140;
}
elsif ($id =~ /41752$/) {
return SNMP::Info::Layer3::Rotek::os_ver($obj);
}
else {
$os_ver = $obj->os_ver_oid || undef;
$brom = $obj->brom_oid || undef;
}
if (defined $os_ver and defined $brom) {
return $os_ver . ' bootrom: ' . $brom;
}
elsif (defined $os_ver) {
return $os_ver;
}
return 'unknown';
} }
sub model { sub model {
my $obj = shift; my $obj = shift;
return $obj->main($obj)->{model}; return main($obj)->{model};
} }
sub serial { sub serial {
my $obj = shift; my $obj = shift;
my $serial = $obj->serial_oid || 'unknown'; return main($obj)->{serial};
my $id = $obj->id();
if ($id =~ /41752\.26\.502/) {
return $obj->serial_oid_41752;
}
elsif ($id =~ /8886\.6\.(140|191|150|21[3,4])$/) {
return $obj->serial_oid_8886_6_140;
}
return $obj->SUPER::serial;
} }
sub hvver {
my $obj = shift;
my $id = $obj->id();
if ($id =~ /41752\.26\.502/) {
$obj->hw_oid_41752 =~ /.*\sversion\s(.*)/;
return $1;
}
elsif ($id =~ /8886\.6\./) {
$obj->hw_oid_8886_6_140 =~ /.*\s[v,V]ersion\s(.*)/;
return $1
if defined $1;
return $obj->hw_oid_8886_6_140;
}
return $obj->SUPER::hvver()
}
1; 1;
__END__ __END__