删除资源提供商的所有库存¶
https://blueprints.launchpad.net/nova/+spec/delete-inventories-placement-api
这是一个小的功能请求:为资源提供商的所有库存实现 DELETE 方法。目前可以一次删除单个库存,但没有办法一次性删除所有库存。
问题描述¶
目前(Placement API 的 1.4 版本或更早版本),为了删除资源提供商的所有库存,必须调用 PUT /resource_providers/{uuid}/inventories 并传递以下请求负载
{
'generation': <int>,
'resources': {}
}
支持 DELETE /resource_providers/{uuid}/inventories,不带请求负载,并在成功时返回 204 No Content,将会更容易和更直观。
下面引用了删除单个库存的现有方法
'DELETE': inventory.delete_inventory
https://github.com/openstack/nova/blob/15.0.0/nova/api/openstack/placement/handler.py#L88
用例¶
作为操作员或开发人员,我希望使用 placement api 通过 DELETE 方法删除资源提供商的所有库存。
提议的变更¶
添加 DELETE /resource_providers/{uuid}/inventories,并在成功时返回 204 no content。更改包括
/nova/api/openstack/placement/handlers/inventory.py,delete_inventories(req)
一篇发布说明,宣传额外的 placement REST API 微版本和功能
inventory.py 的处理程序文件应该只是调用 DELETE /resource_providers/{uuid}/inventories,并构造一个对 ResourceProvider.set_inventory() 的调用,传递一个空的 InventoryList() 对象。
我们仍然希望 DELETE /resource_providers/{uuid}/inventories 调用在库存被使用或存在并发更新库存尝试时返回 409。因此,尽可能地重用 nova.objects.ResourceProvider.set_inventory()。
不需要修改 nova/objects/resource_provider.py 中的任何内容。
备选方案¶
继续通过 PUT 方法,在请求负载中包含空的资源来删除所有库存(这种方法不直观)。
另一种方法是从资源提供商处获取所有库存,然后逐个使用 DELETE 方法删除。
这些方法既难看,又需要一个新的微版本,其中包含一个新的方法,用于一次性删除资源提供商的所有库存,该方法应该报告适当的返回代码。
数据模型影响¶
无
REST API 影响¶
新的 API 方法:DELETE /resource_providers/{uuid}/inventories
空的请求负载。
成功时返回 204 No Content。
在以下错误情况下返回 409 Conflict
资源生成不同步
库存被使用
安全影响¶
无
通知影响¶
无
其他最终用户影响¶
无
性能影响¶
无
其他部署者影响¶
无
开发人员影响¶
无
实现¶
负责人¶
主要负责人
Rafael Folco <rfolco@br.ibm.com>
其他贡献者
Jay Pipes <jaypipes@gmail.com>
Chris Dent <cdent@anticdent.org>
工作项¶
添加一篇 Reno,其中包含 REST API 的更改
向 /resource_providers/{uuid}/inventories 添加一个新的 DELETE 方法
支持新的 DELETE 方法
依赖项¶
无。这项工作的大部分基础已经在 Generic Resource Pools 蓝图中完成。
测试¶
新的 API 测试(使用 DELETE 方法)将被添加到 nova/tests/functional/api/openstack/placement/gabbits/inventory.yaml。
文档影响¶
树内 API 参考将更新 placement REST API 文档。
参考资料¶
历史¶
发布名称 |
描述 |
|---|---|
Pike |
引入 |