支持在实例启动时添加标签

https://blueprints.launchpad.net/nova/+spec/support-tag-instance-when-boot

该蓝图建议支持在实例启动时添加标签。

问题描述

服务器标签在 microversion 2.26 中得到支持,但目前我们只能为已经存在于云中的实例添加标签,也就是说,我们无法在启动实例时设置标签。用户必须先找到实例,然后通过另一个 API 调用添加标签。当用户执行批量启动时,这不够用户友好,事后逐个添加标签将不切实际。

用例

作为用户,我希望在启动实例时添加标签,尤其是在执行批量启动时,我可能希望为通过此调用创建的实例添加一些标签。

提议的变更

为服务器创建 API 添加一个新的 microversion,以支持在启动实例时添加标签。可以添加的标签数量将受 instance.MAX_TAG_COUNT 限制,就像 server-tags API 所做的那样。

备选方案

保留当前的实现。

数据模型影响

将在 build_requests 表中添加一个新的列 tags。该列的大小至少为 3200,这是由 50 个标签(每个实例的限制)组成的序列化列表的长度,其中每个标签的长度为 60(每个标签的大小限制)。

REST API 影响

  • URL
    • /v2.1/servers

  • 请求方法
    • POST

标签数据可以作为可选参数添加到请求负载中

{
    ...
    'tags': ['foo', 'bar', 'baz']
    ...
}

每个标签的长度将限制为 60,与当前 server-tags API 中标签长度的限制相同。[1]

在 microversion 2.26 之后,标签字段已包含在 GET /servers/{server_id} 响应中。[2]

安全影响

通知影响

标签将包含在 instance.create 版本化通知中 [3]。

其他最终用户影响

用户可以使用特定的 microversion 在启动实例时设置标签。python-novaclient 也会进行修改以支持此功能。

性能影响

其他部署者影响

开发人员影响

实现

负责人

主要负责人

郑振宇

工作项

  • 支持在启动时标记实例

  • 添加相关测试

依赖项

测试

  • 添加相关单元测试

  • 添加相关功能测试

  • 添加相关的 tempest 测试

文档影响

添加文档,说明在 microversion 之后可以在启动实例时添加标签。

参考资料

[1] https://github.com/openstack/nova/blob/808ab5d4/nova/api/validation/parameter_types.py#L418

[2] https://github.com/openstack/nova/blob/808ab5d4/nova/api/openstack/compute/views/servers.py#L164

[3] https://blueprints.launchpad.net/nova/+spec/additional-notification-fields-for-searchlight

历史

修订版

发布名称

描述

Ocata

引入

Pike

重新提出