From 5f5a0e2fb7ba8b3484d15f8f142c9349923bd8b4 Mon Sep 17 00:00:00 2001 From: TangBin Date: Tue, 13 Nov 2018 20:14:06 +0800 Subject: [PATCH] add more log & fix YunionSecRuleToAws\ --- pkg/util/aws/securitygroup.go | 10 +++++----- pkg/util/aws/utils.go | 10 +++++++++- 2 files changed, 14 insertions(+), 6 deletions(-) diff --git a/pkg/util/aws/securitygroup.go b/pkg/util/aws/securitygroup.go index bade424345..32d69d9355 100644 --- a/pkg/util/aws/securitygroup.go +++ b/pkg/util/aws/securitygroup.go @@ -324,7 +324,7 @@ func (self *SRegion) syncSecgroupRules(secgroupId string, rules []secrules.Secur if cmp == 0 { if secgroup.Permissions[j].Description != rules[i].Description { if err := self.updateSecurityGroupRuleDescription(secgroupId, &rules[i]); err != nil { - log.Errorf("updateSecurityGroupRuleDescription error %v", rules[i]) + log.Errorf("updateSecurityGroupRuleDescription %v error: %s", rules[i], err.Error()) return err } } @@ -332,26 +332,26 @@ func (self *SRegion) syncSecgroupRules(secgroupId string, rules []secrules.Secur j += 1 } else if cmp > 0 { if err := self.delSecurityGroupRule(secgroupId, &secgroup.Permissions[j]); err != nil { - log.Errorf("delSecurityGroupRule error %v", secgroup.Permissions[j]) + log.Errorf("delSecurityGroupRule %v error: %s", secgroup.Permissions[j], err.Error()) return err } j += 1 } else { if err := self.addSecurityGroupRules(secgroupId, &rules[i]); err != nil { - log.Errorf("addSecurityGroupRule error %v", rules[i]) + log.Errorf("addSecurityGroupRule %v error: %s", rules[i], err.Error()) return err } i += 1 } } else if i >= len(rules) { if err := self.delSecurityGroupRule(secgroupId, &secgroup.Permissions[j]); err != nil { - log.Errorf("delSecurityGroupRule error %v", secgroup.Permissions[j]) + log.Errorf("delSecurityGroupRule %v error: %s", secgroup.Permissions[j], err.Error()) return err } j += 1 } else if j >= len(secgroup.Permissions) { if err := self.addSecurityGroupRules(secgroupId, &rules[i]); err != nil { - log.Errorf("addSecurityGroupRule error %v", rules[i]) + log.Errorf("addSecurityGroupRule %v error: %s", rules[i], err.Error()) return err } i += 1 diff --git a/pkg/util/aws/utils.go b/pkg/util/aws/utils.go index 6db4151d9d..6c9d648769 100644 --- a/pkg/util/aws/utils.go +++ b/pkg/util/aws/utils.go @@ -4,6 +4,7 @@ import ( "fmt" "net" "reflect" + "regexp" "strings" "yunion.io/x/jsonutils" @@ -295,6 +296,8 @@ func AwsIpPermissionToYunion(direction secrules.TSecurityRuleDirection, p ec2.Ip return rules, nil } +// YunionSecRuleToAws 不能保证无损转换 +// 规则描述如果包含中文等字符,将被丢弃掉 func YunionSecRuleToAws(rule secrules.SecurityRule) ([]*ec2.IpPermission, error) { if rule.Action == secrules.SecurityRuleDeny { return nil, fmt.Errorf("YunionSecRuleToAws ignored aws not supported deny rule") @@ -304,8 +307,13 @@ func YunionSecRuleToAws(rule secrules.SecurityRule) ([]*ec2.IpPermission, error) if iprange == "" { return nil, fmt.Errorf("YunionSecRuleToAws ignored ipnet should not be empty") } + + description := "" + if match, err := regexp.MatchString("^[\\sa-zA-Z0-9. _:/()#,@\\]\\[+=&;{}!$*-]+$", rule.Description);err == nil && match { + description = rule.Description + } ipranges := []*ec2.IpRange{} - ipranges = append(ipranges, &ec2.IpRange{CidrIp: &iprange, Description: &rule.Description}) + ipranges = append(ipranges, &ec2.IpRange{CidrIp: &iprange, Description: &description}) portranges := yunionPortRangeToAws(rule) protocol := yunionProtocolToAws(rule)