Difference between revisions of "SmartExecutor"
Luca.frosini (Talk | contribs) (→The Service) |
Luca.frosini (Talk | contribs) (→The Service) |
||
Line 24: | Line 24: | ||
* '''capabilities''' the plugin has to satisfy to correctly run an execution (e.g. the machine has a certain version of python interpreter) ('''OPTIONAL''') | * '''capabilities''' the plugin has to satisfy to correctly run an execution (e.g. the machine has a certain version of python interpreter) ('''OPTIONAL''') | ||
* '''scheduling''' strategy to launch the execution (e.g. every day at 22:00) ('''OPTIONAL''') | * '''scheduling''' strategy to launch the execution (e.g. every day at 22:00) ('''OPTIONAL''') | ||
− | * '''persist''' if the scheduling has to be persisted. If the SmartExecutor instance terminate another SmartExecutor must take in charge that scheduling. Due to a scheduling can survive over the time | + | * '''persist''' if the scheduling has to be persisted. If the SmartExecutor instance terminate another SmartExecutor must take in charge that scheduling. Due to a scheduling can survive over the time is strongly recommend to declare the needed capabilities. |
== Plugins == | == Plugins == |
Revision as of 14:21, 20 October 2015
The SmartExecutor service allows to execute "gCube Tasks" and monitor their execution status. Each instance of the SmartExecutor service can run the "gCube Tasks" related to the plugins available on such an instance.
Each instance of the SmartExecutor service publishes descriptive information about the co-deployed plugins.
Clients may interact with the SmartExecutor service through a library of high-level facilities to simplify the discovery of available plugins in those instances. Each client can request to execute a "gCube Tasks" or getting informations about the state of their execution.
Contents
The Service
SmartExecutor service allows tasks execution through the use of co-deployed plugins. The service allows to pass inputs parameter to the plugin requested to run.
SmartExecutor service can run the tasks in two mode:
- Run and Die
- Scheduled
In the Run and Die mode the requested plugin has been run just one time using the input parameters contained in the invocation request. When the execution terminate because is finished, is stopped or stop due to exception a new execution can be run only if is explicitly requested.
In Scheduled mode, the way to schedule the plugin execution is indicated in the invocation parameters. The execution is invoked every time it matches the scheduling parameters.
The invocation parameters are:
- name of the plugin to be instantiated and run (MANDATORY)
- inputs to pass to plugin instance execution (MANDATORY)
- capabilities the plugin has to satisfy to correctly run an execution (e.g. the machine has a certain version of python interpreter) (OPTIONAL)
- scheduling strategy to launch the execution (e.g. every day at 22:00) (OPTIONAL)
- persist if the scheduling has to be persisted. If the SmartExecutor instance terminate another SmartExecutor must take in charge that scheduling. Due to a scheduling can survive over the time is strongly recommend to declare the needed capabilities.
Plugins
At startup time the SmartExecutor discover the available plugins (using java.util.ServiceLoader). Once discovered the SmartExecutor gather some required informations of the plugin (e.g. version, name) and ask to the plugin to discover some capabilities fo the machine it need to publish for client which make us of it (e.g. available python version, available R version, a certain hardware capability). Is responsibility of the plugin to collects this information. The smart Executor publish the required information and the discovered capabilities on IS using a ServiceEndpoint with Category: VREManagement and Name: SmartExecutor to publish information regarding the co-deployed plugins and their own information.
SmartExecutor interaction
The SmartExecutor service provides a client library to simplify the following procedures:
- discover service instances that can execute the target task. This requires interaction with the Information System.
- launch the execution of the task with one the discovered instances.
- monitor the execution of the running task.
Instance Discovery
Launching Tasks
Task Inputs
Monitor Task Execution
Plugin Development
SmartExecutor plugins may have arbitrary size and dependencies but must include the following components:
Tasks
Note: Plugins are instantiated by the Executor and thus must have have a zero-argument constructor.
Development Environment and Testing
This [Eclipse project] may be used to kick-off plugin development and testing.