From 54b4106d5c4d02bb444bb7341c242f53e029df73 Mon Sep 17 00:00:00 2001 From: zhuyue Date: Fri, 3 Sep 2021 14:50:50 +0800 Subject: [PATCH] fix: Fix manage port security group fix manage port security group Change-Id: Id8a79ef642cb5f81183c080b2288e4224c24109c --- .../actions/ManageSecurityGroup.jsx | 36 +++++++++++++++---- 1 file changed, 29 insertions(+), 7 deletions(-) diff --git a/src/pages/network/containers/VirtualAdapter/actions/ManageSecurityGroup.jsx b/src/pages/network/containers/VirtualAdapter/actions/ManageSecurityGroup.jsx index c907c5b3..22de6396 100644 --- a/src/pages/network/containers/VirtualAdapter/actions/ManageSecurityGroup.jsx +++ b/src/pages/network/containers/VirtualAdapter/actions/ManageSecurityGroup.jsx @@ -35,7 +35,8 @@ export default class ManageSecurityGroup extends ModalAction { static policy = 'update_port:port_security_enabled'; - static allowed = (item) => Promise.resolve(item.port_security_enabled); + static allowed = (item) => + Promise.resolve(item.origin_data.allowed_address_pairs.length === 0); init() { this.securityGroupStore = new SecurityGroupStore(); @@ -61,6 +62,7 @@ export default class ManageSecurityGroup extends ModalAction { const { selectedRowKeys = [] } = sgInitValue || {}; if (selectedRowKeys.length) { return { + port_security_enabled: this.item.port_security_enabled, securityGroup: sgInitValue, }; } @@ -68,7 +70,7 @@ export default class ManageSecurityGroup extends ModalAction { } async getPortDetail() { - const { id, security_groups } = this.item; + const { id, security_groups, port_security_enabled } = this.item; let sgs = security_groups; if (!security_groups) { const detail = await globalVirtualAdapterStore.fetchDetail({ id }); @@ -83,15 +85,24 @@ export default class ManageSecurityGroup extends ModalAction { }; this.setState({ sgInitValue, + port_security_enabled, }); this.updateFormValue('securityGroup', sgInitValue); + this.updateFormValue('port_security_enabled', port_security_enabled); } onSubmit = (values) => { - const { securityGroup: { selectedRowKeys: security_groups = [] } = {} } = - values; + const { + securityGroup: { selectedRowKeys: security_groups = [] } = {}, + port_security_enabled, + } = values; const { id } = this.item; - const reqBody = { port: { security_groups } }; + const reqBody = { + port: { + security_groups: port_security_enabled ? security_groups : [], + port_security_enabled, + }, + }; return this.securityGroupStore.updatePortSecurityGroup({ id, reqBody }); }; @@ -101,8 +112,19 @@ export default class ManageSecurityGroup extends ModalAction { } get formItems() { - const { sgInitValue } = this.state; + const { sgInitValue, port_security_enabled } = this.state; return [ + { + name: 'port_security_enabled', + label: t('Port Security'), + type: 'switch', + onChange: (e) => { + this.setState({ + port_security_enabled: e, + }); + }, + required: true, + }, { name: 'securityGroup', label: t('Security Group'), @@ -113,11 +135,11 @@ export default class ManageSecurityGroup extends ModalAction { backendPageStore: this.securityGroupStore, extraParams: { project_id: this.currentProjectId }, initValue: sgInitValue, - required: true, isMulti: true, filterParams: securityGroupFilter, columns: securityGroupColumns, onRow: () => {}, + hidden: !port_security_enabled, }, ]; }