diff --git a/Changes b/Changes index 20d0be3c..c063c5f5 100644 --- a/Changes +++ b/Changes @@ -1,3 +1,9 @@ +2.039015 - + + [BUG FIXES] + + * #370 Missing Map Links due to inability to parse port speeds + 2.039014 - 2018-03-03 [BUG FIXES] diff --git a/lib/App/Netdisco/DB.pm b/lib/App/Netdisco/DB.pm index 0349adba..e3e86ecb 100644 --- a/lib/App/Netdisco/DB.pm +++ b/lib/App/Netdisco/DB.pm @@ -11,7 +11,7 @@ __PACKAGE__->load_namespaces( ); our # try to hide from kwalitee - $VERSION = 48; # schema version used for upgrades, keep as integer + $VERSION = 49; # schema version used for upgrades, keep as integer use Path::Class; use File::ShareDir 'dist_dir'; diff --git a/lib/App/Netdisco/DB/Result/Virtual/DeviceLinks.pm b/lib/App/Netdisco/DB/Result/Virtual/DeviceLinks.pm index cd6e0255..74ede1aa 100644 --- a/lib/App/Netdisco/DB/Result/Virtual/DeviceLinks.pm +++ b/lib/App/Netdisco/DB/Result/Virtual/DeviceLinks.pm @@ -17,16 +17,13 @@ __PACKAGE__->result_source_instance->is_virtual(1); __PACKAGE__->result_source_instance->view_definition(<result_source_instance->view_definition(< require_login sub { sub to_speed { my $speed = shift or return ''; - $speed = SNMP::Info::munge_highspeed($speed); - $speed =~ s/(?:\s|bps)//g; - return $speed; + return SNMP::Info::munge_highspeed($speed / 1_000_000); } sub make_node_infostring { diff --git a/lib/App/Netdisco/Worker/Plugin/Discover/PortProperties.pm b/lib/App/Netdisco/Worker/Plugin/Discover/PortProperties.pm index 03663be8..f2c0e5e3 100644 --- a/lib/App/Netdisco/Worker/Plugin/Discover/PortProperties.pm +++ b/lib/App/Netdisco/Worker/Plugin/Discover/PortProperties.pm @@ -19,13 +19,19 @@ register_worker({ phase => 'main', driver => 'snmp' }, sub { or return Status->defer("discover failed: could not SNMP connect to $device"); my $interfaces = $snmp->interfaces || {}; + my %properties = (); + + my $raw_speed = $snmp->i_speed_raw || {}; + + foreach my $idx (keys %$raw_speed) { + my $port = $interfaces->{$idx} or next; + $properties{ $port }->{raw_speed} = $raw_speed->{$idx}; + } + my $err_cause = $snmp->i_err_disable_cause || {}; - my %properties = (); foreach my $idx (keys %$err_cause) { - my $port = $interfaces->{$idx}; - next unless $port; - + my $port = $interfaces->{$idx} or next; $properties{ $port }->{error_disable_cause} = $err_cause->{$idx}; } @@ -40,8 +46,7 @@ register_worker({ phase => 'main', driver => 'snmp' }, sub { my $rem_serial = $snmp->lldp_rem_serial || {}; foreach my $idx (keys %$c_if) { - my $port = $interfaces->{ $c_if->{$idx} }; - next unless $port; + my $port = $interfaces->{ $c_if->{$idx} } or next; my $remote_cap = $c_cap->{$idx} || []; my $remote_type = Encode::decode('UTF-8', $c_platform->{$idx} || ''); diff --git a/share/schema_versions/App-Netdisco-DB-48-49-PostgreSQL.sql b/share/schema_versions/App-Netdisco-DB-48-49-PostgreSQL.sql new file mode 100644 index 00000000..578828c9 --- /dev/null +++ b/share/schema_versions/App-Netdisco-DB-48-49-PostgreSQL.sql @@ -0,0 +1,5 @@ +BEGIN; + +ALTER TABLE device_port_properties ADD COLUMN "raw_speed" bigint DEFAULT 0; + +COMMIT;