Support Description For Dynamic Action¶
https://blueprints.launchpad.net/watcher/+spec/dynamic-action-description
Add description property for dynamic action. Admin can see detail information of any specify action.
Problem description¶
Currently, a cloud admin has no way to see the description of planned actions before running an action plan. This literal description is important when the cloud admin wants to see detailed information about a recommended action plan.
Use Cases¶
As a cloud administrator, I want to be able to see the description of planned actions before running an action plan.
Proposed change¶
Allow RESTful API(GET /v1/actions/(action_uuid)) to get description information of a specified action.
Define a mapping of action_type and description
action_type: ‘migrate’
description: ‘Moving a VM instance from source_node to destination_node’
action_type: ‘change_nova_service_state’
- description: ‘Disables or enables the nova-compute service.
A disabled nova-compute service can not be selected by the nova for future deployment of new server.’
action_type: ‘resize’
description: ‘Resize a server with specified flavor.’
action_type: ‘sleep’
description: ‘Wait for a given interval in seconds.’
action_type: ‘nop’
description: ‘Logging a NOP message’
Add a new table to save the mapping
This table includes action_type and action description.
Show description of a specified action
Add the logic of computing action_description to “get_one” method in watcher/api/controllers/v1/action.py
Alternatives¶
Implement 2 notifications:
In order to share the description of all the action plugins installed alongside the Applier so that we wouldn’t need to also install these plugins on the API side
the 1st one the API side that requests the action descriptions and the 2nd one on the Applier side that emits all the actions, including their descriptions (both notifications will have to be versioned).
The latter will also have to be emitted upon starting the Applier to notify the API of any change of description.
action_info.request
{
"priority": "INFO",
"payload": {
"watcher_object.namespace": "watcher",
"watcher_object.version": "1.0",
"watcher_object.name": "ActionInfoPayload",
"watcher_object.data": {
"description": "moving a VM instance",
"action_type": "migrate",
},
},
"publisher_id": "infra-optim:localhost",
"timestamp": "2017-01-04 16:31:36.264673",
"event_type": "action_info.request",
"message_id": "cbcf9f2c-7c53-4b4d-91ec-db49cca024b6"
}
action_info.emit
{
"priority": "INFO",
"payload": {
"watcher_object.namespace": "watcher"
"watcher_object.version": "1.0",
"watcher_object.name": "ActionInfoPayload",
"watcher_object.data": {
"action_type": "migrate",
"description": "moving a VM instance",
},
},
"publisher_id": "infra-optim:localhost",
"timestamp": "2017-01-04 16:31:36.264673",
"event_type": "action_info.emit",
"message_id": "cbcf9f2c-7c53-4b4d-91ec-db49cca024b6"
}
The implementation is as follows: https://review.opendev.org/#/c/454638/ But in my test, The number of received notifications is often less than the number of notifications sent.
Data model impact¶
Add a new table named ‘action_descriptions’. This table includes action_type and action description.
REST API impact¶
URLs with /v1/actions/ and that uses the type Action:
GET /v1/actions/(action_uuid)
GET /v1/actions/detail
There will be a new action description field in the REST URLs respond message.
Security impact¶
None
Notifications impact¶
None
Other end user impact¶
Aside from the API, here are there other ways a user will interact with this feature:
impact on python-watcherclient:
Display the “description” field when displaying details about an action.
Performance Impact¶
None
Other deployer impact¶
None
Developer impact¶
None
Implementation¶
Assignee(s)¶
- Primary assignee:
licanwei, hanrong
Work Items¶
Add a new table to save the mapping Add logic to update the table when action loading Add logic to show the action description
Dependencies¶
None
Testing¶
Unit tests should be updated.
Documentation Impact¶
The documentation will have to be updated, especially the glossary, in order to explain the new concepts regarding “action” definition.
References¶
https://docs.openstack.org/watcher/latest/#action https://docs.openstack.org/watcher/latest/#action-plan
History¶
None