port Scheduler to pluggable jobqueue
This commit is contained in:
21
Netdisco/lib/App/Netdisco/Daemon/JobQueue/PostgreSQL.pm
Normal file
21
Netdisco/lib/App/Netdisco/Daemon/JobQueue/PostgreSQL.pm
Normal 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;
|
||||||
@@ -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 {
|
||||||
|
|||||||
@@ -208,6 +208,8 @@ job_type_keys:
|
|||||||
Poller: pollers
|
Poller: pollers
|
||||||
Interactive: interactives
|
Interactive: interactives
|
||||||
|
|
||||||
|
job_queue: PostgreSQL
|
||||||
|
|
||||||
# ---------------
|
# ---------------
|
||||||
# DANCER INTERNAL
|
# DANCER INTERNAL
|
||||||
# ---------------
|
# ---------------
|
||||||
|
|||||||
Reference in New Issue
Block a user