支持固件接口中的网卡固件更新¶
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 资源示例
NIC.Integrated.1 https://paste.opendev.org/show/b8U2He23Yy3vxNc2zIUa/
NIC.Slot.3 https://paste.opendev.org/show/bs3Qu9occVxZLzcTpG6Q/
挑战¶
其中一项挑战是我们将不得不处理多个网卡,这就是为什么在提议的更改中,我们希望使用来自 NetworkAdapters/<NICX> 的 Id。
我们还需要处理具有相同类型多个网络卡的机器,在我测试的其中一个硬件上,有 2 张 E810 网络卡,在对其进行固件更新时,两张卡都收到了新版本。
每个 E810 卡的 NetworkAdapters 资源
NIC.Slot.2 https://paste.opendev.org/show/biGgtah7Rm4FVH1Fe5SR/
NIC.Slot.3 https://paste.opendev.org/show/bvCbyGRVPsOfUIptkU0o/
备选方案¶
直接通过红鱼调用或通过管理 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.com 或 iurygregory@gmail.com>
工作项¶
更新 sushy 以处理 NetworkAdapters,当前代码 [1] 位于错误的资源下。
发布带有新功能的 sushy。
更新 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。
升级和向后兼容性¶
向后兼容性:升级到新版本后,bios 和 bmc 更新将继续以相同的方式工作。
只有在红鱼资源中可用时,才会添加 NIC 组件信息。
为更改添加单元测试。
文档影响¶
使用较新的信息更新当前文档。