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
4544type 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
5050func NewKubernetesConfig () interface {} {
5151 return & KubernetesConfig {
52- MaxInFlight : 1 ,
52+ DeletionPropagation : metav1 .DeletePropagationBackground ,
53+ MaxInFlight : 1 ,
5354 }
5455}
5556
@@ -86,6 +87,8 @@ func NewKubernetes(
8687type 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