From 3ee107dd86a467b38c53d3f00ba4a4d4156877be Mon Sep 17 00:00:00 2001 From: SevenEarth <391613297@qq.com> Date: Tue, 25 Nov 2025 11:16:01 +0800 Subject: [PATCH 1/2] add --- .../services/tcr/service_tencentcloud_tcr.go | 55 ++++++++++++++++--- 1 file changed, 46 insertions(+), 9 deletions(-) diff --git a/tencentcloud/services/tcr/service_tencentcloud_tcr.go b/tencentcloud/services/tcr/service_tencentcloud_tcr.go index 1a15c87f2b..23ed112f86 100644 --- a/tencentcloud/services/tcr/service_tencentcloud_tcr.go +++ b/tencentcloud/services/tcr/service_tencentcloud_tcr.go @@ -1742,6 +1742,7 @@ func (me *TCRService) DescribeTcrServiceAccountById(ctx context.Context, registr logId := tccommon.GetLogId(ctx) request := tcr.NewDescribeServiceAccountsRequest() + response := tcr.NewDescribeServiceAccountsResponse() request.RegistryId = ®istryId defer func() { @@ -1750,14 +1751,27 @@ func (me *TCRService) DescribeTcrServiceAccountById(ctx context.Context, registr } }() - ratelimit.Check(request.GetAction()) + err := resource.Retry(tccommon.ReadRetryTimeout, func() *resource.RetryError { + ratelimit.Check(request.GetAction()) + result, e := me.client.UseTCRClient().DescribeServiceAccounts(request) + if e != nil { + return tccommon.RetryError(e) + } else { + log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), result.ToJsonString()) + } + + if result == nil || result.Response == nil || result.Response.ServiceAccounts == nil { + return resource.NonRetryableError(fmt.Errorf("Describe tcr ServiceAccounts failed, Response is nil.")) + } + + response = result + return nil + }) - response, err := me.client.UseTCRClient().DescribeServiceAccounts(request) if err != nil { errRet = err return } - log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), response.ToJsonString()) if len(response.Response.ServiceAccounts) < 1 { return @@ -1790,14 +1804,22 @@ func (me *TCRService) DeleteTcrServiceAccountById(ctx context.Context, registryI } }() - ratelimit.Check(request.GetAction()) + err := resource.Retry(tccommon.WriteRetryTimeout, func() *resource.RetryError { + ratelimit.Check(request.GetAction()) + result, e := me.client.UseTCRClient().DeleteServiceAccount(request) + if e != nil { + return tccommon.RetryError(e) + } else { + log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), result.ToJsonString()) + } + + return nil + }) - response, err := me.client.UseTCRClient().DeleteServiceAccount(request) if err != nil { errRet = err return } - log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), response.ToJsonString()) return } @@ -1806,6 +1828,7 @@ func (me *TCRService) ModifyServiceAccountPassword(ctx context.Context, registry logId := tccommon.GetLogId(ctx) request := tcr.NewModifyServiceAccountPasswordRequest() + response := tcr.NewModifyServiceAccountPasswordResponse() request.RegistryId = ®istryId request.Name = &name request.Random = helper.Bool(false) @@ -1817,17 +1840,31 @@ func (me *TCRService) ModifyServiceAccountPassword(ctx context.Context, registry } }() - ratelimit.Check(request.GetAction()) + err := resource.Retry(tccommon.WriteRetryTimeout, func() *resource.RetryError { + ratelimit.Check(request.GetAction()) + result, e := me.client.UseTCRClient().ModifyServiceAccountPassword(request) + if e != nil { + return tccommon.RetryError(e) + } else { + log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), result.ToJsonString()) + } + + if result == nil || result.Response == nil { + return resource.NonRetryableError(fmt.Errorf("Modify tcr ServiceAccountPassword failed, Response is nil.")) + } + + response = result + return nil + }) - response, err := me.client.UseTCRClient().ModifyServiceAccountPassword(request) if err != nil { errRet = err return } - log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), response.ToJsonString()) if response.Response.Password != nil { passwordResp = *response.Response.Password } + return } From 50ae2d5682fcb4b36443cdb38308acfeb869e48b Mon Sep 17 00:00:00 2001 From: SevenEarth <391613297@qq.com> Date: Tue, 25 Nov 2025 11:18:26 +0800 Subject: [PATCH 2/2] add --- .changelog/3609.txt | 3 +++ 1 file changed, 3 insertions(+) create mode 100644 .changelog/3609.txt diff --git a/.changelog/3609.txt b/.changelog/3609.txt new file mode 100644 index 0000000000..8eceb391c6 --- /dev/null +++ b/.changelog/3609.txt @@ -0,0 +1,3 @@ +```release-note:enhancement +resource/tencentcloud_tcr_service_account: optimiz read function code logic. +``` \ No newline at end of file