From cc948a4d548a3868344217ffd0e7de5b3ccae294 Mon Sep 17 00:00:00 2001 From: Qu Xuan Date: Wed, 15 Jul 2020 16:55:17 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20=E9=81=BF=E5=85=8D=E5=8D=8E=E4=B8=BA?= =?UTF-8?q?=E4=BA=91=E5=AE=89=E5=85=A8=E7=BB=84=E8=A7=84=E5=88=99=E5=88=A0?= =?UTF-8?q?=E9=99=A4=E5=A4=B1=E8=B4=A5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- pkg/multicloud/huawei/region.go | 11 +++++++++- pkg/multicloud/huawei/shell/secgroup.go | 28 +++++++++++++++++++++++++ 2 files changed, 38 insertions(+), 1 deletion(-) diff --git a/pkg/multicloud/huawei/region.go b/pkg/multicloud/huawei/region.go index eaaff1af15..6d2e978260 100644 --- a/pkg/multicloud/huawei/region.go +++ b/pkg/multicloud/huawei/region.go @@ -712,7 +712,16 @@ func (self *SRegion) CreateSecurityGroup(vpcId string, name string, desc string) // https://support.huaweicloud.com/api-vpc/zh-cn_topic_0087467071.html func (self *SRegion) delSecurityGroupRule(secGrpRuleId string) error { - return DoDelete(self.ecsClient.SecurityGroupRules.Delete, secGrpRuleId, nil, nil) + _, err := self.ecsClient.SecurityGroupRules.DeleteInContextWithSpec(nil, secGrpRuleId, "", nil, nil, "") + return err +} + +func (self *SRegion) DeleteSecurityGroupRule(ruleId string) error { + return self.delSecurityGroupRule(ruleId) +} + +func (self *SRegion) CreateSecurityGroupRule(secgroupId string, rule cloudprovider.SecurityRule) error { + return self.addSecurityGroupRules(secgroupId, rule) } // https://support.huaweicloud.com/api-vpc/zh-cn_topic_0087451723.html diff --git a/pkg/multicloud/huawei/shell/secgroup.go b/pkg/multicloud/huawei/shell/secgroup.go index 58e5451f8c..bf04d220e3 100644 --- a/pkg/multicloud/huawei/shell/secgroup.go +++ b/pkg/multicloud/huawei/shell/secgroup.go @@ -15,6 +15,10 @@ package shell import ( + "yunion.io/x/pkg/errors" + "yunion.io/x/pkg/util/secrules" + + "yunion.io/x/onecloud/pkg/cloudprovider" "yunion.io/x/onecloud/pkg/multicloud/huawei" "yunion.io/x/onecloud/pkg/util/shellutils" ) @@ -59,4 +63,28 @@ func init() { return nil }) + type SecurityGroupRuleIdOptions struct { + ID string + } + + shellutils.R(&SecurityGroupRuleIdOptions{}, "security-group-rule-delete", "Delete security group rule", func(cli *huawei.SRegion, args *SecurityGroupRuleIdOptions) error { + return cli.DeleteSecurityGroupRule(args.ID) + }) + + type SecurityGroupRuleCreateOptions struct { + SECGROUP_ID string + RULE string + } + + shellutils.R(&SecurityGroupRuleCreateOptions{}, "security-group-rule-create", "Create security group rule", func(cli *huawei.SRegion, args *SecurityGroupRuleCreateOptions) error { + _rule, err := secrules.ParseSecurityRule(args.RULE) + if err != nil { + return errors.Wrapf(err, "invalid rule %s", args.RULE) + } + rule := cloudprovider.SecurityRule{ + SecurityRule: *_rule, + } + return cli.CreateSecurityGroupRule(args.SECGROUP_ID, rule) + }) + }