From f9cc92a032f02c1a936a4443a42484cda142fc45 Mon Sep 17 00:00:00 2001 From: xusongfu Date: Fri, 30 Sep 2022 14:11:38 +0800 Subject: [PATCH] Fix edit member of lb listener It is forbidden to have the same ip and port when editing a member Closes-Bug: #1991356 Change-Id: I6e867a9ae70a678574914b639fd5db6d9b32a82b --- .../Listener/Detail/Member/Actions/EditMember.jsx | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/src/pages/network/containers/LoadBalancers/Listener/Detail/Member/Actions/EditMember.jsx b/src/pages/network/containers/LoadBalancers/Listener/Detail/Member/Actions/EditMember.jsx index dca5b69e..9e533417 100644 --- a/src/pages/network/containers/LoadBalancers/Listener/Detail/Member/Actions/EditMember.jsx +++ b/src/pages/network/containers/LoadBalancers/Listener/Detail/Member/Actions/EditMember.jsx @@ -43,6 +43,20 @@ export class Edit extends ModalAction { static policy = 'os_load-balancer_api:member:put'; + protocolValidator = (rule, value) => { + const { address, protocol_port } = this.item; + const repeatPort = (globalPoolMemberStore.list.data || []).find( + (member) => + member.address === address && + value === member.protocol_port && + value !== protocol_port + ); + if (repeatPort) { + return Promise.reject(new Error(t('Invalid IP Address and Port'))); + } + return Promise.resolve(); + }; + get formItems() { return [ { @@ -56,6 +70,7 @@ export class Edit extends ModalAction { label: t('Port'), type: 'input-number', required: true, + validator: this.protocolValidator, }, ]; }