支持固件接口中的网卡固件更新¶
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固件更新。
依赖项¶
此功能仅针对支持红鱼并且具有适当的网卡更新支持的硬件。
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更新将继续以相同的方式工作。
只有在红鱼资源中可用时,才会添加网卡组件信息。
添加更改的单元测试。
文档影响¶
使用较新的信息更新当前文档。