JobCenter::Client::Mojo - JobCenter JSON-RPC 2.0 Api client using Mojo.
use JobCenter::Client::Mojo; my $client = JobCenter::Client::Mojo->new( address => ... port => ... who => ... token => ... ); my ($job_id, $outargs) = $client->call( wfname => 'test', inargs => { test => 'test' }, );
JobCenter::Client::Mojo is a class to build a client to connect to the JSON-RPC 2.0 Api of the JobCenter workflow engine. The client can be used to create and inspect jobs as well as for providing 'worker' services to the JobCenter.
$client = JobCenter::Client::Mojo->new(%arguments);
Class method that returns a new JobCenter::Client::Mojo object.
Valid arguments are:
(default: 127.0.0.1)
(default 6522)
(default false)
(default undef)
(required)
(default: password)
(default: false)
when true expects the inargs to be valid json, when false a perl hashref is expected and json encoded. (default true)
(per default a new Mojo::Log object is created)
(default 60 seconds)
(default 5 minutes)
($job_id, $result) = $client->call(%args);
Creates a new JobCenter job and waits for the results. Throws an error if somethings goes wrong immediately. Errors encountered during later processing are returned as a JobCenter error object.
$job_id = $client->call_nb(%args);
Creates a new JobCenter job and call the provided callback on completion of the job. Throws an error if somethings goes wrong immediately. Errors encountered during later processing are returned as a JobCenter error object to the callback.
Valid arguments are those for call and:
( cb1 => sub { ($job_id, $err) = @_; ... } )
If job_id is undefined the job was not created, the error is then returned as the second return value.
( cb2 => sub { ($job_id, $outargs) = @_; ... } )
($job_id, $result) = $client->get_job_status($job_id);
Retrieves the status for the given $job_id. If the job_id does not exist then the returned $job_id will be undefined and $result will be an error message. If the job has not finished executing then both $job_id and $result will be undefined. Otherwise the $result will contain the result of the job. (Which may be a JobCenter error object)
($err, @jobs) = $client->find_jobs({'foo'=>'bar'});
Finds all currently running jobs with arguments matching the filter expression. The expression is evaluated in PostgreSQL using the @> for jsonb objects, basically this means that you can only do equality tests for one or more top-level keys. If @jobs is empty $err might contain an error message.
$status = $client->ping($timeout);
Tries to ping the JobCenter API. On success return true. On failure returns the undefined value, after that the client object should be undefined.
Announces the capability to do an action to the Api. The provided callback will be called when there is a task to be performed. Returns an error when there was a problem announcing the action.
my $err = $client->announce( workername => 'me', actionname => 'do', slots => 1 cb => sub { ... }, ); die "could not announce $actionname?: $err" if $err;
See jcworker for an example.
(optional, defaults to client->who, processname and processid)
(optional, default 'sync')
Possible values:
(optional, default false)
(optional, default 1)
(optional, only valid for mode 'subproc')
The filter expression allows a worker to specify that it can only do the actionname for a certain subset of arguments. For example, for a "mkdir" action the filter expression {'host' => 'example.com'} would mean that this worker can only do mkdir on host example.com. Filter expressions are limited to simple equality tests on one or more keys, and only those keys that are allowed in the action definition. Filtering can be allowed, be mandatory or be forbidden per action.
If the addenv flag is true the action callback will be given one extra argument containing the action environment as a hashref. In the async callback mode the environment will be inserted before the result callback.
Starts the Mojo::IOLoop.
Mojo::IOLoop, Mojo::IOLoop::Stream, http://mojolicious.org: the Mojolicious Web framework
"jcclient" in examples, "jcworker" in examples
https://github.com/a6502/JobCenter: JobCenter Orchestration Engine
This software has been developed with support from STRATO. In German: Diese Software wurde mit Unterstützung von STRATO entwickelt.
Wieger Opmeer <wiegerop@cpan.org>
This software is copyright (c) 2017 by Wieger Opmeer.
This is free software; you can redistribute it and/or modify it under the same terms as the Perl 5 programming language system itself.
To install JobCenter::Client::Mojo, copy and paste the appropriate command in to your terminal.
cpanm
cpanm JobCenter::Client::Mojo
CPAN shell
perl -MCPAN -e shell install JobCenter::Client::Mojo
For more information on module installation, please visit the detailed CPAN module installation guide.