Use control tasks

Control tasks are actions that you can perform on middleware or middleware resources. For example, checking the connection to a host is a control task. When you trigger a control task, XL Deploy starts a task that executes the steps associated with the control task.

View control task in the GUI

To view a list of control task in the GUI:

  1. Click Monitoring.
  2. Click Control Tasks. Note: By default, Monitoring only shows the tasks that are assigned to you. To see all tasks, click All tasks.

Trigger a control task from the GUI

To trigger a control task on a configuration item (CI) in the GUI:

  1. In the top navigation bar, click Explorer.
  2. Locate the CI on which you want to trigger a control task. Click Explorer action menu to see the control tasks that are available.
  3. Select the control task to trigger it. Note: Some control tasks will require you to provide values for parameters before XL Deploy executes the task.

Trigger a control task from the CLI

You can execute control tasks from the XL Deploy command-line interface (CLI). You can find the control tasks that are available in the CI reference documentation for each plugin. For example, the glassfish.StandaloneServer CI includes a start control task that starts a GlassFish server. To execute it:

deployit> server = repository.read('Infrastructure/demoHost/demoServer')
deployit> deployit.executeControlTask('start', server)

Some control tasks include parameters that you can set. For example:

deployit> server = repository.read('Infrastructure/demoHost/demoServer')
deployit> control = deployit.prepareControlTask(server, 'methodWithParams')
deployit> control.parameters.values['paramA'] = 'value'
deployit> taskId = deployit.createControlTask(control)
deployit> deployit.startTaskAndWait(taskId)

Add a control task to an existing CI type

To add a control task to an existing CI type such as Host, you can extend the Generic plugin as follows:

  1. Define a custom container that extends the generic container. The custom container should define the control task and the associated script to run. The script is a FreeMarker template that is rendered, copied to the target host, and executed. For example, in synthetic.xml:

    <type type="mycompany.ConnectionTest" extends="generic.Container">
        <!-- inherited hidden -->
        <property name="startProcessScript" default="mycompany/connectiontest/start" hidden="true"/>
        <property name="stopProcessScript" default="mycompany/connectiontest/stop" hidden="true"/>
        <!-- control tasks -->
        <method name="start" description="Start some process"/>
        <method name="stop" description="Stop some process"/>
    </type>
  2. In the XL Deploy Library, create the container under the host that you want to test.
  3. Execute the control task.

Create a custom control task

For information on writing your own XL Deploy control task, see Create a custom control task.