【已评审】支持根据全域电源状态显示全域电源按钮&支持虚拟按钮定制裁剪

ISSUE链接

背景

需求

1、当前支持全域电源操作的机型,在计算域 PowerState 为 Off 时不支持继续执行全域电源操作;预期仅计算域下电,全域上电的情况下仍可以执行全域电源操作。

2、当前WEB页面上电源虚拟按钮为全量显示,不支持根据机型能力定制和裁剪;五大接口中其他北向接口均支持在定制仓定制,WEB页面则需要根据webrest接口提供的标志位进行定制。

方案

1、资源协作接口中新增来源于CSR的只读属性,表示当前机型是否支持强制重启、强制下电、安全下电再上电、强制下电再上电等能力;
2、/UI/Rest/GenericInfo接口响应体中:
(i) 新增GlobalDomainPowerState表示当前全域电源状态;
(ii) 新增对象PowerCtrlCapabilities及对象下的属性ForceRestartForceOffPowerCycleForcePowerCycleGlobalPowerOffGlobalRestartGlobalPowerCycle分别表示当前WEB是否支持对应的电源按钮;
3、根据上述属性适配WEB前端:
(i) 对于支持全域电源操作的机型,当GlobalDomainPowerStateOn时,WEB页面显示全域电源的按钮;
(ii) 当GlobalDomainPowerStateOff时,由于全域电源包含计算域,PowerState一定也为Off,WEB页面仅显示“上电”;
(iii) 根据当前机型是否支持对应的电源按钮对WEB页面进行裁剪;
同时修改对应机型的用户指南与联机帮助说明。

评审点

评审点一:前端UI修改

场景1:

GlobalDomainPowerStateOn时,WEB页面显示全域电源按钮;GlobalDomainPowerStateOff时,WEB页面不显示全域电源按钮

虚拟电源按钮

电源&功率页面

场景2(举例说明,其他按钮裁剪类似):

PowerCtrlCapabilities/PowerCyclePowerCtrlCapabilities/ForcePowerCyclefalse时,裁剪安全下电再上电与强制下电再上电按钮

虚拟电源按钮

电源&功率页面

KVM显示:

评审点二:UIRest接口新增属性

接口名:/UI/Rest/GenericInfo
变化类型:新增属性
操作类型:GET

属性名称 类型 取值范围 说明 默认值
GlobalDomainPowerState String “On”、“Off” 全域电源状态,“On”:全域电源为上电状态,“Off”:全域电源为下电状态 ,当全域电源为上电状态时支持全域电源操作 不涉及
PowerCtrlCapabilities Object 不涉及 当前WEB支持的电源控制按钮能力 不涉及
ForceRestart Boolean true、false 当前WEB是否支持强制重启按钮,true:支持,false:不支持 true
ForceOff Boolean true、false 当前WEB是否支持强制下电按钮,true:支持,false:不支持 true
PowerCycle Boolean true、false 当前WEB是否支持安全下电再上电按钮,true:支持,false:不支持 true
ForcePowerCycle Boolean true、false 当前WEB是否支持强制下电再上电按钮,true:支持,false:不支持 true
GlobalPowerOff Boolean true、false 当前WEB是否支持全域下电按钮,true:支持,false:不支持,仅当GlobalDomainSupported为true时此属性有效 true
GlobalRestart Boolean true、false 当前WEB是否支持全域重启按钮,true:支持,false:不支持,仅当GlobalDomainSupported为true时此属性有效 true
GlobalPowerCycle Boolean true、false 当前WEB是否支持全域下电再上电按钮,true:支持,false:不支持,仅当GlobalDomainSupported为true时此属性有效 true

/UI/Rest/GenericInfo响应体样例:

    {
        "PowerState": "Off",
        "GlobalDomainSupported": true,
        ...
        "GlobalDomainPowerState": "On", —— 全域电源状态
        "PowerCtrlCapabilities": {
                "ForceRestart": true, —— 是否支持强制重启
                "ForceOff": false, —— 是否支持强制下电
                "PowerCycle": false, —— 是否支持安全下电再上电
                "ForcePowerCycle": false —— 是否支持强制下电再上电
                "GlobalPowerOff": true —— 是否支持全域下电
                "GlobalRestart": true —— 是否支持全域重启
                "GlobalPowerCycle": true —— 是否支持全域下电再上电
        }
    }

评审点三:资源协作接口新增属性

方案一

资源path:/bmc/kepler/ProductInfo/FruCtrlCapabilities
资源interface:bmc.kepler.ProductInfo.FruCtrlCapabilities
变化类型:新增属性
应用场景:根据机型能力,在CSR中描述本机型支持的电源操作
持久化类型:见表格中的描述
操作权限:ReadOnly

属性名称 变化类型 签名 访问权限 持久化 变化通知 属性值来源 说明 约束
ForceRestartSupported 新增属性 b 只读 R:ReadOnly 不持久化 false CSR 是否支持强制重启操作,true:支持,false:不支持 默认值根据机型配置,若不配置默认为true
ForceOffSupported 新增属性 b 只读 R:ReadOnly 不持久化 false CSR 是否支持强制下电操作,true:支持,false:不支持 默认值根据机型配置,若不配置默认为true
PowerCycleSupported 新增属性 b 只读 R:ReadOnly 不持久化 false CSR 是否支持安全下电再上电操作,true:支持,false:不支持 默认值根据机型配置,若不配置默认为true
ForcePowerCycleSupported 新增属性 b 只读 R:ReadOnly 不持久化 false CSR 是否支持强制下电再上电操作,true:支持,false:不支持 默认值根据机型配置,若不配置默认为true
GlobalPowerOffSupported 新增属性 b 只读 R:ReadOnly 不持久化 false CSR 是否支持全域下电操作,true:支持,false:不支持 默认值根据机型配置,若不配置默认为true,仅当GlobalDomainSupported为true时此属性有效
GlobalRestartSupported 新增属性 b 只读 R:ReadOnly 不持久化 false CSR 是否支持全域重启操作,true:支持,false:不支持 默认值根据机型配置,若不配置默认为true,仅当GlobalDomainSupported为true时此属性有效
GlobalPowerCycleSupported 新增属性 b 只读 R:ReadOnly 不持久化 false CSR 是否支持全域下电再上电操作,true:支持,false:不支持 默认值根据机型配置,若不配置默认为true,仅当GlobalDomainSupported为true时此属性有效

