func()

in pkg/registry/certinjector.go [36:64]


func (ci *CertInjector) UpdateIfNeeded(ctx context.Context, clusterName string) error {
	certContent, err := ci.fetchCertContent(ctx, clusterName)
	if err != nil {
		return fmt.Errorf("fetching CA cert content: %v", err)
	}
	if certContent == nil {
		ci.log.Info("No CA cert content found", "cluster", clusterName)
		return nil
	}

	registryMirrorCred := &corev1.Secret{}
	credSecretName := types.NamespacedName{Name: registryMirrorCredName, Namespace: api.PackageNamespace}
	if err := ci.k8sClient.Get(ctx, credSecretName, registryMirrorCred); err != nil {
		return fmt.Errorf("getting secret %s: %s", credSecretName.String(), err)
	}

	credCertKey := fmt.Sprintf("%s_ca.crt", clusterName)
	if _, ok := registryMirrorCred.Data[credCertKey]; !ok {
		ci.log.Info("Updating registry CA cert", "cluster", clusterName, "secret", registryMirrorCredName)
		registryMirrorCred.Data[credCertKey] = certContent
		if err := ci.k8sClient.Update(ctx, registryMirrorCred, &client.UpdateOptions{}); err != nil {
			return fmt.Errorf("updating secret %s: %s", credSecretName.String(), err)
		}
	} else {
		ci.log.Info("CA Cert already updated", "cluster", clusterName)
	}

	return nil
}