From 3a4beed2f17c6efa513d1794404cb0caf86369d8 Mon Sep 17 00:00:00 2001 From: Oliver Gorwits Date: Sun, 12 Jan 2014 18:46:25 +0000 Subject: [PATCH] store aggregate port into db --- Netdisco/lib/App/Netdisco/Core/Discover.pm | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/Netdisco/lib/App/Netdisco/Core/Discover.pm b/Netdisco/lib/App/Netdisco/Core/Discover.pm index c5ee4003..38e8bb45 100644 --- a/Netdisco/lib/App/Netdisco/Core/Discover.pm +++ b/Netdisco/lib/App/Netdisco/Core/Discover.pm @@ -206,6 +206,7 @@ sub store_interfaces { my $i_stp_state = $snmp->i_stp_state; my $i_vlan = $snmp->i_vlan; my $i_lastchange = $snmp->i_lastchange; + my $agg_ports = $snmp->agg_ports; # clear the cached uptime and get a new one my $dev_uptime = $snmp->load_uptime; @@ -278,10 +279,22 @@ sub store_interfaces { type => $i_type->{$entry}, vlan => $i_vlan->{$entry}, pvid => $i_vlan->{$entry}, + is_master => 'false', + slave_of => undef, lastchange => $lc, }; } + # must do this after building %interfaces so that we can set is_master + foreach my $sidx (keys %$agg_ports) { + my $slave = $interfaces->{$sidx} or next; + my $master = $interfaces->{ $agg_ports->{$sidx} } or next; + next unless exists $interfaces{$slave} and exists $interfaces{$master}; + + $interfaces{$slave}->{slave_of} = $master; + $interfaces{$master}->{is_master} = 'true'; + } + schema('netdisco')->resultset('DevicePort')->txn_do_locked(sub { my $gone = $device->ports->delete({keep_nodes => 1}); debug sprintf ' [%s] interfaces - removed %d interfaces',