mirror of
https://github.com/xcat2/xcat-core.git
synced 2025-05-22 03:32:04 +00:00
OpenBMC reventlog resolved support
This commit is contained in:
parent
7cb0065a98
commit
072a04fd84
@ -26,7 +26,7 @@ class OpenBMCEventlogTask(ParallelNodesCommand):
|
||||
number_to_display = 0
|
||||
try:
|
||||
# Number of records to display from the end
|
||||
number_to_display = 0-int(num_to_display[0])
|
||||
number_to_display = 0-int(num_to_display)
|
||||
except Exception:
|
||||
# All records to display
|
||||
number_to_display = 0
|
||||
@ -69,3 +69,50 @@ class OpenBMCEventlogTask(ParallelNodesCommand):
|
||||
def resolve_ev_records(self, resolve_list, **kw):
|
||||
|
||||
node = kw['node']
|
||||
obmc = openbmc.OpenBMCRest(name=node, nodeinfo=kw['nodeinfo'], messager=self.callback, debugmode=self.debugmode, verbose=self.verbose)
|
||||
try:
|
||||
obmc.login()
|
||||
|
||||
# Get all eventlog records
|
||||
eventlog_info_dict = obmc.get_eventlog_info()
|
||||
|
||||
keys = eventlog_info_dict.keys()
|
||||
# Sort the keys in natural order
|
||||
keys.sort(key=lambda x : int(x[0:]))
|
||||
|
||||
resolved, ids = resolve_list.split('=')
|
||||
eventlog_ids_to_resolve = []
|
||||
if ids.upper() == "LED":
|
||||
|
||||
# loop through eventlog_info_dict and collect LED ids to be resolved into a eventlog_ids_to_resolve array
|
||||
for key in list(keys):
|
||||
if "[LED]" in eventlog_info_dict[key]:
|
||||
if "Resolved: 0" in eventlog_info_dict[key]:
|
||||
eventlog_ids_to_resolve.append(key)
|
||||
else:
|
||||
if self.verbose:
|
||||
self.callback.info('%s: Not resolving already resolved eventlog ID %s' % (node, key))
|
||||
else:
|
||||
# loop through list of ids and collect ids to resolve into a eventlog_ids_to_resolve array
|
||||
for id_to_resolve in ids.split(','):
|
||||
if id_to_resolve in eventlog_info_dict:
|
||||
if "Resolved: 0" in eventlog_info_dict[id_to_resolve]:
|
||||
eventlog_ids_to_resolve.append(id_to_resolve)
|
||||
else:
|
||||
if self.verbose:
|
||||
self.callback.info('%s: Not resolving already resolved eventlog ID %s' % (node, id_to_resolve))
|
||||
else:
|
||||
self.callback.info('%s: Invalid ID: %s' % (node, id_to_resolve))
|
||||
|
||||
if len(eventlog_ids_to_resolve) == 0:
|
||||
# At the end and there are no entries to resolve
|
||||
self.callback.info('%s: No event log entries needed to be resolved' % node)
|
||||
else:
|
||||
# Resolve entries that were collected into the eventlog_ids_to_resolve array
|
||||
obmc.resolve_event_log_entries(eventlog_ids_to_resolve)
|
||||
for entry in eventlog_ids_to_resolve:
|
||||
self.callback.info('%s: Resolved %s' % (node, entry))
|
||||
|
||||
except (SelfServerException, SelfClientException) as e:
|
||||
self.callback.error('%s' % e.message, node)
|
||||
|
||||
|
@ -220,8 +220,9 @@ RSPCONFIG_APIS = {
|
||||
}
|
||||
|
||||
EVENTLOG_URLS = {
|
||||
"list": "/logging/enumerate",
|
||||
"list": "/logging/enumerate",
|
||||
"clear_all": "/logging/action/deleteAll",
|
||||
"resolve": "/logging/entry/{}/attr/Resolved",
|
||||
}
|
||||
|
||||
RAS_POLICY_TABLE = "/opt/ibm/ras/lib/policyTable.json"
|
||||
@ -664,6 +665,14 @@ class OpenBMCRest(object):
|
||||
payload = { "data": [] }
|
||||
return self.request('POST', EVENTLOG_URLS['clear_all'], payload=payload, cmd='clear_all_eventlog_records')
|
||||
|
||||
# Resolve eventlog records
|
||||
def resolve_event_log_entries(self, eventlog_ids_to_resolve):
|
||||
|
||||
payload = { "data": "1" }
|
||||
for event_id in eventlog_ids_to_resolve:
|
||||
self.request('PUT', EVENTLOG_URLS['resolve'].format(event_id), payload=payload, cmd='resolve_event_log_entries')
|
||||
|
||||
return
|
||||
|
||||
def set_apis_values(self, key, value):
|
||||
attr_info = RSPCONFIG_APIS[key]
|
||||
|
Loading…
x
Reference in New Issue
Block a user