支持固件接口中的网卡固件更新

https://bugs.launchpad.net/ironic/+bug/2107998

本文档提出扩展红鱼固件接口,以支持网卡固件更新。

问题描述

问题详细描述

  • 作为使用固件接口通过clean/service步骤进行固件更新的操作员 [0],我希望能够更新网卡的固件,而不仅仅是目前支持的BIOS和BMC。

  • 对于现有功能的重大重构,需要描述该功能中正在解决的问题。

提议的变更

扩展当前 RedfishFirmware 的实现,以支持网卡固件更新。

  • 增强 sushy 以支持 /redfish/v1/Chassis/<SystemID>/NetworkAdapters,该资源是我们可以在其中找到有关网卡和固件版本的信息的地方。

  • 更新 RedfishFirmware 接口以检测网卡、执行固件更新并收集数据。

  • 使用来自每个 NetworkAdapters/<NIC-X>Id 作为组件字段,因为我们可能有多个网卡,因此将它们跟踪为 nicX 没有意义,因为它与资源没有映射关系。

NetworkAdapters 资源示例

挑战

其中一项挑战是我们将不得不处理多个网卡,这就是为什么在提议的更改中,我们希望使用来自 NetworkAdapters/<NICX>Id

我们还需要处理具有相同类型多个网络卡的机器,在我测试的其中一个硬件上,有 2 张 E810 网络卡,在对其进行固件更新时,两张卡都收到了新版本。

每个 E810 卡的 NetworkAdapters 资源

备选方案

直接通过红鱼调用或通过管理 UI 更新网卡固件。

数据模型影响

状态机影响

REST API 影响

客户端 (CLI) 影响

“openstack baremetal” CLI

“openstacksdk”

RPC API 影响

驱动程序 API 影响

更新 RedfishFirmware 以处理网卡固件更新。

  • cache_firmware_information() - 此方法将被更新以处理所有支持固件更新的网卡。

  • update() 步骤需要对网卡名称进行新的验证,因为我们将使用通过 NetworkAdapter 资源公开的 Id

Nova 驱动程序影响

Ramdisk 影响

安全影响

  • 硬件在固件更新期间可能会变得不可用。

其他最终用户影响

可扩展性影响

性能影响

  • 网卡固件更新可能会延长节点手动清理或维护所需的时间,因为某些卡可能需要大量时间,例如 Mellanox 卡。

其他部署者影响

  • 此更改在合并后立即生效

开发人员影响

  • 如果蓝图提出了对驱动程序 API 的更改,则需要讨论其他驱动程序如何实现该功能。

实现

负责人

主要负责人:* <iurygregory, imelofer@redhat.comiurygregory@gmail.com>

工作项

  1. 更新 sushy 以处理 NetworkAdapters,当前代码 [1] 位于错误的资源下。

  2. 发布带有新功能的 sushy。

  3. 更新 Ironic 代码以在 RedfishFirmware 中处理 nic 固件更新。

依赖项

  • 此功能仅针对支持 Redfish 并且具有适当的网卡更新支持的硬件。

  • Sushy 需要支持 NetworkAdapters。

测试

我可以使用手动更新测试的一组硬件,下面您可以找到硬件型号和网络卡的列表。

硬件型号 - Dell R640 - Dell PowerEdge XR8620t - HPE DL380 Gen10 - HPE DL380 Gen10 Plus

网络卡 - Intel(R) Ethernet 25G 4P E810-XXV Adapter - Intel(R) Ethernet 10GbE 4P X710 SFP+rNDC - MLNX 25GbE 2P ConnectX4LX Adpt

我可以使用 SimpleUpdate 在所有硬件型号上进行更新,除了 HPE DL380 Gen10。

注意

网卡固件更新在 HPE DL380 Gen10 上不起作用,但在 HPE DL380 Gen10 Plus 上起作用。在与 NIC 关联的 FirmwareInventory 资源中检查 Updateable 参数时,Gen10 上的参数设置为 false [2],而 Gen10 Plus 上的参数设置为 true。根据 Redfish 规范,Updateable [3] 指示更新服务是否可以更新镜像。

升级和向后兼容性

  • 向后兼容性:升级到新版本后,bios 和 bmc 更新将继续以相同的方式工作。

  • 只有在红鱼资源中可用时,才会添加 NIC 组件信息。

  • 为更改添加单元测试。

文档影响

使用较新的信息更新当前文档。

参考资料