func()

in pkg/controller/sync/sync.go [374:424]


func (s impl) ManagedCertificate(ctx context.Context, id types.Id) error {
	originalMcrt, err := s.managedCertificate.Get(id)
	if errors.IsNotFound(err) {
		entry, err := s.state.Get(id)
		if errors.IsNotFound(err) {
			return nil
		} else if err != nil {
			return err
		}

		klog.Infof(`ManagedCertificate %s already deleted. Deleting its
			SslCertificate %s`, id.String(), entry.SslCertificateName)
		if err = s.deleteSslCertificate(ctx, nil, id, entry.SslCertificateName); err != nil {
			return err
		}

		klog.Infof("Remove entry for ManagedCertificate %s from state", id.String())
		s.state.Delete(ctx, id)
		return nil
	} else if err != nil {
		return err
	}

	klog.Infof("Syncing ManagedCertificate %s", id.String())

	stateEntry, err := s.createStateEntry(ctx, id)
	if err != nil {
		return err
	}

	modifiedMcrt := originalMcrt.DeepCopy()

	sslCert, err := s.createSslCertificate(ctx, stateEntry.SslCertificateName, id, modifiedMcrt)
	if err != nil {
		return err
	}

	if err := certificates.CopyStatus(*sslCert, modifiedMcrt, s.config); err != nil {
		return err
	}

	patchBytes, modified, err := patch.CreateMergePatch(originalMcrt, modifiedMcrt)
	if err != nil {
		return fmt.Errorf("patch.CreateMergePatch(): %w", err)
	}

	if modified {
		err = s.managedCertificate.Patch(ctx, id, patchBytes)
	}
	return err
}