blob: 51b722a86f3a78834d994c4fa52d585a32c0abd9 [file] [log] [blame]
SurenNeware61859092020-10-01 09:37:32 +05301import api from '@/store/api';
Dixsie Wolmers739e4592020-06-05 07:00:06 -05002import i18n from '@/i18n';
3
4const DateTimeStore = {
5 namespaced: true,
6 state: {
7 ntpServers: [],
Derick Montague602e98a2020-10-21 16:20:00 -05008 isNtpProtocolEnabled: null,
Dixsie Wolmers739e4592020-06-05 07:00:06 -05009 },
10 getters: {
Derick Montague602e98a2020-10-21 16:20:00 -050011 ntpServers: (state) => state.ntpServers,
12 isNtpProtocolEnabled: (state) => state.isNtpProtocolEnabled,
Dixsie Wolmers739e4592020-06-05 07:00:06 -050013 },
14 mutations: {
15 setNtpServers: (state, ntpServers) => (state.ntpServers = ntpServers),
16 setIsNtpProtocolEnabled: (state, isNtpProtocolEnabled) =>
Derick Montague602e98a2020-10-21 16:20:00 -050017 (state.isNtpProtocolEnabled = isNtpProtocolEnabled),
Dixsie Wolmers739e4592020-06-05 07:00:06 -050018 },
19 actions: {
20 async getNtpData({ commit }) {
21 return await api
22 .get('/redfish/v1/Managers/bmc/NetworkProtocol')
Derick Montague602e98a2020-10-21 16:20:00 -050023 .then((response) => {
Dixsie Wolmers739e4592020-06-05 07:00:06 -050024 const ntpServers = response.data.NTP.NTPServers;
25 const isNtpProtocolEnabled = response.data.NTP.ProtocolEnabled;
26 commit('setNtpServers', ntpServers);
27 commit('setIsNtpProtocolEnabled', isNtpProtocolEnabled);
28 })
Derick Montague602e98a2020-10-21 16:20:00 -050029 .catch((error) => {
Dixsie Wolmers739e4592020-06-05 07:00:06 -050030 console.log(error);
31 });
32 },
Sandeepa Singhf67f7692021-07-19 18:04:18 +053033 async updateDateTime({ state }, dateTimeForm) {
Dixsie Wolmers739e4592020-06-05 07:00:06 -050034 const ntpData = {
35 NTP: {
Derick Montague602e98a2020-10-21 16:20:00 -050036 ProtocolEnabled: dateTimeForm.ntpProtocolEnabled,
37 },
Dixsie Wolmers739e4592020-06-05 07:00:06 -050038 };
Dixsie Wolmers739e4592020-06-05 07:00:06 -050039 if (dateTimeForm.ntpProtocolEnabled) {
40 ntpData.NTP.NTPServers = dateTimeForm.ntpServersArray;
41 }
42 return await api
43 .patch(`/redfish/v1/Managers/bmc/NetworkProtocol`, ntpData)
Dixsie Wolmersecd45a82020-07-14 17:07:26 -050044 .then(async () => {
Dixsie Wolmers739e4592020-06-05 07:00:06 -050045 if (!dateTimeForm.ntpProtocolEnabled) {
46 const dateTimeData = {
Derick Montague602e98a2020-10-21 16:20:00 -050047 DateTime: dateTimeForm.updatedDateTime,
Dixsie Wolmers739e4592020-06-05 07:00:06 -050048 };
Dixsie Wolmersecd45a82020-07-14 17:07:26 -050049 /**
50 * https://github.com/openbmc/phosphor-time-manager/blob/master/README.md#special-note-on-changing-ntp-setting
51 * When time mode is initially set to Manual from NTP,
52 * NTP service is disabled and the NTP service is
53 * stopping but not stopped, setting time will return an error.
54 * There are no responses from backend to notify when NTP is stopped.
55 * To work around, a timeout is set to allow NTP to fully stop
56 * TODO: remove timeout if backend solves
57 * https://github.com/openbmc/openbmc/issues/3459
58 */
59 const timeoutVal = state.isNtpProtocolEnabled ? 20000 : 0;
60 return await new Promise((resolve, reject) => {
61 setTimeout(() => {
62 return api
63 .patch(`/redfish/v1/Managers/bmc`, dateTimeData)
64 .then(() => resolve())
65 .catch(() => reject());
66 }, timeoutVal);
67 });
Dixsie Wolmers739e4592020-06-05 07:00:06 -050068 }
69 })
70 .then(() => {
Sandeepa Singhf67f7692021-07-19 18:04:18 +053071 return i18n.t('pageDateTime.toast.successSaveDateTime');
Dixsie Wolmers739e4592020-06-05 07:00:06 -050072 })
Derick Montague602e98a2020-10-21 16:20:00 -050073 .catch((error) => {
Dixsie Wolmers739e4592020-06-05 07:00:06 -050074 console.log(error);
Sandeepa Singhf67f7692021-07-19 18:04:18 +053075 throw new Error(i18n.t('pageDateTime.toast.errorSaveDateTime'));
Dixsie Wolmers739e4592020-06-05 07:00:06 -050076 });
Derick Montague602e98a2020-10-21 16:20:00 -050077 },
78 },
Dixsie Wolmers739e4592020-06-05 07:00:06 -050079};
80
81export default DateTimeStore;