Admin Command Progress Status Requirements

The following is a list of requirements to be considered for the command progress status feature.

Assumptions

  1. A long running command may run for hours before completing.
  2. Several long running commands may be active simultaneously.

Requirements

# Priority Description
1.0 P1 Must be compatible with existing CLI framework so that existing (short running) commands do not require any changes.
1.1 P1 Allow a long running asadmin command to return progress status at-will. Progress status will be displayed as it is received by the client.
1.1.1 P1 The progress status implementation will be limited to remote commands only.
1.2 P1 Progress status may be text based.
1.3.1 P1 Progress status may represent percent completion of the task. (e.g. a value 0-100)
1.3.2 P1 Progress status may represent a ratio (5 of 8 tasks completed) (e.g. 5/8)
1.4 P3 Progress status may represent a countdown time value representing remaining time to completion.
1.5 P1 Progress status may be a combination of 1.2, 1.3 and 1.4.
1.6 P1 Progress status must be available via the REST interface.
1.6.1 P1 The Console must be able to display progress status (e.g. progress bar) for long running commands.
1.7 P2 A long running command can be executed in a disconnected mode from the client. The user can re-invoke the client at a future time to request status.
1.7.1 P2 Related to 1.7, provide server configuration that controls how much and how long in-flight progress status will be maintained by the server.
1.8 P1 A long running command must not block other commands from executing other than those commands which would normally lock the server during execution.
1.9 P2 Provide an interface to list long running commands which have pending progress to report (complements 1.7)
1.10 P1 asadmin in single mode: if not --terse and a TTY is available provide output that provides some form of progress (ala wget) if progress reports are available from the command. If no TTY is available or in --terse mode do not provide progress feedback.
1.11 P1 asadmin in multimode: Provide output that provides some form of progress (ala wget) if progress reports are available from the command.
1.12 P3 asadmin: provide a progress mode where asadmin provides a timer which shows how long the command has been running.

The following commands will initially be targeted for "progressization":

  • start-cluster
  • deploy

Use Case

Consider the following use case:

A long running deploy operation is started. During the deploy operation the GF instance that is performing the deploy operation fails. A new GF instance takes over and completes the deploy operation. What should the user experience?

References