From f67f769f2304bca64d2b9758e22c21203960eef9 Mon Sep 17 00:00:00 2001 From: Sandeepa Singh Date: Mon, 19 Jul 2021 18:04:18 +0530 Subject: IA update: Update configuration to settings This is the fourth update to information architecture changes and has the following changes: - The configuration section is updated to settings - The date and time settings page is updated to date and time - The network settings page is updated to network - The power restore policy page in operations section is moved to settings section Signed-off-by: Sandeepa Singh Change-Id: I6f5ab25f5227530be430bd39a4d9629b3bf09d8b --- src/store/modules/Settings/NetworkStore.js | 113 +++++++++++++++++++++++++++++ 1 file changed, 113 insertions(+) create mode 100644 src/store/modules/Settings/NetworkStore.js (limited to 'src/store/modules/Settings/NetworkStore.js') diff --git a/src/store/modules/Settings/NetworkStore.js b/src/store/modules/Settings/NetworkStore.js new file mode 100644 index 00000000..4040658a --- /dev/null +++ b/src/store/modules/Settings/NetworkStore.js @@ -0,0 +1,113 @@ +import api from '@/store/api'; +import i18n from '@/i18n'; +import { find, remove } from 'lodash'; + +const NetworkStore = { + namespaced: true, + state: { + defaultGateway: '', + ethernetData: [], + interfaceOptions: [], + }, + getters: { + defaultGateway: (state) => state.defaultGateway, + ethernetData: (state) => state.ethernetData, + interfaceOptions: (state) => state.interfaceOptions, + }, + mutations: { + setDefaultGateway: (state, defaultGateway) => + (state.defaultGateway = defaultGateway), + setEthernetData: (state, ethernetData) => + (state.ethernetData = ethernetData), + setInterfaceOptions: (state, interfaceOptions) => + (state.interfaceOptions = interfaceOptions), + }, + actions: { + async getEthernetData({ commit }) { + return await api + .get('/redfish/v1/Managers/bmc/EthernetInterfaces') + .then((response) => + response.data.Members.map( + (ethernetInterface) => ethernetInterface['@odata.id'] + ) + ) + .then((ethernetInterfaceIds) => + api.all( + ethernetInterfaceIds.map((ethernetInterface) => + api.get(ethernetInterface) + ) + ) + ) + .then((ethernetInterfaces) => { + const ethernetData = ethernetInterfaces.map( + (ethernetInterface) => ethernetInterface.data + ); + const interfaceOptions = ethernetInterfaces.map( + (ethernetName) => ethernetName.data.Id + ); + const addresses = ethernetData[0].IPv4StaticAddresses; + + // Default gateway manually set to first gateway saved on the first interface. Default gateway property is WIP on backend + const defaultGateway = addresses.map((ipv4) => { + return ipv4.Gateway; + }); + + commit('setDefaultGateway', defaultGateway[0]); + commit('setEthernetData', ethernetData); + commit('setInterfaceOptions', interfaceOptions); + }) + .catch((error) => { + console.log('Network Data:', error); + }); + }, + + async updateInterfaceSettings({ dispatch, state }, networkSettingsForm) { + const updatedAddresses = networkSettingsForm.staticIpv4; + const originalAddresses = + state.ethernetData[networkSettingsForm.selectedInterfaceIndex] + .IPv4StaticAddresses; + + const addressArray = originalAddresses.map((item) => { + const address = item.Address; + if (find(updatedAddresses, { Address: address })) { + remove(updatedAddresses, (item) => { + return item.Address === address; + }); + return {}; + } else { + return null; + } + }); + + const data = { + HostName: networkSettingsForm.hostname, + MACAddress: networkSettingsForm.macAddress, + DHCPv4: { + DHCPEnabled: networkSettingsForm.isDhcpEnabled, + }, + }; + + // If DHCP disabled, update static DNS or static ipv4 + if (!networkSettingsForm.isDhcpEnabled) { + data.IPv4StaticAddresses = [...addressArray, ...updatedAddresses]; + data.StaticNameServers = networkSettingsForm.staticNameServers; + } + + return await api + .patch( + `/redfish/v1/Managers/bmc/EthernetInterfaces/${networkSettingsForm.interfaceId}`, + data + ) + .then(() => dispatch('getEthernetData')) + .then(() => { + return i18n.t('pageNetwork.toast.successSaveNetworkSettings'); + }) + .catch((error) => { + console.log(error); + throw new Error(i18n.t('pageNetwork.toast.errorSaveNetworkSettings')); + }); + }, + }, +}; + +export default NetworkStore; -- cgit v1.2.3