func()

in pkg/multiclusterclient/provider.go [24:49]


func (c *ClientProvider) GetClusterClient(ctx context.Context, secretNamespace, clusterName string, options client.Options) (client.Client, error) {
	if clusterName == "" || clusterName == cdPipeApi.InCluster {
		return c.internalClusterClient, nil
	}

	secret, err := c.getClusterSecret(ctx, clusterName, secretNamespace)
	if err != nil {
		return nil, err
	}

	restConfig, err := ClusterSecretToRestConfig(secret)
	if err != nil {
		return nil, err
	}

	if options.Scheme == nil {
		options.Scheme = c.internalClusterClient.Scheme()
	}

	cl, err := client.New(restConfig, options)
	if err != nil {
		return nil, fmt.Errorf("failed to create client: %w", err)
	}

	return cl, nil
}