From 22d4d527af48d87ca70a8766bacc5b1ec0cfe9b7 Mon Sep 17 00:00:00 2001 From: Yoshie Muranaka Date: Thu, 3 Dec 2020 10:58:35 -0800 Subject: Add dumps page to IBM env Adds a non-functional dumps page with majority of layout and user flows in place. Page visible with IBM dotenv configurations. Includes: - Initial GET for BMC dumps - Table search, sort, filter, batch and row action flows - New dump form, validations, and toast notification Signed-off-by: Yoshie Muranaka Change-Id: Id59ec4327744f4e10cc99e4e3c0b2db5b0476f9c --- src/env/components/AppNavigation/ibm.js | 5 + src/env/components/Dumps/Dumps.vue | 289 ++++++++++++++++++++++++++++++++ src/env/components/Dumps/DumpsForm.vue | 61 +++++++ src/env/components/Dumps/index.js | 2 + src/env/router/ibm.js | 9 + src/env/store/Dumps/DumpsStore.js | 32 ++++ src/env/store/ibm.js | 2 + src/locales/en-US.json | 27 +++ 8 files changed, 427 insertions(+) create mode 100644 src/env/components/Dumps/Dumps.vue create mode 100644 src/env/components/Dumps/DumpsForm.vue create mode 100644 src/env/components/Dumps/index.js create mode 100644 src/env/store/Dumps/DumpsStore.js (limited to 'src') diff --git a/src/env/components/AppNavigation/ibm.js b/src/env/components/AppNavigation/ibm.js index a9870d3b..37231f93 100644 --- a/src/env/components/AppNavigation/ibm.js +++ b/src/env/components/AppNavigation/ibm.js @@ -28,6 +28,11 @@ const AppNavigationMixin = { label: this.$t('appNavigation.health'), icon: 'iconHealth', children: [ + { + id: 'dumps', + label: this.$t('appNavigation.dumps'), + route: '/health/dumps', + }, { id: 'event-logs', label: this.$t('appNavigation.eventLogs'), diff --git a/src/env/components/Dumps/Dumps.vue b/src/env/components/Dumps/Dumps.vue new file mode 100644 index 00000000..eba90b7a --- /dev/null +++ b/src/env/components/Dumps/Dumps.vue @@ -0,0 +1,289 @@ + + + diff --git a/src/env/components/Dumps/DumpsForm.vue b/src/env/components/Dumps/DumpsForm.vue new file mode 100644 index 00000000..ed81b3a8 --- /dev/null +++ b/src/env/components/Dumps/DumpsForm.vue @@ -0,0 +1,61 @@ + + + diff --git a/src/env/components/Dumps/index.js b/src/env/components/Dumps/index.js new file mode 100644 index 00000000..65525fb0 --- /dev/null +++ b/src/env/components/Dumps/index.js @@ -0,0 +1,2 @@ +import Dumps from './Dumps.vue'; +export default Dumps; diff --git a/src/env/router/ibm.js b/src/env/router/ibm.js index a6473720..d4a6de0c 100644 --- a/src/env/router/ibm.js +++ b/src/env/router/ibm.js @@ -24,6 +24,7 @@ import i18n from '@/i18n'; // Custom components import FirmwareSingleImage from '../components/FirmwareSingleImage'; +import Dumps from '../components/Dumps'; const routes = [ { @@ -89,6 +90,14 @@ const routes = [ title: i18n.t('appPageTitle.profileSettings'), }, }, + { + path: '/health/dumps', + name: 'dumps', + component: Dumps, + meta: { + title: i18n.t('appPageTitle.dumps'), + }, + }, { path: '/health/event-logs', name: 'event-logs', diff --git a/src/env/store/Dumps/DumpsStore.js b/src/env/store/Dumps/DumpsStore.js new file mode 100644 index 00000000..45f446c0 --- /dev/null +++ b/src/env/store/Dumps/DumpsStore.js @@ -0,0 +1,32 @@ +import api from '@/store/api'; + +const DumpsStore = { + namespaced: true, + state: { + bmcDumps: [], + }, + getters: { + allDumps: (state) => state.bmcDumps, + }, + mutations: { + setBmcDumps: (state, dumps) => { + state.bmcDumps = dumps.map((dump) => ({ + dateTime: new Date(dump.Created), + dumpType: dump.Name, + id: dump.Id, + size: dump.AdditionalDataSizeBytes, + data: dump.AdditionalDataURI, + })); + }, + }, + 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)); + }, + }, +}; + +export default DumpsStore; diff --git a/src/env/store/ibm.js b/src/env/store/ibm.js index 383d97c7..e19dd48c 100644 --- a/src/env/store/ibm.js +++ b/src/env/store/ibm.js @@ -1,9 +1,11 @@ import store from '@/store'; import FirmwareSingleImageStore from './FirmwareSingleImage/FirmwareSingleImageStore'; +import DumpsStore from './Dumps/DumpsStore'; store.unregisterModule('virtualMedia'); store.unregisterModule('firmware'); store.registerModule('firmwareSingleImage', FirmwareSingleImageStore); +store.registerModule('dumps', DumpsStore); export default store; diff --git a/src/locales/en-US.json b/src/locales/en-US.json index dcb52a68..1d564ca6 100644 --- a/src/locales/en-US.json +++ b/src/locales/en-US.json @@ -99,6 +99,7 @@ "configuration": "Configuration", "control": "Control", "dateTimeSettings": "@:appPageTitle.dateTimeSettings", + "dumps": "@:appPageTitle.dumps", "eventLogs": "@:appPageTitle.eventLogs", "firmware": "@:appPageTitle.firmware", "hardwareStatus": "@:appPageTitle.hardwareStatus", @@ -124,6 +125,7 @@ "changePassword": "Change password", "clientSessions": "Client sessions", "dateTimeSettings": "Date and time settings", + "dumps": "Dumps", "eventLogs": "Event logs", "firmware": "Firmware", "hardwareStatus": "Hardware status", @@ -198,6 +200,31 @@ "successSaveDateTimeSettings": "Successfully saved date and time settings." } }, + "pageDumps": { + "dumpHistory": "Dump history", + "newDump": "New dump", + "form": { + "bmcDump": "BMC dump", + "createNewDump": "Create new dump", + "selectDumpType": "Select dump type", + "systemDump": "System dump (disruptive)" + }, + "modal": { + "deleteDump": "Delete dump | Delete dumps", + "deleteDumpConfirmation": "Are you sure you want to delete %{count} dump? This action cannot be undone. | Are you sure you want to delete %{count} dumps? This action cannot be undone." + }, + "table": { + "createdBy": "Created by", + "dateAndTime": "Date and time", + "dumpType": "Dump type", + "id": "ID", + "searchDumps": "Search dumps", + "size": "Size" + }, + "toast": { + "successStartDump": "Successfully started new dump." + } + }, "pageEventLogs": { "exportFilePrefix": "event_logs_", "modal": { -- cgit v1.2.3