blob: 2f0b800f660ce8ccb86829dc356768a271526b50 [file] [log] [blame]
Dixsie Wolmersf65ee342020-01-22 19:47:56 -06001import api from '../../api';
2
Yoshie Muranakace9a3ef2020-05-06 14:33:22 -07003const getHealthStatus = events => {
4 let status = 'OK';
5 for (const event of events) {
6 if (event.severity === 'Warning') {
7 status = 'Warning';
Yoshie Muranaka1ace1d92020-02-06 13:47:28 -08008 }
Yoshie Muranakace9a3ef2020-05-06 14:33:22 -07009 if (event.severity === 'Critical') {
10 status = 'Critical';
Yoshie Muranaka1ace1d92020-02-06 13:47:28 -080011 break;
12 }
13 }
14 return status;
Dixsie Wolmersf65ee342020-01-22 19:47:56 -060015};
16
Yoshie Muranakace9a3ef2020-05-06 14:33:22 -070017// TODO: High priority events should also check if Log
18// is resolved when the property is available in Redfish
19const getHighPriorityEvents = events =>
20 events.filter(({ severity }) => severity === 'Critical');
21
Dixsie Wolmersf65ee342020-01-22 19:47:56 -060022const EventLogStore = {
23 namespaced: true,
24 state: {
Yoshie Muranakace9a3ef2020-05-06 14:33:22 -070025 allEvents: []
Dixsie Wolmersf65ee342020-01-22 19:47:56 -060026 },
27 getters: {
Yoshie Muranaka1ace1d92020-02-06 13:47:28 -080028 allEvents: state => state.allEvents,
Yoshie Muranakace9a3ef2020-05-06 14:33:22 -070029 highPriorityEvents: state => getHighPriorityEvents(state.allEvents),
30 healthStatus: state => getHealthStatus(state.allEvents)
Dixsie Wolmersf65ee342020-01-22 19:47:56 -060031 },
32 mutations: {
Yoshie Muranakace9a3ef2020-05-06 14:33:22 -070033 setAllEvents: (state, allEvents) => (state.allEvents = allEvents)
Dixsie Wolmersf65ee342020-01-22 19:47:56 -060034 },
35 actions: {
Yoshie Muranaka598bf7e2020-05-01 12:26:00 -070036 async getEventLogData({ commit }) {
37 return await api
Yoshie Muranakace9a3ef2020-05-06 14:33:22 -070038 .get('/redfish/v1/Systems/system/LogServices/EventLog/Entries')
39 .then(({ data: { Members = [] } = {} }) => {
40 const eventLogs = Members.map(
41 ({ Id, Severity, Created, EntryType, Message }) => {
42 return {
43 id: Id,
44 severity: Severity,
45 date: new Date(Created),
46 type: EntryType,
47 description: Message
48 };
Dixsie Wolmersf65ee342020-01-22 19:47:56 -060049 }
Yoshie Muranaka1ace1d92020-02-06 13:47:28 -080050 );
Yoshie Muranaka1ace1d92020-02-06 13:47:28 -080051 commit('setAllEvents', eventLogs);
Dixsie Wolmersf65ee342020-01-22 19:47:56 -060052 })
53 .catch(error => {
54 console.log('Event Log Data:', error);
55 });
Dixsie Wolmersf65ee342020-01-22 19:47:56 -060056 }
57 }
58};
59
60export default EventLogStore;