move nodes to lag master port
This commit is contained in:
@@ -786,6 +786,17 @@ sub store_neighbors {
|
||||
is_uplink => \"true",
|
||||
manual_topo => \"false",
|
||||
});
|
||||
|
||||
if (defined $portrow->slave_of and
|
||||
my $master = schema('netdisco')->resultset('DevicePort')
|
||||
->single({ip => $device->ip, port => $portrow->slave_of})) {
|
||||
|
||||
$master->update({
|
||||
remote_ip => $remote_ip,
|
||||
is_uplink => \"true",
|
||||
manual_topo => \"false",
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
return @to_discover;
|
||||
|
||||
@@ -98,8 +98,10 @@ sub do_macsuck {
|
||||
debug sprintf ' [%s] macsuck - port %s vlan %s : %s nodes',
|
||||
$ip, $port, $vlan, scalar keys %{ $fwtable->{$vlan}->{$port} };
|
||||
|
||||
# make sure this port is UP in netdisco
|
||||
$device_ports->{$port}->update({up_admin => 'up', up => 'up'});
|
||||
# make sure this port is UP in netdisco (unless it's a lag master,
|
||||
# because we can still see nodes without a functioning aggregate)
|
||||
$device_ports->{$port}->update({up_admin => 'up', up => 'up'})
|
||||
if not $device_ports->{$port}->is_master;
|
||||
|
||||
foreach my $mac (keys %{ $fwtable->{$vlan}->{$port} }) {
|
||||
|
||||
@@ -324,14 +326,6 @@ sub _walk_fwtable {
|
||||
next;
|
||||
}
|
||||
|
||||
# TODO: add proper port channel support!
|
||||
if ($port =~ m/port.channel/i) {
|
||||
debug sprintf
|
||||
' [%s] macsuck %s - port %s is LAG member - skipping.',
|
||||
$device->ip, $mac, $port;
|
||||
next;
|
||||
}
|
||||
|
||||
# this uses the cached $ports resultset to limit hits on the db
|
||||
my $device_port = $device_ports->{$port};
|
||||
|
||||
@@ -342,6 +336,13 @@ sub _walk_fwtable {
|
||||
next;
|
||||
}
|
||||
|
||||
# possibly move node to lag master
|
||||
if (defined $device_port->slave_of
|
||||
and exists $device_ports->{$device_port->slave_of}) {
|
||||
$port = $device_port->slave_of;
|
||||
$device_port = $device_ports->{$port};
|
||||
}
|
||||
|
||||
# check to see if the port is connected to another device
|
||||
# and if we have that device in the database.
|
||||
|
||||
@@ -390,7 +391,6 @@ sub _walk_fwtable {
|
||||
}
|
||||
|
||||
my $vlan = $fw_vlan->{$idx} || $comm_vlan || '0';
|
||||
|
||||
++$cache->{$vlan}->{$port}->{$mac};
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user