MI3xx AFID_SAG.json Serviceability plugin#233
Conversation
…it from Links.OriginOfCondition so OpenBMC UBB log entries feed hub correctly.
| filtered.append(member) | ||
| return filtered | ||
|
|
||
| def is_cper_event(self, event: dict) -> bool: |
There was a problem hiding this comment.
This might be overkill, but recommend the following for CPER detection. Current implementation might treat something as being a CPER that isn't if a truthy AdditionalDataURI is returned
return "CPER" in event and str(event.get("DiagnosticDataType", "")).upper() == "CPER" and bool(event.get("AdditionalDataURI"))
| oem = event.get("Oem") | ||
| if not isinstance(oem, dict): | ||
| return [] | ||
| raw = oem.get("AMDFieldIdentifiers") |
There was a problem hiding this comment.
Nesting may change here (e.g. event["Oem"]["AMDFieldIdentifiers"] or event["Oem"]["AMD"]["AMDFieldIdentifiers"])
| if not isinstance(item, dict): | ||
| continue | ||
| for key in ("AFID", "Afid", "afid"): | ||
| if key in item and item[key] is not None: |
There was a problem hiding this comment.
Could fetch/check once
if (v := item.get(key)) is not None:
try:
out.append(int(v))
|
|
||
|
|
||
| def _err_data_arr_entries(event: dict[str, Any]) -> list[dict[str, Any]]: | ||
| oem = event.get("Oem") |
There was a problem hiding this comment.
Similar to above may be Oem ->ErrDataArr or Oem -> AMD -> ErrDataArr
| if _nonempty_serial_in_mapping(meta): | ||
| return True | ||
| decoded = entry.get("DecodedData") | ||
| if _nonempty_serial_in_mapping(decoded): |
There was a problem hiding this comment.
Believe this would always evaluate to false - recommend removing for loop content after checking if non-empty serial is present in meta
|
|
||
| from typing import Any | ||
|
|
||
| # Redfish CPER (RF) style AFIDs start at this value; lower values are in-band / |
There was a problem hiding this comment.
Redfish method is in 10K range
CPER method is <= 34
RF events can report the CPER method AFIDs (e.g. shared with IB CPERs)
Summary
-Serviceability plugin to service MI3XX with an afid_sag.json file. This file is given by AMD with NDA to customers and node-scraper does not provide it.
-The plugin is intended to be run with a hub that would analyze the redfish events from the collector part. This is also distribuited through NDA.
For customers without NDA the plugin does provide Redfish events collection.
Test plan
pytest test/unitpytest test/functional(if applicable)pre-commit run --all-filesChecklist
Sample collection only run:
See log folder for details on collected data:
Sample plugin_config.json used: