From 3baa7a818af89449baadc6e25003cc6acde84551 Mon Sep 17 00:00:00 2001 From: Oliver Gorwits Date: Sun, 3 Sep 2017 16:22:29 +0100 Subject: [PATCH] remove unnecessary Worker::Common role --- lib/App/Netdisco/Backend/Worker/Common.pm | 68 ----------------------- lib/App/Netdisco/Backend/Worker/Poller.pm | 63 ++++++++++++++++++++- 2 files changed, 61 insertions(+), 70 deletions(-) delete mode 100644 lib/App/Netdisco/Backend/Worker/Common.pm diff --git a/lib/App/Netdisco/Backend/Worker/Common.pm b/lib/App/Netdisco/Backend/Worker/Common.pm deleted file mode 100644 index 59ef5d0d..00000000 --- a/lib/App/Netdisco/Backend/Worker/Common.pm +++ /dev/null @@ -1,68 +0,0 @@ -package App::Netdisco::Backend::Worker::Common; - -use Dancer qw/:moose :syntax :script/; - -use Try::Tiny; -use App::Netdisco::Util::MCE; - -use Role::Tiny; -use namespace::clean; - -use Time::HiRes 'sleep'; -use App::Netdisco::JobQueue qw/jq_defer jq_complete/; - -sub worker_begin { (shift)->{started} = time } - -sub worker_body { - my $self = shift; - my $wid = $self->wid; - - while (1) { - prctl sprintf 'nd2: #%s poll: idle', $wid; - - my $job = $self->{queue}->dequeue(1); - next unless defined $job; - my $action = $job->action; - - try { - $job->started(scalar localtime); - prctl sprintf 'nd2: #%s poll: #%s: %s', - $wid, $job->job, $job->summary; - info sprintf "pol (%s): starting %s job(%s) at %s", - $wid, $action, $job->job, $job->started; - my ($status, $log) = $self->$action($job); - $job->status($status); - $job->log($log); - } - catch { - $job->status('error'); - $job->log("error running job: $_"); - $self->sendto('stderr', $job->log ."\n"); - }; - - $self->close_job($job); - sleep( setting('workers')->{'min_runtime'} || 0 ); - $self->exit(0); # recycle worker - } -} - -sub close_job { - my ($self, $job) = @_; - my $now = scalar localtime; - - info sprintf "pol (%s): wrapping up %s job(%s) - status %s at %s", - $self->wid, $job->action, $job->job, $job->status, $now; - - try { - if ($job->status eq 'defer') { - jq_defer($job); - } - else { - $job->finished($now); - jq_complete($job); - } - } - catch { $self->sendto('stderr', "error closing job: $_\n") }; -} - -1; diff --git a/lib/App/Netdisco/Backend/Worker/Poller.pm b/lib/App/Netdisco/Backend/Worker/Poller.pm index 1e62d61b..97713218 100644 --- a/lib/App/Netdisco/Backend/Worker/Poller.pm +++ b/lib/App/Netdisco/Backend/Worker/Poller.pm @@ -1,10 +1,15 @@ package App::Netdisco::Backend::Worker::Poller; +use Dancer qw/:moose :syntax :script/; + +use Try::Tiny; +use App::Netdisco::Util::MCE; + use Role::Tiny; use namespace::clean; -# main worker body -with 'App::Netdisco::Backend::Worker::Common'; +use Time::HiRes 'sleep'; +use App::Netdisco::JobQueue qw/jq_defer jq_complete/; # add dispatch methods for poller tasks with 'App::Netdisco::Backend::Worker::Poller::Device', @@ -15,4 +20,58 @@ with 'App::Netdisco::Backend::Worker::Poller::Device', 'App::Netdisco::Backend::Worker::Interactive::DeviceActions', 'App::Netdisco::Backend::Worker::Interactive::PortActions'; +sub worker_begin { (shift)->{started} = time } + +sub worker_body { + my $self = shift; + my $wid = $self->wid; + + while (1) { + prctl sprintf 'nd2: #%s poll: idle', $wid; + + my $job = $self->{queue}->dequeue(1); + next unless defined $job; + my $action = $job->action; + + try { + $job->started(scalar localtime); + prctl sprintf 'nd2: #%s poll: #%s: %s', + $wid, $job->job, $job->summary; + info sprintf "pol (%s): starting %s job(%s) at %s", + $wid, $action, $job->job, $job->started; + my ($status, $log) = $self->$action($job); + $job->status($status); + $job->log($log); + } + catch { + $job->status('error'); + $job->log("error running job: $_"); + $self->sendto('stderr', $job->log ."\n"); + }; + + $self->close_job($job); + sleep( setting('workers')->{'min_runtime'} || 0 ); + $self->exit(0); # recycle worker + } +} + +sub close_job { + my ($self, $job) = @_; + my $now = scalar localtime; + + info sprintf "pol (%s): wrapping up %s job(%s) - status %s at %s", + $self->wid, $job->action, $job->job, $job->status, $now; + + try { + if ($job->status eq 'defer') { + jq_defer($job); + } + else { + $job->finished($now); + jq_complete($job); + } + } + catch { $self->sendto('stderr', "error closing job: $_\n") }; +} + 1;