port Worker Common to pluggable jobqueue

This commit is contained in:
Oliver Gorwits
2014-04-28 23:46:10 +01:00
parent 8c0614357a
commit 39a0efb3c3
3 changed files with 22 additions and 12 deletions

View File

@@ -18,4 +18,12 @@ sub jobqueue_insert {
}); });
} }
sub jobqueue_update {
my ($self, $settings) = @_;
schema('netdisco')->resultset('Admin')
->find(delete $settings->{id}, {for => 'update'})
->update($settings);
}
true; true;

View File

@@ -7,7 +7,8 @@ use Try::Tiny;
use Role::Tiny; use Role::Tiny;
use namespace::clean; use namespace::clean;
requires qw/worker_type worker_name munge_action/; with 'App::Netdisco::Daemon::JobQueue::'. setting('job_queue');
requires qw/worker_type worker_name munge_action jobqueue_update/;
sub worker_body { sub worker_body {
my $self = shift; my $self = shift;
@@ -65,19 +66,19 @@ sub close_job {
# lock db row and either defer or complete the job # lock db row and either defer or complete the job
try { try {
if ($status eq 'defer') { if ($status eq 'defer') {
schema('netdisco')->resultset('Admin') $self->jobqueue_update({
->find($job->job, {for => 'update'}) id => $job->job,
->update({ status => 'queued' }); status => 'queued',
});
} }
else { else {
schema('netdisco')->resultset('Admin') $self->jobqueue_update({
->find($job->job, {for => 'update'}) id => $job->job,
->update({ status => $status,
status => $status, log => $log,
log => $log, started => $job->started,
started => $job->started, finished => $now,
finished => $now, });
});
} }
# remove job from local queue # remove job from local queue

View File

@@ -9,6 +9,7 @@ use Role::Tiny;
use namespace::clean; use namespace::clean;
with 'App::Netdisco::Daemon::JobQueue::'. setting('job_queue'); with 'App::Netdisco::Daemon::JobQueue::'. setting('job_queue');
requires 'jobqueue_insert';
sub worker_begin { sub worker_begin {
my $self = shift; my $self = shift;