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; | ||||
|  | ||||
| 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 { | ||||
|   | ||||
| @@ -208,6 +208,8 @@ job_type_keys: | ||||
|   Poller: pollers | ||||
|   Interactive: interactives | ||||
|  | ||||
| job_queue: PostgreSQL | ||||
|  | ||||
| # --------------- | ||||
| # DANCER INTERNAL | ||||
| # --------------- | ||||
|   | ||||
		Reference in New Issue
	
	Block a user