summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNikhil Ashoka <a.nikhil@ibm.com>2023-01-04 13:15:20 +0300
committerSandeepa Singh <sandeepa.singh@ibm.com>2023-02-15 08:42:04 +0300
commite8cb2c6a81e8abb75cb63c10c29008d868e7fef2 (patch)
tree02228e6ef0e2c200ec95b19d2a9978f02f66c14f
parentd0b078f692fc02578b0bfbc3868ce81516c71dd3 (diff)
downloadwebui-vue-e8cb2c6a81e8abb75cb63c10c29008d868e7fef2.tar.xz
Added DHCP enable/disable feature
- DHCP toggle for enablement was not present, It is now added in the Networks page. - DHCP when enabled, if there is no address, it picks up an address on its own.When it is disabled, we need to manually configure it. Signed-off-by: Nikhil Ashoka <a.nikhil@ibm.com> Change-Id: I32a9e0df28e6609945f3757a6bd69dc66a86f480
-rw-r--r--src/locales/en-US.json3
-rw-r--r--src/store/modules/Settings/NetworkStore.js27
-rw-r--r--src/views/Settings/Network/TableIpv4.vue65
3 files changed, 95 insertions, 0 deletions
diff --git a/src/locales/en-US.json b/src/locales/en-US.json
index 7b057d39..ca7c4da1 100644
--- a/src/locales/en-US.json
+++ b/src/locales/en-US.json
@@ -703,6 +703,9 @@
"speed": "Speed (mbps)",
"staticDns": "Static DNS",
"modal": {
+ "confirmDisableDhcp": "Are you sure you want to disable DHCP?",
+ "confirmEnableDhcp": "When DHCP is enabled, static IP addresses will not be accessible.",
+ "dhcpConfirmTitle": "%{dhcpState} DHCP",
"editHostnameTitle": "Edit hostname",
"editMacAddressTitle": "Edit MAC address",
"gateway": "Gateway",
diff --git a/src/store/modules/Settings/NetworkStore.js b/src/store/modules/Settings/NetworkStore.js
index 125eca7a..5c78d10a 100644
--- a/src/store/modules/Settings/NetworkStore.js
+++ b/src/store/modules/Settings/NetworkStore.js
@@ -40,6 +40,7 @@ const NetworkStore = {
dhcpAddress: IPv4Addresses.filter(
(ipv4) => ipv4.AddressOrigin === 'DHCP'
),
+ dhcpEnabled: DHCPv4.DHCPEnabled,
hostname: HostName,
macAddress: MACAddress,
linkStatus: LinkStatus,
@@ -87,6 +88,32 @@ const NetworkStore = {
console.log('Network Data:', error);
});
},
+ async saveDhcpEnabledState({ state, dispatch }, dhcpState) {
+ const data = {
+ DHCPv4: {
+ DHCPEnabled: dhcpState,
+ },
+ };
+ return api
+ .patch(
+ `/redfish/v1/Managers/bmc/EthernetInterfaces/${state.selectedInterfaceId}`,
+ data
+ )
+ .then(dispatch('getEthernetData'))
+ .then(() => {
+ return i18n.t('pageNetwork.toast.successSaveNetworkSettings', {
+ setting: i18n.t('pageNetwork.dhcp'),
+ });
+ })
+ .catch((error) => {
+ console.log(error);
+ throw new Error(
+ i18n.t('pageNetwork.toast.errorSaveNetworkSettings', {
+ setting: i18n.t('pageNetwork.dhcp'),
+ })
+ );
+ });
+ },
async saveDomainNameState({ commit, state }, domainState) {
commit('setDomainNameState', domainState);
const data = {
diff --git a/src/views/Settings/Network/TableIpv4.vue b/src/views/Settings/Network/TableIpv4.vue
index 75870031..51f27f8c 100644
--- a/src/views/Settings/Network/TableIpv4.vue
+++ b/src/views/Settings/Network/TableIpv4.vue
@@ -1,5 +1,26 @@
<template>
<page-section :section-title="$t('pageNetwork.ipv4')">
+ <b-row class="mb-4">
+ <b-col lg="2" md="6">
+ <dl>
+ <dt>{{ $t('pageNetwork.dhcp') }}</dt>
+ <dd>
+ <b-form-checkbox
+ id="dhcpSwitch"
+ v-model="dhcpEnabledState"
+ data-test-id="networkSettings-switch-dhcpEnabled"
+ switch
+ @change="changeDhcpEnabledState"
+ >
+ <span v-if="dhcpEnabledState">
+ {{ $t('global.status.enabled') }}
+ </span>
+ <span v-else>{{ $t('global.status.disabled') }}</span>
+ </b-form-checkbox>
+ </dd>
+ </dl>
+ </b-col>
+ </b-row>
<b-row>
<b-col>
<h3 class="h5">
@@ -105,6 +126,19 @@ export default {
},
computed: {
...mapState('network', ['ethernetData']),
+ selectedInterface() {
+ return this.$store.getters['network/selectedInterfaceIndex'];
+ },
+ dhcpEnabledState: {
+ get() {
+ return this.$store.getters['network/globalNetworkSettings'][
+ this.selectedInterface
+ ].dhcpEnabled;
+ },
+ set(newValue) {
+ return newValue;
+ },
+ },
},
watch: {
// Watch for change in tab index
@@ -164,6 +198,37 @@ export default {
initAddIpv4Address() {
this.$bvModal.show('modal-add-ipv4');
},
+ changeDhcpEnabledState(state) {
+ this.$bvModal
+ .msgBoxConfirm(
+ state
+ ? this.$t('pageNetwork.modal.confirmEnableDhcp')
+ : this.$t('pageNetwork.modal.confirmDisableDhcp'),
+ {
+ title: this.$t('pageNetwork.modal.dhcpConfirmTitle', {
+ dhcpState: state
+ ? this.$t('global.action.enable')
+ : this.$t('global.action.disable'),
+ }),
+ okTitle: state
+ ? this.$t('global.action.enable')
+ : this.$t('global.action.disable'),
+ okVariant: 'danger',
+ cancelTitle: this.$t('global.action.cancel'),
+ }
+ )
+ .then((dhcpEnableConfirmed) => {
+ if (dhcpEnableConfirmed) {
+ this.$store
+ .dispatch('network/saveDhcpEnabledState', state)
+ .then((message) => this.successToast(message))
+ .catch(({ message }) => this.errorToast(message));
+ } else {
+ let onDhcpCancel = document.getElementById('dhcpSwitch');
+ onDhcpCancel.checked = !state;
+ }
+ });
+ },
},
};
</script>