Skip to content

Commit

Permalink
vpcagent: models: sort security group rules
Browse files Browse the repository at this point in the history
  • Loading branch information
yousong committed May 13, 2020
1 parent 7ba46e9 commit 1abdb4f
Showing 1 changed file with 37 additions and 0 deletions.
37 changes: 37 additions & 0 deletions pkg/vpcagent/models/secgrouprules_sort.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,37 @@
package models

import (
"sort"
)

func (el *Guest) OrderedSecurityGroupRules() []*SecurityGroupRule {
rs := []*SecurityGroupRule{}
for _, secgroup := range el.SecurityGroups {
rs = append(rs, secgroup.securityGroupRules()...)
}
sort.Slice(rs, SecurityGroupRuleLessFunc(rs))
if el.AdminSecurityGroup != nil {
rs = append(rs, el.AdminSecurityGroup.OrderedSecurityGroupRules()...)
}
return rs
}

func (el *SecurityGroup) securityGroupRules() []*SecurityGroupRule {
rs := make([]*SecurityGroupRule, 0, len(el.SecurityGroupRules))
for _, r := range el.SecurityGroupRules {
rs = append(rs, r)
}
return rs
}

func (el *SecurityGroup) OrderedSecurityGroupRules() []*SecurityGroupRule {
rs := el.securityGroupRules()
sort.Slice(rs, SecurityGroupRuleLessFunc(rs))
return rs
}

func SecurityGroupRuleLessFunc(rs []*SecurityGroupRule) func(i, j int) bool {
return func(i, j int) bool {
return rs[i].Priority < rs[i].Priority
}
}

0 comments on commit 1abdb4f

Please sign in to comment.