背景介绍
当前openUBMC的四种订阅类型中,snmp、smtp、syslog事件订阅均已支持SEL上报,需要新增redfish事件订阅支持上报SEL能力。snmp、smtp、syslog事件订阅与redfish事件订阅所在组件不同,目前缺少已上报SEL事件标识同步方案。
关联topic: 【已评审】新增资源树属性RecordId,用于表示BMC本次启动前已上报的事件记录标识 - Interface SIG / Interface评审 - openUBMC 论坛
关联issue: 【需求】支持客户定制redfish事件订阅消息格式
sequenceDiagram
actor m as 事件接收端
participant redfish
participant sensor
alt 初始化阶段同步未上报SEL事件
redfish ->> sensor: 传入start_id, MAX_CNT, 预期获取所有未上报SEL事件
Note right of redfish: 但由于首次升级时数据库中无记录,RecordId默认为0,<br/>根据RecordId获取到start_id也为0,会获取所有事件<br/>(包括已上报和未上报事件)进行上报
sensor -->> redfish: 返回start_id开始的所有SEL事件
end
redfish ->> m: 上报1条SEL事件(逐条上报)
redfish ->> redfish: 根据当前上报SEL事件的RecordId<br/>更新数据库中的RecordId
决策点1:资源协作接口新增支持RecordId查询已上报SEL事件的事件记录标识
资源path:/bmc/kepler/EventService/Event
资源interface:bmc.kepler.EventService.Event
应用场景:查询已上报SEL事件的事件记录标识
详细描述:
| 属性名称 | SELRecordId |
|---|---|
| 变化类型 | 新增属性 |
| 取值类型 | U64 |
| 持久化 | 不持久化 |
| 只读属性 | true |
| 操作权限 | Read:ReadOnly |
| 变化通知 | false |
| 属性值来源 | 组件代码更新 |
| 说明 | 表示BMC本次启动前已上报的SEL事件记录标识,值与BMC重启前持久化数据记录的当前已上报SEL事件序号保持一致 用于后台其它组件在初始化阶段获取当前最后一条已上报SEL事件的序号 |
补充说明:本对象下已有RecordId属性用于同步OemEvent类型的事件:
| 名称 | 类型 | 简要描述 |
|---|---|---|
| RecordId | 属性 | 表示BMC启动前已上报Event事件的事件记录标识 |
整体方案
sequenceDiagram
actor m as 事件接收端
participant redfish
participant e as event_policy
participant sensor
alt 初始化阶段同步未上报SEL事件
e ->> e: SELRecordId上树
loop 多次尝试获取
redfish ->> e: 获取资源协作接口属性SELRecordId
e -->> redfish:
end
redfish ->> redfish: 更新数据库RecordId
redfish ->> sensor: 根据RecordId获取所有未上报SEL事件
sensor -->> redfish:
end
redfish ->> m: 上报事件
redfish ->> redfish: 更新数据库RecordId
说明
- 新增SEL事件的资源协作接口属性、数据库都与Event事件的相互独立;
- redfish组件中,数据库无SEL事件数据会默认插入
RecordId=0的数据库数据;仅RecordId=0时才会访问资源协作接口属性;- 获取资源协作接口属性重试上限50次,每次睡眠3s;若超过上限仍获取资源树RecordId失败,则不再获取未上报事件,进入下一步:监听事件上报信息(均与Event事件保持一致)。
评审结论
评审通过,同意资源协作接口bmc.kepler.EventService.Event新增属性SELRecordId
path:/bmc/kepler/EventService/Event
interface:bmc.kepler.EventService.Event
应用场景:查询已上报SEL事件的事件记录标识
详细描述:
| 属性名称 | SELRecordId |
|---|---|
| 变化类型 | 新增属性 |
| 签名 | t |
| 持久化 | 不持久化 |
| 只读属性 | true |
| 操作权限 | 读:ReadOnly |
| 变化通知 | false |
| 属性值来源 | 组件代码更新 |
| 说明 | 表示BMC本次启动前已上报的SEL事件记录标识 |