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

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固件更新。

依赖项

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

  • 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上起作用。在与网卡关联的FirmwareInventory资源中检查Updateable参数时,Gen10上的参数设置为false[2],而Gen10 Plus上的参数设置为true。根据红鱼规范,Updateable[3]指示图像是否可以由更新服务更新。

升级和向后兼容性

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

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

  • 添加更改的单元测试。

文档影响

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

参考资料