动态操作的支持描述¶
https://blueprints.launchpad.net/watcher/+spec/dynamic-action-description
为动态操作添加描述属性。管理员可以查看任何指定操作的详细信息。
问题描述¶
目前,云管理员无法在运行操作计划之前查看计划操作的描述。当云管理员想要查看推荐操作计划的详细信息时,此字面描述非常重要。
用例¶
作为云管理员,我希望能够在运行操作计划之前查看计划操作的描述。
提议的变更¶
允许 RESTful API (GET /v1/actions/(action_uuid)) 获取指定操作的描述信息。
定义操作类型和描述的映射
action_type: ‘migrate’
description: ‘将虚拟机实例从源节点迁移到目标节点’
action_type: ‘change_nova_service_state’
- description: ‘禁用或启用 nova-compute 服务。
禁用的 nova-compute 服务不能被 nova 用于未来新服务器的部署。’
action_type: ‘resize’
description: ‘使用指定的 flavor 调整服务器大小。’
action_type: ‘sleep’
description: ‘等待指定的秒数。’
action_type: ‘nop’
description: ‘记录 NOP 消息’
添加一个新表来保存映射
此表包括 action_type 和操作描述。
显示指定操作的描述
在 watcher/api/controllers/v1/action.py 中,将逻辑添加到 “get_one” 方法中以计算 action_description
备选方案¶
实现 2 个通知
为了共享安装在 Applier 旁边的所有操作插件的描述,这样我们就无需在 API 端也安装这些插件
第一个通知发送到 API 端,请求操作描述,第二个通知发送到 Applier 端,发出所有操作,包括它们的描述(这两个通知都需要进行版本控制)。
后者还必须在启动 Applier 时发出,以通知 API 描述的任何更改。
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"
}
实现如下:https://review.opendev.org/#/c/454638/ 但在我的测试中,接收到的通知数量通常少于发送的通知数量。
数据模型影响¶
添加一个名为 ‘action_descriptions’ 的新表。此表包括 action_type 和操作描述。
REST API 影响¶
带有 /v1/actions/ 和使用类型 Action 的 URL
GET /v1/actions/(action_uuid)
GET /v1/actions/detail
REST URL 响应消息中将包含一个新的操作描述字段。
安全影响¶
无
通知影响¶
无
其他最终用户影响¶
除了 API 之外,用户还有其他几种与此功能交互的方式
对 python-watcherclient 的影响
在显示操作的详细信息时显示 “description” 字段。
性能影响¶
无
其他部署者影响¶
无
开发人员影响¶
无
实现¶
负责人¶
- 主要负责人
licanwei, hanrong
工作项¶
添加一个新表来保存映射 添加逻辑来更新表,当操作加载时 添加逻辑来显示操作描述
依赖项¶
无
测试¶
应更新单元测试。
文档影响¶
文档需要更新,尤其是词汇表,以便解释有关“操作”定义的新概念。
参考资料¶
https://docs.openstack.org/watcher/latest/#action https://docs.openstack.org/watcher/latest/#action-plan
历史¶
无