[#119] netdisco-do expirenodes (ND1 expirenodes & expire-nodes-subnet)

This commit is contained in:
Oliver Gorwits
2015-03-24 21:06:10 +00:00
parent 93d5d82d62
commit 03d3098545
3 changed files with 31 additions and 2 deletions

View File

@@ -1,10 +1,11 @@
2.032000_001 - 2015-03-07
2.032001 - 2015-03-24
[NEW FEATURES]
* macsuck_unsupported setting to allow node gathering on delinquent switches
* netdisco-do -d accepts IP prefixes (subnet in CIDR format)
* [#110] rules for IP Phone and Wireless AP identification now configurable
* [#119] netdisco-do expirenodes (ND1 expirenodes & expire-nodes-subnet)
[ENHANCEMENTS]

View File

@@ -312,7 +312,8 @@ Run an arpnip for all known devices.
Delete a device (specified with C<-d>). Pass a log message for the action in
the C<-e> parameter. Optionally request for associated nodes to be archived
(rather than deleted) by setting the C<-p> parameter to "C<yes>".
(rather than deleted) by setting the C<-p> parameter to "C<yes>" (mnemonic:
U<p>reserve).
~netdisco/bin/netdisco-do delete -d 192.0.2.1
~netdisco/bin/netdisco-do delete -d 192.0.2.1 -e 'older than the sun'
@@ -343,6 +344,15 @@ Run an nbtstat for all known nodes.
Run Device and Node expiry actions according to configuration.
=head2 expirenodes
Archive nodes on the specified device. If you want to delete nodes, set the
C<-e> parameter to "C<no>" (mnemonic: U<e>xpire). If you want to perform the
action on a specific port, set the C<-p> parameter.
~netdisco/bin/netdisco-do expirenodes -d 192.0.2.1
~netdisco/bin/netdisco-do expirenodes -d 192.0.2.1 -p FastEthernet0/1 -e no
=head2 graph
Generate GrapgViz graphs for the largest cluster of devices.

View File

@@ -52,4 +52,22 @@ sub expire {
return job_done("Checked expiry for all Devices and Nodes");
}
# expire nodes for a specific device
sub expirenodes {
my ($self, $job) = @_;
return job_error('Missing device') unless $job->device;
schema('netdisco')->txn_do(sub {
schema('netdisco')->resultset('Node')->search({
switch => $job->device->ip,
($job->port ? (port => $job->port) : ()),
})->delete(
($job->extra ? () : ({ archive_nodes => 1 }))
);
});
return job_done("Expired nodes for ". $job->device->ip);
}
1;