add discoverall and discover_neighbors poller jobs
This commit is contained in:
@@ -33,7 +33,7 @@ sub capacity_for {
|
|||||||
debug "checking local capacity for action $action";
|
debug "checking local capacity for action $action";
|
||||||
|
|
||||||
my $action_map = {
|
my $action_map = {
|
||||||
Poller => [qw/refresh discover/],
|
Poller => [qw/refresh discover discoverall discover_neighbors/],
|
||||||
Interactive => [qw/location contact portcontrol portname vlan power/],
|
Interactive => [qw/location contact portcontrol portname vlan power/],
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|||||||
@@ -14,7 +14,7 @@ my $fqdn = hostfqdn || 'localhost';
|
|||||||
|
|
||||||
my $role_map = {
|
my $role_map = {
|
||||||
(map {$_ => 'Poller'}
|
(map {$_ => 'Poller'}
|
||||||
qw/refresh discover/),
|
qw/refresh discover discoverall discover_neighbors/),
|
||||||
(map {$_ => 'Interactive'}
|
(map {$_ => 'Interactive'}
|
||||||
qw/location contact portcontrol portname vlan power/)
|
qw/location contact portcontrol portname vlan power/)
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -38,7 +38,7 @@ sub discover {
|
|||||||
my $snmp = snmp_connect($device);
|
my $snmp = snmp_connect($device);
|
||||||
|
|
||||||
if (!defined $snmp) {
|
if (!defined $snmp) {
|
||||||
return job_error("Discover failed: could not SNMP connect to $host");
|
return job_error("discover failed: could not SNMP connect to $host");
|
||||||
}
|
}
|
||||||
|
|
||||||
store_device($device, $snmp);
|
store_device($device, $snmp);
|
||||||
@@ -48,7 +48,41 @@ sub discover {
|
|||||||
store_power($device, $snmp);
|
store_power($device, $snmp);
|
||||||
store_modules($device, $snmp);
|
store_modules($device, $snmp);
|
||||||
|
|
||||||
return job_done("Ended Discover for $host");
|
return job_done("Ended discover for $host");
|
||||||
|
}
|
||||||
|
|
||||||
|
# run find_neighbors on all known devices, and run discover on any
|
||||||
|
# newly found devices.
|
||||||
|
sub discoverall {
|
||||||
|
my ($self, $job) = @_;
|
||||||
|
|
||||||
|
my $devices = schema('netdisco')->resultset('Device')->get_column('ip');
|
||||||
|
|
||||||
|
schema('netdisco')->resultset('Admin')->populate([
|
||||||
|
map {{
|
||||||
|
device => $_,
|
||||||
|
action => 'discover_neighbors',
|
||||||
|
status => 'queued',
|
||||||
|
}} ($devices->all)
|
||||||
|
]);
|
||||||
|
|
||||||
|
return job_done("Queued discover_neighbors job for all devices");
|
||||||
|
}
|
||||||
|
|
||||||
|
sub discover_neighbors {
|
||||||
|
my ($self, $job) = @_;
|
||||||
|
|
||||||
|
my $host = NetAddr::IP::Lite->new($job->device);
|
||||||
|
my $device = get_device($host->addr);
|
||||||
|
my $snmp = snmp_connect($device);
|
||||||
|
|
||||||
|
if (!defined $snmp) {
|
||||||
|
return job_error("discover_neighbors failed: could not SNMP connect to $host");
|
||||||
|
}
|
||||||
|
|
||||||
|
find_neighbors($device, $snmp);
|
||||||
|
|
||||||
|
return job_done("Ended find_neighbors for $host");
|
||||||
}
|
}
|
||||||
|
|
||||||
1;
|
1;
|
||||||
|
|||||||
Reference in New Issue
Block a user