@@ -4,13 +4,15 @@ import (
44 "context"
55 "errors"
66 "fmt"
7+ "strings"
78 "sync"
89 "time"
910
1011 "github.com/Jeffail/benthos/v3/lib/log"
1112 "github.com/Jeffail/benthos/v3/lib/metrics"
1213 "github.com/Jeffail/benthos/v3/lib/output"
1314 "github.com/Jeffail/benthos/v3/lib/types"
15+ metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
1416 "k8s.io/apimachinery/pkg/apis/meta/v1/unstructured"
1517 "sigs.k8s.io/controller-runtime/pkg/client"
1618 "sigs.k8s.io/controller-runtime/pkg/client/config"
@@ -152,7 +154,22 @@ func (k *Kubernetes) WriteWithContext(ctx context.Context, msg types.Message) er
152154
153155 switch {
154156 case p .Metadata ().Get ("deleted" ) != "" :
155- if err := k .client .Delete (ctx , & u ); err != nil {
157+ var opts []client.DeleteOption
158+
159+ var policy metav1.DeletionPropagation
160+ switch strings .ToLower (p .Metadata ().Get ("deletion_propagation" )) {
161+ case "orphan" :
162+ policy = metav1 .DeletePropagationOrphan
163+ case "foreground" :
164+ policy = metav1 .DeletePropagationBackground
165+ default :
166+ policy = metav1 .DeletePropagationBackground
167+ }
168+ opts = append (opts , & client.DeleteOptions {
169+ PropagationPolicy : & policy ,
170+ })
171+
172+ if err := k .client .Delete (ctx , & u , opts ... ); err != nil {
156173 return fmt .Errorf ("error deleting object: %v" , err )
157174 }
158175 case string (u .GetUID ()) != "" :
0 commit comments