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

View File

@@ -208,6 +208,8 @@ job_type_keys:
Poller: pollers Poller: pollers
Interactive: interactives Interactive: interactives
job_queue: PostgreSQL
# --------------- # ---------------
# DANCER INTERNAL # DANCER INTERNAL
# --------------- # ---------------