背景
SSU(Smart Storage Unit)模组是独立计算/存储单元,每个SSU有自己的硬盘、GE网口(支持平面切换)、UB高速口、CPU、内存等。本次议题申报通过Web接口(/UI/Rest/System/SSUs)对外暴露SSU及其子资源(硬盘、内存、处理器、网卡、网口)的设备信息,支持Web页面直观展示SSU整体拓扑和资源详情(电子标签、定位灯、硬盘温度、CPU温度、GE MAC地址),子资源统一挂在对应SSU资源路径下;同时通过CLI接口支持SSU端口平面切换(ipmcset -t ssu -d activeport)。
关联ISSUE
- 支持SSU模组GE MAC查询 — Web/Redfish/SNMP/CLI从设备树GEPort节点获取GE MAC地址
- 支持SSU模组GE口切换 — 新增IPMI和CLI接口执行GE口切换
- 支持SSU模组端口速率配置 — 支持Redfish接口设置UB端口速率
整体方案
Web接口:
/UI/Rest/System/SSUs与/UI/Rest/System/SSUs/:id展示SSU列表与详情(电子标签、定位灯)/UI/Rest/System/SSUs/:id/Drives与/UI/Rest/System/SSUs/:id/Drives/:driveid展示SSU硬盘(含硬盘温度)/UI/Rest/System/SSUs/:id/Memory展示SSU内存/UI/Rest/System/SSUs/:id/Processors展示SSU处理器/UI/Rest/System/SSUs/:id/NetworkAdapters与/UI/Rest/System/SSUs/:id/NetworkAdapters/:adapterid展示SSU网卡/UI/Rest/System/SSUs/:id/NetworkAdapters/:adapterid/Ports展示SSU网口集合/UI/Rest/System/SSUs/:id/NetworkAdapters/:adapterid/Ports/:portid展示SSU网口详情(MAC地址等)
CLI接口:
8. 新增 ipmcset -t ssu -d activeport 执行SSU端口平面切换
9. 新增 ipmcget -t ssu -d activeport 查询SSU GE口当前所在平面
评审点
Web接口
- Web REST接口查询SSU列表与详情(电子标签、定位灯)
- Web REST接口查询SSU硬盘及硬盘温度
- Web REST接口查询SSU内存
- Web REST接口查询SSU处理器
- Web REST接口查询SSU网卡
- Web REST接口查询SSU网口集合
- Web REST接口查询SSU网口(MAC地址)
CLI接口
- 新增CLI接口执行SSU端口平面切换(ipmcset -t ssu -d activeport)
- 新增CLI接口查询SSU GE口当前平面(ipmcget -t ssu -d activeport,支持 -v all)
详细描述
评审点1:Web REST接口查询SSU列表与详情
资源URI :/UI/Rest/System/SSUs
请求方式 :GET
请求参数 :无
响应参数 :
| 参数名 | 类型 | 示例/取值约束 | 操作权限 | 描述 |
|---|---|---|---|---|
| List | array | [{…}] | ReadOnly | SSU列表(一级属性),元素仅包含SSU资源路径 |
| └─ SSU | string | “/UI/Rest/System/SSUs/SSU0” | ReadOnly | SSU详情资源路径(二级属性) |
Get响应示例
{
"List": [
{ "SSU": "/UI/Rest/System/SSUs/SSU0" },
{ "SSU": "/UI/Rest/System/SSUs/SSU1" }
]
}
资源URI :/UI/Rest/System/SSUs/:id
请求方式 :GET
响应参数 :
| 参数名 | 类型 | 示例/取值约束 | 操作权限 | 描述 |
|---|---|---|---|---|
| Id | string | “SSU0” | ReadOnly | SSU标识 |
| Manufacturer | string | “Huawei” | ReadOnly | 制造商 |
| SerialNumber | string | “SSU0SN12345” | ReadOnly | 序列号 |
| Model | string | “SSU-Model-A” | ReadOnly | 型号 |
| PartNumber | string | “SSU-PN-001” | ReadOnly | 部件号 |
| SystemId | integer | 1 | ReadOnly | 所属主机系统Id(体现SSU与主机系统的归属关系) |
| LocationIndicatorActive | boolean | true/false | BasicSetting | true表示定位指示灯开启,false表示定位指示灯关闭 |
Get响应示例
{
"Id": "SSU0",
"Manufacturer": "Huawei",
"SerialNumber": "SSU0SN12345",
"Model": "SSU-Model-A",
"PartNumber": "SSU-PN-001",
"SystemId": 1,
"LocationIndicatorActive": true
}
请求方式 :PATCH
请求参数 :
| 参数名 | 类型 | 示例/取值约束 | 操作权限 | 描述 |
|---|---|---|---|---|
| LocationIndicatorActive | boolean | true/false | BasicSetting | 定位灯状态 |
Patch请求示例(设置定位灯)
{
"LocationIndicatorActive": true
}
评审点2:Web REST接口查询SSU硬盘及硬盘温度
资源URI :/UI/Rest/System/SSUs/:id/Drives
请求方式 :GET
响应参数 :
| 参数名 | 类型 | 示例/取值约束 | 操作权限 | 描述 |
|---|---|---|---|---|
| List | array | [{…}] | ReadOnly | SSU硬盘列表(一级属性),元素仅包含Drive资源路径(与SSU列表一致) |
| └─ Drive | string | “/UI/Rest/System/SSUs/SSU0/Drives/Disk0” | ReadOnly | 硬盘详情资源路径(二级属性) |
Get响应示例
{
"List": [
{ "Drive": "/UI/Rest/System/SSUs/SSU0/Drives/Disk0" }
]
}
资源URI :/UI/Rest/System/SSUs/:id/Drives/:driveid
请求方式 :GET
响应参数 :
| 参数名 | 类型 | 示例/取值约束 | 操作权限 | 描述 |
|---|---|---|---|---|
| Id | string | “Disk0” | ReadOnly | 硬盘标识 |
| Name | string | “NVMeDrive0” | ReadOnly | 硬盘名称 |
| Model | string | “SSU-Drive-Model” | ReadOnly | 硬盘型号 |
| CapacityBytes | integer | 960197124096 | ReadOnly | 硬盘容量(字节) |
| Protocol | string | “NVMe” | ReadOnly | 硬盘协议类型 |
| MediaType | string | “SSD” | ReadOnly | 硬盘介质类型 |
| SerialNumber | string | “Disk0SN12345” | ReadOnly | 硬盘序列号 |
| TemperatureCelsius | number,null | 35 | ReadOnly | 硬盘温度(摄氏度) |
| Health | string | “OK” | ReadOnly | 硬盘健康状态 |
Get响应示例
{
"Id": "Disk0",
"Name": "NVMeDrive0",
"Model": "SSU-Drive-Model",
"CapacityBytes": 960197124096,
"Protocol": "NVMe",
"MediaType": "SSD",
"SerialNumber": "Disk0SN12345",
"TemperatureCelsius": 35,
"Health": "OK"
}
评审点3:Web REST接口查询SSU内存
资源URI :/UI/Rest/System/SSUs/:id/Memory
请求方式 :GET
响应参数 :
| 参数名 | 类型 | 示例/取值约束 | 操作权限 | 描述 |
|---|---|---|---|---|
| Memory | array | [{…}] | ReadOnly | SSU内存列表(一级属性),集合层直接展示所有内存信息,无查询指定内存详情接口 |
| └─ CapacityMiB | integer | 65536 | ReadOnly | 内存容量(MiB)(二级属性) |
| └─ Manufacturer | string | “Huawei” | ReadOnly | 内存制造商(二级属性) |
| └─ SerialNumber | string | “Mem0SN12345” | ReadOnly | 内存序列号(二级属性) |
| └─ PartNumber | string | “SSU-DIMM-PN” | ReadOnly | 内存部件号(二级属性) |
Get响应示例
{
"Memory": [
{
"CapacityMiB": 65536,
"Manufacturer": "Huawei",
"SerialNumber": "Mem0SN12345",
"PartNumber": "SSU-DIMM-PN"
}
]
}
评审点4:Web REST接口查询SSU处理器
资源URI :/UI/Rest/System/SSUs/:id/Processors
请求方式 :GET
响应参数 :
| 参数名 | 类型 | 示例/取值约束 | 操作权限 | 描述 |
|---|---|---|---|---|
| Processor | array | [{…}] | ReadOnly | SSU处理器列表(一级属性),集合层直接展示所有处理器信息,无查询指定处理器详情接口 |
| └─ FrequencyMHz | integer | 2100 | ReadOnly | 处理器频率(MHz)(二级属性) |
| └─ Manufacturer | string | “Huawei” | ReadOnly | 处理器制造商(二级属性) |
| └─ Model | string | “SSU-Processor” | ReadOnly | 处理器型号(二级属性) |
| └─ PartNumber | string | “SSU-CPU-PN” | ReadOnly | 处理器部件号(二级属性) |
| └─ SerialNumber | string | “CPU0SN12345” | ReadOnly | 处理器序列号(二级属性) |
Get响应示例
{
"Processor": [
{
"FrequencyMHz": 2100,
"Manufacturer": "Huawei",
"Model": "SSU-Processor",
"PartNumber": "SSU-CPU-PN",
"SerialNumber": "CPU0SN12345"
}
]
}
评审点5:Web REST接口查询SSU网卡
资源URI :/UI/Rest/System/SSUs/:id/NetworkAdapters
请求方式 :GET
响应参数 :
| 参数名 | 类型 | 示例/取值约束 | 操作权限 | 描述 |
|---|---|---|---|---|
| List | array | [{…}] | ReadOnly | SSU网卡列表(一级属性),元素仅包含NetworkAdapter资源路径(与SSU列表一致) |
| └─ NetworkAdapter | string | “/UI/Rest/System/SSUs/SSU0/NetworkAdapters/SSU0ModuleLOM0” | ReadOnly | 网卡详情资源路径(二级属性) |
Get响应示例
{
"List": [
{ "NetworkAdapter": "/UI/Rest/System/SSUs/SSU0/NetworkAdapters/SSU0ModuleLOM0" }
]
}
资源URI :/UI/Rest/System/SSUs/:id/NetworkAdapters/:adapterid
请求方式 :GET
响应参数 :
| 参数名 | 类型 | 示例/取值约束 | 操作权限 | 描述 |
|---|---|---|---|---|
| Id | string | “SSU0ModuleLOM0” | ReadOnly | 网卡标识 |
| Model | string | “SSU-LOM” | ReadOnly | 网卡型号 |
Get响应示例
{
"Id": "SSU0ModuleLOM0",
"Model": "SSU-LOM"
}
评审点6:Web REST接口查询SSU网口集合
资源URI :/UI/Rest/System/SSUs/:id/NetworkAdapters/:adapterid/Ports
请求方式 :GET
响应参数 :
| 参数名 | 类型 | 示例/取值约束 | 操作权限 | 描述 |
|---|---|---|---|---|
| List | array | [{…}] | ReadOnly | SSU网口列表(一级属性),元素仅包含Port资源路径(参考DPU列表实现,暂不返回Description) |
| └─ Port | string | “/UI/Rest/System/SSUs/SSU0/NetworkAdapters/SSU0ModuleLOM0/Ports/GE0” | ReadOnly | 网口详情资源路径(二级属性,GE0/UB0/UB1) |
Get响应示例
{
"List": [
{ "Port": "/UI/Rest/System/SSUs/SSU0/NetworkAdapters/SSU0ModuleLOM0/Ports/GE0" },
{ "Port": "/UI/Rest/System/SSUs/SSU0/NetworkAdapters/SSU0ModuleLOM0/Ports/UB0" },
{ "Port": "/UI/Rest/System/SSUs/SSU0/NetworkAdapters/SSU0ModuleLOM0/Ports/UB1" }
]
}
评审点7:Web REST接口查询SSU网口
资源URI :/UI/Rest/System/SSUs/:id/NetworkAdapters/:adapterid/Ports/:portid
请求方式 :GET
响应参数 :
| 参数名 | 类型 | 示例/取值约束 | 操作权限 | 描述 |
|---|---|---|---|---|
| Id | string | “GE0” | ReadOnly | 网口标识 |
| Name | string | “GEPort0” | ReadOnly | 网口名称 |
| SpeedMbps | number | 1000 | ReadOnly | 网口速率(Mbps) |
| AssociatedMACAddresses | array | [“aa:bb:cc:dd:ee:ff”] | ReadOnly | 关联的MAC地址数组 |
Get响应示例(GE口 GE0)
{
"Id": "GE0",
"Name": "GEPort0",
"SpeedMbps": 1000,
"AssociatedMACAddresses": [
"aa:bb:cc:dd:ee:ff"
]
}
Get响应示例(UB口 UB0)
{
"Id": "UB0",
"Name": "UBPort0",
"SpeedMbps": 100000,
"AssociatedMACAddresses": []
}
评审点8:新增CLI接口执行SSU端口平面切换
cli uri:/cli/v1/ssu/activeport
变化类型:新增命令
操作类型:Patch
应用场景:切换SSU GE端口所在平面
命令格式:ipmcset -t ssu -d activeport -v <ssuid> <portid> <plane>
| 参数名称 | 取值类型 | 取值范围 | 是否必选 | 说明 |
|---|---|---|---|---|
| ssuid | integer | 0-N | 是 | SSU编号(从0开始) |
| portid | string | “GE0” | 是 | 端口标识(GE0/UB0/UB1) |
| plane | integer | 对应平面标识 | 是 | 切换目标平面 |
确认提示
WARNING: This operation will switch SSU0 Port GE0 to plane 0.
Do you want to continue?[Y/N]:
回显示例(成功)
Set SSU0 Port GE0 to plane 0 successfully.
回显示例(失败)
Failed to set SSU0 Port GE0 to plane 0: communication error.
评审点9:新增CLI接口查询SSU GE口当前平面
cli uri:/cli/v1/ssu/activeport
变化类型:新增命令
操作类型:Get
应用场景:查询SSU所有GE口当前所在平面
命令格式:ipmcget -t ssu -d activeport -v <ssuid|all>
| 参数名称 | 取值类型 | 取值范围 | 是否必选 | 说明 |
|---|---|---|---|---|
| ssuid | string | 0-N 或 all | 是 | SSU编号(从0开始),all表示查询所有SSU的GE口当前平面 |
回显示例(成功)
SSU0 Port GE0 plane : 0
回显示例(失败)
Failed to get SSU0 Port GE0 plane: communication error.
是否准备好AI预审
是
评审结论
- Web REST接口
/UI/Rest/System/SSUs与/UI/Rest/System/SSUs/:id查询SSU列表与详情:列表返回List数组,元素仅包含SSU详情资源路径(SSU);详情展示电子标签属性(Manufacturer、SerialNumber、Model、PartNumber)、SystemId(归属关系)、LocationIndicatorActive,支持PATCH设置定位灯,属性具体描述见详细描述中的评审点1 - Web REST接口
/UI/Rest/System/SSUs/:id/Drives与/UI/Rest/System/SSUs/:id/Drives/:driveid查询SSU硬盘:集合返回List数组,元素仅包含硬盘详情资源路径(Drive);详情展示硬盘名称、型号、容量(CapacityBytes)、接口类型(Protocol)、介质类型(MediaType)、序列号、厂商(Manufacturer)、固件版本(Revision)、硬盘温度(TemperatureCelsius)及健康状态(Health),属性具体描述见详细描述中的评审点2 - Web REST接口
/UI/Rest/System/SSUs/:id/Memory查询SSU内存:集合层直接展示所有内存信息,无查询指定内存详情接口,属性包括容量(CapacityMiB)、制造商(Manufacturer)、序列号(SerialNumber)、部件号(PartNumber),属性具体描述见详细描述中的评审点3 - Web REST接口
/UI/Rest/System/SSUs/:id/Processors查询SSU处理器:集合层直接展示所有处理器信息,无查询指定处理器详情接口,属性包括频率(FrequencyMHz)、制造商(Manufacturer)、型号(Model)、部件号(PartNumber)、序列号(SerialNumber),属性具体描述见详细描述中的评审点4 - Web REST接口
/UI/Rest/System/SSUs/:id/NetworkAdapters与/UI/Rest/System/SSUs/:id/NetworkAdapters/:adapterid查询SSU网卡:集合返回List数组,元素仅包含网卡详情资源路径(NetworkAdapter);详情展示网卡标识(Id)与型号(Model),属性具体描述见详细描述中的评审点5 - Web REST接口
/UI/Rest/System/SSUs/:id/NetworkAdapters/:adapterid/Ports查询SSU网口集合:返回List数组,元素仅包含网口详情资源路径(Port),端口标识与Redfish一致(GE0/UB0/UB1),属性具体描述见详细描述中的评审点6 - Web REST接口
/UI/Rest/System/SSUs/:id/NetworkAdapters/:adapterid/Ports/:portid查询SSU网口:详情展示网口标识(Id)、名称(Name)、速率(SpeedMbps)、关联MAC地址(AssociatedMACAddresses),GE口返回MAC、UB口返回空数组,属性具体描述见详细描述中的评审点7 - CLI接口新增
ipmcset -t ssu -d activeport执行SSU端口平面切换,属性具体描述见详细描述中的评审点8 - CLI接口新增
ipmcget -t ssu -d activeport查询SSU GE口当前所在平面,支持-v all查询所有SSU的GE口平面,回显打印端口标识,属性具体描述见详细描述中的评审点9
遗留问题
-
内存信息是DIMM信息,还是内存的汇总信息?
答:暂未确认,先按已有内容显示,若不支持先不显示。 -
切换端口平面的命令需要限制范围为SSU,命名需参考其他机型。
答:命令已修改为 /cli/v1/ssu/activeport。