@@ -2,6 +2,7 @@ package clb
22
33import  (
44	"context" 
5+ 	"fmt" 
56	"log" 
67
78	tccommon "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/common" 
@@ -58,79 +59,92 @@ func ResourceTencentCloudClbCustomizedConfig() *schema.Resource {
5859
5960func  resourceTencentCloudClbCustomizedConfigCreate (d  * schema.ResourceData , meta  interface {}) error  {
6061	defer  tccommon .LogElapsed ("resource.tencentcloud_clb_customized_config.create" )()
61- 	logId  :=  tccommon .GetLogId (tccommon .ContextNil )
62- 	ctx  :=  context .WithValue (context .TODO (), tccommon .LogIdKey , logId )
62+ 
63+ 	var  (
64+ 		logId     =  tccommon .GetLogId (tccommon .ContextNil )
65+ 		ctx       =  context .WithValue (context .TODO (), tccommon .LogIdKey , logId )
66+ 		request   =  clb .NewSetCustomizedConfigForLoadBalancerRequest ()
67+ 		response  =  clb .NewSetCustomizedConfigForLoadBalancerResponse ()
68+ 	)
6369
6470	configName  :=  d .Get ("config_name" ).(string )
6571	configContent  :=  d .Get ("config_content" ).(string )
66- 
67- 	request  :=  clb .NewSetCustomizedConfigForLoadBalancerRequest ()
6872	request .OperationType  =  helper .String ("ADD" )
6973	request .ConfigName  =  helper .String (configName )
7074	request .ConfigContent  =  helper .String (configContent )
7175
72- 	var  response  * clb.SetCustomizedConfigForLoadBalancerResponse 
7376	err  :=  resource .Retry (tccommon .WriteRetryTimeout , func () * resource.RetryError  {
7477		result , e  :=  meta .(tccommon.ProviderMeta ).GetAPIV3Conn ().UseClbClient ().SetCustomizedConfigForLoadBalancer (request )
7578		if  e  !=  nil  {
7679			return  tccommon .RetryError (e )
7780		} else  {
78- 			log .Printf ("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n " ,
79- 				logId , request .GetAction (), request .ToJsonString (), result .ToJsonString ())
81+ 			log .Printf ("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n " , logId , request .GetAction (), request .ToJsonString (), result .ToJsonString ())
82+ 			if  result  ==  nil  ||  result .Response  ==  nil  ||  result .Response .RequestId  ==  nil  {
83+ 				return  resource .NonRetryableError (fmt .Errorf ("Create CLB Customized Config Failed, Response is nil." ))
84+ 			}
85+ 
8086			requestId  :=  * result .Response .RequestId 
8187			retryErr  :=  waitForTaskFinish (requestId , meta .(tccommon.ProviderMeta ).GetAPIV3Conn ().UseClbClient ())
8288			if  retryErr  !=  nil  {
8389				return  tccommon .RetryError (errors .WithStack (retryErr ))
8490			}
8591		}
92+ 
8693		response  =  result 
8794		return  nil 
8895	})
96+ 
8997	if  err  !=  nil  {
9098		log .Printf ("[CRITAL]%s Create CLB Customized Config Failed, reason:%+v" , logId , err )
9199		return  err 
92100	}
101+ 
102+ 	if  response .Response .ConfigId  ==  nil  {
103+ 		return  fmt .Errorf ("ConfigId is nil." )
104+ 	}
105+ 
93106	d .SetId (* response .Response .ConfigId )
94107
95108	if  v , ok  :=  d .GetOk ("load_balancer_ids" ); ok  {
96109		loadBalancerIds  :=  v .(* schema.Set ).List ()
97- 		clbService  :=  ClbService {
98- 			client : meta .(tccommon.ProviderMeta ).GetAPIV3Conn (),
99- 		}
100- 		err  :=  clbService .BindOrUnBindCustomizedConfigWithLbId (ctx ,
101- 			"BIND" , * response .Response .ConfigId , loadBalancerIds )
110+ 		clbService  :=  ClbService {client : meta .(tccommon.ProviderMeta ).GetAPIV3Conn ()}
111+ 		err  :=  clbService .BindOrUnBindCustomizedConfigWithLbId (ctx , "BIND" , * response .Response .ConfigId , loadBalancerIds )
102112		if  err  !=  nil  {
103113			log .Printf ("[CRITAL]%s Binding LB Customized Config Failed, reason:%+v" , logId , err )
104114			return  err 
105115		}
106116	}
117+ 
107118	return  resourceTencentCloudClbCustomizedConfigRead (d , meta )
108119}
109120
110121func  resourceTencentCloudClbCustomizedConfigRead (d  * schema.ResourceData , meta  interface {}) error  {
111122	defer  tccommon .LogElapsed ("resource.tencentcloud_clb_customized_config.read" )()
112123	defer  tccommon .InconsistentCheck (d , meta )()
113124
114- 	logId  :=  tccommon .GetLogId (tccommon .ContextNil )
115- 	ctx  :=  context .WithValue (context .TODO (), tccommon .LogIdKey , logId )
125+ 	var  (
126+ 		logId       =  tccommon .GetLogId (tccommon .ContextNil )
127+ 		ctx         =  context .WithValue (context .TODO (), tccommon .LogIdKey , logId )
128+ 		clbService  =  ClbService {client : meta .(tccommon.ProviderMeta ).GetAPIV3Conn ()}
129+ 		configId    =  d .Id ()
130+ 	)
116131
117- 	configId  :=  d .Id ()
118- 	clbService  :=  ClbService {
119- 		client : meta .(tccommon.ProviderMeta ).GetAPIV3Conn (),
120- 	}
121132	var  config  * clb.ConfigListItem 
122133	err  :=  resource .Retry (tccommon .ReadRetryTimeout , func () * resource.RetryError  {
123134		result , e  :=  clbService .DescribeLbCustomizedConfigById (ctx , configId )
124135		if  e  !=  nil  {
125136			return  tccommon .RetryError (e )
126137		}
138+ 
127139		config  =  result 
128140		return  nil 
129141	})
142+ 
130143	if  err  !=  nil  {
131144		log .Printf ("[CRITAL]%s read CLB customized config failed, reason:%+v" , logId , err )
132145		return  err 
133146	}
147+ 
134148	if  config  ==  nil  {
135149		d .SetId ("" )
136150		return  nil 
@@ -152,13 +166,16 @@ func resourceTencentCloudClbCustomizedConfigRead(d *schema.ResourceData, meta in
152166			log .Printf ("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n " ,
153167				logId , request .GetAction (), request .ToJsonString (), result .ToJsonString ())
154168		}
169+ 
155170		response  =  result 
156171		return  nil 
157172	})
173+ 
158174	if  assErr  !=  nil  {
159175		log .Printf ("[CRITAL]%s Describe CLB Customized Config Associate List Failed, reason:%+v" , logId , assErr )
160176		return  err 
161177	}
178+ 
162179	_  =  d .Set ("load_balancer_ids" , extractBindClbList (response .Response .BindList ))
163180
164181	return  nil 
@@ -167,93 +184,95 @@ func resourceTencentCloudClbCustomizedConfigRead(d *schema.ResourceData, meta in
167184func  resourceTencentCloudClbCustomizedConfigUpdate (d  * schema.ResourceData , meta  interface {}) error  {
168185	defer  tccommon .LogElapsed ("resource.tencentcloud_clb_customized_config.update" )()
169186
170- 	logId  :=  tccommon .GetLogId (tccommon .ContextNil )
187+ 	var  (
188+ 		logId     =  tccommon .GetLogId (tccommon .ContextNil )
189+ 		configId  =  d .Id ()
190+ 	)
171191
172192	d .Partial (true )
173193
174- 	configId  :=  d .Id ()
175- 	request  :=  clb .NewSetCustomizedConfigForLoadBalancerRequest ()
176- 	request .UconfigId  =  & configId 
177- 	request .OperationType  =  helper .String ("UPDATE" )
178- 
179- 	if  d .HasChange ("config_name" ) {
194+ 	if  d .HasChange ("config_name" ) ||  d .HasChange ("config_content" ) {
195+ 		request  :=  clb .NewSetCustomizedConfigForLoadBalancerRequest ()
196+ 		request .UconfigId  =  & configId 
197+ 		request .OperationType  =  helper .String ("UPDATE" )
180198		configName  :=  d .Get ("config_name" ).(string )
181- 		request .ConfigName  =  & configName 
182- 	}
183- 
184- 	if  d .HasChange ("config_content" ) {
185199		configContent  :=  d .Get ("config_content" ).(string )
200+ 		request .ConfigName  =  & configName 
186201		request .ConfigContent  =  & configContent 
187- 	}
188202
189- 	err  :=  resource .Retry (tccommon .WriteRetryTimeout , func () * resource.RetryError  {
190- 		result , e  :=  meta .(tccommon.ProviderMeta ).GetAPIV3Conn ().UseClbClient ().SetCustomizedConfigForLoadBalancer (request )
191- 		if  e  !=  nil  {
192- 			return  tccommon .RetryError (e )
193- 		} else  {
194- 			log .Printf ("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n " ,
195- 				logId , request .GetAction (), request .ToJsonString (), result .ToJsonString ())
196- 			requestId  :=  * result .Response .RequestId 
197- 			retryErr  :=  waitForTaskFinish (requestId , meta .(tccommon.ProviderMeta ).GetAPIV3Conn ().UseClbClient ())
198- 			if  retryErr  !=  nil  {
199- 				return  tccommon .RetryError (errors .WithStack (retryErr ))
203+ 		err  :=  resource .Retry (tccommon .WriteRetryTimeout , func () * resource.RetryError  {
204+ 			result , e  :=  meta .(tccommon.ProviderMeta ).GetAPIV3Conn ().UseClbClient ().SetCustomizedConfigForLoadBalancer (request )
205+ 			if  e  !=  nil  {
206+ 				return  tccommon .RetryError (e )
207+ 			} else  {
208+ 				log .Printf ("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n " , logId , request .GetAction (), request .ToJsonString (), result .ToJsonString ())
209+ 				if  result  ==  nil  ||  result .Response  ==  nil  ||  result .Response .RequestId  ==  nil  {
210+ 					return  resource .NonRetryableError (fmt .Errorf ("Update CLB Customized Config Failed, Response is nil." ))
211+ 				}
212+ 
213+ 				requestId  :=  * result .Response .RequestId 
214+ 				retryErr  :=  waitForTaskFinish (requestId , meta .(tccommon.ProviderMeta ).GetAPIV3Conn ().UseClbClient ())
215+ 				if  retryErr  !=  nil  {
216+ 					return  tccommon .RetryError (errors .WithStack (retryErr ))
217+ 				}
200218			}
219+ 
220+ 			return  nil 
221+ 		})
222+ 
223+ 		if  err  !=  nil  {
224+ 			log .Printf ("[CRITAL]%s Update CLB Customized Config Failed, reason:%+v" , logId , err )
225+ 			return  err 
201226		}
202- 		return  nil 
203- 	})
204- 	if  err  !=  nil  {
205- 		log .Printf ("[CRITAL]%s Update CLB Customized Config Failed, reason:%+v" , logId , err )
206- 		return  err 
207227	}
208228
209229	if  d .HasChange ("load_balancer_ids" ) {
210230		ctx  :=  context .WithValue (context .TODO (), tccommon .LogIdKey , logId )
211- 		clbService  :=  ClbService {
212- 			client : meta .(tccommon.ProviderMeta ).GetAPIV3Conn (),
213- 		}
231+ 		clbService  :=  ClbService {client : meta .(tccommon.ProviderMeta ).GetAPIV3Conn ()}
214232		old , new  :=  d .GetChange ("load_balancer_ids" )
215233		olds  :=  old .(* schema.Set )
216234		news  :=  new .(* schema.Set )
217235		add  :=  news .Difference (olds ).List ()
218236		remove  :=  olds .Difference (news ).List ()
219237		if  len (remove ) >  0  {
220- 			err  :=  clbService .BindOrUnBindCustomizedConfigWithLbId (ctx ,
221- 				"UNBIND" , configId , remove )
238+ 			err  :=  clbService .BindOrUnBindCustomizedConfigWithLbId (ctx , "UNBIND" , configId , remove )
222239			if  err  !=  nil  {
223240				log .Printf ("[CRITAL]%s UnBinding LB Customized Config Failed, reason:%+v" , logId , err )
224241				return  err 
225242			}
226243		}
244+ 
227245		if  len (add ) >  0  {
228- 			err  :=  clbService .BindOrUnBindCustomizedConfigWithLbId (ctx ,
229- 				"BIND" , configId , add )
246+ 			err  :=  clbService .BindOrUnBindCustomizedConfigWithLbId (ctx , "BIND" , configId , add )
230247			if  err  !=  nil  {
231248				log .Printf ("[CRITAL]%s Binding LB Customized Config Failed, reason:%+v" , logId , err )
232249				return  err 
233250			}
234251		}
235252	}
253+ 
236254	return  nil 
237255}
238256
239257func  resourceTencentCloudClbCustomizedConfigDelete (d  * schema.ResourceData , meta  interface {}) error  {
240258	defer  tccommon .LogElapsed ("resource.tencentcloud_clb_customized_config.delete" )()
241259
242- 	logId  :=  tccommon .GetLogId (tccommon .ContextNil )
243- 	ctx  :=  context .WithValue (context .TODO (), tccommon .LogIdKey , logId )
244- 
245- 	configId  :=  d .Id ()
246- 	clbService  :=  ClbService {
247- 		client : meta .(tccommon.ProviderMeta ).GetAPIV3Conn (),
248- 	}
260+ 	var  (
261+ 		logId       =  tccommon .GetLogId (tccommon .ContextNil )
262+ 		ctx         =  context .WithValue (context .TODO (), tccommon .LogIdKey , logId )
263+ 		clbService  =  ClbService {client : meta .(tccommon.ProviderMeta ).GetAPIV3Conn ()}
264+ 		configId    =  d .Id ()
265+ 	)
249266
250267	err  :=  resource .Retry (tccommon .WriteRetryTimeout , func () * resource.RetryError  {
251268		e  :=  clbService .DeleteLbCustomizedConfigById (ctx , configId )
252269		if  e  !=  nil  {
253270			return  tccommon .RetryError (e )
254271		}
272+ 
255273		return  nil 
256274	})
275+ 
257276	if  err  !=  nil  {
258277		log .Printf ("[CRITAL]%s delete CLB customized config failed, reason:%+v" , logId , err )
259278		return  err 
0 commit comments