方案二

新增资源path:/bmc/kepler/ProductInfo/FruCtrlDomainCapabilities/:Id
新增资源interface:bmc.kepler.ProductInfo.FruCtrlDomainCapabilities
变化类型:新增path与interface
应用场景:根据机型能力,在CSR中描述本机型支持的电源操作
持久化类型:见表格中的描述
操作权限:ReadOnly

接口bmc.kepler.ProductInfo.FruCtrlDomainCapabilities属性如下:

属性名称 变化类型 签名 访问权限 持久化 变化通知 属性值来源 说明 约束
DomainId 新增属性 U8 只读 R:ReadOnly 不持久化 false CSR 电源域Id 0:计算域 4:全域 取值范围: minimum: 0, maximum: 4
GracefulShutdownSupported 新增属性 b 只读 R:ReadOnly 不持久化 false CSR 是否支持下电操作,true:支持,false:不支持 默认值根据机型配置,若不配置默认为true
ForceRestartSupported 新增属性 b 只读 R:ReadOnly 不持久化 false CSR 是否支持强制重启操作,true:支持,false:不支持 默认值根据机型配置,若不配置默认为true
ForceOffSupported 新增属性 b 只读 R:ReadOnly 不持久化 false CSR 是否支持强制下电操作,true:支持,false:不支持 默认值根据机型配置,若不配置默认为true
PowerCycleSupported 新增属性 b 只读 R:ReadOnly 不持久化 false CSR 是否支持安全下电再上电操作,true:支持,false:不支持 默认值根据机型配置,若不配置默认为true
ForcePowerCycleSupported 新增属性 b 只读 R:ReadOnly 不持久化 false CSR 是否支持强制下电再上电操作,true:支持,false:不支持 默认值根据机型配置,若不配置默认为true

评审结论:

  1. 同意在WEB虚拟电源按钮、 电源&功率页面上根据当前全域电源状态进行全域电源按钮的展示;同意在WEB 虚拟电源按钮、 电源&功率页面和KVM页面上根据当前机型支持的电源按钮的能力集合进行相应按钮的裁剪展示。
  2. 同意在webrest接口 /UI/Rest/GenericInfo 下新增属性 GlobalDomainPowerState,属性类型 String,表征当前全域电源状态,取值范围:“On”“Off”;同意在webrest接口 /UI/Rest/GenericInfo 下新增对象 PowerCtrlCapabilities 以及对应的属性,表征当前全域电源状态与WEB支持的电源控制按钮能力,对象的属性详情如下:
    - ForceRestart:类型为 Boolean,表征是否支持强制重启;
    - ForceOff:类型为 Boolean,表征是否支持强制下电;
    - PowerCycle:类型为 Boolean,表征是否支持安全下电再上电;
    - ForcePowerCycle:类型为 Boolean,表征是否支持强制下电再上电;
    - GlobalPowerOff:类型为 Boolean,表征是否支持全域下电;
    - GlobalRestart:类型为 Boolean,表征是否支持全域上电;
    - GlobalPowerCycle:类型为 Boolean,表征是否支持全域下电再上电;
  3. 同意使用方案一,在资源协作接口 bmc.kepler.ProductInfo.FruCtrlCapabilities 下新增以下属性:
    - ForceRestartSupported:签名为 b,只读,权限为 ReadOnly,不持久化,不发送变化通知,默认为 true,表征BMC是否支持强制重启操作;
    - ForceOffSupported:签名为 b,只读,权限为 ReadOnly,不持久化,不发送变化通知,默认为 true,表征BMC是否支持强制下电操作;
    - PowerCycleSupported:签名为 b,只读,权限为 ReadOnly,不持久化,不发送变化通知,默认为 true,表征BMC是否支持安全下电再上电操作;
    - ForcePowerCycleSupported:签名为 b,只读,权限为 ReadOnly,不持久化,不发送变化通知,默认为 true,表征BMC是否支持强制下电再上电操作;
    - GlobalPowerOffSupported:签名为 b,只读,权限为 ReadOnly,不持久化,不发送变化通知,默认为 true,表征BMC是否支持全域下电操作(仅当GlobalDomainSupported为true时是否支持全域电源操作的属性有效);
    - GlobalRestartSupported:签名为 b,只读,权限为 ReadOnly,不持久化,不发送变化通知,默认为 true,表征BMC是否支持全域重启操作(仅当GlobalDomainSupported为true时是否支持全域电源操作的属性有效);
    - GlobalPowerCycleSupported:签名为 b,只读,权限为 ReadOnly,不持久化,不发送变化通知,默认为 true,表征BMC是否支持全域下电再上电操作(仅当GlobalDomainSupported为true时是否支持全域电源操作的属性有效);

遗留问题

【预审】

  1. UIRest的参数类型有问题,需要修正为对应的参数类型
  2. 将UI的设计也列入到决策点当中,并且根据不同的业务补充对应的资料的修改