func ShareAcesEqual()

in src/terraform/providers/terraform-provider-avere/cifs.go [105:149]


func ShareAcesEqual(a, b map[string]*ShareAce) bool {
	if ShareAcesAreEveryone(a) && ShareAcesAreEveryone(b) {
		return true
	}
	if len(a) != len(b) {
		return false
	}

	bmap := NormalizeShareAces(b)
	amap := NormalizeShareAces(a)

	// cross way check, because of normalization we just need one way equal
	crossWayA := true
	for k, v := range a {
		vb, ok := bmap[k]
		if !ok {
			vb, ok = bmap[removeDomain(k)]
			if !ok {
				crossWayA = false
				break
			}
		}
		if v.Type != vb.Type || v.Permission != vb.Permission {
			crossWayA = false
			break
		}
	}
	crossWayB := true
	for k, v := range b {
		va, ok := amap[k]
		if !ok {
			va, ok = amap[removeDomain(k)]
			if !ok {
				crossWayB = false
				break
			}
		}
		if v.Type != va.Type || v.Permission != va.Permission {
			crossWayB = false
			break
		}
	}

	return crossWayA || crossWayB
}