Don't queue devices which are excluded by configuration or don't have the layers to support the operation
This commit is contained in:
@@ -23,6 +23,8 @@
|
||||
This is to support some devices (HP?) which have plain numbers for port names
|
||||
and Netdisco defaults to assuming this is a VLAN number (R. Kerr)
|
||||
* Upgrade floatThead JS plugin to improve performance for large tables
|
||||
* Don't queue devices which are excluded by configuration or don't have the
|
||||
layers to support the operation
|
||||
|
||||
[BUG FIXES]
|
||||
|
||||
|
||||
@@ -16,15 +16,26 @@ use namespace::clean;
|
||||
sub _walk_body {
|
||||
my ($self, $job_type, $job) = @_;
|
||||
|
||||
my $action_method = $job_type .'_action';
|
||||
my $job_action = $self->$action_method;
|
||||
|
||||
my $layer_method = $job_type .'_layer';
|
||||
my $job_layer = $self->$layer_method;
|
||||
|
||||
my $jobqueue = schema('netdisco')->resultset('Admin');
|
||||
my $devices = schema('netdisco')->resultset('Device')
|
||||
my @devices = schema('netdisco')->resultset('Device')
|
||||
->search({ip => { -not_in =>
|
||||
$jobqueue->search({
|
||||
device => { '!=' => undef},
|
||||
action => $job_type,
|
||||
status => { -like => 'queued%' },
|
||||
})->get_column('device')->as_query
|
||||
}})->get_column('ip');
|
||||
}})->has_layer($job_layer)->get_column('ip')->all;
|
||||
|
||||
my $filter_method = $job_type .'_filter';
|
||||
my $job_filter = $self->$filter_method;
|
||||
|
||||
my @filtered_devices = grep {$job_filter->($_)} @devices;
|
||||
|
||||
schema('netdisco')->resultset('Admin')->txn_do_locked(sub {
|
||||
$jobqueue->populate([
|
||||
@@ -32,7 +43,7 @@ sub _walk_body {
|
||||
device => $_,
|
||||
action => $job_type,
|
||||
status => 'queued',
|
||||
}} ($devices->all)
|
||||
}} (@filtered_devices)
|
||||
]);
|
||||
});
|
||||
|
||||
|
||||
Reference in New Issue
Block a user