ISSUE链接
评审背景
1、当前设置功耗封顶失败动作对外接口并未提供LogEventOnly的动作;需按标准实现LogEventOnly;
2、当前实现的NoAction与标准定义不一致,标准定义是不做任何操作,目前实现的逻辑为记录日志;
当前现状与差距/问题分析:
| 标准接口/规范 | Redfish | IPMI | Web | SNMP | |
|---|---|---|---|---|---|
| NoAction | Redfish/ipmi-DCMI | 已实现,和标准不一致 | 已实现,和标准不一致 | 已实现,和标准不一致 | 未实现 |
| HardPowerOff | Redfish/ipmi-DCMI | 已实现,和标准一致 | 已实现,和标准一致 | 已实现,和标准一致 | 已实现,和标准一致 |
| LogEventOnly | Redfish/ipmi-DCMI | 未实现 | 未实现 | 未实现 | 已实现,和标准一致 |
| Reset | OEM | 已实现 | 已实现 | 已实现 | 已实现 |
已有的资源协作接口属性:
(1)PowerLimitException(枚举类:NoAction、Reset、HardPowerOff)是持久化属性不能更改或新增;
(2)PowerLimitExceptionLogEvent(布尔类:true、false),在csr判断是否记录事件日志时,会判断PowerLimitExceptionLogEvent属性值,若为false则不会记录事件日志;
所有功耗封顶失败动作由两个属性决定,无法统一记录操作日志。故需实现一个设置功耗封顶失败动作的方法,统一记录操作日志。
详细描述
1、 功耗封顶失败动作变更
与标准定义实现一致,原选项NoAction由记录SEL日志变更为不做任何操作,新增LogEventOnly选项用于记录SEL日志
2、 相关北向接口变更说明
2.1 Redfish
https:// device_ip /redfish/v1/Chassis/ chassis_id /Power
| 字段 | 类型 | 说明 |
|---|---|---|
| PowerLimit | 对象 | 功率封顶参数,包括:LimitInWatts:封顶功率,null(不支持);LimitException:功率封顶失效后的动作,可以是"HardPowerOff"、“NoAction”、“Reset”、“LogEventOnly(默认)”或"null(不支持)" |
2.2 IPMI OEM
Set Power Capping Configuration
请求说明
| NetFn | CMD | Manufacturer ID | Sub Command | Power Capping Parameter | reserved | Offset | Length | Data |
|---|---|---|---|---|---|---|---|---|
| 30h | 93h | Manufacturer ID | 13h | 03h | 00h | 00h | 02h | Data |
响应说明
| Completion Code | Manufacturer ID |
|---|---|
| Completion Code | Manufacturer ID |
Get Power Capping Configuration
请求说明
| NetFn | CMD | Manufacturer ID | Sub Command | Power Capping Parameter | Read Offset | Length |
|---|---|---|---|---|---|---|
| 30h | 93h | Manufacturer ID | 14h | 03h | 00h | 02h |
响应说明
| Completion Code | Manufacturer ID | End of List | Data |
|---|---|---|---|
| Completion Code | Manufacturer ID | 00h | Data |
| Parameter | Parameter Data | # (Decimal Format) |
|---|---|---|
| Power Capping Failed Action | data1-Get/Set Alert:0-disable,1-enable;data2-Get/Set Fail Action:0-NoAction,1-PowerOff,2-Reset,3-LogEventOnly:仅记录事件 | 3 |
2.3 IPMI DCMI
Set Power Limit
请求说明
| NetFn | CMD | DC | Reserved | 封顶失败后期望动作 | 功耗封顶值 | 修正时间限制 | Reserved | Sampling period |
|---|---|---|---|---|---|---|---|---|
| 2Ch | 04h | DCh | 0x000000 | 封顶失败后期望动作:00h – 无动作,01h – 下电并且记录事件日志,02h – 重启并且记录事件日志,11h – 仅记录事件日志 | 功耗封顶值(瓦特),低字节优先 | 修正时间限制(毫秒),平台功率达到功率限制后,修正时间内将功率限制到封顶值以下,否则认为封顶失败,采取失败动作,低字节优先 | 0x0000 | 统计信息采样周期,低字节优先 |
响应说明
| Completion Code | DC |
|---|---|
| Completion Code | DCh |
Get Power Limit
请求说明
| NetFn | CMD | DC | Reserved |
|---|---|---|---|
| 2Ch | 04h | DCh | 0x0000 |
响应说明
| Completion Code | DC | Reserved | 封顶失败后期望动作 | 功耗封顶值 | 修正时间限制 | Reserved | Sampling period |
|---|---|---|---|---|---|---|---|
| Completion Code | DCh | 0x0000 | 封顶失败后期望动作:00h – 无动作,01h – 下电并且记录事件日志,02h – 重启并且记录事件日志,11h – 仅记录事件日志 | 功耗封顶值(瓦特),低字节优先 | 修正时间限制(毫秒),平台功率达到功率限制后,修正时间内将功率限制到封顶值以下,否则认为封顶失败,采取失败动作,低字节优先 | 0x0000 | 统计信息采样周期,低字节优先 |
2.4 Web
https:// device_ip /UI/Rest/System/Power
| 对象 | 字段 | 类型 |
|---|---|---|
| PowerLimit | LimitException | String (“HardPowerOff”, “NoAction”, “Reset”,“LogEventOnly”) |
2.5 SNMP
| 节点名称 | 节点OID示例 | 描述 | 类型 | 权限 |
|---|---|---|---|---|
| powerCappingFailureAction | 1.3.6.1.4.1.2011.2.235.1.1.23.3.0 | When power capping failed, host system action.eventlog(1),eventlogAndPowerOff (2),eventlogAndReset (3),NoAction(4),Default value is eventlog(1). | INTEGER | read-write |
3、 新增资源协作接口方法SetPowerLimitException
path:/bmc/kepler/Systems/:SystemId/PowerStrategy
interface:bmc.kepler.Systems.PowerStrategy
| 方法名称 | 变化类型 | 读写权限 | 请求签名 | 请求参数 | 响应签名 | 响应参数 | 接口说明 | 接口约束 |
|---|---|---|---|---|---|---|---|---|
| SetPowerLimitException | 新增方法 | PowerMgmt | s | Action | 无 | 无 | 设置功耗封顶失败动作的资源协作方法 | 请求参数Action取值范围:NoAction、LogEventOnly、Reset、HardPowerOff |
4、 新增资源协作接口方法GetPowerLimitException
path:/bmc/kepler/Systems/:SystemId/PowerStrategy
interface:bmc.kepler.Systems.PowerStrategy
| 方法名称 | 变化类型 | 读写权限 | 请求签名 | 请求参数 | 响应签名 | 响应参数 | 接口说明 | 接口约束 |
|---|---|---|---|---|---|---|---|---|
| GetPowerLimitException | 新增方法 | ReadOnly | 无 | 无 | s | Action | 获取功耗封顶失败动作的资源协作方法 | 响应参数Action取值范围:NoAction、LogEventOnly、Reset、HardPowerOff |
评审结论
1、 同意功耗封顶失败动作实现变更为标准定义实现一致
NoAction由记日志变更为不做任何操作;新增LogEventOnly为记SEL日志
2、 同意功耗封顶接口变更
| 接口 | 变更 |
|---|---|
| Redfish 接口 | /redfish/v1/Chassis/1/Power 资源下 PowerControl 中的 PowerLimit 对象的 LimitException 属性值 NoAction 由记录 SEL 日志变更为不做任何操作,同时新增属性值 LogEventOnly 用于记录 SEL 日志; |
| IPMI OEM 接口 | 0x30 0x93 的 Sub Command 0x13&0x14 中的 Power Capping Parameter(Byte 5)中的 Power Capping Failed Action(3)的属性值 0x00h(NoAction)由记录 SEL 日志变更为不做任何操作,同时新增属性值 0x03h(LogEventOnly)用于记录 SEL 日志; |
| IPMI DCMI 接口 | ipmitool dcmi power get_limit 中的封顶失败后期望动作(Byte 5)的属性值 0x00h(NoAction)由记录 SEL 日志变更为不做任何操作,同时新增属性值 0x11h(LogEventOnly)用于记录 SEL 日志; |
| Web 接口 | /Rest/System/Power 中的 PowerLimit 对象的 LimitException 属性值 NoAction 由记录 SEL 日志变更为不做任何操作,新增 LogEventOnly 用于记录 SEL 日志; |
| SNMP 接口 | powerManagement 模块(OID:1.3.6.1.4.1.2011.2.235.1.1.23)中的节点 powerCappingFailureAction(OID:1.3.6.1.4.1.2011.2.235.1.1.23.3.0)新增属性值 4(NoAction) |
3、同意新增资源协作接口方法SetPowerLimitException和GetPowerLimitException
path:/bmc/kepler/Systems/:SystemId/PowerStrategy
interface:bmc.kepler.Systems.PowerStrategy
| 方法名称 | 变化类型 | 权限 | 请求签名 | 请求参数 | 响应签名 | 响应参数 | 说明 | 约束 |
|---|---|---|---|---|---|---|---|---|
| SetPowerLimitException | 新增方法 | PowerMgmt | s | Action,取值范围:NoAction、LogEventOnly、Reset、HardPowerOff | 无 | 无 | 设置功耗封顶失败动作的资源协作方法 | 无 |
| 方法名称 | 变化类型 | 权限 | 请求签名 | 请求参数 | 响应签名 | 响应参数 | 说明 | 约束 |
|---|---|---|---|---|---|---|---|---|
| GetPowerLimitException | 新增方法 | ReadOnly | 无 | 无 | s | Action,取值范围:NoAction、LogEventOnly、Reset、HardPowerOff | 获取功耗封顶失败动作的资源协作方法 |
遗留问题
问题:新版本的openUBMC社区组件 + 老版本的SDK 的兼容情况;
结论:web/redfish/snmp接口实现在rackmount仓,如果是新版本rackmount+老版本SDK,由于资源协作接口方法不存在,需要在北向接口中增加兼容处理,即当方法调用失败后,转为设置属性,支持设置为HardPowerOff、Reset、NoAction,但不支持设置为LogEventOnly,且NoAction会记录日志