Squashed commit of the following: commite2ca15c0f8Merge:0a90308ffcf6edAuthor: Oliver Gorwits <oliver@cpan.org> Date: Wed May 21 21:18:58 2014 +0100 Merge branch 'master' into og-pluggable-daemon commit0a90308ecfMerge:e80c575ee398fcAuthor: Oliver Gorwits <oliver@cpan.org> Date: Sat May 17 22:20:40 2014 +0100 Merge branch 'master' into og-pluggable-daemon Conflicts: Netdisco/lib/App/Netdisco.pm commite80c575c57Author: Oliver Gorwits <oliver@cpan.org> Date: Sat May 17 22:14:44 2014 +0100 move worker sleep into jobqueue commitc83b999597Author: Oliver Gorwits <oliver@cpan.org> Date: Sat May 17 22:01:43 2014 +0100 support disable manager from jobqueue dynamic code commit4792b0dc49Author: Oliver Gorwits <oliver@cpan.org> Date: Sat May 17 21:34:28 2014 +0100 fix pod name commit187fc84937Author: Oliver Gorwits <oliver@cpan.org> Date: Sat May 17 21:22:06 2014 +0100 better naming commit1c43aaa0f4Author: Oliver Gorwits <oliver@cpan.org> Date: Sat May 17 21:18:49 2014 +0100 make worker use only JobQueue not LocalQueue directly commit5316058ba8Author: Oliver Gorwits <oliver@cpan.org> Date: Sat May 17 20:42:19 2014 +0100 remove unecessary scrub subroutine commit8077e3de9dAuthor: Oliver Gorwits <oliver@cpan.org> Date: Sat May 17 20:31:18 2014 +0100 remove any duplicate jobs when locking commitd4b5e4e6cdAuthor: Oliver Gorwits <oliver@cpan.org> Date: Sat May 17 20:20:32 2014 +0100 rename DefaultSettings to Configuration commitaacb149d09Author: Oliver Gorwits <oliver@cpan.org> Date: Sat May 17 19:57:45 2014 +0100 no need to check - mgr is not started if 0 workers commit46ebe4cd6aAuthor: Oliver Gorwits <oliver@cpan.org> Date: Sat May 17 19:50:37 2014 +0100 remove unecessary job scrub commit60522fe555Author: Oliver Gorwits <oliver@cpan.org> Date: Sat May 17 19:27:53 2014 +0100 fixes for DefaultSettings commit2c6f0dd0f7Author: Oliver Gorwits <oliver@cpan.org> Date: Sat May 17 19:11:50 2014 +0100 rename housekeeping to schedule commitc12034d2b0Author: Oliver Gorwits <oliver@cpan.org> Date: Sat May 17 19:06:22 2014 +0100 new DefaultSettings package, and mv queue to be key of workers commit49e9079f9aMerge:ec8ad3b213f44eAuthor: Oliver Gorwits <oliver@cpan.org> Date: Sat May 17 08:00:02 2014 +0100 Merge branch 'master' into og-pluggable-daemon commitec8ad3b2d8Author: Oliver Gorwits <oliver@cpan.org> Date: Sun May 11 01:18:21 2014 +0100 fix entered_stamp commit471724dd89Author: Oliver Gorwits <oliver@cpan.org> Date: Sat May 10 23:44:14 2014 +0100 fix auto hack commit4620deff33Author: Oliver Gorwits <oliver@cpan.org> Date: Sat May 10 23:27:11 2014 +0100 final migration commit5413e34e83Author: Oliver Gorwits <oliver@cpan.org> Date: Sat May 10 23:18:12 2014 +0100 more JobQueue migration commit9569bda4d8Author: Oliver Gorwits <oliver@cpan.org> Date: Sat May 10 22:44:20 2014 +0100 migrate to JobQueue :) commit41ee8f91f2Author: Oliver Gorwits <oliver@cpan.org> Date: Sat May 10 22:38:20 2014 +0100 simplify again commit58cba4da24Author: Oliver Gorwits <oliver@cpan.org> Date: Sat May 10 22:06:41 2014 +0100 add POD for JobQueue commitc9afbab26bAuthor: Oliver Gorwits <oliver@cpan.org> Date: Sat May 10 21:36:01 2014 +0100 use Module::Load tricks to avoid some other mess commit50c72c1d64Author: Oliver Gorwits <oliver@cpan.org> Date: Sat May 10 21:12:52 2014 +0100 use Module::Load for dynamic loading commit54510a1560Author: Oliver Gorwits <oliver@cpan.org> Date: Thu May 8 22:05:10 2014 +0100 hack to make functional and OO interface commitb8c706a2e7Author: Oliver Gorwits <oliver@cpan.org> Date: Thu May 8 21:29:31 2014 +0100 simplify role apply for jobqueue commit8a816b9764Author: Oliver Gorwits <oliver@cpan.org> Date: Tue May 6 22:20:50 2014 +0100 remove debug print commitf3131adfc8Author: Oliver Gorwits <oliver@cpan.org> Date: Tue May 6 21:47:30 2014 +0100 big patch to remove knowledge of DB from most worker code commit39a0efb3c3Author: Oliver Gorwits <oliver@cpan.org> Date: Mon Apr 28 23:46:10 2014 +0100 port Worker Common to pluggable jobqueue commit8c0614357aAuthor: Oliver Gorwits <oliver@cpan.org> Date: Mon Apr 28 23:04:13 2014 +0100 port Scheduler to pluggable jobqueue commit3882c157ecMerge:44e6c492480646Author: Oliver Gorwits <oliver@cpan.org> Date: Mon Apr 28 22:36:57 2014 +0100 Merge branch 'master' into og-pluggable-daemon commit44e6c49419Merge:fdeeffc5fc6209Author: Oliver Gorwits <oliver@cpan.org> Date: Mon Apr 28 22:35:53 2014 +0100 Merge branch 'master' into og-pluggable-daemon commit5fc62090e2Author: Oliver Gorwits <oliver@cpan.org> Date: Mon Apr 28 22:15:07 2014 +0100 edge topology 17 * Use commitfdeeffcbe4Author: Oliver Gorwits <oliver@cpan.org> Date: Thu Apr 24 23:13:20 2014 +0100 book specifically same jobs which were seen commit0d97c2b819Author: Oliver Gorwits <oliver@cpan.org> Date: Thu Apr 24 22:57:37 2014 +0100 fix typos commit47265a5292Author: Oliver Gorwits <oliver@cpan.org> Date: Thu Apr 24 21:56:52 2014 +0100 rename file to follow name change commitfd169149c4Author: Oliver Gorwits <oliver@cpan.org> Date: Thu Apr 24 21:52:57 2014 +0100 remove job types from web code commit319489ae00Author: Oliver Gorwits <oliver@cpan.org> Date: Thu Apr 24 21:46:30 2014 +0100 remove job types from scheduler commitccdeca600cAuthor: Oliver Gorwits <oliver@cpan.org> Date: Thu Apr 24 21:33:01 2014 +0100 remove job types from netdisco-daemon-fg commit349bddf609Author: Oliver Gorwits <oliver@cpan.org> Date: Thu Apr 24 21:05:42 2014 +0100 move default env settings to Netdisco.pm commitb4b5cce00aAuthor: Oliver Gorwits <oliver@cpan.org> Date: Thu Apr 24 21:01:26 2014 +0100 remove job type knowledge from code into config
142 lines
3.2 KiB
Perl
142 lines
3.2 KiB
Perl
package App::Netdisco::JobQueue;
|
|
|
|
use Dancer qw/:moose :syntax :script/;
|
|
|
|
use Module::Load ();
|
|
Module::Load::load
|
|
'App::Netdisco::JobQueue::' . setting('workers')->{queue} => ':all';
|
|
|
|
use base 'Exporter';
|
|
our @EXPORT = ();
|
|
our @EXPORT_OK = qw/
|
|
jq_getsome
|
|
jq_locked
|
|
jq_queued
|
|
jq_log
|
|
jq_userlog
|
|
jq_take
|
|
jq_lock
|
|
jq_defer
|
|
jq_complete
|
|
jq_insert
|
|
jq_delete
|
|
/;
|
|
our %EXPORT_TAGS = ( all => \@EXPORT_OK );
|
|
|
|
=head1 NAME
|
|
|
|
App::Netdisco::JobQueue
|
|
|
|
=head1 DESCRIPTION
|
|
|
|
Interface for Netdisco job queue.
|
|
|
|
There are no default exports, however the C<:all> tag will export all
|
|
subroutines.
|
|
|
|
=head1 EXPORT_OK
|
|
|
|
=head2 jq_getsome( $num? )
|
|
|
|
Returns a list of randomly selected queued jobs. Default is to return one job,
|
|
unless C<$num> is provided. Jobs are returned as objects which implement the
|
|
Netdisco job instance interface (see below).
|
|
|
|
=head2 jq_locked()
|
|
|
|
Returns the list of jobs currently booked out to this processing node (denoted
|
|
by the local hostname). Jobs are returned as objects which implement the
|
|
Netdisco job instance interface (see below).
|
|
|
|
=head2 jq_queued( $job_type )
|
|
|
|
Returns a list of IP addresses of devices which currently have a job of the
|
|
given C<$job_type> queued (e.g. C<discover>, C<arpnip>, etc).
|
|
|
|
=head2 jq_log()
|
|
|
|
Returns a list of the most recent 50 jobs in the queue. Jobs are returned as
|
|
objects which implement the Netdisco job instance interface (see below).
|
|
|
|
=head2 jq_userlog( $user )
|
|
|
|
Returns a list of jobs which have been entered into the queue by the passed
|
|
C<$user>. Jobs are returned as objects which implement the Netdisco job
|
|
instance interface (see below).
|
|
|
|
=head2 jq_take( $wid, $type, $max? )
|
|
|
|
Searches in the queue for jobs of type C<$type> and if up to C<$max> are
|
|
available, will book them out to the worker with ID C<$wid>. The default
|
|
number of booked jobs is 1.
|
|
|
|
=head2 jq_lock( $job )
|
|
|
|
Marks a job in the queue as booked out to this processing node (denoted by the
|
|
local hostname). The C<$job> parameter must be an object which implements the
|
|
Netdisco job instance interface (see below).
|
|
|
|
Returns true if successful else returns false.
|
|
|
|
=head2 jq_defer( $job )
|
|
|
|
Marks a job in the queue as available for taking. This is usually done after a
|
|
job is booked but the processing node changes its mind and decides to return
|
|
the job to the queue. The C<$job> parameter must be an object which implements
|
|
the Netdisco job instance interface (see below).
|
|
|
|
Returns true if successful else returns false.
|
|
|
|
=head2 jq_complete( $job )
|
|
|
|
Marks a job as complete. The C<$job> parameter must be an object which
|
|
implements the Netdisco job instance interface (see below). The queue item's
|
|
status, log and finished fields will be updated from the passed C<$job>.
|
|
|
|
Returns true if successful else returns false.
|
|
|
|
=head2 jq_insert( \%job | [ \%job, \%job ...] )
|
|
|
|
Adds the passed jobs to the queue.
|
|
|
|
=head2 jq_delete( $id? )
|
|
|
|
If passed the ID of a job, deletes it from the queue. Otherwise deletes ALL
|
|
jobs from the queue.
|
|
|
|
=head1 Job Instance Interface
|
|
|
|
=head2 id (auto)
|
|
|
|
=head2 type (required)
|
|
|
|
=head2 wid (required, default 0)
|
|
|
|
=head2 entered
|
|
|
|
=head2 started
|
|
|
|
=head2 finished
|
|
|
|
=head2 device
|
|
|
|
=head2 port
|
|
|
|
=head2 action
|
|
|
|
=head2 subaction or extra
|
|
|
|
=head2 status
|
|
|
|
=head2 username
|
|
|
|
=head2 userip
|
|
|
|
=head2 log
|
|
|
|
=head2 debug
|
|
|
|
=cut
|
|
|
|
true;
|