This feature is available in Ultimate edition only.
This page covers various Task development topics and assumes that you have gone through the Getting Started section and Task Overview pages.
A Task is an automation routine that performs work on 'assets' in the cloud or on the local network. Tasks can interact directly with APIs of supported virtualization platforms such as Amazon AWS, VMWare, Eucalyptus and OpenStack. Within the cloud or on the local network, Tasks can interact with virtually any software system: operating systems, databases, applications, and so on.
A Task performs this work using a fairly consistent workflow:
connecting to one or more 'assets' (real or virtual)
interacting with that asset, either gathering, pushing or manipulating data.
interacting with virtualization platform APIs if needed
Pages for creating and managing Tasks can be accessed from the top menu by selecting Tasks -> Manage Tasks.
Creating a New Task
To create a new Task, simply click the Create button at the top of the Manage Tasks page. A popup dialog appears requesting the following information:
Task Code (required) - a short code used to uniquely identify the Task. The code can be no longer than 32 characters. The code is a useful organizational mechanism.
Task Name (required) - a unique name for the Task. The name can be up to 256 characters long, and should be a clear and concise identifier.
Description (optional) - The description can be as long as necessary to fully describe the purpose of the Task.
Complete the required fields and select Create. After a few seconds the screen will refresh and your new Task will appear in editing mode.
Determine and implement a suitable best practice naming convention for your Tasks. Once you have a few hundred, things can get messy if you don't think ahead!
Tasks perform their work by following a series of Commands, or 'Steps'. A complete library of Commands exists for interacting with a virtualization platform APIs, managing connections, interacting with systems, manipulating variables, controlling flow logic, logging information, and sending alerts. While there are many Command types, building a Task is an identical process regardless of the actual Command types used.
For a complete tutorial of all Command Types, see Command Reference.
The Task Editor uses drag and drop editing. Notice the main section of the page, on the right hand side. The Name and Version of the Task appears at the top of the page. Below that appears a list of Commands, or Steps. If this is a new Task, a small bordered area contains the text "No Commands have been defined in this Codeblock. Drag a Command here to add it." This is the drop zone for adding a Command.
If Commands already exist, you can drop a new Command above, below, or in between any existing Commands. When a Task runs, Commands are executed in the order that they appear, except when a looping, conditional, or Subtask type of Command affects the flow of logic.
To add a Command, select the Commands tab from the toolbox on the upper left side of the screen. The toolbox panel will change and present options.
A Codeblock is a subset of Commands within a Task. Those familiar with procedural programming languages can think of a Codeblock as a subroutine or function.
Tasks have several Commands for controlling flow logic, such as
If and Loop. In cases where this conditional or iterative logic would need to execute several Commands, a Codeblock is a perfect solution. If a sequence of commands should be executed a number of times, put those commands in a Codeblock used with a Loop. If the Commands should be executed only if a certain condition is true (or false), organize them into a Codeblock used with an
By default, every Task has a MAIN Codeblock. This Codeblock cannot be deleted. Additionally, if there is more than one Codeblock on a Task, the MAIN Codeblock will always be executed first.
To create a new Codeblock, hover over the Codeblock name at the top of the Editor and click the Add New button.
A new Codeblock is added. Focus of the Command list is changed to the new Codeblock. Commands can now be added to the new Codeblock.
Grab a Codeblock from the selector and drop it on the Step editor to create a Codeblock command!
Details tab in the toolbox shows the basic details of the Task, including Code, Name, and Description. These fields can be changed at any time on a Task that is still in development status.
The Task Name can be changed, but is required to be the same on all versions. Changing the name of a Task will change the name globally, on all versions. This is a normal behavior.
From the Details tab, you may also open a print friendly version of the Task. This is often useful for review purposes. The printable version is one of the few ways to see the entire body of code for a Task, including all Codeblocks and Commands.
From the Details tab, you may additionally view the
Change Log for the Task. The Change Log shows a history of important changes that occurred through the development life cycle of this Task.
Task editing is dynamic, meaning all changes are saved as you work. There is no "Save" button. Additionally, there is no "Undo" functionality, so care should be taken when making complex changes.
Versions tab allows the management of different versions of this Task, as well as change of status. Creating new Versions is a common method of creating checkpoints along the development cycle of a Task, as well as providing a rollback mechanism for putting new code into a production state.
To create a new Version, select the
Versions tab from the toolbox.
When first created, a Task is by default in "Development" status. While in Development status, changes to the Task are allowed.
When a Task is ready, and the approval process has been completed, the Task can be moved to the "Approved" status.
To Approve a Task, select the Versions tab from the toolbox.
A Task also has a property defining whether or not it is the "default" version. As a Task evolves, and many versions are created, only one can be the "default" version. This ensures that lists, search results, and relationships to other objects always reference the correct Task.
Several rules govern "default" versions of Tasks:
Parameters are variable data that can optionally be made available to a Task, and can be changed after a Task has become approved. For example, a Task may be set to gather data and compare to a specific threshold. If that threshold is hard-coded in the Task, a code change would be required to change the threshold value. By using a Parameter, the threshold can be changed at any time.
Parameters can also be provided through the REST API. When an external process initiates a Task, Parameters can be specified.
Within the code of a Task, Parameters are referenced as any other variable, by surrounding them with the escape notation, [$parameter_name$].
To add a new Parameter to a Task, click the Parameters tab in the toolbox.
To remove an existing Parameter, click the [x] icon beside the Parameter name in the list on the Parameters tab.
The primary page for dealing with Tasks is the Manage Tasks page. Access it from the top menu by selecting Tasks > Manage Tasks.
This page shows a sortable, pagable list of all the Tasks defined in the system. To quickly filter the list, or to find a specific Task, simply type some text in the box at the top of the page and click Search.
The Task list will update with Tasks matching your search criteria.
Search criteria on the Manage Tasks page will match any of the following properties of a Task: Code, Name, Description or Status.
Advanced Task Search
Tasks can also be searched for text that exists in the properties of the Commands themselves. From the top menu, select Tasks -> Search.
Enter the desired search text into the box and click Search. A list of results will identify the Task, Codeblock and Command where the match was found, as well as a snippet from the code.
Tasks can be copied from the Manage Tasks page on the top menu by selecting Tasks -> Manage Tasks.
Using the check boxes on the left hand side of the Task list, select only one Task to be copied. (If you select more than one Task, only the first one selected will be copied.)
Click the Copy button. A confirmation will appear showing the name of the Task being copied, and requesting information:
Copy From Version - select a source Version
New Task Code - the code for the new Task
New Task Name - the name for the new Task
Click the Copy button. The Task will be copied and you will be returned to the Manage Tasks page.
The new Task will be created as Version 1.000, regardless of the version number of the original Task.
Tasks can be deleted from the Manage Tasks page on the top menu by selecting Tasks -> Manage Tasks.
- Using the check boxes on the left hand side of the Task list, select one or more Tasks to be deleted.
- Click the Delete button. A confirmation will appear. Click the Delete button.
- The Task(s) will be deleted and you will be returned to the Manage Tasks page.
Deleting a Task will delete all versions of the Task, even though only the "default" version is selected in the Manage Tasks list. Any scheduled Action Plans will also be removed. Deleting a Task cannot be undone.
Task Activity Log
Tasks can be executed by multiple users as well as schedules. The Task Activity Log page provides visibility into the status of all Tasks, regardless of how or by whom they were started.
The Task Activity Log can be accessed from the top menu by selecting Information -> View Task Status
When a Task is run, it creates a record of that execution called a Task Instance. Every Task Instance has a numeric, ascending identifier. By default, the Activity Log is sorted with the most recent Instances at the top.
The Activity Log can be filtered and sorted, and shows helpful information such as how the Task was started, when and how long it ran, current status, and the Asset if relevant.
Click on a row in the Activity Log to view the detail Run Log for a specific Task Instance. Click the edit icon at the end of the line to jump into the editor for that Task.