mirror of
https://github.com/yunionio/cloudpods.git
synced 2026-10-16 06:57:44 +08:00
vpcagent: models: sort security group rules
This commit is contained in:
@@ -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
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user