Ignore order when comparing the source tenants of two rule groups

This commit is contained in:
Dimitar Dimitrov 2021-11-26 14:04:46 +01:00
parent 75d3c11278
commit a97576fc00
No known key found for this signature in database
GPG key ID: 4541B04E6C90EBC3

View file

@ -869,18 +869,25 @@ func (g *Group) Equals(ng *Group) bool {
return false return false
} }
if len(g.sourceTenants) != len(ng.sourceTenants) { for i, gr := range g.rules {
return false if gr.String() != ng.rules[i].String() {
}
for i, tenant := range g.sourceTenants {
if ng.sourceTenants[i] != tenant {
return false return false
} }
} }
for i, gr := range g.rules { // compare source tenants ignoring their order
if gr.String() != ng.rules[i].String() { if len(g.sourceTenants) != len(ng.sourceTenants) {
return false
}
thisSourceTenants := make(map[string]struct{}, len(g.sourceTenants))
for _, tenant := range g.sourceTenants {
thisSourceTenants[tenant] = struct{}{}
}
for _, tenant := range ng.sourceTenants {
if _, ok := thisSourceTenants[tenant]; !ok {
return false return false
} }
} }