动态操作的支持描述

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

历史