diff --git a/pkg/core/ssl-applicator/acme-dns01/providers/tencentcloud-eo/internal/lego.go b/pkg/core/ssl-applicator/acme-dns01/providers/tencentcloud-eo/internal/lego.go index 69ad8a80c..6f7addc0f 100644 --- a/pkg/core/ssl-applicator/acme-dns01/providers/tencentcloud-eo/internal/lego.go +++ b/pkg/core/ssl-applicator/acme-dns01/providers/tencentcloud-eo/internal/lego.go @@ -90,7 +90,7 @@ func NewDNSProviderConfig(config *Config) (*DNSProvider, error) { func (d *DNSProvider) Present(domain, token, keyAuth string) error { info := dns01.GetChallengeInfo(domain, keyAuth) - if err := d.addOrUpdateDNSRecord(dns01.UnFqdn(info.EffectiveFQDN), info.Value); err != nil { + if err := d.addDNSRecord(dns01.UnFqdn(info.EffectiveFQDN), info.Value); err != nil { return fmt.Errorf("tencentcloud-eo: %w", err) } @@ -100,7 +100,7 @@ func (d *DNSProvider) Present(domain, token, keyAuth string) error { func (d *DNSProvider) CleanUp(domain, token, keyAuth string) error { info := dns01.GetChallengeInfo(domain, keyAuth) - if err := d.removeDNSRecord(dns01.UnFqdn(info.EffectiveFQDN)); err != nil { + if err := d.removeDNSRecord(dns01.UnFqdn(info.EffectiveFQDN), info.Value); err != nil { return fmt.Errorf("tencentcloud-eo: %w", err) } @@ -111,7 +111,7 @@ func (d *DNSProvider) Timeout() (timeout, interval time.Duration) { return d.config.PropagationTimeout, d.config.PollingInterval } -func (d *DNSProvider) findDNSRecord(effectiveFQDN string) (*teo.DnsRecord, error) { +func (d *DNSProvider) findDNSRecord(effectiveFQDN, value string) (*teo.DnsRecord, error) { pageOffset := 0 pageLimit := 1000 for { @@ -135,7 +135,7 @@ func (d *DNSProvider) findDNSRecord(effectiveFQDN string) (*teo.DnsRecord, error break } else { for _, record := range response.Response.DnsRecords { - if *record.Name == effectiveFQDN { + if *record.Name == effectiveFQDN && *record.Content == value { return record, nil } } @@ -151,8 +151,8 @@ func (d *DNSProvider) findDNSRecord(effectiveFQDN string) (*teo.DnsRecord, error return nil, nil } -func (d *DNSProvider) addOrUpdateDNSRecord(effectiveFQDN, value string) error { - record, err := d.findDNSRecord(effectiveFQDN) +func (d *DNSProvider) addDNSRecord(effectiveFQDN, value string) error { + record, err := d.findDNSRecord(effectiveFQDN, value) if err != nil { return err } @@ -167,15 +167,6 @@ func (d *DNSProvider) addOrUpdateDNSRecord(effectiveFQDN, value string) error { _, err := d.client.CreateDnsRecord(request) return err } else { - record.Content = common.StringPtr(value) - record.TTL = common.Int64Ptr(int64(d.config.TTL)) - request := teo.NewModifyDnsRecordsRequest() - request.ZoneId = common.StringPtr(d.config.ZoneID) - request.DnsRecords = []*teo.DnsRecord{record} - if _, err := d.client.ModifyDnsRecords(request); err != nil { - return err - } - if *record.Status == "disable" { request := teo.NewModifyDnsRecordsStatusRequest() request.ZoneId = common.StringPtr(d.config.ZoneID) @@ -184,13 +175,12 @@ func (d *DNSProvider) addOrUpdateDNSRecord(effectiveFQDN, value string) error { return err } } - return nil } } -func (d *DNSProvider) removeDNSRecord(effectiveFQDN string) error { - record, err := d.findDNSRecord(effectiveFQDN) +func (d *DNSProvider) removeDNSRecord(effectiveFQDN, value string) error { + record, err := d.findDNSRecord(effectiveFQDN, value) if err != nil { return err } diff --git a/pkg/core/ssl-deployer/providers/tencentcloud-clb/tencentcloud_clb.go b/pkg/core/ssl-deployer/providers/tencentcloud-clb/tencentcloud_clb.go index ef50c4582..72baecd9f 100644 --- a/pkg/core/ssl-deployer/providers/tencentcloud-clb/tencentcloud_clb.go +++ b/pkg/core/ssl-deployer/providers/tencentcloud-clb/tencentcloud_clb.go @@ -194,6 +194,9 @@ func (d *SSLDeployerProvider) deployViaSslService(ctx context.Context, cloudCert } if succeededCount+failedCount == totalCount { + if failedCount > 0 { + return fmt.Errorf("deployment job failed (succeeded: %d, failed: %d, total: %d)", succeededCount, failedCount, totalCount) + } break } } diff --git a/pkg/core/ssl-deployer/providers/tencentcloud-cos/tencentcloud_cos.go b/pkg/core/ssl-deployer/providers/tencentcloud-cos/tencentcloud_cos.go index 0e5e5f66b..3be36998e 100644 --- a/pkg/core/ssl-deployer/providers/tencentcloud-cos/tencentcloud_cos.go +++ b/pkg/core/ssl-deployer/providers/tencentcloud-cos/tencentcloud_cos.go @@ -141,6 +141,9 @@ func (d *SSLDeployerProvider) Deploy(ctx context.Context, certPEM string, privke } if succeededCount+failedCount == totalCount { + if failedCount > 0 { + return nil, fmt.Errorf("deployment job failed (succeeded: %d, failed: %d, total: %d)", succeededCount, failedCount, totalCount) + } break } } diff --git a/pkg/core/ssl-deployer/providers/tencentcloud-ssl-deploy/tencentcloud_ssl_deploy.go b/pkg/core/ssl-deployer/providers/tencentcloud-ssl-deploy/tencentcloud_ssl_deploy.go index 5f9229f6b..9b3babe1b 100644 --- a/pkg/core/ssl-deployer/providers/tencentcloud-ssl-deploy/tencentcloud_ssl_deploy.go +++ b/pkg/core/ssl-deployer/providers/tencentcloud-ssl-deploy/tencentcloud_ssl_deploy.go @@ -142,6 +142,9 @@ func (d *SSLDeployerProvider) Deploy(ctx context.Context, certPEM string, privke } if succeededCount+failedCount == totalCount { + if failedCount > 0 { + return nil, fmt.Errorf("deployment job failed (succeeded: %d, failed: %d, total: %d)", succeededCount, failedCount, totalCount) + } break } } diff --git a/pkg/core/ssl-deployer/providers/tencentcloud-ssl-update/tencentcloud_ssl_update.go b/pkg/core/ssl-deployer/providers/tencentcloud-ssl-update/tencentcloud_ssl_update.go index 753e8be48..ddc2d432d 100644 --- a/pkg/core/ssl-deployer/providers/tencentcloud-ssl-update/tencentcloud_ssl_update.go +++ b/pkg/core/ssl-deployer/providers/tencentcloud-ssl-update/tencentcloud_ssl_update.go @@ -130,9 +130,9 @@ func (d *SSLDeployerProvider) executeUpdateCertificateInstance(ctx context.Conte return fmt.Errorf("failed to execute sdk request 'ssl.UpdateCertificateInstance': %w", err) } - if updateCertificateInstanceResp.Response.DeployStatus == nil { + if updateCertificateInstanceResp.Response.DeployStatus == nil || updateCertificateInstanceResp.Response.DeployRecordId == nil { return errors.New("unexpected deployment job status") - } else if *updateCertificateInstanceResp.Response.DeployStatus == 1 { + } else if *updateCertificateInstanceResp.Response.DeployRecordId > 0 { deployRecordId = fmt.Sprintf("%d", *updateCertificateInstanceResp.Response.DeployRecordId) break } @@ -175,6 +175,9 @@ func (d *SSLDeployerProvider) executeUpdateCertificateInstance(ctx context.Conte } if succeededCount+failedCount == totalCount { + if failedCount > 0 { + return fmt.Errorf("deployment job failed (succeeded: %d, failed: %d, total: %d)", succeededCount, failedCount, totalCount) + } break } } @@ -257,6 +260,9 @@ func (d *SSLDeployerProvider) executeUploadUpdateCertificateInstance(ctx context } if succeededCount+failedCount == totalCount { + if failedCount > 0 { + return fmt.Errorf("deployment job failed (succeeded: %d, failed: %d, total: %d)", succeededCount, failedCount, totalCount) + } break } }