Skip to content

Commit a0511ab

Browse files
authored
Make more resource delete operations idempotent (#1919)
1 parent f0c9161 commit a0511ab

13 files changed

+51
-0
lines changed

.changelog/1919.txt

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
```release-note:enhancement
2+
Add additional validation on the delete operation to make it idempotent. That affects the following resources:
3+
- kubernetes_priority_class
4+
- kubernetes_replication_controller
5+
- kubernetes_resource_quota
6+
- kubernetes_role
7+
- kubernetes_role_binding
8+
- kubernetes_secret
9+
- kubernetes_service
10+
- kubernetes_service_account
11+
- kubernetes_stateful_set
12+
- kubernetes_storage_class
13+
- kubernetes_validating_webhook_configuration
14+
- kubernetes_validating_webhook_configuration_v1
15+
```

kubernetes/resource_kubernetes_priority_class.go

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -203,6 +203,9 @@ func resourceKubernetesPriorityClassDelete(ctx context.Context, d *schema.Resour
203203
log.Printf("[INFO] Deleting priority class: %#v", name)
204204
err = conn.SchedulingV1().PriorityClasses().Delete(ctx, name, metav1.DeleteOptions{})
205205
if err != nil {
206+
if statusErr, ok := err.(*errors.StatusError); ok && errors.IsNotFound(statusErr) {
207+
return nil
208+
}
206209
return diag.FromErr(err)
207210
}
208211

kubernetes/resource_kubernetes_replication_controller.go

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -276,6 +276,9 @@ func resourceKubernetesReplicationControllerDelete(ctx context.Context, d *schem
276276

277277
err = conn.CoreV1().ReplicationControllers(namespace).Delete(ctx, name, deleteOptions)
278278
if err != nil {
279+
if statusErr, ok := err.(*errors.StatusError); ok && errors.IsNotFound(statusErr) {
280+
return nil
281+
}
279282
return diag.FromErr(err)
280283
}
281284

kubernetes/resource_kubernetes_resource_quota.go

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -265,6 +265,9 @@ func resourceKubernetesResourceQuotaDelete(ctx context.Context, d *schema.Resour
265265
log.Printf("[INFO] Deleting resource quota: %#v", name)
266266
err = conn.CoreV1().ResourceQuotas(namespace).Delete(ctx, name, metav1.DeleteOptions{})
267267
if err != nil {
268+
if statusErr, ok := err.(*errors.StatusError); ok && errors.IsNotFound(statusErr) {
269+
return nil
270+
}
268271
return diag.FromErr(err)
269272
}
270273

kubernetes/resource_kubernetes_role.go

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -181,6 +181,9 @@ func resourceKubernetesRoleDelete(ctx context.Context, d *schema.ResourceData, m
181181
log.Printf("[INFO] Deleting role: %#v", name)
182182
err = conn.RbacV1().Roles(namespace).Delete(ctx, name, metav1.DeleteOptions{})
183183
if err != nil {
184+
if statusErr, ok := err.(*errors.StatusError); ok && errors.IsNotFound(statusErr) {
185+
return nil
186+
}
184187
return diag.FromErr(err)
185188
}
186189

kubernetes/resource_kubernetes_role_binding.go

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -166,6 +166,9 @@ func resourceKubernetesRoleBindingDelete(ctx context.Context, d *schema.Resource
166166
log.Printf("[INFO] Deleting RoleBinding: %#v", name)
167167
err = conn.RbacV1().RoleBindings(namespace).Delete(ctx, name, metav1.DeleteOptions{})
168168
if err != nil {
169+
if statusErr, ok := err.(*errors.StatusError); ok && errors.IsNotFound(statusErr) {
170+
return nil
171+
}
169172
return diag.FromErr(err)
170173
}
171174
log.Printf("[INFO] RoleBinding %s deleted", name)

kubernetes/resource_kubernetes_secret.go

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -300,6 +300,9 @@ func resourceKubernetesSecretDelete(ctx context.Context, d *schema.ResourceData,
300300
log.Printf("[INFO] Deleting secret: %q", name)
301301
err = conn.CoreV1().Secrets(namespace).Delete(ctx, name, metav1.DeleteOptions{})
302302
if err != nil {
303+
if statusErr, ok := err.(*errors.StatusError); ok && errors.IsNotFound(statusErr) {
304+
return nil
305+
}
303306
return diag.FromErr(err)
304307
}
305308

kubernetes/resource_kubernetes_service.go

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -481,6 +481,9 @@ func resourceKubernetesServiceDelete(ctx context.Context, d *schema.ResourceData
481481
log.Printf("[INFO] Deleting service: %#v", name)
482482
err = conn.CoreV1().Services(namespace).Delete(ctx, name, metav1.DeleteOptions{})
483483
if err != nil {
484+
if statusErr, ok := err.(*errors.StatusError); ok && errors.IsNotFound(statusErr) {
485+
return nil
486+
}
484487
return diag.FromErr(err)
485488
}
486489

kubernetes/resource_kubernetes_service_account.go

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -397,6 +397,9 @@ func resourceKubernetesServiceAccountDelete(ctx context.Context, d *schema.Resou
397397
log.Printf("[INFO] Deleting service account: %#v", name)
398398
err = conn.CoreV1().ServiceAccounts(namespace).Delete(ctx, name, metav1.DeleteOptions{})
399399
if err != nil {
400+
if statusErr, ok := err.(*errors.StatusError); ok && errors.IsNotFound(statusErr) {
401+
return nil
402+
}
400403
return diag.FromErr(err)
401404
}
402405

kubernetes/resource_kubernetes_stateful_set.go

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -239,6 +239,9 @@ func resourceKubernetesStatefulSetDelete(ctx context.Context, d *schema.Resource
239239
log.Printf("[INFO] Deleting StatefulSet: %#v", name)
240240
err = conn.AppsV1().StatefulSets(namespace).Delete(ctx, name, metav1.DeleteOptions{})
241241
if err != nil {
242+
if statusErr, ok := err.(*errors.StatusError); ok && errors.IsNotFound(statusErr) {
243+
return nil
244+
}
242245
return diag.FromErr(err)
243246
}
244247
err = resource.RetryContext(ctx, d.Timeout(schema.TimeoutDelete), func() *resource.RetryError {

0 commit comments

Comments
 (0)