summaryrefslogtreecommitdiff
path: root/src/store/modules/Health/EventLogStore.js
diff options
context:
space:
mode:
Diffstat (limited to 'src/store/modules/Health/EventLogStore.js')
-rw-r--r--src/store/modules/Health/EventLogStore.js113
1 files changed, 27 insertions, 86 deletions
diff --git a/src/store/modules/Health/EventLogStore.js b/src/store/modules/Health/EventLogStore.js
index 418e4558..2f0b800f 100644
--- a/src/store/modules/Health/EventLogStore.js
+++ b/src/store/modules/Health/EventLogStore.js
@@ -1,117 +1,58 @@
import api from '../../api';
-const EVENT_SEVERITY = {
- emergency: 'xyz.openbmc_project.Logging.Entry.Level.Emergency',
- alert: 'xyz.openbmc_project.Logging.Entry.Level.Alert',
- critical: 'xyz.openbmc_project.Logging.Entry.Level.Critical',
- error: 'xyz.openbmc_project.Logging.Entry.Level.Error',
- warning: 'xyz.openbmc_project.Logging.Entry.Level.Warning',
- notice: 'xyz.openbmc_project.Logging.Entry.Level.Notice',
- informational: 'xyz.openbmc_project.Logging.Entry.Level.Informational',
- debug: 'xyz.openbmc_project.Logging.Entry.Level.Debug'
-};
-
-const priorityMapper = severity => {
- switch (severity) {
- case EVENT_SEVERITY.emergency:
- case EVENT_SEVERITY.alert:
- case EVENT_SEVERITY.critical:
- case EVENT_SEVERITY.error:
- return 'high';
- case EVENT_SEVERITY.warning:
- return 'medium';
- case EVENT_SEVERITY.notice:
- case EVENT_SEVERITY.debug:
- case EVENT_SEVERITY.informational:
- return 'low';
- default:
- return '';
- }
-};
-
-const getHealthStatus = allEvents => {
- let status = 'good';
- for (const event of allEvents) {
- if (!event.Resolved && event.priority === 'medium') {
- status = 'warning';
+const getHealthStatus = events => {
+ let status = 'OK';
+ for (const event of events) {
+ if (event.severity === 'Warning') {
+ status = 'Warning';
}
- if (!event.Resolved && event.priority === 'high') {
- status = 'critical';
+ if (event.severity === 'Critical') {
+ status = 'Critical';
break;
}
}
return status;
};
+// TODO: High priority events should also check if Log
+// is resolved when the property is available in Redfish
+const getHighPriorityEvents = events =>
+ events.filter(({ severity }) => severity === 'Critical');
+
const EventLogStore = {
namespaced: true,
state: {
- allEvents: [],
- highPriorityEvents: [],
- healthStatus: null
+ allEvents: []
},
getters: {
allEvents: state => state.allEvents,
- highPriorityEvents: state => state.highPriorityEvents,
- healthStatus: state => state.healthStatus
+ highPriorityEvents: state => getHighPriorityEvents(state.allEvents),
+ healthStatus: state => getHealthStatus(state.allEvents)
},
mutations: {
- setAllEvents: (state, allEvents) => (state.allEvents = allEvents),
- setHighPriorityEvents: (state, highPriorityEvents) =>
- (state.highPriorityEvents = highPriorityEvents),
- setHealthStatus: (state, status) => (state.healthStatus = status)
+ setAllEvents: (state, allEvents) => (state.allEvents = allEvents)
},
actions: {
async getEventLogData({ commit }) {
return await api
- .get('/xyz/openbmc_project/logging/enumerate')
- .then(response => {
- const responseData = response.data.data;
- const eventLogs = [];
-
- for (const key in responseData) {
- const event = responseData[key];
- const { Id } = event;
- if (responseData.hasOwnProperty(key) && Id) {
- const { EventID, Description, Timestamp, Severity } = event;
- eventLogs.push({
- logId: Id,
- priority: priorityMapper(Severity),
- timestamp: new Date(Timestamp),
- eventID: EventID,
- description: Description,
- ...event
- });
+ .get('/redfish/v1/Systems/system/LogServices/EventLog/Entries')
+ .then(({ data: { Members = [] } = {} }) => {
+ const eventLogs = Members.map(
+ ({ Id, Severity, Created, EntryType, Message }) => {
+ return {
+ id: Id,
+ severity: Severity,
+ date: new Date(Created),
+ type: EntryType,
+ description: Message
+ };
}
- }
-
- const healthStatus = getHealthStatus(eventLogs);
- const highPriorityEvents = eventLogs.filter(
- ({ priority, Resolved }) => priority === 'high' && !Resolved
);
-
commit('setAllEvents', eventLogs);
- commit('setHighPriorityEvents', highPriorityEvents);
- commit('setHealthStatus', healthStatus);
})
.catch(error => {
console.log('Event Log Data:', error);
});
- },
- checkHealth({ commit, getters }, interfaces) {
- if (getters['healthStatus'] === 'critical') return;
- for (const key in interfaces) {
- const event = interfaces[key];
- const eventPriority = priorityMapper(event.Severity);
- const isEventResolved = event.Resolved;
- if (!isEventResolved) {
- if (eventPriority === 'high') {
- commit('setHealthStatus', 'critical');
- break;
- }
- if (eventPriority === 'medium') commit('setHealthStatus', 'warning');
- }
- }
}
}
};