@@ -4,12 +4,14 @@ import (
4
4
"context"
5
5
"fmt"
6
6
"log"
7
+ "strings"
7
8
8
9
tccommon "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/common"
9
10
10
11
"github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource"
11
12
"github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
12
13
as "github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/as/v20180419"
14
+ sdkErrors "github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common/errors"
13
15
14
16
"github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/internal/helper"
15
17
)
@@ -160,19 +162,35 @@ func resourceTencentCloudAsLifecycleHookCreate(d *schema.ResourceData, meta inte
160
162
request .LifecycleCommand = & lifecycleCommand
161
163
}
162
164
163
- response , err := meta .(tccommon.ProviderMeta ).GetAPIV3Conn ().UseAsClient ().CreateLifecycleHook (request )
165
+ var lifecycleHookId string
166
+ err := resource .Retry (tccommon .ReadRetryTimeout , func () * resource.RetryError {
167
+ response , err := meta .(tccommon.ProviderMeta ).GetAPIV3Conn ().UseAsClient ().CreateLifecycleHook (request )
168
+ if err != nil {
169
+ log .Printf ("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]\n " , logId , request .GetAction (), request .ToJsonString (), err .Error ())
170
+ if e , ok := err .(* sdkErrors.TencentCloudSDKError ); ok {
171
+ if strings .Contains (e .GetCode (), "LimitExceeded.QuotaNotEnough" ) {
172
+ return resource .RetryableError (err )
173
+ }
174
+ }
175
+
176
+ return tccommon .RetryError (err )
177
+ }
178
+
179
+ log .Printf ("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n " , logId , request .GetAction (), request .ToJsonString (), response .ToJsonString ())
180
+ if response == nil || response .Response == nil || response .Response .LifecycleHookId == nil {
181
+ return resource .NonRetryableError (fmt .Errorf ("AS LifecycleHook not exists" ))
182
+ }
183
+
184
+ lifecycleHookId = * response .Response .LifecycleHookId
185
+ return nil
186
+ })
187
+
164
188
if err != nil {
165
- log .Printf ("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]\n " ,
166
- logId , request .GetAction (), request .ToJsonString (), err .Error ())
189
+ log .Printf ("[CRITAL]%s create AS LifecycleHook failed, reason:%s\n " , logId , err .Error ())
167
190
return err
168
191
}
169
- log .Printf ("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n " ,
170
- logId , request .GetAction (), request .ToJsonString (), response .ToJsonString ())
171
192
172
- if response .Response .LifecycleHookId == nil {
173
- return fmt .Errorf ("lifecycle hook id is nil" )
174
- }
175
- d .SetId (* response .Response .LifecycleHookId )
193
+ d .SetId (lifecycleHookId )
176
194
177
195
return resourceTencentCloudAsLifecycleHookRead (d , meta )
178
196
}
0 commit comments