chassis
更新时间: 2025/12/31
在Gitcode上查看源码

功能简介

本组件主要包括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/{SystemId}/Leds/{Id} - .SetState

接口路径接口名称方法名输入参数输出参数说明业务作用约束单位互斥关系依赖关系格式样例唯一性要求兼容性要求
/bmc/kepler/Systems/{SystemId}/Leds/{Id}bmc.kepler.Systems.Led.SetStatea{ss}yyyyy设置LED灯状态控制指定LED灯的状态Id需唯一且存在,状态值需在支持范围不涉及同一LED同一时刻仅一种状态需已初始化不涉及Id在SystemId下唯一不涉及

/bmc/kepler/Chassis/{ChassisId} - .GetData

接口路径接口名称方法名输入参数输出参数说明业务作用约束单位互斥关系依赖关系格式样例唯一性要求兼容性要求
/bmc/kepler/Chassis/{ChassisId}bmc.kepler.Metric.GetDataa{ss}asa(sas)获取进风口出风口温度获取机箱温度数据ChassisId需有效不涉及不涉及需温度传感器正常不涉及ChassisId唯一不涉及

/bmc/kepler/Chassis/{ChassisId} - .GetItems

接口路径接口名称方法名输入参数输出参数说明业务作用约束单位互斥关系依赖关系格式样例唯一性要求兼容性要求
/bmc/kepler/Chassis/{ChassisId}bmc.kepler.Metric.GetItemsa{ss}sa(ss)a(ss)as获取所度量数据项获取机箱支持的度量项返回项与硬件一致不涉及不涉及依赖硬件不涉及每项名称唯一不涉及

/bmc/kepler/Chassis/{ChassisId}/SuperPodLabel - .SetSuperPodId

接口路径接口名称方法名输入参数输出参数说明业务作用约束单位互斥关系依赖关系格式样例唯一性要求兼容性要求
/bmc/kepler/Chassis/{ChassisId}/SuperPodLabelbmc.kepler.Chassis.SuperPodLabel.SetSuperPodIda{ss}ub设置超节点id设置超节点IDSuperPodId需唯一且为正整数不涉及不涉及需先配置超节点不涉及集群内唯一不涉及

/bmc/kepler/Chassis/{ChassisId}/SuperPodLabel - .SetServerIndex

接口路径接口名称方法名输入参数输出参数说明业务作用约束单位互斥关系依赖关系格式样例唯一性要求兼容性要求
/bmc/kepler/Chassis/{ChassisId}/SuperPodLabelbmc.kepler.Chassis.SuperPodLabel.SetServerIndexa{ss}qb设置超节点中服务器编号设置超节点内服务器编号ServerIndex需唯一且为正整数不涉及不涉及需先设置SuperPodId不涉及SuperPodId下唯一不涉及

/bmc/kepler/Chassis/{ChassisId}/SuperPodLabel - .SetSuperPodSize

接口路径接口名称方法名输入参数输出参数说明业务作用约束单位互斥关系依赖关系格式样例唯一性要求兼容性要求
/bmc/kepler/Chassis/{ChassisId}/SuperPodLabelbmc.kepler.Chassis.SuperPodLabel.SetSuperPodSizea{ss}qb设置超节点规模设置超节点规模SuperPodSize为正整数且不小于已配置服务器数不涉及不涉及需先设置SuperPodId不涉及不涉及不涉及

/bmc/kepler/Chassis/{ChassisId}/SuperPodLabel - .RestoreDefaults

接口路径接口名称方法名输入参数输出参数说明业务作用约束单位互斥关系依赖关系格式样例唯一性要求兼容性要求
/bmc/kepler/Chassis/{ChassisId}/SuperPodLabelbmc.kepler.Chassis.SuperPodLabel.RestoreDefaultsa{ss}b恢复超节点默认设置恢复超节点配置为默认恢复操作覆盖当前配置不涉及恢复与手动配置互斥不涉及不涉及不涉及不涉及

IPMI接口

命令路径命令名称功能说明
/bmc/kepler/IpmiCmds/00/01/GetPowerCmdGetPowerCmd获取机框状态
/bmc/kepler/IpmiCmds/00/04/ChassisIdentifyChassisIdentify识别机框
/bmc/kepler/IpmiCmds/2C/06/GetLedColorCapabilitiesGetLedColorCapabilities获取机框颜色能力
/bmc/kepler/IpmiCmds/2C/07/SetFruLedStateSetFruLedState设置LED状态
/bmc/kepler/IpmiCmds/30/92/GetDeviceCapabilitiesGetDeviceCapabilities获取设备能力
/bmc/kepler/IpmiCmds/30/92/SetDeviceCapabilitiesSetDeviceCapabilities设置设备能力
/bmc/kepler/IpmiCmds/30/94/GetChassisHeightGetChassisHeight获取机框高度
/bmc/kepler/IpmiCmds/30/94/GetShelfInfoGetShelfInfo获取机架信息
/bmc/kepler/IpmiCmds/30/94/GetSuperPodLabelInfoGetSuperPodLabelInfo获取超节点标签信息
/bmc/kepler/IpmiCmds/30/94/SetSuperPodLabelInfoSetSuperPodLabelInfo设置超节点标签信息
/bmc/kepler/IpmiCmds/30/94/SetSuperPodIdSetSuperPodId设置超节点ID
/bmc/kepler/IpmiCmds/30/94/SetServerIndexSetServerIndex设置服务器索引
/bmc/kepler/IpmiCmds/30/94/SetSuperPodSizeSetSuperPodSize设置超节点规模
/bmc/kepler/IpmiCmds/30/94/SetSuperPodEnabledSetSuperPodEnabled设置超节点启用状态
/bmc/kepler/IpmiCmds/30/94/GetSuperPodEnabledGetSuperPodEnabled获取超节点启用状态

配置介绍

Led对象配置指导

属性名类型必填示例值描述
IdU84LED唯一标识符
SystemIdU81系统ID
NameString"UIDLed"LED名称
CtrlValueU8-控制值,可引用Accessor
CapabilityU81LED能力
ModeU80LED模式
ColorCapabilitiesU82LED支持的颜色能力
DefaultOSColorU81默认超驰颜色
DefaultLCSColorU81默认本地控制颜色
LCSColorU81本地控制状态颜色
LCSStateU80本地控制状态
OSColorU81超驰状态颜色
OSStateU80超驰状态
LampTestColorU81灯测试颜色
LampTestDurationU80灯测试持续时间

配置说明:

  • ✅ 表示必填属性,❌ 表示可选属性
  • 颜色值说明:0=Reserved(保留), 1=BLUE(蓝色), 2=RED(红色), 3=GREEN(绿色), 4=AMBER(琥珀色), 5=ORANGE(橙色), 6=WHITE(白色)
  • 示例可以参考vpd仓中配置