允许具有等于总量的保留值的资源配置清单

https://blueprints.launchpad.net/nova/+spec/allow-reserved-equal-total-inventory

目前,我们在清理过程或维护期间从 Placement 中删除 ironic 节点资源提供商的配置清单,以指示节点不可用于部署。这导致 Placement 报告不正确的配置清单和容量信息,因为节点实际上仍然存在,并且其配置清单保持不变。保留所有配置清单可以更准确地描述正在发生的事情。此外,进行资源保留将允许我们正确修复类似 [1] 的错误,因为即使由于超出配置清单,也可以在删除分配之前为配置清单设置保留量。但是 Placement API 不允许将保留值设置为配置清单记录中的总值。

问题描述

Placement API 不允许将保留值设置为配置清单记录中的总值。这使得 ironic virt 驱动程序在节点清理期间(例如)从 Placement 中删除配置清单记录,而不是保留它们。

删除资源提供商配置清单应该意味着它实际上已经消失。为了指示资源暂时不可用,Placement 提供了配置清单对象中的 reserved 字段。这将使 Placement 能够报告正确的配置清单和容量信息。它还将使我们能够修复 ironic virt 驱动程序问题 [1]。

用例

  1. 在节点清理或维护期间保留 ironic 节点配置清单。

  2. 在 cyborg 对其进行编程期间保留 FPGA 配置清单。

提议的变更

添加一个新的 Placement API 微版本,该版本将允许将配置清单记录的保留值设置为总值。这将成为 Placement 在所有后续微版本中的行为。

当进行配置清单更新调用时,新的微版本将由 nova 调度器报告客户端使用。这将使 nova 中的 virt 驱动程序能够决定是否需要在 get_inventory() 调用中将所有配置清单资源报告为已保留。

备选方案

数据模型影响

REST API 影响

POST /resource_providers/<UUID>/inventoriesPUT /resource_providers/<UUID>/inventoriesPUT /resource_providers/<UUID>/inventories/<RC> API 端点将在使用新的微版本和包含保留值等于总值的配置清单记录的主体时返回响应代码 200 而不是 400

示例请求

path – PUT /resource_providers/UUID/inventories

headers – Content-type: application/json,

Openstack-API-Version: placement 1.NEW_MV

body

{
    "inventories": {
        "CUSTOM_GOLD": {
            "total": 1,
            "reserved": 1
        }
    },
    "resource_provider_generation": 5
}

示例响应

200 OK

安全影响

通知影响

其他最终用户影响

性能影响

其他部署者影响

开发人员影响

Virt 驱动程序现在能够在需要时将 reserved 键设置为 get_inventory() 返回的字典中的总配置清单值。

升级影响

实现

负责人

主要负责人

vdrok

工作项

  • 对 Placement API 的更改,添加逻辑和新的微版本

  • 更改调度器报告客户端以在配置清单更新调用期间使用新的微版本

  • 更改 ironic virt 驱动程序以在清理和维护期间将资源报告为已保留

依赖项

测试

将添加单元和功能测试。

文档影响

将更新 API 参考。

参考资料

[0] https://etherpad.openstack.org/p/nova-ptg-Rocky

[1] https://bugs.launchpad.net/nova/+bug/1771577

历史

修订版

发布名称

描述

Rocky

引入