@@ -23,6 +23,7 @@ import (
23
23
"github.com/cisco-open/operator-tools/pkg/merge"
24
24
"github.com/cisco-open/operator-tools/pkg/reconciler"
25
25
util "github.com/cisco-open/operator-tools/pkg/utils"
26
+ "github.com/kube-logging/logging-operator/pkg/resources/kubetool"
26
27
"github.com/kube-logging/logging-operator/pkg/sdk/logging/api/v1beta1"
27
28
appsv1 "k8s.io/api/apps/v1"
28
29
corev1 "k8s.io/api/core/v1"
@@ -73,6 +74,20 @@ func (r *Reconciler) statefulset() (runtime.Object, reconciler.DesiredState, err
73
74
return desired , reconciler .StatePresent , errors .WrapIf (err , "unable to merge overrides to base object" )
74
75
}
75
76
77
+ // HACK: try to _guess_ if user has configured a persistent volume for buffers and move syslog-ng's persist file there
78
+ buffersVolumeName := "buffers"
79
+ if name := r .Logging .Spec .SyslogNGSpec .BufferVolumeMetrics .MountName ; name != "" {
80
+ buffersVolumeName = name
81
+ }
82
+ syslogngContainer := kubetool .FindContainerByName (desired .Spec .Template .Spec .Containers , containerName )
83
+ if mnt := kubetool .FindVolumeMountByName (syslogngContainer .VolumeMounts , buffersVolumeName ); mnt != nil {
84
+ if ! sliceAny (syslogngContainer .Args , func (arg string ) bool { return strings .Contains (arg , "--persist-file" ) }) {
85
+ persistFilePath := filepath .Join (mnt .MountPath , "/syslog-ng.persist" )
86
+ persistFileFlag := fmt .Sprintf ("--persist-file=%q" , persistFilePath )
87
+ syslogngContainer .Args = append (syslogngContainer .Args , persistFileFlag )
88
+ }
89
+ }
90
+
76
91
return desired , reconciler .StatePresent , nil
77
92
}
78
93
@@ -89,7 +104,6 @@ func syslogNGContainer(spec *v1beta1.SyslogNGSpec) corev1.Container {
89
104
Args : []string {
90
105
"--cfgfile=" + configDir + "/" + configKey ,
91
106
"--control=" + socketPath ,
92
- "--persist-file=" + filepath .Join (bufferPath , "/syslog-ng.persist" ),
93
107
"--no-caps" ,
94
108
"-Fe" ,
95
109
},
@@ -359,3 +373,12 @@ func generateConfigReloaderConfig(configDir string) string {
359
373
}
360
374
` , filepath .Join (configDir , "..data" ), socketPath )
361
375
}
376
+
377
+ func sliceAny [S ~ []E , E any ](s S , fn func (E ) bool ) bool {
378
+ for _ , e := range s {
379
+ if fn (e ) {
380
+ return true
381
+ }
382
+ }
383
+ return false
384
+ }
0 commit comments