【待评审】支持HRDT D3100s RAID卡热备盘关联多逻辑盘Web REST接口变更

背景

HRDT(华瑞数鑫)D3100s/D4100t/H3100s 系列 RAID 控制器(PMC SmartRAID,TypeId=66~69)的热备能力超出存量接口表达能力:

能力项 存量 SetHotspareType 方法 HRDT D3100s 系列 RAID 卡
热备类型 0=None、1=Global、2=Dedicated、3=AutoReplace 0=None、1=Global、2=Dedicated、3=AutoReplace(自动替换热备)
专属热备关联逻辑盘 VolumeId 单值(U16) 一块热备盘可同时关联多个逻辑盘

关联 ISSUE

整体方案

  1. 资源协作接口 bmc.kepler.Systems.Storage.Drive 新增方法 SetHotspareTypeV2:HotspareType 保持不变,VolumeIdList(U16 数组)支持一块热备盘关联多个逻辑盘;存量 SetHotspareType 不变(**已评审通过,见 topic 8117 **)
  2. Web REST 接口 /UI/Rest/System/Storage/Drives/:id PATCH:存量字段不动,新增多逻辑盘 ID 列表参数,热备设置按控制器类型分流调用 SetHotspareTypeV2 / 存量 SetHotspareType
  3. Redfish 接口 /redfish/v1/Chassis/:chassisid/Drives/:driveid PATCH:热备设置同步做 V1/V2 分流适配,无 Schema 变更

评审点1:Web REST 接口变更

URI:/UI/Rest/System/Storage/Drives/:id(PATCH),权限沿用 BasicSetting。

请求字段变更:

字段 类型 变更
HotspareType string,枚举 None/Global/Dedicated/Auto Replace 不变(沿用存量枚举定义)
SpareforLogicalDrive string(单值) 不变:保留原单值语义,存量字段与存量解析逻辑完全不动
SpareforLogicalDriveIds string 数组(新增) 新增独立参数:多逻辑盘 ID 列表,后端解析为卷 ID 列表,映射 SetHotspareTypeV2 的 VolumeIdList

响应:无变更。字段缺省表示不修改。

新旧参数分工(按控制器分流):

控制器 调用方法 关联逻辑盘参数 行为
PMC(TypeId 64~69) SetHotspareTypeV2 新参数 SpareforLogicalDriveIds 数组 → VolumeIdList 全量下发 多逻辑盘关联/差集调整
非 PMC(LSI/HI1880) SetHotspareType(存量) 旧参数 SpareforLogicalDrive 单值 → VolumeId 完全存量逻辑,零改动

PATCH 请求示例(节选):

PMC 卡多逻辑盘(新参数):

{
  "HotspareType": "Dedicated",
  "SpareforLogicalDriveIds": ["LogicalDrive1", "LogicalDrive2"]
}

单值设置(存量语义,新老前端通用,行为不变):

{
  "HotspareType": "Dedicated",
  "SpareforLogicalDrive": "LogicalDrive1"
}

截图:

评审点2:Redfish 接口适配(新增)

URI:/redfish/v1/Chassis/:chassisid/Drives/:driveid(PATCH)

Redfish 侧自始使用数组字段 Oem/{{OemIdentifier}}/SpareforLogicalDrives(元素为对象,@odata.id 携带 /LogicalDrive[0-9]{1,5}$ 正则校验),无 Schema 变更。本次仅将 PATCH 热备设置由存量 SetHotspareType(单卷,仅取数组首个元素)升级为按控制器分流,与 Web REST 通道同构:

  • 新增插件函数 is_pmc_controller(redfish orchestrator drives 插件):按盘所属控制器 TypeId 64~69 判定;
  • 映射层处理:热备请求先经 Property 步骤补读盘对象 RefControllerId;数组解析为卷 ID 数字列表(V2 参数);三个存量热备调用点各拆分为 V2/V1 互斥对:
调用组 触发条件 PMC → V2 非 PMC → V1
局部热备带列表 HotspareType=“Dedicated” 且列表存在 全量卷 ID 列表 首个元素(存量语义)
热备设置不带列表 HotspareType 存在且列表缺省 空列表(None/Global 忽略;Dedicated/AutoReplace 显式报错) 硬编码卷 ID 0(保留存量行为)
自动替换热备带列表 HotspareType=“Auto Replace” 且列表存在 全量卷 ID 列表 首个元素(存量语义)

是否准备好 AI 预审:是

评审结论:(待评审)

遗留问题:(空)