【已评审】精细化告警对象增加自定义调测命令

关联issue

【需求】精细化告警对象增加自定义调测命令-mdb_interface-GitCode

背景

  • BMC支持的精细化事件机制,当前不支持在资源协作接口上展示具体的信息(由于事件实例的数量很庞大,支持之后会损耗很大部分的BMC资源)
  • 开发调试时无法查看已注册的告警的实时读值,当前门限等信息,只能从日志文件里查询已注册对象的相关信息。

评审点

基于上述背景,需要新增自定义调测命令,用于查询事件对象的详细信息

评审点1:新增自定义调测命令以及对应的资源协作接口

path: /bmc/keper/Debug/EventService
interface: bmc.kepler.Debug.EventService
cmd: geteventdetail <eventcode>
displayDescription: Get event list by eventcode.For example: geteventdetail 0x1A000029.

取值以及说明
方法名称 GetEventDetailByCode
方法描述 获取已注册的事件码为eventcode的事件实例名称列表
方法权限 Readonly
请求签名 s
请求参数 事件码,当前参数为具体查询事件的事件码,其中事件码不区分大小写
约束:
1. 事件码为16进制的数字组成的字符串,以 0x/0X 开头
2. 不支持模糊查询(有连续的FF,如:0x240003FF/0x24FFFFFF)
响应签名 a(sa{ss})
响应参数 事件的详细信息,返回值为数组,数组内每个元素为具体的事件信息。具体包括:
EventName:签名为 s, 当前事件的名称
EventDetail:签名为 a{ss},当前事件的详细信息,信息内容包括:
 Reading:当前事件的实时读值,包括读值的原始参数
 Condition:当前事件的触发门限
 OperateType:当前事件的判定,具体的取值有:
  less:小于
  less-equal:小于等于
  greater:大于
  greater-equal:大于等于
  equal:等于
  not-equal:不等于
  raising-edge:上升沿 0 ~ 1
  falling-edge:下降沿 1 ~ 0
 Hysteresis:当前事件的迟滞量
 Enabled:当前事件的使能状态,具体的取值有:
  true:已使能
  false:已禁用
 EventType:当前事件的类型,具体的取值有:
  hardware:当前事件是硬件事件,来自CSR配置
  software:当前事件是软件事件,来自对应的软件app
  power:当前事件是电源事件,来自CSR配置,类型为 PowerEvent

下方是调测命令回显示例

[
	{
		"EventName": "Event Sample 1",
		"EventDetail": {
			"Reading": "xxx (AAA: xx, BBB: xx)",
			"Condition": "1",
			"OperateType": "less",
			"Hysteresis": "2",
			"Enabled": "true",
			"EventType": "hardware"
		}
	},
	{
		"EventName": "Event Sample 2",
		"EventDetail": {
			"Reading": "yyy (AAA: yy, BBB: yy, CCC: yy)",
			"Condition": "100",
			"OperateType": "greater-equal",
			"Hysteresis": "10",
			"Enabled": "false",
			"EventType": "software"
		}
	}
]

评审结论

1、 同意新增自定义调测命令 geteventdetail <eventcode>, 参数类型为 string, 参数为查询的事件码(16进制组成的字符串,以 0x /0X 开头),事件码不区分大小写,不支持事件码模糊查询(如:0x240003FF/0x24FFFFFF)

2、 同意新增资源协作接口 bmc.kepler.Debug.EventService 以及对应的方法
方法名称:GetEventDetailByCode
请求参数:签名为 s,表示待查询的事件码(16进制组成的字符串,以 0x /0X 开头),事件码不区分大小写,不支持事件码模糊查询(如:0x240003FF/0x24FFFFFF);
响应参数:签名为 a(sa{ss}),表示对应查询事件的详细信息,返回值为数组,数组内每个元素为具体的事件信息。具体包括:
EventName:签名为 s, 当前事件的名称
EventDetail:签名为 a{ss},当前事件的详细信息,信息内容包括:
 Reading:当前事件的实时读值,包括读值的原始参数
 Condition:当前事件的触发门限
 OperateType:当前事件的判定,具体的取值有:
  less:小于
  less-equal:小于等于
  greater:大于
  greater-equal:大于等于
  equal:等于
  not-equal:不等于
  raising-edge:上升沿 0 ~ 1
  falling-edge:下降沿 1 ~ 0
 Hysteresis:当前事件的迟滞量
 Enabled:当前事件的使能状态,具体的取值有:
  true:已使能
  false:已禁用
 EventType:当前事件的类型,具体的取值有:
  hardware:当前事件是硬件事件,来自CSR配置
  software:当前事件是软件事件,来自对应的软件app
  power:当前事件是电源事件,来自CSR配置,类型为 PowerEvent

@hxmygcs 当前评审议题,需要首先答复以下问题:

问题1:当前命令 startid/endid 对于操作者无法确认,建议和框架确认是否可以分页,或者按照固定的类型进行展示
问题2:当前命令的 description 要补充完整
问题3:评审按照需求分为两个命令:

  • geteventlist,获取当前 Event 对象的实例名称列表,按照类型或者分页等策略进行展示
  • geteventdetail <obj_name>,获取 Event 具体对象的属性信息

【评审】

  1. 响应的签名为 aa{ss} 是否合适?
    答复:已更新话题,签名采用 a(sa{ss}) 更合适
  2. 事件码是否有大小写要求?
    答复:已更新话题,事件码为 16进制的数字字符串,不区分大小写。比如:0x1A0000090x1a000009查询效果一致
  3. OperateType转换成可阅读的文本形式
    答复:已更新话题,采用可阅读文本方式
  4. Reading 需要连同 Reading 的值来源一起打印出来,对于调测更方便直观
    答复:已更新话题和示例,读值之后增加附加值部分