func NewConfigurationClientManager()

in internal/loader/configuration_client_manager.go [95:143]


func NewConfigurationClientManager(ctx context.Context, provider acpv1.AzureAppConfigurationProvider) (ClientManager, error) {
	manager := &ConfigurationClientManager{
		ReplicaDiscoveryEnabled: provider.Spec.ReplicaDiscoveryEnabled,
		LoadBalancingEnabled:    provider.Spec.LoadBalancingEnabled,
		lastSuccessfulEndpoint:  "",
	}

	var err error
	var staticClient *azappconfig.Client
	if provider.Spec.ConnectionStringReference != nil {
		connectionString, err := getConnectionStringParameter(ctx, types.NamespacedName{Namespace: provider.Namespace, Name: *provider.Spec.ConnectionStringReference})
		if err != nil {
			return nil, fmt.Errorf("fail to retrieve connection string from secret '%s': %s", *provider.Spec.ConnectionStringReference, err.Error())
		}
		if manager.endpoint, err = parseConnectionString(connectionString, EndpointSection); err != nil {
			return nil, err
		}
		if err = verifyEndpointFromConnectionString(manager.endpoint); err != nil {
			return nil, err
		}
		if manager.secret, err = parseConnectionString(connectionString, SecretSection); err != nil {
			return nil, err
		}
		if manager.id, err = parseConnectionString(connectionString, IdSection); err != nil {
			return nil, err
		}
		if staticClient, err = azappconfig.NewClientFromConnectionString(connectionString, clientOptionWithModuleInfo); err != nil {
			return nil, err
		}
	} else {
		if manager.credential, err = CreateTokenCredential(ctx, provider.Spec.Auth, provider.Namespace); err != nil {
			return nil, err
		}
		if staticClient, err = azappconfig.NewClient(*provider.Spec.Endpoint, manager.credential, clientOptionWithModuleInfo); err != nil {
			return nil, err
		}
		manager.endpoint = *provider.Spec.Endpoint
	}

	manager.validDomain = getValidDomain(manager.endpoint)
	manager.StaticClientWrappers = []*ConfigurationClientWrapper{{
		Endpoint:       manager.endpoint,
		Client:         staticClient,
		BackOffEndTime: metav1.Time{},
		FailedAttempts: 0,
	}}

	return manager, nil
}