Skip to content

Commit 49c793e

Browse files
committed
feat: adds deletion_propagation field to kubernetes output
1 parent e61bc58 commit 49c793e

1 file changed

Lines changed: 23 additions & 13 deletions

File tree

output/kubernetes.go

Lines changed: 23 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,6 @@ import (
44
"context"
55
"errors"
66
"fmt"
7-
"strings"
87
"sync"
98
"time"
109

@@ -43,13 +42,15 @@ This plugin creates, updates, or deletes kubernetes object.`,
4342

4443
// KubernetesConfig defines runtime configuration for a kubernetes output
4544
type KubernetesConfig struct {
46-
MaxInFlight int `json:"max_in_flight" yaml:"max_in_flight"`
45+
DeletionPropagation metav1.DeletionPropagation `json:"deletion_propagation" yaml:"deletion_propagation"`
46+
MaxInFlight int `json:"max_in_flight" yaml:"max_in_flight"`
4747
}
4848

4949
// NewKubernetesConfig returns a new KubernetesConfig value with sensible defaults
5050
func NewKubernetesConfig() interface{} {
5151
return &KubernetesConfig{
52-
MaxInFlight: 1,
52+
DeletionPropagation: metav1.DeletePropagationBackground,
53+
MaxInFlight: 1,
5354
}
5455
}
5556

@@ -86,6 +87,8 @@ func NewKubernetes(
8687
type Kubernetes struct {
8788
client client.Client
8889

90+
deletionPropagation metav1.DeletionPropagation
91+
8992
log log.Modular
9093
stats metrics.Type
9194

@@ -100,8 +103,14 @@ func NewKubernetesWriter(
100103
stats metrics.Type,
101104
) (*Kubernetes, error) {
102105
k := &Kubernetes{
103-
log: log,
104-
stats: stats,
106+
deletionPropagation: conf.DeletionPropagation,
107+
log: log,
108+
stats: stats,
109+
}
110+
switch k.deletionPropagation {
111+
case metav1.DeletePropagationBackground, metav1.DeletePropagationForeground, metav1.DeletePropagationOrphan:
112+
default:
113+
return nil, fmt.Errorf("invalid deletion propagation policy: %s", k.deletionPropagation)
105114
}
106115
return k, nil
107116
}
@@ -156,15 +165,16 @@ func (k *Kubernetes) WriteWithContext(ctx context.Context, msg types.Message) er
156165
case p.Metadata().Get("deleted") != "":
157166
var opts []client.DeleteOption
158167

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
168+
policy := k.deletionPropagation
169+
if msgPolicy := metav1.DeletionPropagation(p.Metadata().Get("deletion_propagation")); string(msgPolicy) != "" {
170+
switch msgPolicy {
171+
case metav1.DeletePropagationBackground, metav1.DeletePropagationForeground, metav1.DeletePropagationOrphan:
172+
policy = msgPolicy
173+
default:
174+
return fmt.Errorf("invalid deletion propagation policy: %s", msgPolicy)
175+
}
167176
}
177+
168178
opts = append(opts, &client.DeleteOptions{
169179
PropagationPolicy: &policy,
170180
})

0 commit comments

Comments
 (0)