【待评审】支持RAID卡动态配置最大启动盘数量,北向接口调整

背景

适配YX4颗粒的1880 RAID;同时RAID FW固件版本由1.x更新至2.x,固件升级带来的影响就是启动盘规格的变更,1.x版本支持1个启动盘配置,2.x版本支持5个启动盘配置。

北向接口需要做出相应的变化,来适配此改动

关联ISSUE

https://gitcode.com/openUBMC/storage/issues/297

https://gitcode.com/openUBMC/storage/issues/296

https://gitcode.com/openUBMC/storage/issues/294

整体方案

1、支持CLI接口通过资源协作属性BootDevices获取显示RAID卡配置的多个启动盘;

2、支持Redfish接口通过资源协作属性BootDevices获取RAID卡的多个启动盘

接口无变化,返回值BootDevices会根据实际情况返回全部设备名称,未设置的显示None;

3、支持Redfish接口通过资源协作接口SetBootDevicesV2设置RAID卡的多个启动盘;

评审点

1、支持扩展Redfish接口查询和设置RAID卡的多启动盘信息
2、支持扩展Web-rest接口查询和设置RAID卡的多启动盘信息
3、支持CLI接口获取显示RAID卡配置的多个启动盘信息

详细描述

评审点1:支持扩展Redfish接口查询和设置RAID卡的多启动盘信息

资源URI:/redfish/v1/Systems/:systemid/Storages/:storageid
操作类型:GET/PATCH
变化类型:变更属性取值范围
扩展指定存储器启动盘的资源ID:BootDevices,类型:array,数组元素类型:String,启动盘数组大小根据RAID卡所支持的最大个数动态获取和设置
GET方法示例:

修改前:
{
    "StorageControllers": [
        {
            "Oem": {
                "openUBMC": {
                    "BootDevices": ["Disk0", "None"]
                }
            }
        }
    ]
}
修改后:
{
    "StorageControllers": [
        {
            "Oem": {
                "openUBMC": {
                    "BootDevices": ["Disk0", "Disk1", "Disk2", "None", "None"]
                }
            }
        }
    ]
}

PATCH方法示例:

修改前:
{
    "StorageControllers": [
        {
            "Oem": {
                "openUBMC": {
                    "BootDevices": ["Disk0", "None"]
                }
            }
        }
    ]
}
修改后:
{
    "StorageControllers": [
        {
            "Oem": {
                "openUBMC": {
                    "BootDevices": ["Disk0", "Disk1", "Disk2"]
                }
            }
        }
    ]
}

变更属性

属性名 类型 示例/取值范围 readonly 易变属性 实现patch 操作权限 描述
BootDevices array 博通卡,PMC卡示例:
[“Disk0”, “None”]
1880Raid卡1.0版本示例:
[“Disk0”]
1880Raid卡2.0版本示例:
[“Disk0”, “Disk2”, “Disk3”,“None”,“None”]
控制器多启动盘信息

评审点2:支持扩展Web-rest接口查询和设置RAID卡的多启动盘信息

资源URI:/UI/Rest/System/Storage/:id
操作类型:GET/PATCH
变化类型:变更属性取值范围
扩展指定存储器启动盘的资源ID:BootDevices,类型:array,数组元素类型:String,启动盘数组大小根据RAID卡所支持的最大个数动态获取和设置
GET方法示例:

修改前:
{
    "BootDevices": ["Disk0", "None"]
}
修改后:
{
    "BootDevices": ["Disk0", "Disk1", "Disk2", "None", "None"]
}

PATCH方法示例:

修改前:
{
    "BootDevices": ["Disk0", "None"]
}
修改后:
{
    "BootDevices": ["Disk0", "Disk1", "Disk2"]
}

变更属性

属性名 类型 示例/取值范围 readonly 易变属性 实现patch 操作权限 描述
BootDevices array 博通卡,PMC卡示例:
[“Disk0”, “None”]
1880Raid卡1.0版本示例:
[“Disk0”]
1880Raid卡2.0版本示例:
[“Disk0”, “Disk2”, “Disk3”,“None”,“None”]
控制器多启动盘信息

评审点3:CLI接口获取多启动盘

资源URI:ipmcget -t storage -d ctrlinfo
操作类型:GET
变化类型:变更属性取值范围
扩展指定存储器启动盘的资源ID :BootDevices,类型: array,数组元素类型:String,同意启动盘数组大小根据RAID卡所支持的最大个数动态获取

旧文案

所有Raid卡示例:
Primary Boot Device                          : Disk1
Secondary Boot Device                        : Disk2

新文案

博通卡,PMC卡示例:
Primary Boot Device                          : Disk1
Secondary Boot Device                        : Disk2
1880Raid卡1.0版本示例:
Boot Devices                                  : Disk1
1880Raid卡2.0版本示例:
Boot Devices                                  : Disk1, Disk2, Disk3, None, None

变更属性

属性名 类型 示例/取值范围 readonly 易变属性 实现patch 操作权限 描述
BootDevices array 博通卡,PMC卡示例:
[“Disk0”, “None”]
1880Raid卡1.0版本示例:
[“Disk0”]
1880Raid卡2.0版本示例:
[“Disk0”, “Disk2”, “Disk3”,“None”,“None”]
控制器多启动盘信息

是否准备好AI预审

评审结论

遗留问题