背景
支持从带外升级硬盘固件,无需复位系统,减少对业务的影响。存在先升级指定硬盘的固件,再根据情况批量升级的诉求。各北向接口(web,snmp,redfish)需要显示硬盘版本信息。redfish接口支持指定硬盘升级。同样支持带外升级RAID卡、网卡,各北向接口需要显示对应固件版本信息。
关联ISSUE
整体方案
硬盘(RAID卡/网卡)插入时向固件管理注册固件信息(支持带外升级的板卡才注册),拔出时候取消注册,更新时刷新信息,复用原有snmp、web、redfish接口可获取硬盘固件版本信息。
评审点
1.web接口:
(a):UI/Rest/BMCSettings/UpdateService,方法:Get,新增硬盘/网卡/RAID卡固件版本信息展示
(b):web固件更新页面的提示信息增加硬盘相关说明。
2.snmp接口:/snmp/1.3.6.1.4.1.{{SnmpOemIdentifier}}.11.50/firmwareDescriptionTable/Readonly
方法Get,显示硬盘/网卡/RAID版本信息,FirmwareType需新增枚举值(23)代表硬盘固件类型,(24)代表RAID卡固件类型,(25)代表网卡固件类型,
3.redfish接口:
(a):/redfish/v1/UpdateService/FirmwareInventory,方法:Get,需要Members中新增硬盘/网卡/RAID卡固件信息的@odata.id和对应uri。
(b):/redfish/v1/UpdateService/Actions/UpdateService.SimpleUpdate,方法:Post,在请求体中新增参数Targets用于表示指定的硬盘。
详细描述
1.webrest接口已有属性新增取值
URI:UI/Rest/BMCSettings/UpdateService
方法:Get
| 属性名称 | 类型 | 取值范围 | 权限 | 描述 |
|---|---|---|---|---|
| UpgradeResource.Type | string | 新增硬盘(Drive)/RAID卡(RAID)/网卡(NIC)的Type | readonly | 固件类型 |
例如
"UpgradeResource": [
{
"Id": 0,
"Version": "6021",
"Type": "Drive",
"Name": "DiskX"
},
{
"Id": 1,
"Version": "6021",
"Type": "RAID",
"Name": "PCIeCard3(SP686C-M-16i4G)"
},
{
"Id": 2,
"Version": "3.10.23.3",
"Type": "NIC",
"Name": "chassisNIC1(SF221Q)"
}
]
webui示例
2.web固件更新页面提示新增硬盘相关说明
原说明如下:
修改为:
在iBMC或SD卡控制器固件升级完成之后,iBMC会自动重启使升级的固件生效。如果在系统上电状态时升级BIOS或CPLD或VRD或硬盘,则BIOS、硬盘在系统下电再上电或重启后生效,CPLD、VRD在系统下电后生效。注意:硬盘在系统上电期间如果手动调用生效接口生效硬盘固件,将会影响硬盘业务(秒级)。
3.已有SNMP接口已有属性新增取值
OID:1.3.6.1.4.1.{{SnmpOemIdentifier}}.11.50
方法:Get
| 属性名称 | 类型 | 取值范围 | 权限 | 描述 |
|---|---|---|---|---|
| firmwareType | INTEGER | 已有属性新增枚举值表示硬盘(23)/RAID(24)/网卡(25) | readonly | 固件类型的枚举值 |
示例:
firmwareName:HDDPlaneDiskX // X表示硬盘槽位号
// firmwareName:RAIDPCIeCard3(SP686C-M-16i4G)
// firmwareName:NICchassisNIC1(SF221Q)
firmwareType: 23 // drive(23)raid(24)nic(25)
firmwareReleaseDate:"" // 暂不支持获取填充空字符串
firmwareReleaseDate:"6021"
firmwareLocation:"" // 暂不支持获取填充空字符串
fruNumber:255 // 不涉及
firmwareBoard:"" // 不涉及
4.已有redfish接口已有属性新增取值
(1)URI:redfish/v1/UpdateService/FirmwareInventory
方法:Get
| 属性名称 | 类型 | 取值范围 | 权限 | 描述 |
|---|---|---|---|---|
| Members | array | 每个元素形如"@odata.id": “/redfish/v1/UpdateService/FirmwareInventory/HDDPlaneDiskX” | readonly | 具体固件版本信息的@odata.id |
Members数组新增硬盘固件版本信息
"Members": [
{
“@odata.id”: “/redfish/v1/UpdateService/FirmwareInventory/HDDPlaneDiskX” // 硬盘
},
{
“@odata.id”: “/redfish/v1/UpdateService/FirmwareInventory/PCIeCard3(SP686C-M-16i4G)” // RAID卡
},
{
“@odata.id”: “/redfish/v1/UpdateService/FirmwareInventory/chassisNIC1(SFXXX)” // 网卡
}
]
(2)URI:redfish/v1/UpdateService/FirmwareInventory/:id
方法:Get,该接口可以查询硬盘/RAID卡/网卡固件版本信息,响应示例如下:
硬盘:
{
"@odata.context": "/redfish/v1/$metadata#SoftwareInventory.SoftwareInventory",
"@odata.id": "/redfish/v1/UpdateService/FirmwareInventory/HDDPlaneDiskX",
"@odata.type": "#SoftwareInventory.v1_2_0.SoftwareInventory",
"Id": "HDDPlaneDiskX",
"Name": "HDDPlaneDiskX",
"Status": {
"State": "Enabled",
"Oem": {
"Identifier": {
"Severity": "Informational"
}
},
"Health": "OK"
},
"Version": "6021",
"ReleaseDate": null,
"Updateable": true,
"RelatedItem": [
{
"@odata.id": "/redfish/v1/Chassis/1/Drives/HDDPlaneDiskX" // 索引到硬盘的uri
}
],
"Oem": {
"Identifier": {
"PositionId": null
"Manufacturer": "xxxx",
"ActiveMode": null,
"ActiveModeSupported": null
}
},
"SoftwareId": "HDDPlaneDiskX"
}
RAID卡
{
"@odata.context": "/redfish/v1/$metadata#SoftwareInventory.SoftwareInventory",
"@odata.id": "/redfish/v1/UpdateService/FirmwareInventory/PCIeCard3(SP686C-M-16i4G)",
"@odata.type": "#SoftwareInventory.v1_2_0.SoftwareInventory",
"Id": "PCIeCard3(SP686C-M-16i4G)",
"Name": "PCIeCard3(SP686C-M-16i4G)",
"Status": {
"State": "Enabled",
"Oem": {
"Identifier": {
"Severity": "Informational"
}
},
"Health": "OK"
},
"Version": "2.0.6.0",
"ReleaseDate": null,
"Updateable": true,
"RelatedItem": [
{
"@odata.id": "/redfish/v1/Systems/1/Storage/RAIDStorage0" // 索引到RAID卡
}
],
"Oem": {
"Identifier": {
"PositionId": null
"Manufacturer": "xxxx",
"ActiveMode": null,
"ActiveModeSupported": null
}
},
"SoftwareId": "PCIeCard3(SP686C-M-16i4G)"
}
网卡
{
"@odata.context": "/redfish/v1/$metadata#SoftwareInventory.SoftwareInventory",
"@odata.id": "/redfish/v1/UpdateService/FirmwareInventory/chassisNIC1(SF221Q)",
"@odata.type": "#SoftwareInventory.v1_2_0.SoftwareInventory",
"Id": "chassisNIC1(SF221Q)",
"Name": "chassisNIC1(SF221Q)",
"Status": {
"State": "Enabled",
"Oem": {
"Identifier": {
"Severity": "Informational"
}
},
"Health": "OK"
},
"Version": "3.10.23.3",
"ReleaseDate": null,
"Updateable": true,
"RelatedItem": [
{
"@odata.id": "/redfish/v1/Chassis/1/NetworkAdapters/chassisNIC1(SF221Q)" // 索引到网卡
}
],
"Oem": {
"Identifier": {
"PositionId": null
"Manufacturer": "xxxx",
"ActiveMode": null,
"ActiveModeSupported": null
}
},
"SoftwareId": "chassisNIC1(SF221Q)"
}
5.已有redfish接口新增请求体参数
uri: /redfish/v1/UpdateService/Actions/UpdateService.SimpleUpdate
方法:Post
变化类型:新增请求体参数
应用场景:支持带外升级指定硬盘的固件
| 属性名称 | 类型 | 示例/默认值/取值约束 | 默认值 | 操作权限 | 描述 |
|---|---|---|---|---|---|
| Targets | array of string | 示例:Targets:[“/redfish/v1/Chassis/{id}/Drives/{driveid}]” 默认值无(可选参数) | 无(可选参数) | BasicSetting | 指定本次固件更新操作所指定的可更新资源的完整 Redfish 资源 URI。 |
评审结论
1.同意webreset接口UI/Rest/BMCSettings/UpdateService的GET操作响应体已有UpgradeResource属性新增取值,UpgradeResource为数组类型,每个元素为一个表,现在新增代表硬盘/网卡/RAID卡固件信息的元素。
示例:
"UpgradeResource": [
{
"Id": 0,
"Version": "6021",
"Type": "Drive",
"Name": "DiskX"
},
{
"Id": 1,
"Version": "6021",
"Type": "RAID",
"Name": "PCIeCard3(SP686C-M-16i4G)"
},
{
"Id": 2,
"Version": "3.10.23.3",
"Type": "NIC",
"Name": "chassisNIC1(SF221Q)"
}
]
2.同意web固件更新页面提示新增硬盘相关提示:如果在系统上电状态时升级BIOS或CPLD或VRD或硬盘,则BIOS、硬盘在系统下电再上电或重启后生效,CPLD、VRD在系统下电后生效。注意:硬盘在系统上电期间如果手动调用生效接口生效硬盘固件,将会影响硬盘业务(秒级)。
3.同意SNMP接口OID:1.3.6.1.4.1.{{SnmpOemIdentifier}}.11.50的GET操作响应体已有firmwareType属性新增枚举值,23代表硬盘,24代表RAID卡,25代表网卡。
4.同意redfish接口redfish/v1/UpdateService/FirmwareInventory的GET操作响应体已有属性Members新增代表硬盘/RAID卡/网卡的元素。
示例:
"Members": [
{
“@odata.id”: “/redfish/v1/UpdateService/FirmwareInventory/HDDPlaneDiskX” // 硬盘
},
{
“@odata.id”: “/redfish/v1/UpdateService/FirmwareInventory/PCIeCard3(SP686C-M-16i4G)” // RAID卡
},
{
“@odata.id”: “/redfish/v1/UpdateService/FirmwareInventory/chassisNIC1(SFXXX)” // 网卡
}
]
5.同意redfish接口redfish/v1/UpdateService/FirmwareInventory/:id的GET操作可以获取硬盘/RAID卡/网卡信息。
示例:
{
"@odata.context": "/redfish/v1/$metadata#SoftwareInventory.SoftwareInventory",
"@odata.id": "/redfish/v1/UpdateService/FirmwareInventory/HDDPlaneDiskX",
"@odata.type": "#SoftwareInventory.v1_2_0.SoftwareInventory",
"Id": "HDDPlaneDiskX",
"Name": "HDDPlaneDiskX",
"Status": {
"State": "Enabled",
"Oem": {
"Identifier": {
"Severity": "Informational"
}
},
"Health": "OK"
},
"Version": "6021",
"ReleaseDate": null,
"Updateable": true,
"RelatedItem": [
{
"@odata.id": "/redfish/v1/Chassis/1/Drives/HDDPlaneDiskX" // 索引到硬盘的uri
}
],
"Oem": {
"Identifier": {
"PositionId": null
"Manufacturer": "xxxx",
"ActiveMode": null,
"ActiveModeSupported": null
}
},
"SoftwareId": "HDDPlaneDiskX"
}
6.同意redfish接口/redfish/v1/UpdateService/Actions/UpdateService.SimpleUpdate的POST操作请求体增加如下属性
属性名称:Targets 属性取值类型:array of string(字符串数组)
示例:Targets:[“/redfish/v1/Chassis/{id}/Drives/{driveid}]”
约束:指定本次固件更新操作所指定的可更新资源的完整 Redfish资源URI
遗留问题
1、webui固件信息页面显示整改
结论:已同步给webui相关同事,已有issue跟踪。
2.生效提示加在生效界面,并且如果存在硬盘生效固件,点击生效需要弹窗提醒用户影响。
结论:该提示在升级和生效的页面都会提示,不再额外提醒。
3.ActiveMode,ActiveModeSupported需要明确作用
结论:与固件管理同事对齐该属性只有BMC固件和CSR固件使用。
4.固件包是谁提供的(华为还是原厂)
结论:对应厂商的硬盘的bin文件由对应厂商提供。

