From bb3160669584e165bb0be40bc3daef2e78307624 Mon Sep 17 00:00:00 2001 From: Dixsie Wolmers Date: Tue, 4 Aug 2020 19:17:33 -0500 Subject: Add last reset time to server power operations page - Timestamp is displayed to inform user of last power operation Signed-off-by: Dixsie Wolmers Change-Id: I14c23ff56b3a0cf134c0ad2d831290971d93e293 --- src/locales/en-US.json | 1 + src/store/modules/Control/ControlStore.js | 23 +++++++-- .../Control/ServerPowerOperations/BootSettings.vue | 4 +- .../ServerPowerOperations.vue | 54 +++++++++++++++++----- 4 files changed, 65 insertions(+), 17 deletions(-) (limited to 'src') diff --git a/src/locales/en-US.json b/src/locales/en-US.json index 0fde2536..cc993738 100644 --- a/src/locales/en-US.json +++ b/src/locales/en-US.json @@ -540,6 +540,7 @@ "hostStatus": "Host status", "immediateReboot": "Immediate – Server reboots without OS shutting down; may cause data corruption", "immediateShutdown": "Immediate - Server shuts down without OS shutting down; may cause data corruption", + "lastPowerOperation": "Last power operation", "oneTimeBootWarning": "Pending one time boot. Next boot will be performed with the specified one time boot settings. Subsequent boots will be performed with the default settings.", "operationInProgress": "There are no options to display while a power operation is in progress. When complete, power operations will be displayed here.", "operations": "Operations", diff --git a/src/store/modules/Control/ControlStore.js b/src/store/modules/Control/ControlStore.js index f88f2aa7..6908769d 100644 --- a/src/store/modules/Control/ControlStore.js +++ b/src/store/modules/Control/ControlStore.js @@ -31,16 +31,30 @@ const checkForHostStatus = function(hostStatus) { const ControlStore = { namespaced: true, state: { - isOperationInProgress: false + isOperationInProgress: false, + lastPowerOperationTime: null }, getters: { - isOperationInProgress: state => state.isOperationInProgress + isOperationInProgress: state => state.isOperationInProgress, + lastPowerOperationTime: state => state.lastPowerOperationTime }, mutations: { setOperationInProgress: (state, inProgress) => - (state.isOperationInProgress = inProgress) + (state.isOperationInProgress = inProgress), + setLastPowerOperationTime: (state, lastPowerOperationTime) => + (state.lastPowerOperationTime = lastPowerOperationTime) }, actions: { + async getLastPowerOperationTime({ commit }) { + return await api + .get('/redfish/v1/Systems/system') + .then(response => { + const lastReset = response.data.LastResetTime; + const lastPowerOperationTime = new Date(lastReset); + commit('setLastPowerOperationTime', lastPowerOperationTime); + }) + .catch(error => console.log(error)); + }, async rebootBmc() { const data = { ResetType: 'GracefulRestart' }; return await api @@ -81,10 +95,11 @@ const ControlStore = { await checkForHostStatus.bind(this, 'off')(); commit('setOperationInProgress', false); }, - hostPowerChange({ commit }, data) { + hostPowerChange({ commit, dispatch }, data) { commit('setOperationInProgress', true); api .post('/redfish/v1/Systems/system/Actions/ComputerSystem.Reset', data) + .then(() => dispatch('getLastPowerOperationTime')) .catch(error => { console.log(error); commit('setOperationInProgress', false); diff --git a/src/views/Control/ServerPowerOperations/BootSettings.vue b/src/views/Control/ServerPowerOperations/BootSettings.vue index c56bcf50..37de1e76 100644 --- a/src/views/Control/ServerPowerOperations/BootSettings.vue +++ b/src/views/Control/ServerPowerOperations/BootSettings.vue @@ -106,7 +106,9 @@ export default { Promise.all([ this.$store.dispatch('hostBootSettings/getBootSettings'), this.$store.dispatch('hostBootSettings/getTpmPolicy') - ]).finally(() => this.endLoader()); + ]).finally(() => + this.$root.$emit('serverPowerOperations::bootSettings::complete') + ); }, methods: { handleSubmit() { diff --git a/src/views/Control/ServerPowerOperations/ServerPowerOperations.vue b/src/views/Control/ServerPowerOperations/ServerPowerOperations.vue index 41d8cf07..0db01298 100644 --- a/src/views/Control/ServerPowerOperations/ServerPowerOperations.vue +++ b/src/views/Control/ServerPowerOperations/ServerPowerOperations.vue @@ -6,18 +6,36 @@ -
-
{{ $t('pageServerPowerOperations.hostStatus') }}
-
- {{ $t('global.status.on') }} -
-
- {{ $t('global.status.off') }} -
-
- {{ $t('global.status.notAvailable') }} -
-
+ + +
+
{{ $t('pageServerPowerOperations.hostStatus') }}
+
+ {{ $t('global.status.on') }} +
+
+ {{ $t('global.status.off') }} +
+
+ {{ $t('global.status.notAvailable') }} +
+
+
+
+ + +
+
+ {{ $t('pageServerPowerOperations.lastPowerOperation') }} +
+
+ {{ lastPowerOperationTime | formatDate }} + {{ lastPowerOperationTime | formatTime }} +
+
--
+
+
+
@@ -142,12 +160,24 @@ export default { isOperationInProgress() { return this.$store.getters['controls/isOperationInProgress']; }, + lastPowerOperationTime() { + return this.$store.getters['controls/lastPowerOperationTime']; + }, oneTimeBootEnabled() { return this.$store.getters['hostBootSettings/overrideEnabled']; } }, created() { this.startLoader(); + const bootSettingsPromise = new Promise(resolve => { + this.$root.$on('serverPowerOperations::bootSettings::complete', () => + resolve() + ); + }); + Promise.all([ + this.$store.dispatch('controls/getLastPowerOperationTime'), + bootSettingsPromise + ]).finally(() => this.endLoader()); }, beforeRouteLeave(to, from, next) { this.hideLoader(); -- cgit v1.2.3