Skip to content

Latest commit

 

History

History
95 lines (53 loc) · 2.53 KB

File metadata and controls

95 lines (53 loc) · 2.53 KB

Jobs

Jobs are used to track progress of long running tasks. A good example for a long running task is cloning of drives and servers. Depending on the current cloud resource usage and the users preferences ( :ref:`drives-avoid` ), a drive clone operation can take a while.

Currently, the operations that create a job for tracking are:
  • Drive cloning
  • Server cloning

How it works

Drive cloning

After successfully starting a cloning operation via the API, you will receive the definition of the newly created drive. All drives have a jobs field, containing references to the all the long running tasks executed on them. The destination, since it is a newly created drive, references only 1 job - the currently running one. The source might contain more jobs, depending on how many times it was cloned. History of completed jobs is kept for 3 days. Older jobs are discarded.

Example clone request:

.. includejson:: dumps/request_drive_clone

Example clone response:

.. includejson:: dumps/response_drive_clone


Using the the jobs field we could examine how is our cloning operation doing:

Example request:

.. includejson:: dumps/request_jobs_drive_clone


Example response:

.. includejson:: dumps/response_jobs_drive_clone

The interesting field here is data.progress. 100 means the job has finished.

Server cloning

Cloning a server is a bit more complex. Since servers generally contain drives, drives must also be cloned. That is why jobs support sub-jobs. When you send a clone server request, you receive the definition of the newly created server. It also has a jobs field containing the definitions of jobs and sub-jobs.

Example clone request:

.. includejson:: dumps/request_server_clone

Example clone response:

.. includejson:: dumps/response_server_clone


Each job has children field with containing its sub-jobs. Note that each sub-job contains a children field, too. Meaning that a sub-job could have a sub-jobs, too.

Example request:

.. includejson:: dumps/request_jobs_server_clone


Example response:

.. includejson:: dumps/response_jobs_server_clone


List all jobs

All jobs can be listed and examined quite easily.

Example request:

.. includejson:: dumps/request_jobs_list


Example response:

.. includejson:: dumps/response_jobs_list

Schema

.. literalinclude:: dumps/response_jobs_schema
     :language: javascript