From 3f8ffe787f3af1b8eacf1e712475b1096c490b2e Mon Sep 17 00:00:00 2001 From: Oliver Gorwits Date: Sun, 30 Apr 2023 22:59:20 +0100 Subject: [PATCH] hooks only queued if their trigger job is successful (done) --- lib/App/Netdisco/Worker/Plugin/Arpnip/Hooks.pm | 6 ++++++ lib/App/Netdisco/Worker/Plugin/Delete/Hooks.pm | 6 ++++++ lib/App/Netdisco/Worker/Plugin/Discover/Hooks.pm | 6 ++++++ lib/App/Netdisco/Worker/Plugin/Macsuck/Hooks.pm | 6 ++++++ 4 files changed, 24 insertions(+) diff --git a/lib/App/Netdisco/Worker/Plugin/Arpnip/Hooks.pm b/lib/App/Netdisco/Worker/Plugin/Arpnip/Hooks.pm index 9e713e78..d50822a1 100644 --- a/lib/App/Netdisco/Worker/Plugin/Arpnip/Hooks.pm +++ b/lib/App/Netdisco/Worker/Plugin/Arpnip/Hooks.pm @@ -11,6 +11,12 @@ register_worker({ phase => 'late' }, sub { my ($job, $workerconf) = @_; my $count = 0; + my $best = $job->best_status; + if (Status->$best->level != Status->done->level) { + return Status + ->info(sprintf ' [%s] hooks - skipping due to incomplete job', $job->device); + } + foreach my $conf (@{ setting('hooks') }) { my $no = ($conf->{'filter'}->{'no'} || []); my $only = ($conf->{'filter'}->{'only'} || []); diff --git a/lib/App/Netdisco/Worker/Plugin/Delete/Hooks.pm b/lib/App/Netdisco/Worker/Plugin/Delete/Hooks.pm index 062f913f..c8571cb5 100644 --- a/lib/App/Netdisco/Worker/Plugin/Delete/Hooks.pm +++ b/lib/App/Netdisco/Worker/Plugin/Delete/Hooks.pm @@ -11,6 +11,12 @@ register_worker({ phase => 'late' }, sub { my ($job, $workerconf) = @_; my $count = 0; + my $best = $job->best_status; + if (Status->$best->level != Status->done->level) { + return Status + ->info(sprintf ' [%s] hooks - skipping due to incomplete job', $job->device); + } + foreach my $conf (@{ setting('hooks') }) { my $no = ($conf->{'filter'}->{'no'} || []); my $only = ($conf->{'filter'}->{'only'} || []); diff --git a/lib/App/Netdisco/Worker/Plugin/Discover/Hooks.pm b/lib/App/Netdisco/Worker/Plugin/Discover/Hooks.pm index d647a38a..c125f034 100644 --- a/lib/App/Netdisco/Worker/Plugin/Discover/Hooks.pm +++ b/lib/App/Netdisco/Worker/Plugin/Discover/Hooks.pm @@ -11,6 +11,12 @@ register_worker({ phase => 'late' }, sub { my ($job, $workerconf) = @_; my $count = 0; + my $best = $job->best_status; + if (Status->$best->level != Status->done->level) { + return Status + ->info(sprintf ' [%s] hooks - skipping due to incomplete job', $job->device); + } + foreach my $conf (@{ setting('hooks') }) { my $no = ($conf->{'filter'}->{'no'} || []); my $only = ($conf->{'filter'}->{'only'} || []); diff --git a/lib/App/Netdisco/Worker/Plugin/Macsuck/Hooks.pm b/lib/App/Netdisco/Worker/Plugin/Macsuck/Hooks.pm index 1038cf3a..1cf5b52e 100644 --- a/lib/App/Netdisco/Worker/Plugin/Macsuck/Hooks.pm +++ b/lib/App/Netdisco/Worker/Plugin/Macsuck/Hooks.pm @@ -11,6 +11,12 @@ register_worker({ phase => 'late' }, sub { my ($job, $workerconf) = @_; my $count = 0; + my $best = $job->best_status; + if (Status->$best->level != Status->done->level) { + return Status + ->info(sprintf ' [%s] hooks - skipping due to incomplete job', $job->device); + } + foreach my $conf (@{ setting('hooks') }) { my $no = ($conf->{'filter'}->{'no'} || []); my $only = ($conf->{'filter'}->{'only'} || []);