func()

in pkg/controller/ingress/reconcile/builder/albconfig_manager/model_build_listener.go [26:102]


func (t *defaultModelBuildTask) buildListenerSpec(ctx context.Context, lbID core.StringToken, apiLs *v1.ListenerSpec) (alb.ListenerSpec, error) {
	defaultAction, err := t.buildLsDefaultAction(ctx, apiLs.Port.IntValue())
	if err != nil {
		return alb.ListenerSpec{}, err
	}
	modelLs := alb.ListenerSpec{
		LoadBalancerID: lbID,
	}
	modelLs.DefaultActions = []alb.Action{defaultAction}
	modelLs.ListenerPort = apiLs.Port.IntValue()
	modelLs.ListenerDescription = apiLs.Description
	modelLs.ListenerProtocol = apiLs.Protocol
	modelLs.IdleTimeout = apiLs.IdleTimeout
	modelLs.RequestTimeout = apiLs.RequestTimeout
	modelLs.SecurityPolicyId = apiLs.SecurityPolicyId
	modelLs.LogConfig = alb.LogConfig{
		AccessLogRecordCustomizedHeadersEnabled: apiLs.LogConfig.AccessLogRecordCustomizedHeadersEnabled,
		AccessLogTracingConfig: alb.AccessLogTracingConfig{
			TracingSample:  apiLs.LogConfig.AccessLogTracingConfig.TracingSample,
			TracingType:    apiLs.LogConfig.AccessLogTracingConfig.TracingType,
			TracingEnabled: apiLs.LogConfig.AccessLogTracingConfig.TracingEnabled,
		},
	}
	modelLs.QuicConfig = alb.QuicConfig{
		QuicUpgradeEnabled: apiLs.QuicConfig.QuicUpgradeEnabled,
		QuicListenerId:     apiLs.QuicConfig.QuicListenerId,
	}
	modelLs.XForwardedForConfig = alb.XForwardedForConfig{
		XForwardedForClientCertSubjectDNAlias:      apiLs.XForwardedForConfig.XForwardedForClientCertSubjectDNAlias,
		XForwardedForClientCertSubjectDNEnabled:    apiLs.XForwardedForConfig.XForwardedForClientCertSubjectDNEnabled,
		XForwardedForProtoEnabled:                  apiLs.XForwardedForConfig.XForwardedForProtoEnabled,
		XForwardedForClientCertIssuerDNEnabled:     apiLs.XForwardedForConfig.XForwardedForClientCertIssuerDNEnabled,
		XForwardedForSLBIdEnabled:                  apiLs.XForwardedForConfig.XForwardedForSLBIdEnabled,
		XForwardedForClientSrcPortEnabled:          apiLs.XForwardedForConfig.XForwardedForClientSrcPortEnabled,
		XForwardedForClientCertFingerprintEnabled:  apiLs.XForwardedForConfig.XForwardedForClientCertFingerprintEnabled,
		XForwardedForEnabled:                       apiLs.XForwardedForConfig.XForwardedForEnabled,
		XForwardedForSLBPortEnabled:                apiLs.XForwardedForConfig.XForwardedForSLBPortEnabled,
		XForwardedForClientCertClientVerifyAlias:   apiLs.XForwardedForConfig.XForwardedForClientCertClientVerifyAlias,
		XForwardedForClientCertIssuerDNAlias:       apiLs.XForwardedForConfig.XForwardedForClientCertIssuerDNAlias,
		XForwardedForClientCertFingerprintAlias:    apiLs.XForwardedForConfig.XForwardedForClientCertFingerprintAlias,
		XForwardedForClientCertClientVerifyEnabled: apiLs.XForwardedForConfig.XForwardedForClientCertClientVerifyEnabled,
	}

	if modelLs.ListenerPort == 0 {
		modelLs.ListenerPort = t.defaultListenerPort
	}
	if len(modelLs.ListenerProtocol) == 0 {
		modelLs.ListenerProtocol = t.defaultListenerProtocol
	}
	if modelLs.IdleTimeout == 0 {
		modelLs.IdleTimeout = t.defaultListenerIdleTimeout
	}
	if modelLs.RequestTimeout == 0 {
		modelLs.RequestTimeout = t.defaultListenerRequestTimeout
	}
	if len(modelLs.ListenerDescription) == 0 {
		modelLs.ListenerDescription = fmt.Sprintf("%v-%v", ListenerDescriptionPrefix, modelLs.ListenerPort)
	}
	if apiLs.GzipEnabled == nil {
		modelLs.GzipEnabled = t.defaultListenerGzipEnabled
	}

	if apiLs.Protocol == string(ProtocolHTTPS) {
		modelLs.Certificates = transCertificatesFromAPIToSDK(apiLs.Certificates)
		if len(apiLs.CaCertificates) != 0 {
			modelLs.CaCertificates = transCertificatesFromAPIToSDK(apiLs.CaCertificates)
		}
		if len(modelLs.SecurityPolicyId) == 0 {
			modelLs.SecurityPolicyId = t.defaultListenerSecurityPolicyId
		}
		if apiLs.Http2Enabled == nil {
			modelLs.Http2Enabled = t.defaultListenerHttp2Enabled
		}
	}

	return modelLs, nil
}