add logging of db add/del
This commit is contained in:
@@ -167,6 +167,17 @@ __PACKAGE__->has_many(
|
||||
'ip', { join_type => 'RIGHT' }
|
||||
);
|
||||
|
||||
=head2 powered_ports
|
||||
|
||||
Returns the set of ports known to have PoE capability
|
||||
|
||||
=cut
|
||||
|
||||
__PACKAGE__->has_many(
|
||||
powered_ports => 'App::Netdisco::DB::Result::DevicePortPower',
|
||||
'ip', { join_type => 'RIGHT' }
|
||||
);
|
||||
|
||||
=head1 ADDITIONAL COLUMNS
|
||||
|
||||
=head2 uptime_age
|
||||
|
||||
@@ -57,7 +57,7 @@ sub store_device {
|
||||
next if setting('ignore_private_nets') and $ip->is_rfc1918;
|
||||
|
||||
my $iid = $ip_index->{$addr};
|
||||
my $port = $aliases->{$iid};
|
||||
my $port = $interfaces->{$iid};
|
||||
my $subnet = $ip_netmask->{$addr}
|
||||
? NetAddr::IP::Lite->new($addr, $ip_netmask->{$addr})->network->cidr
|
||||
: undef;
|
||||
@@ -98,9 +98,13 @@ sub store_device {
|
||||
$device->last_discover(\'now()');
|
||||
|
||||
schema('netdisco')->txn_do(sub {
|
||||
$device->device_ips->delete;
|
||||
my $gone = $device->device_ips->delete;
|
||||
debug sprintf ' [%s] store_device - removed %s aliases',
|
||||
$device->ip, $gone;
|
||||
$device->update_or_insert;
|
||||
$device->device_ips->populate(\@aliases);
|
||||
debug sprintf ' [%s] store_device - added %d new aliases',
|
||||
$device->ip, scalar @aliases;
|
||||
});
|
||||
}
|
||||
|
||||
@@ -134,10 +138,8 @@ sub store_interfaces {
|
||||
my $i_pvid = $snmp->i_pvid;
|
||||
my $i_lastchange = $snmp->i_lastchange;
|
||||
|
||||
# clear the cached uptime...
|
||||
# I think I just threw up a little in my mouth.
|
||||
delete $snmp->{_uptime};
|
||||
my $dev_uptime = $snmp->uptime;
|
||||
# clear the cached uptime and get a new one
|
||||
my $dev_uptime = $snmp->load_uptime;
|
||||
|
||||
if (scalar grep {$_ > $dev_uptime} values %$i_lastchange) {
|
||||
info sprintf ' [%s] interfaces - device uptime has wrapped - correcting',
|
||||
@@ -208,9 +210,13 @@ sub store_interfaces {
|
||||
}
|
||||
|
||||
schema('netdisco')->txn_do(sub {
|
||||
$device->ports->delete;
|
||||
my $gone = $device->ports->delete;
|
||||
debug sprintf ' [%s] interfaces - removed %s interfaces',
|
||||
$device->ip, $gone;
|
||||
$device->update_or_insert;
|
||||
$device->ports->populate(\@interfaces);
|
||||
debug sprintf ' [%s] interfaces - added %d new interfaces',
|
||||
$device->ip, scalar @interfaces;
|
||||
});
|
||||
}
|
||||
|
||||
@@ -257,8 +263,12 @@ sub store_wireless {
|
||||
}
|
||||
|
||||
schema('netdisco')->txn_do(sub {
|
||||
$device->ssids->delete;
|
||||
my $gone = $device->ssids->delete;
|
||||
debug sprintf ' [%s] wireless - removed %s SSIDs',
|
||||
$device->ip, $gone;
|
||||
$device->ssids->populate(\@ssids);
|
||||
debug sprintf ' [%s] wireless - added %d new SSIDs',
|
||||
$device->ip, scalar @ssids;
|
||||
});
|
||||
|
||||
# build device channel list suitable for DBIC
|
||||
@@ -281,8 +291,12 @@ sub store_wireless {
|
||||
}
|
||||
|
||||
schema('netdisco')->txn_do(sub {
|
||||
$device->wireless_ports->delete;
|
||||
my $gone = $device->wireless_ports->delete;
|
||||
debug sprintf ' [%s] wireless - removed %s wireless channels',
|
||||
$device->ip, $gone;
|
||||
$device->wireless_ports->populate(\@channels);
|
||||
debug sprintf ' [%s] wireless - added %d new wireless channels',
|
||||
$device->ip, scalar @channels;
|
||||
});
|
||||
}
|
||||
|
||||
@@ -322,17 +336,17 @@ sub store_vlans {
|
||||
my $interfaces = $snmp->interfaces;
|
||||
|
||||
# build device port vlans suitable for DBIC
|
||||
my %portvlans;
|
||||
my @portvlans;
|
||||
foreach my $entry (keys %$i_vlan_membership) {
|
||||
my $port = $interfaces->{$entry};
|
||||
next unless defined $port;
|
||||
|
||||
my $type = $i_vlan_type->{$entry};
|
||||
$portvlans{$port} = [];
|
||||
|
||||
foreach my $vlan (@{ $i_vlan_membership->{$entry} }) {
|
||||
my $native = ((defined $i_vlan->{$entry}) and ($vlan eq $i_vlan->{$entry})) ? "t" : "f";
|
||||
push @{$portvlans{$port}}, {
|
||||
push @portvlans, {
|
||||
port => $port,
|
||||
vlan => $vlan,
|
||||
native => $native,
|
||||
vlantype => $type,
|
||||
@@ -352,14 +366,21 @@ sub store_vlans {
|
||||
}
|
||||
|
||||
schema('netdisco')->txn_do(sub {
|
||||
$device->vlans->delete;
|
||||
my $gone = $device->vlans->delete;
|
||||
debug sprintf ' [%s] vlans - removed %s device VLANs',
|
||||
$device->ip, $gone;
|
||||
$device->vlans->populate(\@devicevlans);
|
||||
debug sprintf ' [%s] vlans - added %d new device VLANs',
|
||||
$device->ip, scalar @devicevlans;
|
||||
});
|
||||
|
||||
foreach my $port (keys %portvlans) {
|
||||
my $port = $device->ports->find({port => $port});
|
||||
$port->vlans->delete;
|
||||
$port->vlans->populate($portvlans{$port});
|
||||
}
|
||||
schema('netdisco')->txn_do(sub {
|
||||
my $gone = $device->port_vlans->delete;
|
||||
debug sprintf ' [%s] vlans - removed %s port VLANs',
|
||||
$device->ip, $gone;
|
||||
$device->port_vlans->populate(\@portvlans);
|
||||
debug sprintf ' [%s] vlans - added %d new port VLANs',
|
||||
$device->ip, scalar @portvlans;
|
||||
});
|
||||
}
|
||||
|
||||
@@ -402,15 +423,15 @@ sub store_power {
|
||||
my $p_power = $snmp->peth_port_power;
|
||||
|
||||
# build device port power info suitable for DBIC
|
||||
my %portpower;
|
||||
my @portpower;
|
||||
foreach my $entry (keys %$p_ifindex) {
|
||||
my $port = $interfaces->{ $p_ifindex->{$entry} };
|
||||
next unless $port;
|
||||
|
||||
my ($module) = split m/\./, $entry;
|
||||
$portpower{$port} = [];
|
||||
|
||||
push @{$portpower{$port}}, {
|
||||
push @portpower, {
|
||||
port => $port,
|
||||
module => $module,
|
||||
admin => $p_admin->{$entry},
|
||||
status => $p_pstatus->{$entry},
|
||||
@@ -421,14 +442,21 @@ sub store_power {
|
||||
}
|
||||
|
||||
schema('netdisco')->txn_do(sub {
|
||||
$device->power_modules->delete;
|
||||
my $gone = $device->power_modules->delete;
|
||||
debug sprintf ' [%s] power - removed %s power modules',
|
||||
$device->ip, $gone;
|
||||
$device->power_modules->populate(\@devicepower);
|
||||
debug sprintf ' [%s] power - added %d new power modules',
|
||||
$device->ip, scalar @devicepower;
|
||||
});
|
||||
|
||||
foreach my $port (keys %portpower) {
|
||||
my $port = $device->ports->find({port => $port});
|
||||
$port->power->delete if $port->power;
|
||||
$port->create_related('power', $portpower{$port});
|
||||
}
|
||||
schema('netdisco')->txn_do(sub {
|
||||
my $gone = $device->powered_ports->delete;
|
||||
debug sprintf ' [%s] power - removed %s PoE capable ports',
|
||||
$device->ip, $gone;
|
||||
$device->powered_ports->populate(\@portpower);
|
||||
debug sprintf ' [%s] power - added %d new PoE capable ports',
|
||||
$device->ip, scalar @portpower;
|
||||
});
|
||||
}
|
||||
|
||||
@@ -487,8 +515,12 @@ sub store_modules {
|
||||
}
|
||||
|
||||
schema('netdisco')->txn_do(sub {
|
||||
$device->modules->delete;
|
||||
my $gone = $device->modules->delete;
|
||||
debug sprintf ' [%s] modules - removed %s chassis modules',
|
||||
$device->ip, $gone;
|
||||
$device->modules->populate(\@modules);
|
||||
debug sprintf ' [%s] modules - added %d new chassis modules',
|
||||
$device->ip, scalar @modules;
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user