请求的可用区列表¶
https://blueprints.launchpad.net/nova/+spec/list-requested-az
目前,server show 和 server list –long 输出显示实例的当前可用区。也就是说,实例宿主机所在的可用区。从这些信息中无法得知实例创建请求是否包含可用区。
此实现允许用户验证其可用区请求是否已正确处理和满足,方法是返回有关实例当前位置的信息,以及原始请求的信息。
问题描述¶
截至今天,server show 和 server list –long 输出显示实例的当前可用区。也就是说,实例宿主机所在的可用区。从这些信息中无法得知实例创建请求是否包含可用区。
此外,当 cross_az_attach 选项为 False 并且从卷启动实例时,实例可以固定到可用区,在这种情况下,实例将被调度到属于固定可用区的宿主机上。
此外,当 default_schedule_zone 配置选项设置为特定可用区时,实例将被固定到该特定可用区,并且实例将被调度到属于固定可用区的宿主机上。
用例¶
作为操作员,我想知道实例创建请求是否明确请求了可用区。以及请求的可用区和当前可用区是否相同或不同。
提议的变更¶
nova cell 数据库中的 instances 表没有请求的可用区信息。可以通过 nova_api 数据库中的 request_specs 表获取相同的信息。
对于 server show 输出,使用 RequestSpec 对象中的现有 get_by_instance_uuid 方法并在输出中显示它。
对于 server list –long 输出,为 RequestSpec 对象实现一个方法 get_by_instance_uuids,该方法接收将在列出输出中显示的实例的实例 UUID 列表,并返回这些实例的 RequestSpec 对象列表。
备选方案¶
或者,我们可以将请求的可用区信息添加到 instances 表中,并在执行 server list –long 或 server show 时仅使用 instances 表中的数据并显示给用户,但这也会在 request_specs 表和 instances 表中复制数据。
数据模型影响¶
对于实现,我们需要向 RequestSpec 对象添加一个方法 get_by_instance_uuids,该方法接收实例 UUID 列表作为输入,并返回这些实例的 RequestSpec 对象列表。
REST API 影响¶
此更改将通过新的微版本更新来完成。
以下是将被更改的两个 API。
GET /servers/{server_id}
server show api 响应将包含服务器创建期间请求的可用区。
{ "server": { ... "pinned_availability_zone": None ... } }
GET /servers/detail
server list –long api 响应将包含服务器创建期间请求的可用区。
{ "servers": [ { ... "pinned_availability_zone": None ... } { ... "pinned_availability_zone": None ... } ] }
安全影响¶
无
通知影响¶
无
其他最终用户影响¶
性能影响¶
当用户调用 server list –long 时,性能会略有下降,因为我们将添加另一个数据库调用来获取实例的 request_specs 列表。
其他部署者影响¶
无
开发人员影响¶
无
升级影响¶
无
实现¶
负责人¶
- 主要负责人
ratailor
功能联络人¶
- 功能联络人
ratailor
工作项¶
实施 API 更改
添加测试
依赖项¶
需要更新 openstackclient 和 openstacksdk 以实现此更改。
测试¶
添加单元测试
添加功能测试(API 示例)
文档影响¶
api-ref 将更新以反映这些更改。
参考资料¶
无
历史¶
发布名称 |
描述 |
|---|---|
2024.1 Caracal |
引入 |