xref: /openbmc/webui-vue/src/store/modules/Settings/NetworkStore.js (revision 4626aec43da32b56b7c1e87e5dc831398e39416c)
1f67f769fSSandeepa Singhimport api from '@/store/api';
2f67f769fSSandeepa Singhimport i18n from '@/i18n';
3f67f769fSSandeepa Singh
4f67f769fSSandeepa Singhconst NetworkStore = {
5f67f769fSSandeepa Singh  namespaced: true,
6f67f769fSSandeepa Singh  state: {
7f67f769fSSandeepa Singh    ethernetData: [],
8c4b8757eSDixsie Wolmers    firstInterfaceId: '', //used for setting global DHCP settings
9182b3f1fSDixsie Wolmers    globalNetworkSettings: [],
10b34349d4SDixsie Wolmers    selectedInterfaceId: '', // which tab is selected
11b34349d4SDixsie Wolmers    selectedInterfaceIndex: 0, // which tab is selected
12f67f769fSSandeepa Singh  },
13f67f769fSSandeepa Singh  getters: {
14f67f769fSSandeepa Singh    ethernetData: (state) => state.ethernetData,
15c4b8757eSDixsie Wolmers    firstInterfaceId: (state) => state.firstInterfaceId,
16182b3f1fSDixsie Wolmers    globalNetworkSettings: (state) => state.globalNetworkSettings,
17b34349d4SDixsie Wolmers    selectedInterfaceId: (state) => state.selectedInterfaceId,
18b34349d4SDixsie Wolmers    selectedInterfaceIndex: (state) => state.selectedInterfaceIndex,
19f67f769fSSandeepa Singh  },
20f67f769fSSandeepa Singh  mutations: {
21b34349d4SDixsie Wolmers    setDomainNameState: (state, domainState) =>
22b34349d4SDixsie Wolmers      (state.domainState = domainState),
23b34349d4SDixsie Wolmers    setDnsState: (state, dnsState) => (state.dnsState = dnsState),
24f67f769fSSandeepa Singh    setEthernetData: (state, ethernetData) =>
25f67f769fSSandeepa Singh      (state.ethernetData = ethernetData),
26c4b8757eSDixsie Wolmers    setFirstInterfaceId: (state, firstInterfaceId) =>
27c4b8757eSDixsie Wolmers      (state.firstInterfaceId = firstInterfaceId),
28182b3f1fSDixsie Wolmers    setGlobalNetworkSettings: (state, data) => {
29182b3f1fSDixsie Wolmers      state.globalNetworkSettings = data.map(({ data }) => {
30182b3f1fSDixsie Wolmers        const {
31c4b8757eSDixsie Wolmers          DHCPv4,
32db47b7e1SSean Zhang          DHCPv6,
33182b3f1fSDixsie Wolmers          HostName,
34182b3f1fSDixsie Wolmers          IPv4Addresses,
35c4b8757eSDixsie Wolmers          IPv4StaticAddresses,
36db47b7e1SSean Zhang          IPv6Addresses,
37db47b7e1SSean Zhang          IPv6StaticAddresses,
38c4b8757eSDixsie Wolmers          LinkStatus,
3912dc20c3SDixsie Wolmers          MACAddress,
40db47b7e1SSean Zhang          IPv6DefaultGateway,
41182b3f1fSDixsie Wolmers        } = data;
42182b3f1fSDixsie Wolmers        return {
43b34349d4SDixsie Wolmers          defaultGateway: IPv4StaticAddresses[0]?.Gateway, //First static gateway is the default gateway
44db47b7e1SSean Zhang          ipv6DefaultGateway: IPv6DefaultGateway,
45182b3f1fSDixsie Wolmers          dhcpAddress: IPv4Addresses.filter(
468132399cSEd Tanous            (ipv4) => ipv4.AddressOrigin === 'DHCP',
47182b3f1fSDixsie Wolmers          ),
48db47b7e1SSean Zhang          dhcpv6Address: IPv6Addresses.filter(
49db47b7e1SSean Zhang            (ipv6) =>
50db47b7e1SSean Zhang              ipv6.AddressOrigin === 'SLAAC' || ipv6.AddressOrigin === 'DHCPv6',
51db47b7e1SSean Zhang          ),
52e8cb2c6aSNikhil Ashoka          dhcpEnabled: DHCPv4.DHCPEnabled,
53db47b7e1SSean Zhang          dhcp6Enabled: DHCPv6.OperatingMode,
54c4b8757eSDixsie Wolmers          hostname: HostName,
5512dc20c3SDixsie Wolmers          macAddress: MACAddress,
56c4b8757eSDixsie Wolmers          linkStatus: LinkStatus,
57c4b8757eSDixsie Wolmers          staticAddress: IPv4StaticAddresses[0]?.Address, // Display first static address on overview page
58db47b7e1SSean Zhang          ipv6StaticAddress: IPv6StaticAddresses[0]?.Address,
59c4b8757eSDixsie Wolmers          useDnsEnabled: DHCPv4.UseDNSServers,
60c4b8757eSDixsie Wolmers          useDomainNameEnabled: DHCPv4.UseDomainName,
61c4b8757eSDixsie Wolmers          useNtpEnabled: DHCPv4.UseNTPServers,
62db47b7e1SSean Zhang          useDnsEnabledIpv6: DHCPv6.UseDNSServers,
63db47b7e1SSean Zhang          useDomainNameEnabledIpv6: DHCPv6.UseDomainName,
64db47b7e1SSean Zhang          useNtpEnabledIpv6: DHCPv6.UseNTPServers,
65182b3f1fSDixsie Wolmers        };
66182b3f1fSDixsie Wolmers      });
67182b3f1fSDixsie Wolmers    },
68b34349d4SDixsie Wolmers    setNtpState: (state, ntpState) => (state.ntpState = ntpState),
69db47b7e1SSean Zhang    setDomainNameStateIpv6: (state, domainState) =>
70db47b7e1SSean Zhang      (state.domainStateIpv6 = domainState),
71db47b7e1SSean Zhang    setDnsStateIpv6: (state, dnsState) => (state.dnsStateIpv6 = dnsState),
72db47b7e1SSean Zhang    setNtpStateIpv6: (state, ntpState) => (state.ntpStateIpv6 = ntpState),
73b34349d4SDixsie Wolmers    setSelectedInterfaceId: (state, selectedInterfaceId) =>
74b34349d4SDixsie Wolmers      (state.selectedInterfaceId = selectedInterfaceId),
75b34349d4SDixsie Wolmers    setSelectedInterfaceIndex: (state, selectedInterfaceIndex) =>
76b34349d4SDixsie Wolmers      (state.selectedInterfaceIndex = selectedInterfaceIndex),
77f67f769fSSandeepa Singh  },
78f67f769fSSandeepa Singh  actions: {
79f67f769fSSandeepa Singh    async getEthernetData({ commit }) {
80f67f769fSSandeepa Singh      return await api
818841b7d4SSean Zhang        .get(`${await this.dispatch('global/getBmcPath')}/EthernetInterfaces`)
82f67f769fSSandeepa Singh        .then((response) =>
83f67f769fSSandeepa Singh          response.data.Members.map(
848132399cSEd Tanous            (ethernetInterface) => ethernetInterface['@odata.id'],
858132399cSEd Tanous          ),
86f67f769fSSandeepa Singh        )
87f67f769fSSandeepa Singh        .then((ethernetInterfaceIds) =>
88f67f769fSSandeepa Singh          api.all(
89f67f769fSSandeepa Singh            ethernetInterfaceIds.map((ethernetInterface) =>
908132399cSEd Tanous              api.get(ethernetInterface),
918132399cSEd Tanous            ),
928132399cSEd Tanous          ),
93f67f769fSSandeepa Singh        )
94f67f769fSSandeepa Singh        .then((ethernetInterfaces) => {
95f67f769fSSandeepa Singh          const ethernetData = ethernetInterfaces.map(
968132399cSEd Tanous            (ethernetInterface) => ethernetInterface.data,
97f67f769fSSandeepa Singh          );
98c4b8757eSDixsie Wolmers          const firstInterfaceId = ethernetData[0].Id;
99f67f769fSSandeepa Singh
100f67f769fSSandeepa Singh          commit('setEthernetData', ethernetData);
101c4b8757eSDixsie Wolmers          commit('setFirstInterfaceId', firstInterfaceId);
102b34349d4SDixsie Wolmers          commit('setSelectedInterfaceId', firstInterfaceId);
103c4b8757eSDixsie Wolmers          commit('setGlobalNetworkSettings', ethernetInterfaces);
104f67f769fSSandeepa Singh        })
105f67f769fSSandeepa Singh        .catch((error) => {
106f67f769fSSandeepa Singh          console.log('Network Data:', error);
107f67f769fSSandeepa Singh        });
108f67f769fSSandeepa Singh    },
109e8cb2c6aSNikhil Ashoka    async saveDhcpEnabledState({ state, dispatch }, dhcpState) {
110e8cb2c6aSNikhil Ashoka      const data = {
111e8cb2c6aSNikhil Ashoka        DHCPv4: {
112e8cb2c6aSNikhil Ashoka          DHCPEnabled: dhcpState,
113e8cb2c6aSNikhil Ashoka        },
114e8cb2c6aSNikhil Ashoka      };
115e8cb2c6aSNikhil Ashoka      return api
116e8cb2c6aSNikhil Ashoka        .patch(
1178841b7d4SSean Zhang          `${await this.dispatch('global/getBmcPath')}/EthernetInterfaces/${state.selectedInterfaceId}`,
1188132399cSEd Tanous          data,
119e8cb2c6aSNikhil Ashoka        )
120e8cb2c6aSNikhil Ashoka        .then(dispatch('getEthernetData'))
121e8cb2c6aSNikhil Ashoka        .then(() => {
122de23ea23SSurya V          return i18n.global.t('pageNetwork.toast.successSaveNetworkSettings', {
123de23ea23SSurya V            setting: i18n.global.t('pageNetwork.dhcp'),
124e8cb2c6aSNikhil Ashoka          });
125e8cb2c6aSNikhil Ashoka        })
126e8cb2c6aSNikhil Ashoka        .catch((error) => {
127e8cb2c6aSNikhil Ashoka          console.log(error);
128e8cb2c6aSNikhil Ashoka          throw new Error(
129de23ea23SSurya V            i18n.global.t('pageNetwork.toast.errorSaveNetworkSettings', {
130de23ea23SSurya V              setting: i18n.global.t('pageNetwork.dhcp'),
1318132399cSEd Tanous            }),
132e8cb2c6aSNikhil Ashoka          );
133e8cb2c6aSNikhil Ashoka        });
134e8cb2c6aSNikhil Ashoka    },
135db47b7e1SSean Zhang    async saveDhcp6EnabledState({ state, dispatch }, dhcpState) {
136f67f769fSSandeepa Singh      const data = {
137db47b7e1SSean Zhang        DHCPv6: {
138db47b7e1SSean Zhang          OperatingMode: dhcpState ? 'Enabled' : 'Disabled',
139db47b7e1SSean Zhang        },
140db47b7e1SSean Zhang      };
141db47b7e1SSean Zhang      return api
142db47b7e1SSean Zhang        .patch(
143db47b7e1SSean Zhang          `${await this.dispatch('global/getBmcPath')}/EthernetInterfaces/${state.selectedInterfaceId}`,
144db47b7e1SSean Zhang          data,
145db47b7e1SSean Zhang        )
146db47b7e1SSean Zhang        .then(dispatch('getEthernetData'))
147db47b7e1SSean Zhang        .then(() => {
148*4626aec4SSurya Venkatesan          return i18n.global.t('pageNetwork.toast.successSaveNetworkSettings', {
149*4626aec4SSurya Venkatesan            setting: i18n.global.t('pageNetwork.dhcp6'),
150db47b7e1SSean Zhang          });
151db47b7e1SSean Zhang        })
152db47b7e1SSean Zhang        .catch((error) => {
153db47b7e1SSean Zhang          console.log(error);
154db47b7e1SSean Zhang          throw new Error(
155*4626aec4SSurya Venkatesan            i18n.global.t('pageNetwork.toast.errorSaveNetworkSettings', {
156*4626aec4SSurya Venkatesan              setting: i18n.global.t('pageNetwork.dhcp6'),
157db47b7e1SSean Zhang            }),
158db47b7e1SSean Zhang          );
159db47b7e1SSean Zhang        });
160db47b7e1SSean Zhang    },
161db47b7e1SSean Zhang    async saveDomainNameState({ commit, state }, { domainState, ipVersion }) {
162db47b7e1SSean Zhang      var data;
163db47b7e1SSean Zhang      if (ipVersion === 'IPv4') {
164db47b7e1SSean Zhang        commit('setDomainNameState', domainState);
165db47b7e1SSean Zhang        data = {
166f67f769fSSandeepa Singh          DHCPv4: {
167c4b8757eSDixsie Wolmers            UseDomainName: domainState,
168f67f769fSSandeepa Singh          },
169f67f769fSSandeepa Singh        };
170db47b7e1SSean Zhang      } else if (ipVersion === 'IPv6') {
171db47b7e1SSean Zhang        commit('setDomainNameStateIpv6', domainState);
172db47b7e1SSean Zhang        data = {
173db47b7e1SSean Zhang          DHCPv6: {
174db47b7e1SSean Zhang            UseDomainName: domainState,
175db47b7e1SSean Zhang          },
176db47b7e1SSean Zhang        };
177db47b7e1SSean Zhang      }
178c4b8757eSDixsie Wolmers      // Saving to the first interface automatically updates DHCPv4 and DHCPv6
179c4b8757eSDixsie Wolmers      // on all interfaces
180c4b8757eSDixsie Wolmers      return api
181f67f769fSSandeepa Singh        .patch(
1828841b7d4SSean Zhang          `${await this.dispatch('global/getBmcPath')}/EthernetInterfaces/${state.firstInterfaceId}`,
1838132399cSEd Tanous          data,
184f67f769fSSandeepa Singh        )
185f67f769fSSandeepa Singh        .then(() => {
186de23ea23SSurya V          return i18n.global.t('pageNetwork.toast.successSaveNetworkSettings', {
187de23ea23SSurya V            setting: i18n.global.t('pageNetwork.domainName'),
188c4b8757eSDixsie Wolmers          });
189f67f769fSSandeepa Singh        })
190f67f769fSSandeepa Singh        .catch((error) => {
191f67f769fSSandeepa Singh          console.log(error);
192db47b7e1SSean Zhang          if (ipVersion === 'IPv4') commit('setDomainNameState', !domainState);
193db47b7e1SSean Zhang          else if (ipVersion === 'IPv6')
194db47b7e1SSean Zhang            commit('setDomainNameStateIpv6', !domainState);
195c4b8757eSDixsie Wolmers          throw new Error(
196de23ea23SSurya V            i18n.global.t('pageNetwork.toast.errorSaveNetworkSettings', {
197de23ea23SSurya V              setting: i18n.global.t('pageNetwork.domainName'),
1988132399cSEd Tanous            }),
199c4b8757eSDixsie Wolmers          );
200c4b8757eSDixsie Wolmers        });
201c4b8757eSDixsie Wolmers    },
202db47b7e1SSean Zhang    async saveDnsState({ commit, state }, { dnsState, ipVersion }) {
203db47b7e1SSean Zhang      var data;
204db47b7e1SSean Zhang      if (ipVersion === 'IPv4') {
205c4b8757eSDixsie Wolmers        commit('setDnsState', dnsState);
206db47b7e1SSean Zhang        data = {
207c4b8757eSDixsie Wolmers          DHCPv4: {
208c4b8757eSDixsie Wolmers            UseDNSServers: dnsState,
209c4b8757eSDixsie Wolmers          },
210c4b8757eSDixsie Wolmers        };
211db47b7e1SSean Zhang      } else if (ipVersion === 'IPv6') {
212db47b7e1SSean Zhang        commit('setDnsStateIpv6', dnsState);
213db47b7e1SSean Zhang        data = {
214db47b7e1SSean Zhang          DHCPv6: {
215db47b7e1SSean Zhang            UseDNSServers: dnsState,
216db47b7e1SSean Zhang          },
217db47b7e1SSean Zhang        };
218db47b7e1SSean Zhang      }
219c4b8757eSDixsie Wolmers      // Saving to the first interface automatically updates DHCPv4 and DHCPv6
220c4b8757eSDixsie Wolmers      // on all interfaces
221c4b8757eSDixsie Wolmers      return api
222c4b8757eSDixsie Wolmers        .patch(
2238841b7d4SSean Zhang          `${await this.dispatch('global/getBmcPath')}/EthernetInterfaces/${state.firstInterfaceId}`,
2248132399cSEd Tanous          data,
225c4b8757eSDixsie Wolmers        )
226c4b8757eSDixsie Wolmers        .then(() => {
227de23ea23SSurya V          return i18n.global.t('pageNetwork.toast.successSaveNetworkSettings', {
228de23ea23SSurya V            setting: i18n.global.t('pageNetwork.dns'),
229c4b8757eSDixsie Wolmers          });
230c4b8757eSDixsie Wolmers        })
231c4b8757eSDixsie Wolmers        .catch((error) => {
232c4b8757eSDixsie Wolmers          console.log(error);
233db47b7e1SSean Zhang          if (ipVersion === 'IPv4') commit('setDnsState', !dnsState);
234db47b7e1SSean Zhang          else if (ipVersion === 'IPv6') commit('setDnsStateIpv6', !dnsState);
235c4b8757eSDixsie Wolmers          throw new Error(
236de23ea23SSurya V            i18n.global.t('pageNetwork.toast.errorSaveNetworkSettings', {
237de23ea23SSurya V              setting: i18n.global.t('pageNetwork.dns'),
2388132399cSEd Tanous            }),
239c4b8757eSDixsie Wolmers          );
240c4b8757eSDixsie Wolmers        });
241c4b8757eSDixsie Wolmers    },
242db47b7e1SSean Zhang    async saveNtpState({ commit, state }, { ntpState, ipVersion }) {
243db47b7e1SSean Zhang      var data;
244db47b7e1SSean Zhang      if (ipVersion === 'IPv4') {
245c4b8757eSDixsie Wolmers        commit('setNtpState', ntpState);
246db47b7e1SSean Zhang        data = {
247c4b8757eSDixsie Wolmers          DHCPv4: {
248e61534a4SKenneth Fullbright            UseNTPServers: ntpState,
249c4b8757eSDixsie Wolmers          },
250c4b8757eSDixsie Wolmers        };
251db47b7e1SSean Zhang      } else if (ipVersion === 'IPv6') {
252db47b7e1SSean Zhang        commit('setNtpStateIpv6', ntpState);
253db47b7e1SSean Zhang        data = {
254db47b7e1SSean Zhang          DHCPv6: {
255db47b7e1SSean Zhang            UseNTPServers: ntpState,
256db47b7e1SSean Zhang          },
257db47b7e1SSean Zhang        };
258db47b7e1SSean Zhang      }
259c4b8757eSDixsie Wolmers      // Saving to the first interface automatically updates DHCPv4 and DHCPv6
260c4b8757eSDixsie Wolmers      // on all interfaces
261c4b8757eSDixsie Wolmers      return api
262c4b8757eSDixsie Wolmers        .patch(
2638841b7d4SSean Zhang          `${await this.dispatch('global/getBmcPath')}/EthernetInterfaces/${state.firstInterfaceId}`,
2648132399cSEd Tanous          data,
265c4b8757eSDixsie Wolmers        )
266c4b8757eSDixsie Wolmers        .then(() => {
267de23ea23SSurya V          return i18n.global.t('pageNetwork.toast.successSaveNetworkSettings', {
268de23ea23SSurya V            setting: i18n.global.t('pageNetwork.ntp'),
269c4b8757eSDixsie Wolmers          });
270c4b8757eSDixsie Wolmers        })
271c4b8757eSDixsie Wolmers        .catch((error) => {
272c4b8757eSDixsie Wolmers          console.log(error);
273db47b7e1SSean Zhang          if (ipVersion === 'IPv4') commit('setNtpState', !ntpState);
274db47b7e1SSean Zhang          else if (ipVersion === 'IPv6') commit('setNtpStateIpv6', !ntpState);
275c4b8757eSDixsie Wolmers          throw new Error(
276de23ea23SSurya V            i18n.global.t('pageNetwork.toast.errorSaveNetworkSettings', {
277de23ea23SSurya V              setting: i18n.global.t('pageNetwork.ntp'),
2788132399cSEd Tanous            }),
279c4b8757eSDixsie Wolmers          );
280f67f769fSSandeepa Singh        });
281f67f769fSSandeepa Singh    },
282b34349d4SDixsie Wolmers    async setSelectedTabIndex({ commit }, tabIndex) {
283b34349d4SDixsie Wolmers      commit('setSelectedInterfaceIndex', tabIndex);
284b34349d4SDixsie Wolmers    },
285b34349d4SDixsie Wolmers    async setSelectedTabId({ commit }, tabId) {
286b34349d4SDixsie Wolmers      commit('setSelectedInterfaceId', tabId);
287b34349d4SDixsie Wolmers    },
288b34349d4SDixsie Wolmers    async saveIpv4Address({ dispatch, state }, ipv4Form) {
289b34349d4SDixsie Wolmers      const originalAddresses = state.ethernetData[
290b34349d4SDixsie Wolmers        state.selectedInterfaceIndex
291b34349d4SDixsie Wolmers      ].IPv4StaticAddresses.map((ipv4) => {
292b34349d4SDixsie Wolmers        const { Address, SubnetMask, Gateway } = ipv4;
293b34349d4SDixsie Wolmers        return {
294b34349d4SDixsie Wolmers          Address,
295b34349d4SDixsie Wolmers          SubnetMask,
296b34349d4SDixsie Wolmers          Gateway,
297b34349d4SDixsie Wolmers        };
298b34349d4SDixsie Wolmers      });
299b34349d4SDixsie Wolmers      const newAddress = [ipv4Form];
300b34349d4SDixsie Wolmers      return api
301b34349d4SDixsie Wolmers        .patch(
3028841b7d4SSean Zhang          `${await this.dispatch('global/getBmcPath')}/EthernetInterfaces/${state.selectedInterfaceId}`,
3038132399cSEd Tanous          { IPv4StaticAddresses: originalAddresses.concat(newAddress) },
304b34349d4SDixsie Wolmers        )
305b34349d4SDixsie Wolmers        .then(dispatch('getEthernetData'))
306b34349d4SDixsie Wolmers        .then(() => {
307de23ea23SSurya V          return i18n.global.t('pageNetwork.toast.successSaveNetworkSettings', {
308de23ea23SSurya V            setting: i18n.global.t('pageNetwork.ipv4'),
309b34349d4SDixsie Wolmers          });
310b34349d4SDixsie Wolmers        })
311b34349d4SDixsie Wolmers        .catch((error) => {
312b34349d4SDixsie Wolmers          console.log(error);
313b34349d4SDixsie Wolmers          throw new Error(
314de23ea23SSurya V            i18n.global.t('pageNetwork.toast.errorSaveNetworkSettings', {
315de23ea23SSurya V              setting: i18n.global.t('pageNetwork.ipv4'),
3168132399cSEd Tanous            }),
317b34349d4SDixsie Wolmers          );
318b34349d4SDixsie Wolmers        });
319b34349d4SDixsie Wolmers    },
320db47b7e1SSean Zhang    async saveIpv6Address({ dispatch, state }, ipv6Form) {
321db47b7e1SSean Zhang      const originalAddresses = state.ethernetData[
322db47b7e1SSean Zhang        state.selectedInterfaceIndex
323db47b7e1SSean Zhang      ].IPv6StaticAddresses.map((ipv6) => {
324db47b7e1SSean Zhang        const { Address, PrefixLength } = ipv6;
325db47b7e1SSean Zhang        return {
326db47b7e1SSean Zhang          Address,
327db47b7e1SSean Zhang          PrefixLength,
328db47b7e1SSean Zhang        };
329db47b7e1SSean Zhang      });
330db47b7e1SSean Zhang      const newAddress = [ipv6Form];
331db47b7e1SSean Zhang      return api
332db47b7e1SSean Zhang        .patch(
333db47b7e1SSean Zhang          `${await this.dispatch('global/getBmcPath')}/EthernetInterfaces/${state.selectedInterfaceId}`,
334db47b7e1SSean Zhang          { IPv6StaticAddresses: originalAddresses.concat(newAddress) },
335db47b7e1SSean Zhang        )
336db47b7e1SSean Zhang        .then(dispatch('getEthernetData'))
337db47b7e1SSean Zhang        .then(() => {
338*4626aec4SSurya Venkatesan          return i18n.global.t('pageNetwork.toast.successSaveNetworkSettings', {
339*4626aec4SSurya Venkatesan            setting: i18n.global.t('pageNetwork.ipv6'),
340db47b7e1SSean Zhang          });
341db47b7e1SSean Zhang        })
342db47b7e1SSean Zhang        .catch((error) => {
343db47b7e1SSean Zhang          console.log(error);
344db47b7e1SSean Zhang          throw new Error(
345*4626aec4SSurya Venkatesan            i18n.global.t('pageNetwork.toast.errorSaveNetworkSettings', {
346*4626aec4SSurya Venkatesan              setting: i18n.global.t('pageNetwork.ipv6'),
347db47b7e1SSean Zhang            }),
348db47b7e1SSean Zhang          );
349db47b7e1SSean Zhang        });
350db47b7e1SSean Zhang    },
351b34349d4SDixsie Wolmers    async editIpv4Address({ dispatch, state }, ipv4TableData) {
352b34349d4SDixsie Wolmers      return api
353b34349d4SDixsie Wolmers        .patch(
3548841b7d4SSean Zhang          `${await this.dispatch('global/getBmcPath')}/EthernetInterfaces/${state.selectedInterfaceId}`,
3558132399cSEd Tanous          { IPv4StaticAddresses: ipv4TableData },
356b34349d4SDixsie Wolmers        )
357b34349d4SDixsie Wolmers        .then(dispatch('getEthernetData'))
358b34349d4SDixsie Wolmers        .then(() => {
359de23ea23SSurya V          return i18n.global.t('pageNetwork.toast.successSaveNetworkSettings', {
360de23ea23SSurya V            setting: i18n.global.t('pageNetwork.ipv4'),
361b34349d4SDixsie Wolmers          });
362b34349d4SDixsie Wolmers        })
363b34349d4SDixsie Wolmers        .catch((error) => {
364b34349d4SDixsie Wolmers          console.log(error);
365b34349d4SDixsie Wolmers          throw new Error(
366de23ea23SSurya V            i18n.global.t('pageNetwork.toast.errorSaveNetworkSettings', {
367de23ea23SSurya V              setting: i18n.global.t('pageNetwork.ipv4'),
3688132399cSEd Tanous            }),
369b34349d4SDixsie Wolmers          );
370b34349d4SDixsie Wolmers        });
371b34349d4SDixsie Wolmers    },
372db47b7e1SSean Zhang    async editIpv6Address({ dispatch, state }, ipv6TableData) {
373db47b7e1SSean Zhang      return api
374db47b7e1SSean Zhang        .patch(
375db47b7e1SSean Zhang          `${await this.dispatch('global/getBmcPath')}/EthernetInterfaces/${state.selectedInterfaceId}`,
376db47b7e1SSean Zhang          { IPv6StaticAddresses: ipv6TableData },
377db47b7e1SSean Zhang        )
378db47b7e1SSean Zhang        .then(dispatch('getEthernetData'))
379db47b7e1SSean Zhang        .then(() => {
380*4626aec4SSurya Venkatesan          return i18n.global.t('pageNetwork.toast.successSaveNetworkSettings', {
381*4626aec4SSurya Venkatesan            setting: i18n.global.t('pageNetwork.ipv6'),
382db47b7e1SSean Zhang          });
383db47b7e1SSean Zhang        })
384db47b7e1SSean Zhang        .catch((error) => {
385db47b7e1SSean Zhang          console.log(error);
386db47b7e1SSean Zhang          throw new Error(
387*4626aec4SSurya Venkatesan            i18n.global.t('pageNetwork.toast.errorSaveNetworkSettings', {
388*4626aec4SSurya Venkatesan              setting: i18n.global.t('pageNetwork.ipv6'),
389db47b7e1SSean Zhang            }),
390db47b7e1SSean Zhang          );
391db47b7e1SSean Zhang        });
392db47b7e1SSean Zhang    },
39312dc20c3SDixsie Wolmers    async saveSettings({ state, dispatch }, interfaceSettingsForm) {
39412dc20c3SDixsie Wolmers      return api
39512dc20c3SDixsie Wolmers        .patch(
3968841b7d4SSean Zhang          `${await this.dispatch('global/getBmcPath')}/EthernetInterfaces/${state.selectedInterfaceId}`,
3978132399cSEd Tanous          interfaceSettingsForm,
39812dc20c3SDixsie Wolmers        )
39912dc20c3SDixsie Wolmers        .then(dispatch('getEthernetData'))
40012dc20c3SDixsie Wolmers        .then(() => {
401de23ea23SSurya V          return i18n.global.t('pageNetwork.toast.successSaveNetworkSettings', {
402de23ea23SSurya V            setting: i18n.global.t('pageNetwork.network'),
40312dc20c3SDixsie Wolmers          });
40412dc20c3SDixsie Wolmers        })
40512dc20c3SDixsie Wolmers        .catch((error) => {
40612dc20c3SDixsie Wolmers          console.log(error);
40712dc20c3SDixsie Wolmers          throw new Error(
408de23ea23SSurya V            i18n.global.t('pageNetwork.toast.errorSaveNetworkSettings', {
409de23ea23SSurya V              setting: i18n.global.t('pageNetwork.network'),
4108132399cSEd Tanous            }),
41112dc20c3SDixsie Wolmers          );
41212dc20c3SDixsie Wolmers        });
41312dc20c3SDixsie Wolmers    },
414b34349d4SDixsie Wolmers    async saveDnsAddress({ dispatch, state }, dnsForm) {
415b34349d4SDixsie Wolmers      const newAddress = dnsForm;
416b34349d4SDixsie Wolmers      const originalAddresses =
417b34349d4SDixsie Wolmers        state.ethernetData[state.selectedInterfaceIndex].StaticNameServers;
418b34349d4SDixsie Wolmers      const newDnsArray = originalAddresses.concat(newAddress);
419b34349d4SDixsie Wolmers      return api
420b34349d4SDixsie Wolmers        .patch(
4218841b7d4SSean Zhang          `${await this.dispatch('global/getBmcPath')}/EthernetInterfaces/${state.selectedInterfaceId}`,
4228132399cSEd Tanous          { StaticNameServers: newDnsArray },
423b34349d4SDixsie Wolmers        )
424b34349d4SDixsie Wolmers        .then(dispatch('getEthernetData'))
425b34349d4SDixsie Wolmers        .then(() => {
426de23ea23SSurya V          return i18n.global.t('pageNetwork.toast.successSaveNetworkSettings', {
427de23ea23SSurya V            setting: i18n.global.t('pageNetwork.dns'),
428b34349d4SDixsie Wolmers          });
429b34349d4SDixsie Wolmers        })
430b34349d4SDixsie Wolmers        .catch((error) => {
431b34349d4SDixsie Wolmers          console.log(error);
432b34349d4SDixsie Wolmers          throw new Error(
433de23ea23SSurya V            i18n.global.t('pageNetwork.toast.errorSaveNetworkSettings', {
434de23ea23SSurya V              setting: i18n.global.t('pageNetwork.dns'),
4358132399cSEd Tanous            }),
436b34349d4SDixsie Wolmers          );
437b34349d4SDixsie Wolmers        });
438b34349d4SDixsie Wolmers    },
439b34349d4SDixsie Wolmers    async editDnsAddress({ dispatch, state }, dnsTableData) {
440b34349d4SDixsie Wolmers      return api
441b34349d4SDixsie Wolmers        .patch(
4428841b7d4SSean Zhang          `${await this.dispatch('global/getBmcPath')}/EthernetInterfaces/${state.selectedInterfaceId}`,
4438132399cSEd Tanous          { StaticNameServers: dnsTableData },
444b34349d4SDixsie Wolmers        )
445b34349d4SDixsie Wolmers        .then(dispatch('getEthernetData'))
446b34349d4SDixsie Wolmers        .then(() => {
447de23ea23SSurya V          return i18n.global.t('pageNetwork.toast.successSaveNetworkSettings', {
448de23ea23SSurya V            setting: i18n.global.t('pageNetwork.dns'),
449b34349d4SDixsie Wolmers          });
450b34349d4SDixsie Wolmers        })
451b34349d4SDixsie Wolmers        .catch((error) => {
452b34349d4SDixsie Wolmers          console.log(error);
453b34349d4SDixsie Wolmers          throw new Error(
454de23ea23SSurya V            i18n.global.t('pageNetwork.toast.errorSaveNetworkSettings', {
455de23ea23SSurya V              setting: i18n.global.t('pageNetwork.dns'),
4568132399cSEd Tanous            }),
457b34349d4SDixsie Wolmers          );
458b34349d4SDixsie Wolmers        });
459b34349d4SDixsie Wolmers    },
460f67f769fSSandeepa Singh  },
461f67f769fSSandeepa Singh};
462f67f769fSSandeepa Singh
463f67f769fSSandeepa Singhexport default NetworkStore;
464