Task scheduling protocol¶
Agent request¶
Description¶
The agent advertise itself and its capacities, through URL parameters
Example¶
GET http://glpiserver/glpi/plugins/fusioninventory/api/tasks?agentid=xyz&module['inventory']=2.4.0&module['netinventory']=2.4.0
Server response¶
Description¶
The server response is a list of tasks, and a timestamp for next agent request.
A task had an identifier, and a list of jobs.
A job has an identifier, a type and a list of targets.
Example¶
{
'tasks': [
{
'id': 'task1',
'jobs': [
{
'id': 'job1.1',
'type': 'netdiscovery',
'workers': 2,
'targets': [
{
'network': '192.168.0.0/24',
'workers': 10,
'timeout': 5,
'credentials': [
{
'version': '2c',
'community': 'public'
},
{
'version': '1',
'community': 'public'
},
],
},
{
'network': '192.168.1.1-192.168.1.254',
'workers': 5,
'timeout': 2,
'credentials': [
{
'version': '3',
'username': 'foo',
'authprotocol': 'sha1',
'authpassword': 'bar',
},
],
},
],
},
{
'id': 'job1.2'
'type': 'netinventory',
'workers': 2,
'targets': [
{
'host': '192.168.1.1',
'type': 'printer,'
'credentials': {
'version': '2c',
'community': 'public'
},
},
{
'host': '192.168.1.2',
'type': 'networking,'
'credentials': {
'version': '3',
'username': 'foo',
'authprotocol': 'sha1',
'authpassword': 'bar',
},
},
],
},
],
},
{
'id': 'task3',
'jobs': [
{
'id': 'job31'
'type': 'inventory'
},
],
},
],
'nextContactTime': 1424763734
}
Processing.¶
The agent should process each task, and each job within a task, sequentially.
The agent should process multiple targets of the same job either paralleously if a 'workers' variable is present at job level, sequentially otherwise.
The agent should process a single target paralleously, if a 'workers' variable is present at target level (network discovery only), sequentially otherwise.