【已评审】支持web和cli接口管理SSU

背景

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

整体方案

Web接口:

  1. /UI/Rest/System/SSUs/UI/Rest/System/SSUs/:id 展示SSU列表与详情(电子标签、定位灯)
  2. /UI/Rest/System/SSUs/:id/Drives/UI/Rest/System/SSUs/:id/Drives/:driveid 展示SSU硬盘(含硬盘温度)
  3. /UI/Rest/System/SSUs/:id/Memory 展示SSU内存
  4. /UI/Rest/System/SSUs/:id/Processors 展示SSU处理器
  5. /UI/Rest/System/SSUs/:id/NetworkAdapters/UI/Rest/System/SSUs/:id/NetworkAdapters/:adapterid 展示SSU网卡
  6. /UI/Rest/System/SSUs/:id/NetworkAdapters/:adapterid/Ports 展示SSU网口集合
  7. /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接口

  1. Web REST接口查询SSU列表与详情(电子标签、定位灯)
  2. Web REST接口查询SSU硬盘及硬盘温度
  3. Web REST接口查询SSU内存
  4. Web REST接口查询SSU处理器
  5. Web REST接口查询SSU网卡
  6. Web REST接口查询SSU网口集合
  7. Web REST接口查询SSU网口(MAC地址)

CLI接口

  1. 新增CLI接口执行SSU端口平面切换(ipmcset -t ssu -d activeport)
  2. 新增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预审

评审结论

  1. Web REST接口 /UI/Rest/System/SSUs/UI/Rest/System/SSUs/:id 查询SSU列表与详情:列表返回 List 数组,元素仅包含SSU详情资源路径(SSU);详情展示电子标签属性(Manufacturer、SerialNumber、Model、PartNumber)、SystemId(归属关系)、LocationIndicatorActive,支持PATCH设置定位灯,属性具体描述见详细描述中的评审点1
  2. 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
  3. Web REST接口 /UI/Rest/System/SSUs/:id/Memory 查询SSU内存:集合层直接展示所有内存信息,无查询指定内存详情接口,属性包括容量(CapacityMiB)、制造商(Manufacturer)、序列号(SerialNumber)、部件号(PartNumber),属性具体描述见详细描述中的评审点3
  4. Web REST接口 /UI/Rest/System/SSUs/:id/Processors 查询SSU处理器:集合层直接展示所有处理器信息,无查询指定处理器详情接口,属性包括频率(FrequencyMHz)、制造商(Manufacturer)、型号(Model)、部件号(PartNumber)、序列号(SerialNumber),属性具体描述见详细描述中的评审点4
  5. Web REST接口 /UI/Rest/System/SSUs/:id/NetworkAdapters/UI/Rest/System/SSUs/:id/NetworkAdapters/:adapterid 查询SSU网卡:集合返回 List 数组,元素仅包含网卡详情资源路径(NetworkAdapter);详情展示网卡标识(Id)与型号(Model),属性具体描述见详细描述中的评审点5
  6. Web REST接口 /UI/Rest/System/SSUs/:id/NetworkAdapters/:adapterid/Ports 查询SSU网口集合:返回 List 数组,元素仅包含网口详情资源路径(Port),端口标识与Redfish一致(GE0/UB0/UB1),属性具体描述见详细描述中的评审点6
  7. Web REST接口 /UI/Rest/System/SSUs/:id/NetworkAdapters/:adapterid/Ports/:portid 查询SSU网口:详情展示网口标识(Id)、名称(Name)、速率(SpeedMbps)、关联MAC地址(AssociatedMACAddresses),GE口返回MAC、UB口返回空数组,属性具体描述见详细描述中的评审点7
  8. CLI接口新增 ipmcset -t ssu -d activeport 执行SSU端口平面切换,属性具体描述见详细描述中的评审点8
  9. CLI接口新增 ipmcget -t ssu -d activeport 查询SSU GE口当前所在平面,支持 -v all 查询所有SSU的GE口平面,回显打印端口标识,属性具体描述见详细描述中的评审点9

遗留问题

  1. 内存信息是DIMM信息,还是内存的汇总信息?
    答:暂未确认,先按已有内容显示,若不支持先不显示。

  2. 切换端口平面的命令需要限制范围为SSU,命名需参考其他机型。
    答:命令已修改为 /cli/v1/ssu/activeport。