Jump to: navigation, search



Adding External Tasks Support


Enable plug-in to inject tasks to the engine application using the REST API, change their statuses and track them from the UI.
A task may have other nesting sub-tasks under it.


Current status

  • Last updated date: Feb 12, 2013

Use Case

The main use case is for third party vendors, to integrate with oVirt. A vendor may have a set of external tasks that he may inject to the system in any flow. Multiple Vendors may integrate with the system at any given time.

Detailed Description

Plug-ins using the REST API should be enable to inject and track external tasks to oVirt and see those tasks displayed in the oVirt UI.
Tasks may be nested
Tasks may run concurrently
Sub-Tasks of the same Task may run concurrently
Tasks/Sub-Tasks should support the following statuses:

Started (only for the task)

Solution should support setting percentage for the Task Started state
Task Flow

  Waiting -> Started (x %) |
                           -> Completed
                           -> Failed 

Sub Task Flow

 Waiting -> Running        |
                           -> Completed
                           -> Failed


Adding a new task
Adding a nested sub-task to an existing task
Removing a task
Updating a task/sub-task status

As in the Task Monitor that serves internal oVirt commands, Task should be displayed for a configurable time after competion and then vanished from the UI.

Benefit to oVirt

The benefit of External Tasks injection is the ability to track tasks that are performed outside of oVirt or hybrid tasks when some of the sub-tasks are done by oVirt and some are external
this feature will enable all users to track the advance of a task that is not completely executed under oVirt.

Sample use-cases:
A user would like to clone a VM and cranks up our Rapid Cloning wizard. They fill in all the information and have selected a VM that is currently running. Upon clicking Ok, the information is sent to the server which starts performing a set of actions including the following

  a. Shutdown the VM (oVirt REST)
  b. Coalesce the disk (oVirt REST)
  c. Clone the disk (External)
  d. Update metadata in domain associated with new disk (External)
  e. Create new VM based on data from original VM (oVirt REST)
  f. Attach cloned disk to VM (oVirt REST)

Each of these items would be a subtask of the overall Cloning task. At the beginning of this process, we would create the Cloning task through REST in oVirt. We could potentially include all the subtasks in the initial creation or add them as needed.

As the tasks are performed, we would make REST calls to update the started/ finished status as well as the percentage complete if that's supported.

Dependencies / Related Features

See also UI-Plugins

Documentation / External references


Comments and Discussion

This below adds a link to the "discussion" tab associated with your page. This provides the ability to have ongoing comments or conversation without bogging down the main feature page


Test 1

Create an external job which is marked as auto-cleared
 Add external steps and sub steps to the job
 Update on completed tasks and sub tasks 
 Check that job completes successfully and is cleared after the configured timeout 

Test 2

 Repeat test 1 with auto-cleared = false
 After job completes verify that it is not cleared after the configured timeout from DB
 Clear the job manually

Test 3

 Repeat test 1 with a job that includes a mix of internal and external steps , 
 Make sure that for internal steps the job/step parent id should be set in the URI parameters

Test 4

 Repeat test 2 with a job that includes a mix of internal and external steps ,
 Make sure that for internal steps the job/step parent id should be set in the URI parameters