port Scheduler to pluggable jobqueue

This commit is contained in:
Oliver Gorwits
2014-04-28 23:04:13 +01:00
parent 3882c157ec
commit 8c0614357a
3 changed files with 28 additions and 5 deletions

View File

@@ -0,0 +1,21 @@
package App::Netdisco::Daemon::JobQueue::PostgreSQL;
use Dancer qw/:moose :syntax :script/;
use Dancer::Plugin::DBIC 'schema';
use Role::Tiny;
use namespace::clean;
sub jobqueue_insert {
my ($self, $settings) = @_;
schema('netdisco')->resultset('Admin')->create({
action => $settings->{action},
device => $settings->{device},
port => $settings->{port},
subaction => $settings->{extra},
status => 'queued',
});
}
true;

View File

@@ -1,7 +1,6 @@
package App::Netdisco::Daemon::Worker::Scheduler;
use Dancer qw/:moose :syntax :script/;
use Dancer::Plugin::DBIC 'schema';
use Algorithm::Cron;
use Try::Tiny;
@@ -9,6 +8,8 @@ use Try::Tiny;
use Role::Tiny;
use namespace::clean;
with 'App::Netdisco::Daemon::JobQueue::'. setting('job_queue');
sub worker_begin {
my $self = shift;
my $wid = $self->wid;
@@ -55,11 +56,10 @@ sub worker_body {
# queue it!
try {
info "sched ($wid): queueing $action job";
schema('netdisco')->resultset('Admin')->create({
$self->jobqueue_insert({
action => $action,
device => ($sched->{device} || undef),
subaction => ($sched->{extra} || undef),
status => 'queued',
device => $sched->{device},
extra => $sched->{extra},
});
}
catch {