从 os-aggregates API 返回 UUID

https://blueprints.launchpad.net/nova/+spec/return-uuid-from-os-aggregates-api

本规范建议 os-aggregates REST API 在新的微版本中返回聚合的 UUID,以便可以在 Placement 服务中使用聚合 UUID 将聚合与资源提供者关联。

问题描述

在 Mitaka 中,我们开始为聚合自动生成 UUID,而在 Ocata 中,Placement API 允许通过聚合 UUID 将聚合与资源提供者关联。但是,os-aggregates REST API 尚未返回给定聚合的 UUID,因此管理员无法在 Placement API 中进行关联,而无需在 Nova API 数据库中进行直接查询。此更改建议 os-aggregates REST API 在新的微版本中返回聚合 UUID。

用例

作为操作员,我希望将计算主机聚合与共享存储池(在 Placement 服务中建模为资源提供者)关联,以便报告的磁盘清单和分配来自共享存储池,而不是本地磁盘。

作为操作员,我希望将计算主机聚合与子网 IP 分配池(在 Placement 服务中建模为资源提供者)关联,以便在创建使用该池中 Neutron 端口的服务器时,将服务器放置在这些特定的计算主机上。

提议的变更

拟议的更改相对简单,我们只需要在 os-aggregates REST API 的新微版本响应中公开聚合 UUID 即可。

备选方案

操作员可以直接查询数据库以获取聚合 UUID,但这充其量是一种解决方法,从可用性角度来看,这不是理想的长期解决方案。

数据模型影响

REST API 影响

在一个新的微版本中,在 os-aggregates REST API 返回聚合资源完整表示形式的所有响应中返回聚合 UUID 字段。这些将是除 DELETE 之外的所有方法。

一个返回 uuid 的 GET 响应示例

{
    "aggregate": {
        "availability_zone": "nova",
        "created_at": "2016-12-27T23:47:30.563527",
        "deleted": false,
        "deleted_at": null,
        "hosts": [],
        "id": 1,
        "metadata": {
            "availability_zone": "nova"
        },
        "name": "name",
        "updated_at": null,
        "uuid": "fd0a5b12-7e8d-469d-bfd5-64a6823e7407"
    }
}

安全影响

通知影响

注意

我们当前没有聚合资源操作的版本化通知,但当我们有的时候,我们应该在这些版本化通知中包含 Aggregate.uuid 字段。

其他最终用户影响

作为这项工作的一部分,我们还需要将微版本支持添加到 python-novaclient 中,以便在获取有关聚合的详细信息时也显示 UUID。

性能影响

其他部署者影响

开发人员影响

实现

负责人

主要负责人

Jay Pipes <jaypipes@gmail.com>

其他贡献者

Matt Riedemann <mriedem@us.ibm.com>

工作项

  • 为 os-aggregates REST API 添加一个新的微版本,以便在显示聚合完整表示形式的响应中返回 UUID 字段。

  • 在 python-novaclient 中显示聚合详细信息时,支持新的微版本。

依赖项

无。这项工作的大部分基础工作已在 Generic Resource Pools 蓝图中完成。

测试

  • 将为 Tempest 添加测试,以测试新的微版本并验证响应模式。

  • 将为 Nova 添加单元测试和功能测试,以测试新的微版本。

文档影响

将更新树内 API 参考,以获取 os-aggregates REST API 文档。

参考资料

历史

修订版

发布名称

描述

Ocata

引入