better sql update, fixed worker return, better logic on vlans

This commit is contained in:
Oliver Gorwits
2019-04-01 22:36:35 +01:00
parent a6e7943c03
commit b22c32a578
2 changed files with 28 additions and 19 deletions

View File

@@ -43,22 +43,6 @@ register_worker({ phase => 'main', driver => 'snmp' }, sub {
next; next;
} }
foreach my $vlan (@{ $i_vlan_membership->{$entry} }) {
next unless defined $vlan and $vlan;
next if ++$port_vseen{$vlan} > 1;
my $native = ((defined $i_vlan->{$entry}) and ($vlan eq $i_vlan->{$entry})) ? "t" : "f";
push @portvlans, {
port => $port,
vlan => $vlan,
native => $native,
egress_tag => 't',
vlantype => $type,
last_discover => \'now()',
};
++$p_seen{$vlan};
}
foreach my $vlan (@{ $i_vlan_membership_untagged->{$entry} }) { foreach my $vlan (@{ $i_vlan_membership_untagged->{$entry} }) {
next unless defined $vlan and $vlan; next unless defined $vlan and $vlan;
next if ++$port_vseen{$vlan} > 1; next if ++$port_vseen{$vlan} > 1;
@@ -74,6 +58,23 @@ register_worker({ phase => 'main', driver => 'snmp' }, sub {
}; };
++$p_seen{$vlan}; ++$p_seen{$vlan};
} }
foreach my $vlan (@{ $i_vlan_membership->{$entry} }) {
next unless defined $vlan and $vlan;
next if ++$port_vseen{$vlan} > 1;
my $native = ((defined $i_vlan->{$entry}) and ($vlan eq $i_vlan->{$entry})) ? "t" : "f";
my $egress = ((defined $i_vlan->{$entry}) and ($vlan eq $i_vlan->{$entry})) ? "f" : "t";
push @portvlans, {
port => $port,
vlan => $vlan,
native => $native,
egress_tag => $egress,
vlantype => $type,
last_discover => \'now()',
};
++$p_seen{$vlan};
}
} }
schema('netdisco')->txn_do(sub { schema('netdisco')->txn_do(sub {
@@ -82,8 +83,8 @@ register_worker({ phase => 'main', driver => 'snmp' }, sub {
$device->ip, $gone; $device->ip, $gone;
$device->port_vlans->populate(\@portvlans); $device->port_vlans->populate(\@portvlans);
return Status->info(sprintf ' [%s] vlans - added %d new port VLANs', debug sprintf ' [%s] vlans - added %d new port VLANs',
$device->ip, scalar @portvlans); $device->ip, scalar @portvlans;
}); });
my %d_seen = (); my %d_seen = ();
@@ -117,9 +118,13 @@ register_worker({ phase => 'main', driver => 'snmp' }, sub {
debug sprintf ' [%s] vlans - removed %d device VLANs', debug sprintf ' [%s] vlans - removed %d device VLANs',
$device->ip, $gone; $device->ip, $gone;
$device->vlans->populate(\@devicevlans); $device->vlans->populate(\@devicevlans);
debug sprintf ' [%s] vlans - added %d new device VLANs', debug sprintf ' [%s] vlans - added %d new device VLANs',
$device->ip, scalar @devicevlans; $device->ip, scalar @devicevlans;
}); });
return Status->info(sprintf ' [%s] vlans - discovered for ports and device',
$device->ip);
}); });
true; true;

View File

@@ -1,5 +1,9 @@
BEGIN; BEGIN;
ALTER TABLE device_port_vlan ADD COLUMN "egress_tag" boolean not null default false; ALTER TABLE device_port_vlan ADD COLUMN "egress_tag" boolean not null default true;
UPDATE device_port_vlan SET egress_tag = true;
UPDATE device_port_vlan SET egress_tag = false WHERE native = TRUE;
COMMIT; COMMIT;