添加交换卷通知

https://blueprints.launchpad.net/nova/+spec/add-swap-volume-notifications

在更新卷附件(交换卷)时添加版本化的通知。

该蓝图已为 Mitaka 和 Newton 提出并批准。它是一个无规格的蓝图。但根据 [1],如果更改“需要多个提交”,则需要一个规格。因此提交此规格。

[2][3] 是实现此功能的补丁。

问题描述

目前,在更新卷附件(交换卷)时不会发出任何通知。更新卷附件是一个异步操作,因此无法通过 API 响应知道它是否成功完成。

用例

用户或操作员可以知道更新卷附件操作是否成功以及何时完成。

提议的变更

添加以下通知:

  • instance.volume_swap.start

  • instance.volume_swap.end

  • instance.volume_swap.error

备选方案

可以通过调用列出卷附件的 API(nova)或获取卷状态(cinder)来知道操作是否完成。但这效率低下。

数据模型影响

不需要数据库模式更改。

将添加以下新对象

@nova_base.NovaObjectRegistry.register_notification
class InstanceActionVolumeSwapPayload(InstanceActionPayload):
    VERSION = '1.0'

    fields = {
        'old_volume_id': fields.UUIDField(),
        'new_volume_id': fields.UUIDField(),
    }
@nova_base.NovaObjectRegistry.register_notification
class InstanceActionVolumeSwapNotification(base.NotificationBase):
    # Version 1.0: Initial version
    VERSION = '1.0'

    fields = {
        'payload': fields.ObjectField('InstanceActionVolumeSwapPayload')
    }

REST API 影响

安全影响

通知影响

添加以下通知:

  • instance.volume_swap.start

  • instance.volume_swap.end

  • instance.volume_swap.error

通知示例包含在 [2] 和 [3] 中。

其他最终用户影响

性能影响

其他部署者影响

开发人员影响

实现

负责人

主要负责人

natsume-takashi

工作项

  • 添加 ‘instance.volume_swap.start’ 通知。[2]

  • 添加 ‘instance.volume_swap.end’ 通知。[2]

  • 添加 ‘instance.volume_swap.error’ 通知。[3]

依赖项

测试

添加以下测试。

  • 通知示例功能测试

文档影响

版本化的通知示例将被添加到 Nova 开发者文档中。

参考资料

历史

注意:对于 Mitaka 和 Newton,此蓝图是一个无规格的蓝图。

修订版

发布名称

描述

Mitaka

已批准

Newton

重新批准

Ocata

重新提出