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
}