func()

in pkg/appgw/backendhttpsettings.go [71:110]


func (c *appGwConfigBuilder) getBackendsAndSettingsMap(cbCtx *ConfigBuilderContext) ([]n.ApplicationGatewayBackendHTTPSettings, map[backendIdentifier]*n.ApplicationGatewayBackendHTTPSettings, map[backendIdentifier]serviceBackendPortPair, error) {
	if c.mem.settings != nil && c.mem.settingsByBackend != nil && c.mem.serviceBackendPairsByBackend != nil {
		return *c.mem.settings, *c.mem.settingsByBackend, *c.mem.serviceBackendPairsByBackend, nil
	}

	defaultHTTPSetting := defaultBackendHTTPSettings(c.appGwIdentifier, n.ApplicationGatewayProtocolHTTP)
	serviceBackendPairMap := make(map[backendIdentifier]serviceBackendPortPair)
	backendHTTPSettingsMap := make(map[backendIdentifier]*n.ApplicationGatewayBackendHTTPSettings)
	httpSettingsCollection := make(map[string]n.ApplicationGatewayBackendHTTPSettings)
	httpSettingsCollection[*defaultHTTPSetting.Name] = defaultHTTPSetting
	for backendID := range c.newBackendIdsFiltered(cbCtx) {
		backendPort, err := c.resolveBackendPort(backendID)
		if err != nil {
			c.recorder.Event(backendID.Ingress, v1.EventTypeWarning, events.ReasonPortResolutionError, err.Error())
			klog.Error(err.Error())
		}

		httpSettings := c.generateHTTPSettings(backendID, backendPort, cbCtx)
		klog.Infof("Created backend http settings %s for ingress %s/%s and service %s", *httpSettings.Name, backendID.Ingress.Namespace, backendID.Ingress.Name, backendID.serviceKey())

		// TODO(aksgupta): Only backend port is used in the output; remove service port.
		serviceBackendPairMap[backendID] = serviceBackendPortPair{
			ServicePort: backendPort,
			BackendPort: backendPort,
		}

		httpSettingsCollection[*httpSettings.Name] = httpSettings
		backendHTTPSettingsMap[backendID] = &httpSettings
	}

	httpSettings := make([]n.ApplicationGatewayBackendHTTPSettings, 0, len(httpSettingsCollection))
	for _, backend := range httpSettingsCollection {
		httpSettings = append(httpSettings, backend)
	}

	c.mem.settings = &httpSettings
	c.mem.settingsByBackend = &backendHTTPSettingsMap
	c.mem.serviceBackendPairsByBackend = &serviceBackendPairMap
	return httpSettings, backendHTTPSettingsMap, serviceBackendPairMap, nil
}