Skip to content

Commit e61bc58

Browse files
committed
feat: adds kubernetes output support for configurating deletion propagation policy via new deletion_propagation metadata field
1 parent b089060 commit e61bc58

1 file changed

Lines changed: 18 additions & 1 deletion

File tree

output/kubernetes.go

Lines changed: 18 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -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

Comments
 (0)