From 8c02f86eec313e5f24bb3fd4b3aa42fdd13be4de Mon Sep 17 00:00:00 2001 From: TangBin Date: Mon, 25 Feb 2019 10:27:30 +0800 Subject: [PATCH] add more log && imcp bugfix --- pkg/util/huawei/client/modules/mod_servers.go | 3 +++ pkg/util/huawei/region.go | 6 +++++- pkg/util/huawei/securitygroup.go | 16 +++++++++++++--- 3 files changed, 21 insertions(+), 4 deletions(-) diff --git a/pkg/util/huawei/client/modules/mod_servers.go b/pkg/util/huawei/client/modules/mod_servers.go index e95cb12832..a1cddb8e40 100644 --- a/pkg/util/huawei/client/modules/mod_servers.go +++ b/pkg/util/huawei/client/modules/mod_servers.go @@ -5,6 +5,7 @@ import ( "fmt" "yunion.io/x/jsonutils" + "yunion.io/x/log" "yunion.io/x/onecloud/pkg/util/huawei/client/auth" "yunion.io/x/onecloud/pkg/util/huawei/client/responses" ) @@ -58,9 +59,11 @@ func (self *SServerManager) AsyncCreate(params jsonutils.JSONObject) (string, er ret, err := self.CreateInContextWithSpec(nil, "", params, "") if err != nil { + log.Debugf("AsyncCreate %s", err) return "", err } + log.Debugf("AsyncCreate result %s", ret.String()) // 按需机器 jobId, err := ret.GetString("job_id") if err == nil { diff --git a/pkg/util/huawei/region.go b/pkg/util/huawei/region.go index 48967db46b..8ce53de831 100644 --- a/pkg/util/huawei/region.go +++ b/pkg/util/huawei/region.go @@ -590,6 +590,11 @@ func (self *SRegion) addSecurityGroupRules(secGrpId string, rule *secrules.Secur protocal = "" } + // imcp协议默认为any + if rule.Protocol == secrules.PROTO_ICMP { + return self.addSecurityGroupRule(secGrpId, direction, "-1", "-1", protocal, rule.IPNet.String()) + } + if len(rule.Ports) > 0 { for _, port := range rule.Ports { portStr := fmt.Sprintf("%d", port) @@ -610,7 +615,6 @@ func (self *SRegion) addSecurityGroupRules(secGrpId string, rule *secrules.Secur return nil } -// todo: icmp协议目前存在差异,华为云能指定icmp code,onecloud不支持 func (self *SRegion) addSecurityGroupRule(secGrpId, direction, portStart, portEnd, protocol, ipNet string) error { params := jsonutils.NewDict() secgroupObj := jsonutils.NewDict() diff --git a/pkg/util/huawei/securitygroup.go b/pkg/util/huawei/securitygroup.go index 96f852a263..63769e5808 100644 --- a/pkg/util/huawei/securitygroup.go +++ b/pkg/util/huawei/securitygroup.go @@ -203,6 +203,16 @@ func (self *SSecurityGroup) GetSecurityRule(ruleId string, withRuleId bool) (sec protocol = remoteRule.Protocol } + var portStart int + var portEnd int + if protocol == secrules.PROTO_ICMP { + portStart = -1 + portEnd = -1 + } else { + portStart = int(remoteRule.PortRangeMin) + portEnd = int(remoteRule.PortRangeMax) + } + ipNet := &net.IPNet{} if len(remoteRule.RemoteIPPrefix) > 0 { _, ipNet, err = net.ParseCIDR(remoteRule.RemoteIPPrefix) @@ -221,15 +231,15 @@ func (self *SSecurityGroup) GetSecurityRule(ruleId string, withRuleId bool) (sec } else { desc = remoteRule.Description } - // todo: icmp 可能不兼容。华为云能指定icmp code,但是onecloud端不支持 + rule := secrules.SecurityRule{ Priority: 1, Action: secrules.SecurityRuleAllow, IPNet: ipNet, Protocol: protocol, Direction: direction, - PortStart: int(remoteRule.PortRangeMin), - PortEnd: int(remoteRule.PortRangeMax), + PortStart: portStart, + PortEnd: portEnd, Ports: nil, Description: desc, }