【待评审】新增redfish 接口查询和设置高温下电恢复使能开关与延时时间

ISSUE链接
【需求】支持高温下电后是否需要上电属性进行开关设置-fructrl-GitCode
背景
1: CPU过温后,硬件会主动下电,下电后,会根据私有对象ThermTrip的Actions的值决定一段时间后是否要上电还是不上电(默认上电);当cpu持续高温时可能造成os反复上下电,当前该策略配置在CSR里,没有提供相关接口供客户选择,影响可用性
2: 自动上电的延时时间后只能在csr里配置,没有对外的接口可以提供设置,影响可用性

评审点

基于上述背景,redfish需要新增加两个oem自定义属性,同时私有对象ThermTrip需要上到资源协作接口

评审点1:
新增redfish查询和设置高温下电后是否需要上电的接口 与 延时时间
详细描述
操作类型:查询/设置接口
uri:/redifsh/v1/Systems/:systemid
Oem/{{OemIdentifier}} 下新增属性新增如下属性

字段 字段说明 类型 取值举例
PowerOnAfterCpuThermalTrip CPU过温保护下电再上电策略开启状态 布尔值 true:代表需要上电 false:不需要上电
DelaySecondsAfterCpuThermalTrip CPU过温保护下电再上电间隔秒数 整数类型 正整数

查询/设置

Oem: {
    "{{OemIdentifier}}": {
       "PowerOnAfterCpuThermalTrip": true,
       ”DelaySecondsAfterCpuThermalTrip“:300
       }
}

评审点2:
私有对象ThermTrip上到资源协作接口
详细描述

新增path

/bmc/kepler/Systems/:SystemsId/ThermTrip/:Id

新增interface

bmc.kepler.Systems.ThermTrip

私有属性Actions/TimeDelaySeconds迁移到新增interface属性下面

属性名称 变化类型 描述 类型 读写&权限 持久化 变化通知 取值说明
Actions 属性迁移 高温下电后上电策略 U8 写权限:PowerMgmt 读权限:ReadOnly 掉电持久化 false 1:需要上电 0:不需要上电
TimeDelaySeconds 属性迁移 高温下电后上电延时时间 U32 写权限:PowerMgmt 读权限:ReadOnly 掉电持久化 false 单位为秒,默认300

@hxmygcs 当前评审发帖需要答复和闭环以下问题:

问题1:评审点2新增的资源协作接口需要说明变更的原因,以及兼容性处理策略
问题2:评审点2中资源协作接口下的属性的说明需要明确细化,说明这里的高温下电是什么原因的下电,接口名称是不是就是 ThermalTrip 导致的下电之后的上电策略?

根据评委意见,有如下处理方案

方案一

ThermTrip不上资源协作接口
需要在/bmc/kepler/Systems/:SystemId/FruCtrl/:Id路径下

新增interface: bmc.kepler.Systems.ThermalTrip接口

新增两个资源协作接口属性PowerOnAfterCpuThermalTrip,DelaySecondsAfterCpuThermalTrip

同时新增两个私有对象属性,用来处理兼容性问题

资源协作属性

属性名称 变化类型 描述 类型 读写&权限 持久化 变化通知 取值说明
PowerOnAfterCpuThermalTrip 属性新增 高温下电后上电策略 布尔 写权限:PowerMgmt 读权限:ReadOnly 掉电持久化 false true:需要上电 false:不需要上电
DelaySecondsAfterCpuThermalTrip 属性迁移 高温下电后上电延时时间 U32 写权限:PowerMgmt 读权限:ReadOnly 掉电持久化 false 单位为秒,默认300

私有属性用来处理兼容性问题

属性名称 变化类型 描述 类型 读写&权限 持久化 变化通知 取值说明
PowerOnAfterCpuThermalTripModfied 属性新增 表示属性生效来源 布尔 不涉及 掉电持久化 false false:代表从CSR生效 true:代表从本接口下属性生效 默认false
DelaySecondsAfterCpuThermalTripModfied 属性新增 表示属性生效来源 布尔 不涉及 掉电持久化 false false:代表从CSR生效 true:代表从本接口下属性生效 默认false

兼容处理方案

  1. 如果PowerOnAfterCpuThermalTrip没有设置过,PowerOnAfterCpuThermalTripModfied为false,生效的是ThermTrip的CSR配置
  2. 如果DelaySecondsAfterCpuThermalTrip没有设置过,DelaySecondsAfterCpuThermalTripModfied为false,生效的是ThermTrip的CSR配置
  3. 如果对应属性设置过,则将xxModified属性置为true,表示生效的是对应bmc.kepler.Systems.ThermalTrip下面的属性,而非私有对象ThermTrip的属性

方案二

私有对象ThermTrip上到资源协作接口
框架会自动处理兼容性问题,如果未设置过属性,则生效的是CSR的值,否则生效设置过后的值
详细描述

新增path

/bmc/kepler/Systems/:SystemsId/ThermalTrip/:Id

新增interface

bmc.kepler.Systems.ThermalTrip

私有属性Actions/TimeDelaySeconds迁移到新增interface属性下面

属性名称 变化类型 描述 类型 读写&权限 持久化 变化通知 取值说明
Actions 属性迁移 高温下电后上电策略 U8 写权限:PowerMgmt 读权限:ReadOnly 掉电持久化 false 1:需要上电 0:不需要上电
TimeDelaySeconds 属性迁移 高温下电后上电延时时间 U32 写权限:PowerMgmt 读权限:ReadOnly 掉电持久化 false 单位为秒,默认300