func()

in pkg/authenticator/target_cluster_client.go [229:266]


func (tcc *targetClusterClient) ApplySecret(ctx context.Context, secret *corev1.Secret) error {
	if tcc.clientConfig == nil {
		tcc.logger.Error(fmt.Errorf("client is not initialized"), "creating secret")
		return fmt.Errorf("client is not initialized")
	}

	restConfig, err := tcc.ToRESTConfig()
	if err != nil {
		tcc.logger.V(6).Error(err, "creating rest config")
		return err
	}

	k8sClient, err := client.New(restConfig, client.Options{})
	if err != nil {
		tcc.logger.V(6).Error(err, "creating k8s client")
		return err
	}

	newSecret := corev1.Secret{
		ObjectMeta: metav1.ObjectMeta{
			Name:      secret.ObjectMeta.Name,
			Namespace: secret.ObjectMeta.Namespace,
		},
		Data: secret.Data,
	}
	err = k8sClient.Create(ctx, &newSecret)
	if err != nil {
		if !apierrors.IsAlreadyExists(err) {
			return fmt.Errorf("create secret for workload cluster %s", err)
		}
		err := k8sClient.Update(ctx, &newSecret)
		if err != nil {
			return fmt.Errorf("update secret for workload cluster %s", err)
		}
	}

	return nil
}