in controllers/clustersecret/clustersecret_controller.go [82:133]
func (r *ReconcileClusterSecret) createArgoCDClusterSecret(ctx context.Context, secret *corev1.Secret) error {
log := ctrl.LoggerFrom(ctx)
log.Info("Start creating ArgoCD cluster secret")
restConf, err := multiclusterclient.ClusterSecretToRestConfig(secret)
if err != nil {
return fmt.Errorf("failed to convert cluster secret to rest config: %w", err)
}
argoClusterSecret := &corev1.Secret{
ObjectMeta: metav1.ObjectMeta{
Name: fmt.Sprintf("%s-argocd-cluster", secret.Name),
Namespace: secret.Namespace,
},
}
var res controllerutil.OperationResult
if res, err = controllerutil.CreateOrUpdate(ctx, r.client, argoClusterSecret, func() error {
argoClusterConf := &ClusterConfig{}
argoClusterConf.BearerToken = restConf.BearerToken
argoClusterConf.CAData = restConf.TLSClientConfig.CAData
argoClusterConf.Insecure = restConf.TLSClientConfig.Insecure
var rawConf json.RawMessage
if rawConf, err = json.Marshal(argoClusterConf); err != nil {
return fmt.Errorf("failed to marshal cluster config: %w", err)
}
addClusterLabel(argoClusterSecret)
argoClusterSecret.Data = map[string][]byte{
"name": []byte(secret.Name),
"server": []byte(restConf.Host),
"config": rawConf,
}
if err = controllerutil.SetControllerReference(secret, argoClusterSecret, r.client.Scheme()); err != nil {
return fmt.Errorf("failed to set controller reference: %w", err)
}
return nil
}); err != nil {
return fmt.Errorf("failed to create/update or update ArgoCD cluster secret: %w", err)
}
log.Info(fmt.Sprintf("ArgoCD cluster secret has been %s", res))
return nil
}