1828dda9bSDerick Montagueimport api, { getResponseCount } from '@/store/api'; 2828dda9bSDerick Montagueimport i18n from '@/i18n'; 3828dda9bSDerick Montague 4828dda9bSDerick Montagueconst DumpsStore = { 5828dda9bSDerick Montague namespaced: true, 6828dda9bSDerick Montague state: { 7c2c53aa9SKenneth allDumps: [], 8828dda9bSDerick Montague }, 9828dda9bSDerick Montague getters: { 10c2c53aa9SKenneth allDumps: (state) => state.allDumps, 11828dda9bSDerick Montague }, 12828dda9bSDerick Montague mutations: { 13e39b95d6SSukanya Pandey setAllDumps: (state, dumps) => { 14c2c53aa9SKenneth state.allDumps = dumps.map((dump) => ({ 15828dda9bSDerick Montague data: dump.AdditionalDataURI, 16828dda9bSDerick Montague dateTime: new Date(dump.Created), 17828dda9bSDerick Montague dumpType: dump.Name, 18828dda9bSDerick Montague id: dump.Id, 19828dda9bSDerick Montague location: dump['@odata.id'], 20828dda9bSDerick Montague size: dump.AdditionalDataSizeBytes, 21828dda9bSDerick Montague })); 22828dda9bSDerick Montague }, 23828dda9bSDerick Montague }, 24828dda9bSDerick Montague actions: { 25e39b95d6SSukanya Pandey async getBmcDumpEntries() { 26e39b95d6SSukanya Pandey return api 27*8841b7d4SSean Zhang .get(`${await this.dispatch('global/getBmcPath')}`) 28e39b95d6SSukanya Pandey .then((response) => api.get(response.data.LogServices['@odata.id'])) 29e39b95d6SSukanya Pandey .then((response) => api.get(`${response.data['@odata.id']}/Dump`)) 30e39b95d6SSukanya Pandey .then((response) => api.get(response.data.Entries['@odata.id'])) 31e39b95d6SSukanya Pandey .catch((error) => console.log(error)); 32e39b95d6SSukanya Pandey }, 33e39b95d6SSukanya Pandey async getSystemDumpEntries() { 34e39b95d6SSukanya Pandey return api 35*8841b7d4SSean Zhang .get(`${await this.dispatch('global/getSystemPath')}`) 36e39b95d6SSukanya Pandey .then((response) => api.get(response.data.LogServices['@odata.id'])) 37e39b95d6SSukanya Pandey .then((response) => api.get(`${response.data['@odata.id']}/Dump`)) 38e39b95d6SSukanya Pandey .then((response) => api.get(response.data.Entries['@odata.id'])) 39e39b95d6SSukanya Pandey .catch((error) => console.log(error)); 40e39b95d6SSukanya Pandey }, 41e39b95d6SSukanya Pandey async getAllDumps({ commit, dispatch }) { 42828dda9bSDerick Montague return await api 43e39b95d6SSukanya Pandey .all([dispatch('getBmcDumpEntries'), dispatch('getSystemDumpEntries')]) 44e39b95d6SSukanya Pandey .then((response) => { 45e39b95d6SSukanya Pandey const bmcDumpEntries = response[0].data?.Members || []; 46e39b95d6SSukanya Pandey const systemDumpEntries = response[1].data?.Members || []; 47e39b95d6SSukanya Pandey const allDumps = [...bmcDumpEntries, ...systemDumpEntries]; 48e39b95d6SSukanya Pandey commit('setAllDumps', allDumps); 49e39b95d6SSukanya Pandey }) 50828dda9bSDerick Montague .catch((error) => console.log(error)); 51828dda9bSDerick Montague }, 52828dda9bSDerick Montague async createBmcDump() { 53828dda9bSDerick Montague return await api 54828dda9bSDerick Montague .post( 55*8841b7d4SSean Zhang `${await this.dispatch('global/getBmcPath')}/LogServices/Dump/Actions/LogService.CollectDiagnosticData`, 56828dda9bSDerick Montague { 57828dda9bSDerick Montague DiagnosticDataType: 'Manager', 58828dda9bSDerick Montague OEMDiagnosticDataType: '', 598132399cSEd Tanous }, 60828dda9bSDerick Montague ) 61828dda9bSDerick Montague .catch((error) => { 62828dda9bSDerick Montague console.log(error); 63828dda9bSDerick Montague throw new Error(i18n.t('pageDumps.toast.errorStartBmcDump')); 64828dda9bSDerick Montague }); 65828dda9bSDerick Montague }, 66828dda9bSDerick Montague async createSystemDump() { 67828dda9bSDerick Montague return await api 68828dda9bSDerick Montague .post( 69*8841b7d4SSean Zhang `${await this.dispatch('global/getSystemPath')}/LogServices/Dump/Actions/LogService.CollectDiagnosticData`, 70828dda9bSDerick Montague { 71828dda9bSDerick Montague DiagnosticDataType: 'OEM', 72828dda9bSDerick Montague OEMDiagnosticDataType: 'System', 738132399cSEd Tanous }, 74828dda9bSDerick Montague ) 75828dda9bSDerick Montague .catch((error) => { 76828dda9bSDerick Montague console.log(error); 77828dda9bSDerick Montague throw new Error(i18n.t('pageDumps.toast.errorStartSystemDump')); 78828dda9bSDerick Montague }); 79828dda9bSDerick Montague }, 80828dda9bSDerick Montague async deleteDumps({ dispatch }, dumps) { 81828dda9bSDerick Montague const promises = dumps.map(({ location }) => 82828dda9bSDerick Montague api.delete(location).catch((error) => { 83828dda9bSDerick Montague console.log(error); 84828dda9bSDerick Montague return error; 858132399cSEd Tanous }), 86828dda9bSDerick Montague ); 87828dda9bSDerick Montague return await api 88828dda9bSDerick Montague .all(promises) 89828dda9bSDerick Montague .then((response) => { 90e39b95d6SSukanya Pandey dispatch('getAllDumps'); 91828dda9bSDerick Montague return response; 92828dda9bSDerick Montague }) 93828dda9bSDerick Montague .then( 94828dda9bSDerick Montague api.spread((...responses) => { 95828dda9bSDerick Montague const { successCount, errorCount } = getResponseCount(responses); 96828dda9bSDerick Montague const toastMessages = []; 97828dda9bSDerick Montague 98828dda9bSDerick Montague if (successCount) { 99828dda9bSDerick Montague const message = i18n.tc( 100828dda9bSDerick Montague 'pageDumps.toast.successDeleteDump', 1018132399cSEd Tanous successCount, 102828dda9bSDerick Montague ); 103828dda9bSDerick Montague toastMessages.push({ type: 'success', message }); 104828dda9bSDerick Montague } 105828dda9bSDerick Montague 106828dda9bSDerick Montague if (errorCount) { 107828dda9bSDerick Montague const message = i18n.tc( 108828dda9bSDerick Montague 'pageDumps.toast.errorDeleteDump', 1098132399cSEd Tanous errorCount, 110828dda9bSDerick Montague ); 111828dda9bSDerick Montague toastMessages.push({ type: 'error', message }); 112828dda9bSDerick Montague } 113828dda9bSDerick Montague 114828dda9bSDerick Montague return toastMessages; 1158132399cSEd Tanous }), 116828dda9bSDerick Montague ); 117828dda9bSDerick Montague }, 118828dda9bSDerick Montague async deleteAllDumps({ commit, state }) { 119e39b95d6SSukanya Pandey const totalDumpCount = state.allDumps.length; 120828dda9bSDerick Montague return await api 121828dda9bSDerick Montague .post( 122*8841b7d4SSean Zhang `${await this.dispatch('global/getBmcPath')}/LogServices/Dump/Actions/LogService.ClearLog`, 123828dda9bSDerick Montague ) 124828dda9bSDerick Montague .then(() => { 125e39b95d6SSukanya Pandey commit('setAllDumps', []); 126828dda9bSDerick Montague return i18n.tc('pageDumps.toast.successDeleteDump', totalDumpCount); 127828dda9bSDerick Montague }) 128828dda9bSDerick Montague .catch((error) => { 129828dda9bSDerick Montague console.log(error); 130828dda9bSDerick Montague throw new Error( 1318132399cSEd Tanous i18n.tc('pageDumps.toast.errorDeleteDump', totalDumpCount), 132828dda9bSDerick Montague ); 133828dda9bSDerick Montague }); 134828dda9bSDerick Montague }, 135828dda9bSDerick Montague }, 136828dda9bSDerick Montague}; 137828dda9bSDerick Montague 138828dda9bSDerick Montagueexport default DumpsStore; 139