summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAlexandr Ilenko <AIlenko@IBS.RU>2022-07-28 15:07:15 +0300
committerAlexandr Ilenko <AIlenko@IBS.RU>2022-08-02 13:08:38 +0300
commite9aee6eb311de6833ebae7fda1bc1d674b0e36e0 (patch)
treed080e7d1860fb88bc9a5b89a542cff5a34e6f2b9
parent72b0bc1e6cbec314f6c6298a61e03b9db343e47e (diff)
downloadwebui-vue-e9aee6eb311de6833ebae7fda1bc1d674b0e36e0.tar.xz
SILABMC-172: Fix: marker deleted static IP address
-rw-r--r--src/store/modules/Settings/NetworkStore.js2
-rw-r--r--src/views/Settings/Network/TableIpv4.vue37
2 files changed, 29 insertions, 10 deletions
diff --git a/src/store/modules/Settings/NetworkStore.js b/src/store/modules/Settings/NetworkStore.js
index 125eca7a..14338e1d 100644
--- a/src/store/modules/Settings/NetworkStore.js
+++ b/src/store/modules/Settings/NetworkStore.js
@@ -213,6 +213,8 @@ const NetworkStore = {
});
},
async editIpv4Address({ dispatch, state }, ipv4TableData) {
+ // perhaps, this method name should include 'static'
+ // perhaps, this method name should not serve 'delete' case
return api
.patch(
`/redfish/v1/Managers/bmc/EthernetInterfaces/${state.selectedInterfaceId}`,
diff --git a/src/views/Settings/Network/TableIpv4.vue b/src/views/Settings/Network/TableIpv4.vue
index 75870031..ddabca01 100644
--- a/src/views/Settings/Network/TableIpv4.vue
+++ b/src/views/Settings/Network/TableIpv4.vue
@@ -137,7 +137,9 @@ export default {
value: 'delete',
title: this.$t('pageNetwork.table.deleteIpv4'),
},
- ],
+ ].filter((action) => {
+ return action.value === 'delete' && ipv4.AddressOrigin === 'Static';
+ }),
};
});
},
@@ -147,17 +149,32 @@ export default {
}
},
deleteIpv4TableRow(index) {
+ const deleteMarker = null;
+ const newIpv4StaticArray = this.form.ipv4TableItems
+ .map((ipv4, idx) => {
+ // address cannot be matched, except by their index
+ if (idx === index) {
+ return deleteMarker;
+ }
+ return ipv4;
+ })
+ .filter((ipv4) => {
+ return ipv4 === deleteMarker || ipv4.AddressOrigin === 'Static';
+ })
+ .map((ipv4) => {
+ if (ipv4 === deleteMarker) {
+ return deleteMarker;
+ }
+ const { Address, SubnetMask, Gateway } = ipv4;
+ return {
+ Address,
+ SubnetMask,
+ Gateway,
+ };
+ });
this.form.ipv4TableItems.splice(index, 1);
- const newIpv4Array = this.form.ipv4TableItems.map((ipv4) => {
- const { Address, SubnetMask, Gateway } = ipv4;
- return {
- Address,
- SubnetMask,
- Gateway,
- };
- });
this.$store
- .dispatch('network/editIpv4Address', newIpv4Array)
+ .dispatch('network/editIpv4Address', newIpv4StaticArray)
.then((message) => this.successToast(message))
.catch(({ message }) => this.errorToast(message));
},