This patch implements the changes in the API required for the
skipped action blueprint. It includes:
- New field `status_message` is visible in API get calls for Audits,
ActionPlans and Audits.
- New Patch call is added to `/actions/{action_id}` which allows to
manually move actions in PENDING state to SKIPPED for ActionPlans
which have not been started.
- A new API microversion 1.5 is added for these changes.
It also adds requried tests and documentation.
Implements: blueprint add-skip-actions
Assisted-By: Cursor (claude-4-sonnet)
Change-Id: I71fb9af76085e5941a7fd3e9e4c89d6f3a3ada47
Signed-off-by: Alfredo Moralejo <amoralej@redhat.com>
213 lines
5.1 KiB
ReStructuredText
213 lines
5.1 KiB
ReStructuredText
.. -*- rst -*-
|
|
|
|
=======
|
|
Actions
|
|
=======
|
|
|
|
An ``Action`` is what enables Watcher to transform the current state of a
|
|
``Cluster`` after an ``Audit``.
|
|
|
|
An ``Action`` is an atomic task which changes the current state of a target
|
|
Managed resource of the OpenStack ``Cluster`` such as:
|
|
|
|
- Live migration of an instance from one compute node to another compute
|
|
node with Nova
|
|
- Changing the power level of a compute node (ACPI level, ...)
|
|
- Changing the current state of a compute node (enable or disable) with Nova
|
|
|
|
In most cases, an ``Action`` triggers some concrete commands on an existing
|
|
OpenStack module (Nova, Neutron, Cinder, Ironic, etc.).
|
|
|
|
An ``Action`` has a life-cycle and its current state may be one of the
|
|
following:
|
|
|
|
- **PENDING** : the ``Action`` has not been executed yet by the
|
|
``Watcher Applier``.
|
|
- **SKIPPED** : the ``Action`` will not be executed because a predefined
|
|
skipping condition is found by ``Watcher Applier`` or is explicitly
|
|
skipped by the ``Administrator``.
|
|
- **ONGOING** : the ``Action`` is currently being processed by the
|
|
``Watcher Applier``.
|
|
- **SUCCEEDED** : the ``Action`` has been executed successfully
|
|
- **FAILED** : an error occurred while trying to execute the ``Action``.
|
|
- **DELETED** : the ``Action`` is still stored in the ``Watcher database``
|
|
but is not returned any more through the Watcher APIs.
|
|
- **CANCELLED** : the ``Action`` was in **PENDING** or **ONGOING** state and
|
|
was cancelled by the ``Administrator``
|
|
|
|
``Actions`` are created by ``Watcher Planner`` as result of Audit's execution.
|
|
``Action`` can't be created, modified or deleted by user.
|
|
|
|
List Action
|
|
===========
|
|
|
|
.. rest_method:: GET /v1/actions
|
|
|
|
Returns a list of Action resources.
|
|
|
|
Normal response codes: 200
|
|
|
|
Error codes: 400,401
|
|
|
|
Request
|
|
-------
|
|
|
|
.. rest_parameters:: parameters.yaml
|
|
|
|
- action_plan_uuid: r_action_plan
|
|
- audit_uuid: r_audit
|
|
- limit: limit
|
|
- marker: marker
|
|
- sort_dir: sort_dir
|
|
- sort_key: sort_key
|
|
|
|
Response
|
|
--------
|
|
|
|
.. rest_parameters:: parameters.yaml
|
|
|
|
- uuid: uuid
|
|
- action_type: action_type
|
|
- state: action_state
|
|
- action_plan_uuid: action_action_plan_uuid
|
|
- parents: action_parents
|
|
- links: links
|
|
|
|
**Example JSON representation of an Action:**
|
|
|
|
.. literalinclude:: samples/actions-list-response.json
|
|
:language: javascript
|
|
|
|
List Action Detailed
|
|
====================
|
|
|
|
.. rest_method:: GET /v1/actions/detail
|
|
|
|
Returns a list of Action resources with complete details.
|
|
|
|
Normal response codes: 200
|
|
|
|
Error codes: 400,401
|
|
|
|
Request
|
|
-------
|
|
|
|
.. rest_parameters:: parameters.yaml
|
|
|
|
- action_plan_uuid: r_action_plan
|
|
- audit_uuid: r_audit
|
|
- limit: limit
|
|
- marker: marker
|
|
- sort_dir: sort_dir
|
|
- sort_key: sort_key
|
|
|
|
Response
|
|
--------
|
|
|
|
.. rest_parameters:: parameters.yaml
|
|
|
|
- uuid: uuid
|
|
- action_type: action_type
|
|
- state: action_state
|
|
- action_plan_uuid: action_action_plan_uuid
|
|
- parents: action_parents
|
|
- description: action_description
|
|
- input_parameters: action_input_parameters
|
|
- links: links
|
|
- status_message: action_status_message
|
|
|
|
**Example JSON representation of an Action:**
|
|
|
|
.. literalinclude:: samples/actions-list-detailed-response.json
|
|
:language: javascript
|
|
|
|
Show Action
|
|
===========
|
|
|
|
.. rest_method:: GET /v1/actions/{action_ident}
|
|
|
|
Shows details for an Action.
|
|
|
|
Normal response codes: 200
|
|
|
|
Error codes: 404
|
|
|
|
Request
|
|
-------
|
|
|
|
.. rest_parameters:: parameters.yaml
|
|
|
|
- action_ident: action_ident
|
|
|
|
Response
|
|
--------
|
|
|
|
.. rest_parameters:: parameters.yaml
|
|
|
|
- uuid: uuid
|
|
- action_type: action_type
|
|
- state: action_state
|
|
- action_plan_uuid: action_action_plan_uuid
|
|
- parents: action_parents
|
|
- description: action_description
|
|
- input_parameters: action_input_parameters
|
|
- links: links
|
|
- status_message: action_status_message
|
|
|
|
**Example JSON representation of an Action:**
|
|
|
|
.. literalinclude:: samples/actions-show-response.json
|
|
:language: javascript
|
|
|
|
Skip Action
|
|
===========
|
|
|
|
.. rest_method:: PATCH /v1/actions/{action_ident}
|
|
|
|
Skips an Action resource by changing its state to SKIPPED.
|
|
|
|
.. note::
|
|
Only Actions in PENDING state can be skipped. The Action must belong to
|
|
an Action Plan in RECOMMENDED or PENDING state. This operation requires
|
|
API microversion 1.5 or later.
|
|
|
|
Normal response codes: 200
|
|
|
|
Error codes: 400,404,403,409
|
|
|
|
Request
|
|
-------
|
|
|
|
.. rest_parameters:: parameters.yaml
|
|
|
|
- action_ident: action_ident
|
|
|
|
**Example Action skip request:**
|
|
|
|
.. literalinclude:: samples/action-skip-request.json
|
|
:language: javascript
|
|
|
|
**Example Action skip request with custom status message:**
|
|
|
|
.. literalinclude:: samples/action-skip-request-with-message.json
|
|
:language: javascript
|
|
|
|
Response
|
|
--------
|
|
|
|
.. rest_parameters:: parameters.yaml
|
|
|
|
- uuid: uuid
|
|
- action_type: action_type
|
|
- state: action_state
|
|
- action_plan_uuid: action_action_plan_uuid
|
|
- parents: action_parents
|
|
- description: action_description
|
|
- input_parameters: action_input_parameters
|
|
- links: links
|
|
- status_message: action_status_message
|
|
|
|
**Example JSON representation of a skipped Action:**
|
|
|
|
.. literalinclude:: samples/action-skip-response.json
|
|
:language: javascript |