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)
}