func MergeListeners()

in pkg/brownfield/listeners.go [57:86]


func MergeListeners(listenerBuckets ...[]n.ApplicationGatewayHTTPListener) []n.ApplicationGatewayHTTPListener {
	uniq := make(map[uniqueListenerConfig]n.ApplicationGatewayHTTPListener)
	for _, bucket := range listenerBuckets {
		for _, listener := range bucket {
			listenerConfig := uniqueListenerConfig{
				Protocol: listener.Protocol,
			}
			if listener.HostName != nil {
				listenerConfig.setHostNames([]string{*listener.HostName})
			}
			if listener.HostNames != nil && len(*listener.HostNames) > 0 {
				listenerConfig.setHostNames(*listener.HostNames)
			}
			if listener.FrontendIPConfiguration != nil && listener.FrontendIPConfiguration.ID != nil {
				listenerConfig.FrontendIPConfiguration = *listener.FrontendIPConfiguration.ID
			}
			if listener.FrontendPort != nil && listener.FrontendPort.ID != nil {
				listenerConfig.FrontendPortID = *listener.FrontendPort.ID
			}
			if _, exists := uniq[listenerConfig]; !exists {
				uniq[listenerConfig] = listener
			}
		}
	}
	var merged []n.ApplicationGatewayHTTPListener
	for _, listener := range uniq {
		merged = append(merged, listener)
	}
	return merged
}