func()

in pkg/controller/sync/sync.go [331:372]


func (s impl) createSslCertificate(ctx context.Context, sslCertificateName string,
	id types.Id, managedCertificate *v1.ManagedCertificate) (*computev1.SslCertificate, error) {

	sslCert, err := s.ssl.Get(sslCertificateName, managedCertificate)
	if err != nil && !errors.IsNotFound(err) {
		return nil, err
	}

	if err == nil { // Exists
		diff := certificates.Diff(*managedCertificate, *sslCert)
		if diff == "" {
			klog.Infof(`SslCertificate: %+v already exists, restoring it if it
				is soft-deleted`, sslCert)
			if err = s.state.SetSoftDeleted(ctx, id, false); err != nil {
				return nil, err
			}
			return sslCert, nil
		}

		klog.Infof(`Certificates out of sync: certificates.Diff(%s, %s): %s,
			ManagedCertificate: %+v, SslCertificate: %+v. Deleting SslCertificate %s
			and recreating it.`,
			id, sslCert.Name, diff, managedCertificate, sslCert, sslCert.Name)

		if err := s.deleteSslCertificate(ctx, managedCertificate, id, sslCertificateName); err != nil {
			return nil, err
		}
	}

	if err = s.state.SetSoftDeleted(ctx, id, false); err != nil {
		return nil, err
	}
	if err = s.ssl.Create(ctx, sslCertificateName, *managedCertificate); err != nil {
		return nil, err
	}
	if err = s.observeSslCertificateCreationLatency(ctx, sslCertificateName,
		id, *managedCertificate); err != nil {
		return nil, err
	}

	return s.ssl.Get(sslCertificateName, managedCertificate)
}