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