diff --git a/src/components/Global/TableRowAction.vue b/src/components/Global/TableRowAction.vue index 549f1b529f..f37d505ae7 100644 --- a/src/components/Global/TableRowAction.vue +++ b/src/components/Global/TableRowAction.vue @@ -10,7 +10,7 @@ {{ $t('global.action.export') }} - {{ title }} + {{ title }} - + {{ $t('global.action.download') }} @@ -34,7 +34,7 @@ :title="title" > - + {{ $t('global.action.download') }} @@ -49,7 +49,7 @@ {{ title }} - {{ title }} + {{ title }} diff --git a/src/router/routes.js b/src/router/routes.js index 4aa9c2980d..05e2dbb510 100644 --- a/src/router/routes.js +++ b/src/router/routes.js @@ -41,6 +41,7 @@ import FieldCoreOverride from '@/views/ResourceManagement/FieldCoreOverride'; import ServiceLoginConsoles from '@/views/Operations/ServiceLoginConsoles/ServiceLoginConsoles.vue'; import ServiceLogin from '@/views/Operations/ServiceLoginConsoles'; import ProfileSettings from '@/views/ProfileSettings'; +import Network from '@/views/Settings/Network'; const roles = { administrator: 'Administrator', @@ -281,6 +282,14 @@ export const routes = [ title: i18n.global.t('appPageTitle.deconfigurationHardware'), }, }, + { + path: '/settings/network', + name: 'network', + component: Network, + meta: { + title: i18n.global.t('appPageTitle.network'), + }, + }, { path: '/resource-management/power', name: 'power', diff --git a/src/store/modules/Settings/NetworkStore.js b/src/store/modules/Settings/NetworkStore.js index 968432e0c2..c1d0a523ad 100644 --- a/src/store/modules/Settings/NetworkStore.js +++ b/src/store/modules/Settings/NetworkStore.js @@ -1,4 +1,3 @@ -//TODO: Work Requird --> import api from '@/store/api'; import i18n from '@/i18n'; import { defineStore } from 'pinia'; @@ -24,6 +23,30 @@ export const NetworkStore = defineStore('network', { isTableBusyGetter: (state) => state.isTableBusy, }, actions: { + setDhcpEnabledState(dhcpEnabledState) { + this.networkSettings[this.selectedInterfaceIndex].dhcpEnabled = + dhcpEnabledState; + }, + setIpv6DhcpEnabledState(ipv6DhcpEnabledState) { + this.networkSettings[this.selectedInterfaceIndex].ipv6OperatingMode = + ipv6DhcpEnabledState; + }, + setIpv6AutoConfigEnabled(ipv6AutoConfigEnabled) { + this.networkSettings[this.selectedInterfaceIndex].ipv6AutoConfigEnabled = + ipv6AutoConfigEnabled; + }, + setDomainNameState(domainState) { + this.networkSettings[this.selectedInterfaceIndex].useDomainNameEnabled = + domainState; + }, + setDnsState(dnsState) { + this.networkSettings[this.selectedInterfaceIndex].useDnsEnabled = + dnsState; + }, + setNtpState(ntpState) { + this.networkSettings[this.selectedInterfaceIndex].useNtpEnabled = + ntpState; + }, async setNetworkSettings(data) { this.networkSettings = data.map(({ data }) => { const { @@ -110,7 +133,7 @@ export const NetworkStore = defineStore('network', { }, 15000); }, async saveDomainNameState(domainState) { - this.domainState = domainState; + this.setDomainNameState(domainState); const data = { DHCPv4: { UseDomainName: domainState, @@ -121,7 +144,12 @@ export const NetworkStore = defineStore('network', { `/redfish/v1/Managers/bmc/EthernetInterfaces/${this.selectedInterfaceId}`, data ) - .then(this.getEthernetData()) + .then(() => { + // Getting Ethernet data here so that the toggle gets updated + this.getEthernetData(); + // Getting Ethernet data here so that the IPv4 table gets updated + this.getEthernetDataAfterDelay(); + }) .then(() => { return i18n.global.t('pageNetwork.toast.successSaveNetworkSettings', { setting: i18n.global.t('pageNetwork.domainName'), @@ -129,7 +157,7 @@ export const NetworkStore = defineStore('network', { }) .catch((error) => { console.log(error); - this.domainState = !domainState; + this.setDomainNameState(!domainState); throw new Error( i18n.global.t('pageNetwork.toast.errorSaveNetworkSettings', { setting: i18n.global.t('pageNetwork.domainName'), @@ -138,7 +166,7 @@ export const NetworkStore = defineStore('network', { }); }, async saveDnsState(dnsState) { - this.dnsState = dnsState; + this.setDnsState(dnsState); const data = { DHCPv4: { UseDNSServers: dnsState, @@ -149,7 +177,12 @@ export const NetworkStore = defineStore('network', { `/redfish/v1/Managers/bmc/EthernetInterfaces/${this.selectedInterfaceId}`, data ) - .then(this.getEthernetData()) + .then(() => { + // Getting Ethernet data here so that the toggle gets updated + this.getEthernetData(); + // Getting Ethernet data here so that the IPv4 table gets updated + this.getEthernetDataAfterDelay(); + }) .then(() => { return i18n.global.t('pageNetwork.toast.successSaveNetworkSettings', { setting: i18n.global.t('pageNetwork.dns'), @@ -157,7 +190,7 @@ export const NetworkStore = defineStore('network', { }) .catch((error) => { console.log(error); - this.dnsState = !dnsState; + this.setDnsState(!dnsState); throw new Error( i18n.global.t('pageNetwork.toast.errorSaveNetworkSettings', { setting: i18n.global.t('pageNetwork.dns'), @@ -166,7 +199,7 @@ export const NetworkStore = defineStore('network', { }); }, async saveNtpState(ntpState) { - this.ntpState = ntpState; + this.setNtpState(ntpState); const data = { DHCPv4: { UseNTPServers: ntpState, @@ -177,7 +210,12 @@ export const NetworkStore = defineStore('network', { `/redfish/v1/Managers/bmc/EthernetInterfaces/${this.selectedInterfaceId}`, data ) - .then(this.getEthernetData()) + .then(() => { + // Getting Ethernet data here so that the toggle gets updated + this.getEthernetData(); + // Getting Ethernet data here so that the IPv4 table gets updated + this.getEthernetDataAfterDelay(); + }) .then(() => { return i18n.global.t('pageNetwork.toast.successSaveNetworkSettings', { setting: i18n.global.t('pageNetwork.ntp'), @@ -185,7 +223,7 @@ export const NetworkStore = defineStore('network', { }) .catch((error) => { console.log(error); - this.ntpState = !ntpState; + this.setNtpState(!ntpState); throw new Error( i18n.global.t('pageNetwork.toast.errorSaveNetworkSettings', { setting: i18n.global.t('pageNetwork.ntp'), @@ -194,7 +232,7 @@ export const NetworkStore = defineStore('network', { }); }, async saveDhcpEnabledState(dhcpState) { - this.dhcpEnabledState = dhcpState; + this.setDhcpEnabledState(dhcpState); const data = { DHCPv4: { DHCPEnabled: dhcpState, @@ -218,7 +256,7 @@ export const NetworkStore = defineStore('network', { }) .catch((error) => { console.log(error); - this.dhcpEnabledState = !dhcpState; + this.setDhcpEnabledState(!dhcpState); throw new Error( i18n.global.t('pageNetwork.toast.errorSaveNetworkSettings', { setting: i18n.global.t('pageNetwork.dhcp'), @@ -228,7 +266,7 @@ export const NetworkStore = defineStore('network', { }, async saveIpv6DhcpEnabledState(dhcpState) { const updatedDhcpState = dhcpState ? 'Enabled' : 'Disabled'; - this.ipv6DhcpEnabledState = updatedDhcpState; + this.setIpv6DhcpEnabledState(updatedDhcpState); const data = { DHCPv6: { OperatingMode: updatedDhcpState, @@ -252,7 +290,7 @@ export const NetworkStore = defineStore('network', { }) .catch((error) => { console.log(error); - this.ipv6DhcpEnabledState = !dhcpState; + this.setIpv6DhcpEnabledState(!dhcpState ? 'Enabled' : 'Disabled'); throw new Error( i18n.global.t('pageNetwork.toast.errorSaveNetworkSettings', { setting: i18n.global.t('pageNetwork.dhcp'), @@ -261,7 +299,7 @@ export const NetworkStore = defineStore('network', { }); }, async saveIpv6AutoConfigState(ipv6AutoConfigState) { - this.ipv6AutoConfigEnabled = ipv6AutoConfigState; + this.setIpv6AutoConfigEnabled(ipv6AutoConfigState); const data = { StatelessAddressAutoConfig: { IPv6AutoConfigEnabled: ipv6AutoConfigState, @@ -285,7 +323,7 @@ export const NetworkStore = defineStore('network', { }) .catch((error) => { console.log(error); - this.ipv6AutoConfigEnabled = !ipv6AutoConfigState; + this.setIpv6AutoConfigEnabled(!ipv6AutoConfigState); throw new Error( i18n.global.t('pageNetwork.toast.errorSaveNetworkSettings', { setting: i18n.global.t('pageNetwork.ipv6AutoConfig'), diff --git a/src/views/Settings/Network/ModalDns.vue b/src/views/Settings/Network/ModalDns.vue index 7f12717307..cc9ac36c6c 100644 --- a/src/views/Settings/Network/ModalDns.vue +++ b/src/views/Settings/Network/ModalDns.vue @@ -1,92 +1,94 @@ - - - - - + + + - - - + + {{ $t('global.form.fieldRequired') }} - + {{ $t('global.form.invalidFormat') }} - - - - - - - - {{ $t('global.action.cancel') }} - - - {{ $t('global.action.add') }} - - - + + + + + + - diff --git a/src/views/Settings/Network/ModalHostname.vue b/src/views/Settings/Network/ModalHostname.vue index 602202b152..a1335d97e8 100644 --- a/src/views/Settings/Network/ModalHostname.vue +++ b/src/views/Settings/Network/ModalHostname.vue @@ -1,123 +1,117 @@ - - - - + + + {{ $t('pageNetwork.hostnameAlert') }} - - - - - - + + + + + - - + + {{ $t('global.form.fieldRequired') }} - + {{ $t('global.form.lengthMustBeBetween', { min: 1, max: 64 }) }} - - - - - - - - {{ $t('global.action.cancel') }} - - - {{ $t('global.action.save') }} - - - + + + + + + - diff --git a/src/views/Settings/Network/ModalIpv4.vue b/src/views/Settings/Network/ModalIpv4.vue index 146ba20035..a73648ec1b 100644 --- a/src/views/Settings/Network/ModalIpv4.vue +++ b/src/views/Settings/Network/ModalIpv4.vue @@ -1,192 +1,205 @@ - - - - - + + + - - - + + {{ $t('global.form.fieldRequired') }} - + {{ $t('global.form.invalidFormat') }} - - - - - + + + + - - - + + {{ $t('global.form.fieldRequired') }} - + {{ $t('global.form.invalidFormat') }} - - - - - - - + + + + + + - - - + + {{ $t('global.form.fieldRequired') }} - + {{ $t('global.form.invalidFormat') }} - - - - - - - - {{ $t('global.action.cancel') }} - - - {{ $t('global.action.add') }} - - - + + + + + + - diff --git a/src/views/Settings/Network/ModalIpv6.vue b/src/views/Settings/Network/ModalIpv6.vue index 27e92276a8..03658d9356 100644 --- a/src/views/Settings/Network/ModalIpv6.vue +++ b/src/views/Settings/Network/ModalIpv6.vue @@ -1,58 +1,60 @@ - - - - - + + + - - - + + {{ $t('global.form.fieldRequired') }} - + {{ $t('global.form.invalidFormat') }} - - - - - + + + + - - - + + {{ $t('global.form.fieldRequired') }} {{ @@ -62,109 +64,110 @@ }) }} - - - - - - - - {{ $t('global.action.cancel') }} - - - {{ $t('global.action.add') }} - - - + + + + + + - diff --git a/src/views/Settings/Network/ModalIpv6StaticDefaultGateway.vue b/src/views/Settings/Network/ModalIpv6StaticDefaultGateway.vue index 019248ba01..e08fb7ee28 100644 --- a/src/views/Settings/Network/ModalIpv6StaticDefaultGateway.vue +++ b/src/views/Settings/Network/ModalIpv6StaticDefaultGateway.vue @@ -1,58 +1,60 @@ - - - - - + + + - - - + + {{ $t('global.form.fieldRequired') }} - + {{ $t('global.form.invalidFormat') }} - - - - - + + + + - - - + + {{ $t('global.form.fieldRequired') }} {{ @@ -62,114 +64,110 @@ }) }} - - - - - - - - {{ $t('global.action.cancel') }} - - - {{ $t('global.action.add') }} - - - + + + + + + - diff --git a/src/views/Settings/Network/Network.vue b/src/views/Settings/Network/Network.vue index 9977f249d8..366a9a4fb2 100644 --- a/src/views/Settings/Network/Network.vue +++ b/src/views/Settings/Network/Network.vue @@ -1,5 +1,5 @@ - + - - - - - + + + + - + {{ $t('global.table.emptyMessage') }} - - - - + + + + - + - diff --git a/src/views/Settings/Network/NetworkGlobalSettings.vue b/src/views/Settings/Network/NetworkGlobalSettings.vue index 05fdf9bea3..bc3096db3a 100644 --- a/src/views/Settings/Network/NetworkGlobalSettings.vue +++ b/src/views/Settings/Network/NetworkGlobalSettings.vue @@ -1,54 +1,48 @@ - - + + {{ $t('pageNetwork.hostname') }} - + - + {{ dataFormatter(hostname) }} - - + + - diff --git a/src/views/Settings/Network/NetworkInterfaceSettings.vue b/src/views/Settings/Network/NetworkInterfaceSettings.vue index 3468972705..0911efe026 100644 --- a/src/views/Settings/Network/NetworkInterfaceSettings.vue +++ b/src/views/Settings/Network/NetworkInterfaceSettings.vue @@ -1,8 +1,8 @@ - - + + {{ $t('pageNetwork.macAddress') }} @@ -11,175 +11,199 @@ {{ dataFormatter(macAddress) }} - - - - + + + + {{ $t('pageNetwork.useDomainName') }} - {{ $t('global.status.enabled') }} {{ $t('global.status.disabled') }} - + - - + + {{ $t('pageNetwork.useDns') }} - {{ $t('global.status.enabled') }} {{ $t('global.status.disabled') }} - + - - + + {{ $t('pageNetwork.useNtp') }} - {{ $t('global.status.enabled') }} {{ $t('global.status.disabled') }} - + - - + + - diff --git a/src/views/Settings/Network/TableDns.vue b/src/views/Settings/Network/TableDns.vue index 87f74e8a90..48bf504413 100644 --- a/src/views/Settings/Network/TableDns.vue +++ b/src/views/Settings/Network/TableDns.vue @@ -1,16 +1,20 @@ - - + + - + {{ $t('pageNetwork.table.addDnsAddress') }} - + - - - - + + + - + diff --git a/src/views/Settings/Network/TableIpv4.vue b/src/views/Settings/Network/TableIpv4.vue index 4f0f2709c3..7308dec9fe 100644 --- a/src/views/Settings/Network/TableIpv4.vue +++ b/src/views/Settings/Network/TableIpv4.vue @@ -1,43 +1,48 @@ - - + + {{ $t('pageNetwork.dhcp') }} - {{ $t('global.status.enabled') }} {{ $t('global.status.disabled') }} - + - - - - - + + + + {{ $t('pageNetwork.table.addIpv4Address') }} - - - - + + + - + + + + {{ modalMessage }} + + - + diff --git a/src/views/Settings/Network/TableIpv6.vue b/src/views/Settings/Network/TableIpv6.vue index c9373d6a82..54482749f3 100644 --- a/src/views/Settings/Network/TableIpv6.vue +++ b/src/views/Settings/Network/TableIpv6.vue @@ -1,67 +1,71 @@ - - + + {{ $t('pageNetwork.dhcp') }} - {{ $t('global.status.enabled') }} {{ $t('global.status.disabled') }} - + - - + + {{ $t('pageNetwork.ipv6AutoConfig') }} - {{ $t('global.status.enabled') }} {{ $t('global.status.disabled') }} - + - + {{ $t('pageNetwork.ipv6DefaultGateway') }} {{ ipv6DefaultGateway }} - - - - + + + {{ $t('pageNetwork.table.addIpv6Address') }} - - - - + + + - + + + + {{ modalMessage }} + + - + diff --git a/src/views/Settings/Network/TableIpv6StaticDefaultGateway.vue b/src/views/Settings/Network/TableIpv6StaticDefaultGateway.vue index 69d8800038..4d865bfa86 100644 --- a/src/views/Settings/Network/TableIpv6StaticDefaultGateway.vue +++ b/src/views/Settings/Network/TableIpv6StaticDefaultGateway.vue @@ -1,21 +1,25 @@ - - - + + {{ $t('pageNetwork.table.addIpv6StaticDefaultGateway') }} - - - - + + + - + + + + {{ modalMessage }} + + - +
+ {{ modalMessage }} +