背景
产业需要支持机柜能耗的功耗封顶功能,功耗封顶策略和资产管理共同放在rack_mgmt组件,因此需要新增机柜功耗封顶相关的资源树属性和资源树协作接口。
关联ISSUE
NA
整体方案
需要新增机柜功耗封顶相关的资源树属性和资源树协作接口,支持机柜功耗封顶配置下发和节点功耗封顶触发状态的获取。
评审点
1:
新增path:/bmc/kepler/Chassis/:chassis_id/RackPowerStrategy
新增interface:bmc.kepler.Chassis.RackPowerStrategy 新增属性和资源协作接口用于机柜的功耗封顶参数下发和获取
详细描述
1.新增机柜功耗封顶的path和interface,新增属性和资源树协作接口对外提供机柜功耗封顶参数下发和获取
新增path:/bmc/kepler/Chassis/:chassis_id/RackPowerStrategy
新增interface:bmc.kepler.Chassis.RackPowerStrategy 新增属性和资源协作接口用于机柜的功耗封顶参数下发和获取
新增以下资源树属性,用于功耗封顶参数的下发和获取。
| 属性名称 | 变化类型 | 签名 | 读写权限 | 持久化 | 变化通知 | 接口说明 | 约束 |
|---|---|---|---|---|---|---|---|
| CappingEnabled | 新增属性 | b | R:ReadOnly | 掉电持久化 | true | 机柜功耗封顶使能配置。true:开启功耗封顶,false: 关闭功耗封顶 | |
| CappingValue | 新增属性 | u | R:ReadOnly | 掉电持久化 | false | 机柜功耗封顶值 | NA |
| BudgetPriority | 新增属性 | a(sy) | R:ReadOnly | 掉电持久化 | false | 机柜内各个设备的功耗预算分配优先级。属性内容为机柜内设备SN和设备功耗分配预算优先级组成的数组,预算优先级取值1~5,1代表最高优先级,5代表最低优先级。 | |
| CappingStrategy | 新增属性 | s | R:ReadOnly | 掉电持久化 | false | 机柜内各个设备的功耗预算封顶策略。取值范围: Equalization:按功耗预算优先级分摊进行功耗封顶,即同一优先级的设备的封顶值相同,不同优先级之间的封顶值存在级差 Designation:优先对固定数量的设备进行功耗封顶,即按功耗预算优先级排序后,对前N个设备进行功耗封顶,N由 PreferredCappingDeviceNumber的取值决定 |
|
| PreferredCappingDeviceNumber | 新增属性 | u | R:ReadOnly | 掉电持久化 | false | 机柜内优先功耗封顶的设备数量 | 不超过机柜纳管的设备数量 |
| DeviceMinCappingValue | 新增属性 | u | R:ReadOnly | 掉电持久化 | false | 机柜内单个设备的最小功耗封顶值,由用户指定 | 不能小于机柜内所有设备允许的最小功耗封顶值 |
| CappingState | 新增属性 | u | R:ReadOnly | 不持久化 | true | 机柜功耗封顶状态,默认值0。 0:功耗封顶功能状态未知。 1:功耗封顶功能正常,各节点封顶值正常下发到设备。 2:功耗封顶失败轻微告警,用户设置机柜封顶值无法满足各个节点封顶值分配,无法进行功耗封顶。 3:功耗封顶失败预告警:功耗封顶使能,机柜总功耗大于预设机柜封顶值90%。 4:功耗封顶失败严重告警:功耗封顶使能,机柜总功耗大于预设机柜封顶值105%。 5:功耗封顶失败紧急告警:功耗封顶使能,机柜总功耗大于预设机柜封顶值*115%。 |
新增以下2个资源树协作接口用于功耗封顶参数下发和节点设备功耗封顶概要获取。
| 方法名称 | 变化类型 | 请求签名 | 请求参数说明 | 响应签名 | 响应签名说明 | 操作权限 | 接口说明 | 接口约束 |
|---|---|---|---|---|---|---|---|---|
| GetDevicePowerCappingSummary | 新增方法 | 无 | NA | a(a{ss}) | 机柜内所有设备的功耗封顶概要信息,每个设备的概要信息采用字典结构,字典key定义如下: SerialNumber:设备SN PowerCappingStatus:设备功耗封顶触发状态,取值范围:“Untriggered”,“Triggered”,“Unconfigurable” PowerConsumedWatts:设备当前功耗值 LimitInWatts:设备功耗封顶值 MinPowerLimitInWatts:设备功耗封顶下限值 ServerPriority:设备功耗预算分配优先级 |
PowerMgmt | 获取机柜内各个设备的功耗封顶概要信息,包括当前功耗值,功耗封顶值,是否触发功耗封顶等 | NA |
| SetPowerCappingParameters | 新增方法 | s | 机柜功耗封顶参数,json格式字符串 | NA | NA | PowerMgmt | 设置机柜功耗封顶参数,包括使能状态、封顶值、各个设备功耗分配策略等 | 参数范围和格式与redfish接口PowerAgent.SetRackPowerCapping POST操作请求体保持一致 |
评审结论
决策点1:新增机柜功耗封顶的path和interface,新增属性和资源树协作接口对外提供机柜功耗封顶参数下发和获取。
结论:同意新增如下资源协作接口。具体如下:
新增path:/bmc/kepler/Chassis/:chassis_id/RackPowerStrategy
新增interface:bmc.kepler.Chassis.RackPowerStrategy
新增7个资源树属性用于承载机柜功耗封顶参数和功耗封顶执行状态,详情见决策点表格。
新增methods:
-
SetPowerCappingParameters,用于机柜功耗封顶参数下发,请求签名为s,参数范围和格式与redfish接口PowerAgent.SetRackPowerCapping POST操作请求体保持一致。响应签名为NA,权限:PowerMgmt
-
GetDevicePowerCappingSummary, 获取节点设备的功耗封顶摘要,请求签名为NA,响应签名a(a{ss}),权限:PowerMgmt
遗留问题
1、设置机柜的功耗封顶参数的方法,是否应该明确定义参数名称和类型。
结论:采用JSON格式字符串传递,原因是北向接口设置的参数较多,如果将参数名称和类型显性定义出来,会导致方法签名过于复杂,如果拆分成多个方法又会有北向接口响应时间超出规格要求的风险。除此之外,签名固定的方法无法满足后续演进北向接口参数扩展的诉求。
2、需要确认是否增加属性表示机柜功耗封顶失败后要下发的操作。
结论:机柜功耗封顶功能从设计上暂无“功耗封顶失败后要采取措施”的诉求,暂不增加属性。