From 405d61bfbdeba64b9da1f7c77eded91348357cf4 Mon Sep 17 00:00:00 2001 From: Martin Linkhorst Date: Wed, 18 Jan 2023 10:36:19 +0100 Subject: [PATCH] gracefully skip patch if resource doesn't exist --- provisioner/clusterpy.go | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/provisioner/clusterpy.go b/provisioner/clusterpy.go index d1b602b7..095d42da 100644 --- a/provisioner/clusterpy.go +++ b/provisioner/clusterpy.go @@ -1116,7 +1116,7 @@ func performDeletion(ctx context.Context, logger *log.Entry, client dynamic.Inte iface = client.Resource(gvr) } if deletion.Name != "" { - err := overrideDeletionProtection(ctx, deletion.Kind, deletion.Name, iface) + err := overrideDeletionProtection(ctx, logger, deletion.Kind, deletion.Name, iface) if err != nil { return err } @@ -1132,7 +1132,7 @@ func performDeletion(ctx context.Context, logger *log.Entry, client dynamic.Inte } for _, item := range items { - err := overrideDeletionProtection(ctx, deletion.Kind, item.GetName(), iface) + err := overrideDeletionProtection(ctx, logger, deletion.Kind, item.GetName(), iface) if err != nil { return err } @@ -1146,7 +1146,7 @@ func performDeletion(ctx context.Context, logger *log.Entry, client dynamic.Inte return nil } -func overrideDeletionProtection(ctx context.Context, kind, name string, iface dynamic.ResourceInterface) error { +func overrideDeletionProtection(ctx context.Context, logger *log.Entry, kind, name string, iface dynamic.ResourceInterface) error { annotation := "" switch kind { case "Namespace": @@ -1170,6 +1170,10 @@ func overrideDeletionProtection(ctx context.Context, kind, name string, iface dy return err } _, err = iface.Patch(ctx, name, k8stypes.JSONPatchType, payload, metav1.PatchOptions{}) + if apierrors.IsNotFound(err) { + logger.Infof("Skipping patch of %s %s: resource not found", kind, name) + return nil + } if err != nil { return err }