blob: bf1de2f4a1f95288a7b251c39562e076de5118f8 [file] [log] [blame]
Yoshie Muranakabe3af332020-05-11 08:23:04 -07001import api, { getResponseCount } from '@/store/api';
2import i18n from '@/i18n';
Dixsie Wolmersf65ee342020-01-22 19:47:56 -06003
Mateusz Gapski076ab272020-07-20 10:55:15 +02004const getHealthStatus = (events, loadedEvents) => {
5 let status = loadedEvents ? 'OK' : '';
Yoshie Muranakace9a3ef2020-05-06 14:33:22 -07006 for (const event of events) {
7 if (event.severity === 'Warning') {
8 status = 'Warning';
Yoshie Muranaka1ace1d92020-02-06 13:47:28 -08009 }
Yoshie Muranakace9a3ef2020-05-06 14:33:22 -070010 if (event.severity === 'Critical') {
11 status = 'Critical';
Yoshie Muranaka1ace1d92020-02-06 13:47:28 -080012 break;
13 }
14 }
15 return status;
Dixsie Wolmersf65ee342020-01-22 19:47:56 -060016};
17
Yoshie Muranakace9a3ef2020-05-06 14:33:22 -070018// TODO: High priority events should also check if Log
19// is resolved when the property is available in Redfish
Derick Montague602e98a2020-10-21 16:20:00 -050020const getHighPriorityEvents = (events) =>
Yoshie Muranakace9a3ef2020-05-06 14:33:22 -070021 events.filter(({ severity }) => severity === 'Critical');
22
Dixsie Wolmersf65ee342020-01-22 19:47:56 -060023const EventLogStore = {
24 namespaced: true,
25 state: {
Mateusz Gapski076ab272020-07-20 10:55:15 +020026 allEvents: [],
Derick Montague602e98a2020-10-21 16:20:00 -050027 loadedEvents: false,
Dixsie Wolmersf65ee342020-01-22 19:47:56 -060028 },
29 getters: {
Derick Montague602e98a2020-10-21 16:20:00 -050030 allEvents: (state) => state.allEvents,
31 highPriorityEvents: (state) => getHighPriorityEvents(state.allEvents),
32 healthStatus: (state) =>
33 getHealthStatus(state.allEvents, state.loadedEvents),
Dixsie Wolmersf65ee342020-01-22 19:47:56 -060034 },
35 mutations: {
Mateusz Gapski076ab272020-07-20 10:55:15 +020036 setAllEvents: (state, allEvents) => (
37 (state.allEvents = allEvents), (state.loadedEvents = true)
Derick Montague602e98a2020-10-21 16:20:00 -050038 ),
Dixsie Wolmersf65ee342020-01-22 19:47:56 -060039 },
40 actions: {
Yoshie Muranaka598bf7e2020-05-01 12:26:00 -070041 async getEventLogData({ commit }) {
42 return await api
Yoshie Muranakace9a3ef2020-05-06 14:33:22 -070043 .get('/redfish/v1/Systems/system/LogServices/EventLog/Entries')
44 .then(({ data: { Members = [] } = {} }) => {
Derick Montague602e98a2020-10-21 16:20:00 -050045 const eventLogs = Members.map((log) => {
Yoshie Muranakabe3af332020-05-11 08:23:04 -070046 const { Id, Severity, Created, EntryType, Message } = log;
47 return {
48 id: Id,
49 severity: Severity,
50 date: new Date(Created),
51 type: EntryType,
52 description: Message,
Derick Montague602e98a2020-10-21 16:20:00 -050053 uri: log['@odata.id'],
Yoshie Muranakabe3af332020-05-11 08:23:04 -070054 };
55 });
Yoshie Muranaka1ace1d92020-02-06 13:47:28 -080056 commit('setAllEvents', eventLogs);
Dixsie Wolmersf65ee342020-01-22 19:47:56 -060057 })
Derick Montague602e98a2020-10-21 16:20:00 -050058 .catch((error) => {
Dixsie Wolmersf65ee342020-01-22 19:47:56 -060059 console.log('Event Log Data:', error);
60 });
Yoshie Muranakabe3af332020-05-11 08:23:04 -070061 },
62 async deleteEventLogs({ dispatch }, uris = []) {
Derick Montague602e98a2020-10-21 16:20:00 -050063 const promises = uris.map((uri) =>
64 api.delete(uri).catch((error) => {
Yoshie Muranakabe3af332020-05-11 08:23:04 -070065 console.log(error);
66 return error;
67 })
68 );
69 return await api
70 .all(promises)
Derick Montague602e98a2020-10-21 16:20:00 -050071 .then((response) => {
Yoshie Muranakabe3af332020-05-11 08:23:04 -070072 dispatch('getEventLogData');
73 return response;
74 })
75 .then(
76 api.spread((...responses) => {
77 const { successCount, errorCount } = getResponseCount(responses);
78 const toastMessages = [];
79
80 if (successCount) {
81 const message = i18n.tc(
82 'pageEventLogs.toast.successDelete',
83 successCount
84 );
85 toastMessages.push({ type: 'success', message });
86 }
87
88 if (errorCount) {
89 const message = i18n.tc(
90 'pageEventLogs.toast.errorDelete',
91 errorCount
92 );
93 toastMessages.push({ type: 'error', message });
94 }
95
96 return toastMessages;
97 })
98 );
Derick Montague602e98a2020-10-21 16:20:00 -050099 },
100 },
Dixsie Wolmersf65ee342020-01-22 19:47:56 -0600101};
102
103export default EventLogStore;