@@ -204,15 +204,36 @@ func resourceSecurityFirewallUpdate(d *schema.ResourceData, meta interface{}) er
204
204
}
205
205
206
206
func resourceSecurityFirewallDelete (d * schema.ResourceData , meta interface {}) error {
207
+ var (
208
+ api = meta .(* api.API )
209
+ instanceID = d .Get ("instance_id" ).(int )
210
+ sleep = d .Get ("sleep" ).(int )
211
+ timeout = d .Get ("timeout" ).(int )
212
+ replace = d .Get ("replace" ).(bool )
213
+ )
214
+
207
215
if enableFasterInstanceDestroy == true {
208
216
log .Printf ("[DEBUG] cloudamqp::resource::security_firewall::delete skip calling backend." )
209
217
return nil
210
218
}
211
219
212
- api := meta .(* api.API )
213
- log .Printf ("[DEBUG] cloudamqp::resource::security_firewall::delete instance id: %v" , d .Get ("instance_id" ))
214
- data , err := api .DeleteFirewallSettings (d .Get ("instance_id" ).(int ), d .Get ("sleep" ).(int ), d .Get ("timeout" ).(int ))
215
- d .Set ("rules" , data )
220
+ if replace {
221
+ data , err := api .DeleteFirewallSettings (instanceID , sleep , timeout )
222
+ d .Set ("rules" , data )
223
+ return err
224
+ }
225
+
226
+ var params []map [string ]interface {}
227
+ localFirewalls := d .Get ("rules" ).(* schema.Set ).List ()
228
+ log .Printf ("[DEBUG] Delete firewall rules: %v" , localFirewalls )
229
+ for _ , k := range localFirewalls {
230
+ rule := k .(map [string ]interface {})
231
+ rule ["services" ] = []string {}
232
+ rule ["ports" ] = []int {}
233
+ params = append (params , rule )
234
+ }
235
+ log .Printf ("[DEBUG] Delete firewall params: %v" , params )
236
+ err := api .PatchFirewallSettings (instanceID , params , sleep , timeout )
216
237
return err
217
238
}
218
239
0 commit comments