diff options
-rw-r--r-- | src/store/modules/Configuration/DateTimeSettingsStore.js | 25 | ||||
-rw-r--r-- | src/views/Configuration/DateTimeSettings/DateTimeSettings.vue | 3 |
2 files changed, 24 insertions, 4 deletions
diff --git a/src/store/modules/Configuration/DateTimeSettingsStore.js b/src/store/modules/Configuration/DateTimeSettingsStore.js index 9da0cb41..06aeefe6 100644 --- a/src/store/modules/Configuration/DateTimeSettingsStore.js +++ b/src/store/modules/Configuration/DateTimeSettingsStore.js @@ -30,24 +30,41 @@ const DateTimeStore = { console.log(error); }); }, - async updateDateTimeSettings(_, dateTimeForm) { + async updateDateTimeSettings({ state }, dateTimeForm) { const ntpData = { NTP: { ProtocolEnabled: dateTimeForm.ntpProtocolEnabled } }; - if (dateTimeForm.ntpProtocolEnabled) { ntpData.NTP.NTPServers = dateTimeForm.ntpServersArray; } return await api .patch(`/redfish/v1/Managers/bmc/NetworkProtocol`, ntpData) - .then(() => { + .then(async () => { if (!dateTimeForm.ntpProtocolEnabled) { const dateTimeData = { DateTime: dateTimeForm.updatedDateTime }; - api.patch(`/redfish/v1/Managers/bmc`, dateTimeData); + /** + * https://github.com/openbmc/phosphor-time-manager/blob/master/README.md#special-note-on-changing-ntp-setting + * When time mode is initially set to Manual from NTP, + * NTP service is disabled and the NTP service is + * stopping but not stopped, setting time will return an error. + * There are no responses from backend to notify when NTP is stopped. + * To work around, a timeout is set to allow NTP to fully stop + * TODO: remove timeout if backend solves + * https://github.com/openbmc/openbmc/issues/3459 + */ + const timeoutVal = state.isNtpProtocolEnabled ? 20000 : 0; + return await new Promise((resolve, reject) => { + setTimeout(() => { + return api + .patch(`/redfish/v1/Managers/bmc`, dateTimeData) + .then(() => resolve()) + .catch(() => reject()); + }, timeoutVal); + }); } }) .then(() => { diff --git a/src/views/Configuration/DateTimeSettings/DateTimeSettings.vue b/src/views/Configuration/DateTimeSettings/DateTimeSettings.vue index d7b97d1a..7ce9cb3e 100644 --- a/src/views/Configuration/DateTimeSettings/DateTimeSettings.vue +++ b/src/views/Configuration/DateTimeSettings/DateTimeSettings.vue @@ -330,6 +330,9 @@ export default { this.form.ntp.thirdAddress = ''; } }) + .then(() => { + this.$store.dispatch('global/getBmcTime'); + }) .catch(({ message }) => this.errorToast(message)) .finally(() => { this.$v.form.$reset(); |