【已评审】资源协作接口新增SELRecordId用于查询已上报的SEL事件记录标识

背景介绍

当前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
资源interfacebmc.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

说明

  1. 新增SEL事件的资源协作接口属性、数据库都与Event事件的相互独立;
  2. redfish组件中,数据库无SEL事件数据会默认插入RecordId=0的数据库数据;仅RecordId=0时才会访问资源协作接口属性;
  3. 获取资源协作接口属性重试上限50次,每次睡眠3s;若超过上限仍获取资源树RecordId失败,则不再获取未上报事件,进入下一步:监听事件上报信息(均与Event事件保持一致)。

评审结论

评审通过,同意资源协作接口bmc.kepler.EventService.Event新增属性SELRecordId

path/bmc/kepler/EventService/Event
interfacebmc.kepler.EventService.Event
应用场景:查询已上报SEL事件的事件记录标识
详细描述

属性名称 SELRecordId
变化类型 新增属性
签名 t
持久化 不持久化
只读属性 true
操作权限 读:ReadOnly
变化通知 false
属性值来源 组件代码更新
说明 表示BMC本次启动前已上报的SEL事件记录标识

遗留问题