| 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'; | 
 |     } | 
 |     if (!event.Resolved && event.priority === 'high') { | 
 |       status = 'critical'; | 
 |       break; | 
 |     } | 
 |   } | 
 |   return status; | 
 | }; | 
 |  | 
 | const EventLogStore = { | 
 |   namespaced: true, | 
 |   state: { | 
 |     allEvents: [], | 
 |     highPriorityEvents: [], | 
 |     healthStatus: null | 
 |   }, | 
 |   getters: { | 
 |     allEvents: state => state.allEvents, | 
 |     highPriorityEvents: state => state.highPriorityEvents, | 
 |     healthStatus: state => state.healthStatus | 
 |   }, | 
 |   mutations: { | 
 |     setAllEvents: (state, allEvents) => (state.allEvents = allEvents), | 
 |     setHighPriorityEvents: (state, highPriorityEvents) => | 
 |       (state.highPriorityEvents = highPriorityEvents), | 
 |     setHealthStatus: (state, status) => (state.healthStatus = status) | 
 |   }, | 
 |   actions: { | 
 |     getEventLogData({ commit }) { | 
 |       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 | 
 |               }); | 
 |             } | 
 |           } | 
 |  | 
 |           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'); | 
 |         } | 
 |       } | 
 |     } | 
 |   } | 
 | }; | 
 |  | 
 | export default EventLogStore; |