diff options
Diffstat (limited to 'src/store/modules')
-rw-r--r-- | src/store/modules/Health/DumpsStore.js | 117 |
1 files changed, 117 insertions, 0 deletions
diff --git a/src/store/modules/Health/DumpsStore.js b/src/store/modules/Health/DumpsStore.js new file mode 100644 index 00000000..3b91354b --- /dev/null +++ b/src/store/modules/Health/DumpsStore.js @@ -0,0 +1,117 @@ +import api, { getResponseCount } from '@/store/api'; +import i18n from '@/i18n'; + +const DumpsStore = { + namespaced: true, + state: { + bmcDumps: [], + }, + getters: { + bmcDumps: (state) => state.bmcDumps, + }, + mutations: { + setBmcDumps: (state, dumps) => { + state.bmcDumps = dumps.map((dump) => ({ + data: dump.AdditionalDataURI, + dateTime: new Date(dump.Created), + dumpType: dump.Name, + id: dump.Id, + location: dump['@odata.id'], + size: dump.AdditionalDataSizeBytes, + })); + }, + }, + actions: { + async getBmcDumps({ commit }) { + return await api + .get('/redfish/v1/Managers/bmc/LogServices/Dump/Entries') + .then(({ data = {} }) => commit('setBmcDumps', data.Members || [])) + .catch((error) => console.log(error)); + }, + async createBmcDump() { + return await api + .post( + '/redfish/v1/Managers/bmc/LogServices/Dump/Actions/LogService.CollectDiagnosticData', + { + DiagnosticDataType: 'Manager', + OEMDiagnosticDataType: '', + } + ) + .catch((error) => { + console.log(error); + throw new Error(i18n.t('pageDumps.toast.errorStartBmcDump')); + }); + }, + async createSystemDump() { + return await api + .post( + '/redfish/v1/Systems/system/LogServices/Dump/Actions/LogService.CollectDiagnosticData', + { + DiagnosticDataType: 'OEM', + OEMDiagnosticDataType: 'System', + } + ) + .catch((error) => { + console.log(error); + throw new Error(i18n.t('pageDumps.toast.errorStartSystemDump')); + }); + }, + async deleteDumps({ dispatch }, dumps) { + const promises = dumps.map(({ location }) => + api.delete(location).catch((error) => { + console.log(error); + return error; + }) + ); + return await api + .all(promises) + .then((response) => { + dispatch('getBmcDumps'); + return response; + }) + .then( + api.spread((...responses) => { + const { successCount, errorCount } = getResponseCount(responses); + const toastMessages = []; + + if (successCount) { + const message = i18n.tc( + 'pageDumps.toast.successDeleteDump', + successCount + ); + toastMessages.push({ type: 'success', message }); + } + + if (errorCount) { + const message = i18n.tc( + 'pageDumps.toast.errorDeleteDump', + errorCount + ); + toastMessages.push({ type: 'error', message }); + } + + return toastMessages; + }) + ); + }, + async deleteAllDumps({ commit, state }) { + const totalDumpCount = state.bmcDumps.length; + return await api + .post( + '/redfish/v1/Managers/bmc/LogServices/Dump/Actions/LogService.ClearLog' + ) + .then(() => { + commit('setBmcDumps', []); + return i18n.tc('pageDumps.toast.successDeleteDump', totalDumpCount); + }) + .catch((error) => { + console.log(error); + throw new Error( + i18n.tc('pageDumps.toast.errorDeleteDump', totalDumpCount) + ); + }); + }, + }, +}; + +export default DumpsStore; |