【已评审】北向接口新增硬盘/RAID卡/网卡固件版本信息

背景

支持从带外升级硬盘固件,无需复位系统,减少对业务的影响。存在先升级指定硬盘的固件,再根据情况批量升级的诉求。各北向接口(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文件由对应厂商提供。