Workflow Progress Notification

RackHD workflow progress feature provides message notification mechanism to indicate status of an active workflow or task. User can get to know what has been done and what is to be done for an active workflow or task with progress messages.

Workflow Progress Events

RackHD will publish a workflow progress message if any of below events happens:

  • Workflow started or finished events

  • Task started or finished events

  • RackHD marked important milestone events for an active long-run task.

    In some cases RackHD can’t easily get progress information, some milestones are created to divide a task into several small sections. Progress messages will be sent if any of those milestones is achieved.

  • Progress timer timeout for an active long-run task.

    Some tasks don’t have milestones but progress information is continuous and can be got all the time. In this case progress messages is generated with fixed interval.

Progress Message Payload

4 attributes are used to describe progress information:

properties Type Description
maximum Integer Maximum step quantity for a workflow or a task. For tasks with continuous progress, it is 100.
value Integer Completed step quantity for a workflow or a task. For tasks with continuous progress, it varies from 0-100, which is inversely calculated from percentage and rounded to integer if calculation gives non-integer value.
percentage String Percentage of a workflow or task that is completed. Normally value divided by maximum will give percentage. However in the case that tasks have continuous progress, percentage is directly got. In this case maximum will be always set to 100 and value will be set to the percent number. For example, a percentage “65%” will give maximum 100 and value 65.
description String Short description for progress events

Below is an example of progress information payload for a workflow that has 4 steps and we have just finished the first step. Percentage is 25% given by 1 / 4.

progress: {
    value: 1,
    maximum: 4,
    description: 'Task "Install CentOS" started',
    percentage: '25%'
}

A complete RackHD progress message payload contains two levels of progress information (refer to Workflow Progress Measurement) as well as some useful information like graphId, graphName, nodeId, taskId and taskName, below is an example of a complete progress message:

{
    progress: {
        value: 1,
        maximum: 4,
        description: 'Task "Install CentOS" started',
        percentage: '25%'
    },
    graphName: 'Install CentOS',
    graphId: '12a8f275-7abf-46ee-834b-6aa34cce8d78',
    nodeId: '58542c752be86d0672cef383',
    taskProgress: {
        taskId: 'cb7d5793-abcf-4a7f-aef6-e768e999de1d',
        taskName: 'Install CentOS',
        progress: {
            value: 0,
            maximum: 4,
            description: 'Task started',
            percentage: '0%'
        }
    }
}

Though RackHD provides percentage number as progress measurement in progress message, most of the time workflow progress is based on events counting. RackHD progress message is not always proper to be used for workflow executing time estimation.

Workflow Progress Measurement

RackHD progress information contains two levels of progress as shows in Progress Message Payload Example :

  • Task level progress: progress measurement of the executing task of an active workflow.
  • Workflow level progress: progress measurement of an active workflow.

Task progress is actually part of workflow progress. However task and workflow have two independent progress measurement methods.

Workflow level progress measurement

Before a workflow’s completion workflow level progress is based on tasks counting. It is measured by completed tasks count (which will be assigned to value) against total tasks count (which will be assigned to maximum) for the workflow.

Percentage will be set to 100% and value be set to maximum at workflow’s completion. After completion workflow level progress will not be updated even though some tasks may still be running.

Task level progress measurement

RackHD has different task level progress measurement methods for non-long-run tasks and two long-run tasks, OS installation tasks and secure erase task.

Non-long-run task progress

Each RackHD task has two progress events:

  • task started
  • task finished

A non-long-run task will complete in short time and only the started and finished events can be sensed. Thus only two progress messages will be published for non-long-run tasks.

Besides task started and finished events, a time-consuming task is not proper to only publish two events, thus different measurements are created.

OS installation task progress

As a typical long-run task, OS installation task progress can’t be easily measured. As a compromise, RackHD creates some milestones at important timeslot of installation process thus divides OS install task into several sub-tasks.

Below table includes descriptions for all existing RackHD OS installation milestones:

Milestone name Milestone description
requestProfile Enter ipxe and request OS installation profile. Common milestone for all OSes.
enterProfile Enter profile, start to download kernel or installer. Common milestone for all OSes.
startInstaller Start installer and prepare installation. Common milestone for all OSes.
preConfig Enter Pre OS configuration.
startSetup Net use Windows Server 2012 and start setup.exe. Only used for Windows Server.
installToDisk Execute OS installation. Only used for CoreOS.
startPartition Start partition. Only used for Ubuntu.
postPartitioning Finished partitioning and mounting, start package installation. Only used for SUSE.
chroot Finished package installation, start first boot. Only used for SUSE.
postConfig Enter Post OS configuration.
completed Finished OS installation. Common milestone for all OSes.

Below table includes default milestone sequence for RackHD supported OSes:

OS Name Milestone Quantity Milestones in Sequence
CentOS, RHEL 6 1.requestProfile; 2.enterProfile; 3.startInstaller; 4.preConfig; 5.postConfig; 6.completed
Esxi 6 1.requestProfile; 2.enterProfile; 3.startInstaller; 4.preConfig; 5.postConfig; 6.completed
CoreOS 5 1.requestProfile; 2.enterProfile; 3.startInstaller; 4.installToDisk; 5.completed
Ubuntu 7 1.requestProfile; 2.enterProfile; 3.startInstaller; 4.preConfig; 5.startPartition; 6.postConfig; 7.completed
WindowServer 5 1.requestProfile; 2.enterProfile; 3.startInstaller; 4.startSetup; 5.completed
SUSE 7 1.requestProfile; 2.enterProfile; 3.startInstaller; 4.preConfig; 5.postPartitioning; 6.chroot; 7.completed
PhotonOS 5 1.requestProfile; 2.enterProfile; 3.startInstaller; 4.postConfig; 5.completed

In progress message, milestone quantity will be set to maximum and sequence number to value while RackHD is installing OS.

Secure erase task progress

For secure erase task, RackHD can get continuous percentage progress from node. Thus node is required to send the percentage data to RackHD with fixed interval. RackHD will receive and parse the percentage to get value and maximum and then publish progress message.

Progress Message Retrieve Channels

As instant data, progress messages can’t be retrieved via API. Instead progress messages will be published in AMQP channel and posted to webhook urls after adding RackHD standard message header.

Below is basic information for user to retrieve data from AMQP channel:

  • Exchange: on.events
  • Routing Key: graph.progress.updated.information.<graphId>.<nodeId>

More details on RackHD AMQP events and webhook feature, please refer to Northbound Event Notification.