将风味中的能力传递给 ironic

https://blueprints.launchpad.net/nova/+spec/pass-flavor-capabilities-to-ironic-virt-driver

目前 nova 没有传递风味中 extra-spec 键定义的 capabilities。 ironic 需要了解风味中请求的能力。

问题描述

目前 nova 没有传递风味中 extra-spec 键定义的 capabilities。 目前 Nova 能够读取 ironic 节点属性字段中定义的能力,并使用 ComputeCapabilities 过滤器选择节点。 现在,ironic 需要了解风味中请求的能力,以便在 Nova 调度节点后,能够根据风味中的请求采取特定操作。

用例

ironic 可以将其用于以下方面

  1. 在部署之前将节点准备到所需状态。

  2. 同样,在退役节点时,可以将其用于恢复到原始状态。

例如,假设风味键中定义了一个能力,如 power_optimized=True。 ironic 会使用能力更新节点属性,即 power_optimzied=True。 通过 ComputeCapabilities 过滤器选择节点。 现在,如果 nova 将节点的 instance_info 更新为 power_optimzied=True,ironic 驱动程序可以准备节点到所需的电源状态。 这适用于所有需要驱动程序根据风味 extra-spec 键中请求的能力采取行动的硬件能力。

项目优先级

无。

提议的变更

该提案是使用风味 extra-spec 中定义的 capabilities 更新节点对象的 instance_info 字段。

备选方案

ironic 实际上可以通过调用 Nova API 来查找此信息。 但是,这将需要 ironic 具有足够的权限才能查看风味,并且 ironic 需要进行 Keystone 往返以获取身份验证令牌。 Nova 已经在启动请求中传递了大量元数据,因此避免额外的往返似乎是值得的。

数据模型影响

无。

REST API 影响

无。

安全影响

无。

通知影响

无。

其他最终用户影响

无。

性能影响

无。

其他部署者影响

一旦 ironic 支持硬件能力(ironic 的 kilo 版本正在进行中),此更改将立即生效。

开发人员影响

无。

实现

请参阅下面的工作项目。

负责人

主要负责人

agarwalnisha1980

工作项

  • 需要修改 nova/virt/ironic/patcher.py 以使用风味 capabilities 更新 instance_info 字段。

依赖项

无。

测试

将添加单元测试。

文档影响

这将在 ironic 下记录。

参考资料

暴露硬件能力: https://review.openstack.org/#/c/131272/

https://etherpad.openstack.org/p/kilo-ironic-exposing-different-capabilities

对于支持 capabilities 的多个值: https://review.openstack.org/133534