功能简介
本组件主要包括7大功能特性:
(1)整机状态管理:包括开箱事件检测、UID按钮事件上报、统计设备数量及设备可插最大数量、整机状态统计;
(2)I2cLed灯控制:为装备测试提供手段控制I2cLed灯的状态;
(3)Led灯控制:包括控制UID灯的状态、基于当前告警控制健康灯颜色变化;
(4)Led数码管显示:基于当前告警,在数码管上显示相应错误码;
(5)度量数据采集:向metric_analyzer组件提供入风口和出风口温度数据;
(6)读取设备配置能力:当前仅支持读取PCIe标卡NCSI线缆是否在位、主板对PCIe标卡NCSI功能是否支持;
(7)超节点属性配置与获取:superpodid、server index、npu 规模(superpod size)并通过CPLD传递给芯片。
关键特性
整机状态管理
开箱事件检测
Chassis组件启动之后,会开启常驻协程用于更新开箱标志,当通过smc命令字检测到开箱事件之后会将IntrusionFlag设置为1,触发开箱事件。 拥有下电开箱事件上报则说明寄存器支持下电时记录开箱,上电后将寄存器中的值与当前状态作比较即可指导有无关箱。 上电时与之前一次(在数据库中持久化,可以横跨一次下电)上电开箱状态改变时的状态做比较,如果由关箱变为开箱则上报开箱;如果由上电开箱状态为有过上电开箱但目前状态为关箱则认为发生上电关箱。 开箱事件检测流程图如下:
UID按钮事件上报
UID按钮事件分为UID短按事件与UID长按事件。 UID短按会将UID灯的亮灭状态进行转换,长按复位BMC。 UID短按实现方案如下:
短按事件是基于属性监听的机制实现的,但是UID长按会导致BMC直接复位,所以不能通过属性监听的机制实现。 UID长按事件的检测时机是在BMC启动之后,会检查SMC命令字,如果获取1,则表示存在长按事件则上报。
统计设备数量及设备可插最大数量
统计方法如下: 组件名称 数量获取 CPU 遍历资源协作接口上所有CPU
Memory 遍历资源协作接口上加载的内存对象
PCIe 遍历所有Connector对象,记录Type为PCIe的数量
Disk 1、获取真实的硬盘个数 2、获取硬盘背板上槽位数和 3、取1和2中最大值+SATADOM和M.2硬盘的个数
Psu 1、遍历所有connector对象,记录Type为Ps的数量 2、获取所有OnePower对象,记录数量 3、取其中最大值为最大数量
Fan 获取所有风扇对象数量
SecurityModule 默认为1
整机状态统计
具体方案如下: 该接口会按顺序获取: 1、开机策略; 2、电源故障信息; 3、uid状态; 4、风扇健康状态; 5、硬盘健康状态等信息。 具体流程如下:
对外接口
资源协作接口
bmc.kepler.Systems.Led
path: /bmc/kepler/Systems/:SystemId/Leds/:Id
LED灯控制接口,用于控制指定LED灯的状态。
属性
| 属性名 | 类型 | 读写 | 取值范围 | 说明 |
|---|---|---|---|---|
| Name | String | RO | NA | Led灯的名称 |
| OnDuration | U8 | RO | NA | 亮灯持续时间,默认值0 |
| OffDuration | U8 | RO | NA | 关灯持续时间,默认值0 |
| Capability | U8 | RO | NA | 颜色,3:绿色,2:红色 |
| SystemId | U8 | RO | NA | 系统id |
| State | U8 | RW | NA | 当前Led灯的状态 |
| Id | U8 | RO | NA | 每个LED灯都会对应一个固定id |
| FruId | U8 | RO | NA | 关联的FRU id |
| ColorCapabilities | U8 | RO | NA | Led灯支持的颜色能力 |
| LocalControlStateColor | String | RO | NA | 本地控制模式下的颜色 |
| OverrideStateColor | String | RO | NA | 超驰状态下的颜色 |
| Mode | U8 | RO | NA | Led模式 |
| DefaultLCSColor | U8 | RO | 0~6 | 本地控制模式的默认颜色,0:reserved,1:BLUE,2:RED,3:GREEN,4:AMBER,5:ORANGE,6:WHITE |
| DefaultOSColor | U8 | RO | 0~6 | 超驰模式的默认颜色,0:reserved,1:BLUE,2:RED,3:GREEN,4:AMBER,5:ORANGE,6:WHITE |
方法
| 方法名 | 入参 | 出参 | 说明 |
|---|---|---|---|
| SetState | State: U8, Interval: U8 | State: U8, OnDuration: U8, OffDuration: U8 | 设置Led灯的状态 |
bmc.kepler.Systems.Led.Policy
path: /bmc/kepler/Systems/:SystemId/Leds
LED亮灯策略接口,用于配置不同告警等级的亮灯策略。
属性
| 属性名 | 类型 | 读写 | 取值范围 | 说明 |
|---|---|---|---|---|
| Normal | U16[] | RW | NA | Normal等级亮灯策略 |
| Minor | U16[] | RW | NA | Minor等级亮灯策略 |
| Major | U16[] | RW | NA | Major等级亮灯策略 |
| Critical | U16[] | RW | NA | Critical等级亮灯策略 |
bmc.kepler.Systems.Led.Policy.SystemHealth
path: /bmc/kepler/Systems/:SystemId/Leds
LED健康灯策略接口,用于配置健康灯严重等级来源。
属性
| 属性名 | 类型 | 读写 | 取值范围 | 说明 |
|---|---|---|---|---|
| SeverityReferenceSource | String | RW | Event、Sensor、EventAndSensor | Led健康灯的严重等级来源 |
bmc.kepler.Chassis.Dimension
path: /bmc/kepler/Chassis/:ChassisId/Dimension
机框尺寸接口,用于获取机框高度。
属性
| 属性名 | 类型 | 读写 | 取值范围 | 说明 |
|---|---|---|---|---|
| HeightU | Double | RO | NA | 机框高度 |
bmc.kepler.Chassis
path: /bmc/kepler/Chassis/:ChassisId
机框管理接口,提供机框信息、开箱事件、UID按钮事件、设备配置等信息。
属性
| 属性名 | 类型 | 读写 | 取值范围 | 说明 |
|---|---|---|---|---|
| Name | String | RO | NA | 机框名 |
| IntrusionFlag | U8 | RO | 0x00、0x01 | 开箱事件标志,开箱:0x01,关闭:0x00 |
| UidButtonPressed | U8 | RO | NA | UID按钮按下标志 |
| UidButtonLongPressed | U8 | RO | NA | UID按钮长按标志 |
| ChassisType | U8 | RO | NA | 当前管理软件类型 |
| Location | String | RW | NA | 位置信息 |
| DeviceSpecication | Array | RO | NA | 设备配置信息集合,包含设备名称、最大支持数量及物理槽位号列表 |
| TopologyConfigId | U16 | RO | NA | 产品组网拓扑 |
| ChassisIdentifier | String | RW | NA | 物理位置标识符 |
自定义类型
| 类型 | 字段 | 类型 | 说明 |
|---|---|---|---|
| DeviceSpecification | DeviceName | String | 设备名称 |
| MaximumNum | U8 | 设备最大数量 | |
| DeviceSlots | U8[] | 设备槽位号 | |
| DeviceMaxCount | DeviceName | String | [兼容性保留]旧版本设备名称定义 |
| MaximumNum | U8 | [兼容性保留]旧版本设备最大数量定义 |
bmc.kepler.Metric
path: /bmc/kepler/Chassis/:ChassisId
度量数据采集接口,向业务组件提供采集项数据。
方法
| 方法名 | 入参 | 出参 | 说明 |
|---|---|---|---|
| GetData | MetricName: String[] | Val: Array | 根据MetricName获取采集项数据 |
| GetItems | 无 | Component: String, Classification: Array, Identification: Array, MetricName: String[] | 获取采集项描述信息 |
| SynDataAcquisitionEnable | Enabled: U8 | 无 | 将数据采集开关状态同步到业务组件 |
信号
| 信号名 | 参数 | 说明 |
|---|---|---|
| CollectSignal | MetricName: String, TagPath: String | 事件触发式采集的信号 |
自定义类型
| 类型 | 字段 | 类型 | 说明 |
|---|---|---|---|
| DataCollectionItem | MetricName | String | 采集项名称 |
| Data | String[] | 采集项数据点 | |
| TagProp | PropName | String | 采集主体属性名 |
| PropVal | String | 采集主体属性值 |
bmc.kepler.Chassis.ChassisCapabilities
path: /bmc/kepler/Chassis/:ChassisId
机箱能力接口,用于获取机箱能力标志及设备地址。
属性
| 属性名 | 类型 | 读写 | 取值范围 | 说明 |
|---|---|---|---|---|
| CapabilitiesFlags | U8 | RO | NA | 支持获取机箱能力标志 |
| FRUDeviceAddress | U8 | RO | NA | 机箱可更换单元信息设备地址 |
| SDRDeviceAddress | U8 | RO | NA | 机箱SDR设备地址 |
| SELDeviceAddress | U8 | RO | NA | 机箱SEL设备地址 |
| SMDeviceAddress | U8 | RO | NA | 机箱系统管理设备地址 |
| BridgeDeviceAddress | U8 | RO | NA | 机箱桥接器设备地址 |
bmc.kepler.Systems.NCSICapabilities
path: /bmc/kepler/Systems/:SystemId/NCSICapabilities
NCSI能力接口,用于查询PCIe标卡NCSI线缆在位及主板支持能力。
属性
| 属性名 | 类型 | 读写 | 取值范围 | 说明 |
|---|---|---|---|---|
| PCIeNCSIEnabled | U8 | RO | NA | PCIE标卡NCSI线缆在位标记 |
| PCIeNCSISupported | Boolean | RO | NA | 用于生产查询主板对PCIE标卡NCSI功能支持能力 |
bmc.kepler.Chassis.SuperPodLabel
path: /bmc/kepler/Chassis/:ChassisId/SuperPodLabel
超节点标签接口,用于配置和获取超节点属性。
属性
| 属性名 | 类型 | 读写 | 取值范围 | 说明 |
|---|---|---|---|---|
| SuperPodId | U32 | RO | NA | 超节点集合Id,默认值4294967295 |
| ServerIndex | U16 | RO | NA | 超节点内的计算节点Id编号,默认值65535 |
| SuperPodSize | U16 | RO | NA | 超节点规模(npu卡的数量),默认值384 |
| SuperPodEnabled | Boolean | RO | NA | 是否是超节点模式,未配置默认为false |
| TopologyType | U8 | RO | 1、2 | 节点拓扑类型,1:1D,2:2D |
| ChassisId | U16 | RO | NA | 超节点机框号 |
| UBMDeployMode | U8 | RO | 0、1、2 | 计算服务器UBM部署位置,0:带内物理机,1:带外物理机,2:带内虚拟机 |
| IsUBFabricMode | Boolean | RO | NA | 计算服务器是否通过UB设备组集群,True:集群,False:单机 |
| IsUBControlNode | Boolean | RO | NA | 是否为UB控制节点,true:控制节点,false:代理节点 |
| LogicalSlotNumber | U8 | RO | NA | 节点柜内逻辑槽位号,默认值255 |
| PresentDPUCount | U8 | RO | NA | 物理在位的DPU数量 |
| NPUBootOption | U8 | RO | NA | NPU启动方式 |
| InterconType | U8 | RO | NA | 节点互联类型 |
| DeviceSlotID | U8 | RO | NA | 节点柜内槽位号,提供上层网管配置,默认值255 |
方法
| 方法名 | 入参 | 出参 | 说明 |
|---|---|---|---|
| SetSuperPodId | SuperPodId: U32 | Result: Boolean | 设置超节点ID |
| SetServerIndex | ServerIndex: U16 | Result: Boolean | 设置超节点服务器编号 |
| SetSuperPodSize | SuperPodSize: U16 | Result: Boolean | 设置超节点容量 |
| SetSuperPodEnabled | SuperPodEnabled: Boolean | 无 | 设置超节点模式 |
| RestoreDefaults | 无 | Result: Boolean | 恢复超节点属性默认值 |
| SetSuperPodLabel | Policy: U8, SuperPodLabel: Array | 无 | 设置超节点属性 |
自定义类型
| 类型 | 字段 | 类型 | 说明 |
|---|---|---|---|
| SuperPodLabel | Key | String | 超节点属性名,eg:TopologyType |
| Value | U32 | 超节点属性值,eg:2 |
bmc.kepler.Chassis.Enclosure
path: /bmc/kepler/Chassis/:ChassisId/Enclosure
机框机柜序列号接口,用于获取机柜和机框的序列号。
属性
| 属性名 | 类型 | 读写 | 取值范围 | 说明 |
|---|---|---|---|---|
| CabinetSerialNumber | String | RO | NA | 机柜sn |
| EnclosureSerialNumber | String | RO | NA | 机框sn |
IPMI接口
| 命令路径 | 命令名称 | 功能说明 |
|---|---|---|
/bmc/kepler/IpmiCmds/00/01/GetPowerCmd | GetPowerCmd | 获取机框状态 |
/bmc/kepler/IpmiCmds/00/04/ChassisIdentify | ChassisIdentify | 识别机框 |
/bmc/kepler/IpmiCmds/2C/06/GetLedColorCapabilities | GetLedColorCapabilities | 获取机框颜色能力 |
/bmc/kepler/IpmiCmds/2C/07/SetFruLedState | SetFruLedState | 设置LED状态 |
/bmc/kepler/IpmiCmds/30/92/GetDeviceCapabilities | GetDeviceCapabilities | 获取设备能力 |
/bmc/kepler/IpmiCmds/30/92/SetDeviceCapabilities | SetDeviceCapabilities | 设置设备能力 |
/bmc/kepler/IpmiCmds/30/94/GetChassisHeight | GetChassisHeight | 获取机框高度 |
/bmc/kepler/IpmiCmds/30/94/GetShelfInfo | GetShelfInfo | 获取机架信息 |
/bmc/kepler/IpmiCmds/30/94/GetSuperPodLabelInfo | GetSuperPodLabelInfo | 获取超节点标签信息 |
/bmc/kepler/IpmiCmds/30/94/SetSuperPodLabelInfo | SetSuperPodLabelInfo | 设置超节点标签信息 |
/bmc/kepler/IpmiCmds/30/94/SetSuperPodId | SetSuperPodId | 设置超节点ID |
/bmc/kepler/IpmiCmds/30/94/SetServerIndex | SetServerIndex | 设置服务器索引 |
/bmc/kepler/IpmiCmds/30/94/SetSuperPodSize | SetSuperPodSize | 设置超节点规模 |
/bmc/kepler/IpmiCmds/30/94/SetSuperPodEnabled | SetSuperPodEnabled | 设置超节点启用状态 |
/bmc/kepler/IpmiCmds/30/94/GetSuperPodEnabled | GetSuperPodEnabled | 获取超节点启用状态 |
配置介绍
Led对象配置指导
| 属性名 | 类型 | 必填 | 示例值 | 描述 |
|---|---|---|---|---|
| Id | U8 | ✅ | 4 | LED唯一标识符 |
| SystemId | U8 | ✅ | 1 | 系统ID |
| Name | String | ✅ | "UIDLed" | LED名称 |
| CtrlValue | U8 | ❌ | - | 控制值,可引用Accessor |
| Capability | U8 | ❌ | 1 | LED能力 |
| Mode | U8 | ❌ | 0 | LED模式 |
| ColorCapabilities | U8 | ❌ | 2 | LED支持的颜色能力 |
| DefaultOSColor | U8 | ❌ | 1 | 默认超驰颜色 |
| DefaultLCSColor | U8 | ❌ | 1 | 默认本地控制颜色 |
| LCSColor | U8 | ❌ | 1 | 本地控制状态颜色 |
| LCSState | U8 | ❌ | 0 | 本地控制状态 |
| OSColor | U8 | ❌ | 1 | 超驰状态颜色 |
| OSState | U8 | ❌ | 0 | 超驰状态 |
| LampTestColor | U8 | ❌ | 1 | 灯测试颜色 |
| LampTestDuration | U8 | ❌ | 0 | 灯测试持续时间 |
配置说明:
- ✅ 表示必填属性,❌ 表示可选属性
- 颜色值说明:0=Reserved(保留), 1=BLUE(蓝色), 2=RED(红色), 3=GREEN(绿色), 4=AMBER(琥珀色), 5=ORANGE(橙色), 6=WHITE(白色)
- 示例可以参考vpd仓中配置