From aa5e950b219343fff77ddde855088e694806edf8 Mon Sep 17 00:00:00 2001 From: Yoshie Muranaka Date: Tue, 23 Feb 2021 11:23:52 -0800 Subject: Move Dumps page components to main view and store directories This commit will move away from storing env specific component views and store modules in the env directory. This will help simplify the file structure for dotenv customizations. The env directory will only store modifications to the main store register, router definitions, and app navigation. Pages that are "hidden" by default, like dumps, would still need to be imported and registered in the specific environments. Signed-off-by: Yoshie Muranaka Change-Id: Ia5ad76235e00127281f3fa564cb89ec2ca2e0f25 --- src/store/modules/Health/DumpsStore.js | 117 +++++++++++++++++++++++++++++++++ 1 file changed, 117 insertions(+) create mode 100644 src/store/modules/Health/DumpsStore.js (limited to 'src/store') 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; -- cgit v1.2.3