Skip to content

Commit cb0f36b

Browse files
committed
feat: add latest syslog-ng stats syntax by default but do not enforce it if the old syntax is used explicitly
Signed-off-by: Peter Wilcsinszky <[email protected]>
1 parent fb559c0 commit cb0f36b

File tree

7 files changed

+141
-8
lines changed

7 files changed

+141
-8
lines changed

config/crd/bases/logging.banzaicloud.io_loggings.yaml

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13660,6 +13660,13 @@ spec:
1366013660
type: object
1366113661
globalOptions:
1366213662
properties:
13663+
stats:
13664+
properties:
13665+
freq:
13666+
type: integer
13667+
level:
13668+
type: integer
13669+
type: object
1366313670
stats_freq:
1366413671
type: integer
1366513672
stats_level:

e2e/charts/logging-operator/crds/logging.banzaicloud.io_loggings.yaml

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13660,6 +13660,13 @@ spec:
1366013660
type: object
1366113661
globalOptions:
1366213662
properties:
13663+
stats:
13664+
properties:
13665+
freq:
13666+
type: integer
13667+
level:
13668+
type: integer
13669+
type: object
1366313670
stats_freq:
1366413671
type: integer
1366513672
stats_level:

pkg/sdk/logging/api/v1beta1/syslogng_types.go

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -61,6 +61,15 @@ type SyslogNGTLS struct {
6161
}
6262

6363
type GlobalOptions struct {
64+
// deprecated use stats/level from 4.1+
6465
StatsLevel *int `json:"stats_level,omitempty"`
65-
StatsFreq *int `json:"stats_freq,omitempty"`
66+
// deprecated use stats/freq from 4.1+
67+
StatsFreq *int `json:"stats_freq,omitempty"`
68+
// TODO switch to this by default
69+
Stats *Stats `json:"stats,omitempty"`
70+
}
71+
72+
type Stats struct {
73+
Level *int `json:"level,omitempty"`
74+
Freq *int `json:"freq,omitempty"`
6675
}

pkg/sdk/logging/api/v1beta1/zz_generated.deepcopy.go

Lines changed: 30 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

pkg/sdk/logging/model/syslogng/config/config.go

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -65,8 +65,15 @@ func configRenderer(in Input) (render.Renderer, error) {
6565
// TODO: this should happen at the spec level, in something like `SyslogNGSpec.FinalGlobalOptions() GlobalOptions`
6666
if in.Logging.Spec.SyslogNGSpec.Metrics != nil {
6767
setDefault(&in.Logging.Spec.SyslogNGSpec.GlobalOptions, &v1beta1.GlobalOptions{})
68-
setDefault(&in.Logging.Spec.SyslogNGSpec.GlobalOptions.StatsFreq, amp(10))
69-
setDefault(&in.Logging.Spec.SyslogNGSpec.GlobalOptions.StatsLevel, amp(2))
68+
if in.Logging.Spec.SyslogNGSpec.GlobalOptions.StatsFreq != nil ||
69+
in.Logging.Spec.SyslogNGSpec.GlobalOptions.StatsLevel != nil {
70+
setDefault(&in.Logging.Spec.SyslogNGSpec.GlobalOptions.StatsFreq, amp(10))
71+
setDefault(&in.Logging.Spec.SyslogNGSpec.GlobalOptions.StatsLevel, amp(2))
72+
} else {
73+
setDefault(&in.Logging.Spec.SyslogNGSpec.GlobalOptions.Stats, &v1beta1.Stats{})
74+
setDefault(&in.Logging.Spec.SyslogNGSpec.GlobalOptions.Stats.Freq, amp(10))
75+
setDefault(&in.Logging.Spec.SyslogNGSpec.GlobalOptions.Stats.Level, amp(2))
76+
}
7077
}
7178

7279
globalOptions := renderAny(in.Logging.Spec.SyslogNGSpec.GlobalOptions, in.SecretLoaderFactory.SecretLoaderForNamespace(in.Logging.Namespace))

pkg/sdk/logging/model/syslogng/config/config_test.go

Lines changed: 76 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -18,13 +18,14 @@ import (
1818
"strings"
1919
"testing"
2020

21-
"github.com/kube-logging/logging-operator/pkg/sdk/logging/api/v1beta1"
22-
"github.com/kube-logging/logging-operator/pkg/sdk/logging/model/syslogng/filter"
23-
"github.com/kube-logging/logging-operator/pkg/sdk/logging/model/syslogng/output"
2421
"github.com/cisco-open/operator-tools/pkg/secret"
2522
"github.com/stretchr/testify/require"
2623
corev1 "k8s.io/api/core/v1"
2724
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
25+
26+
"github.com/kube-logging/logging-operator/pkg/sdk/logging/api/v1beta1"
27+
"github.com/kube-logging/logging-operator/pkg/sdk/logging/model/syslogng/filter"
28+
"github.com/kube-logging/logging-operator/pkg/sdk/logging/model/syslogng/output"
2829
)
2930

3031
func TestRenderConfigInto(t *testing.T) {
@@ -168,6 +169,78 @@ options {
168169
stats_freq(0);
169170
};
170171
172+
source "main_input" {
173+
channel {
174+
source {
175+
network(flags("no-parse") port(601) transport("tcp"));
176+
};
177+
parser {
178+
json-parser(prefix("json."));
179+
};
180+
};
181+
};
182+
`,
183+
},
184+
"global options default": {
185+
input: Input{
186+
Logging: v1beta1.Logging{
187+
Spec: v1beta1.LoggingSpec{
188+
SyslogNGSpec: &v1beta1.SyslogNGSpec{
189+
Metrics: &v1beta1.Metrics{
190+
Path: "/metrics",
191+
},
192+
GlobalOptions: &v1beta1.GlobalOptions{},
193+
},
194+
},
195+
},
196+
SourcePort: 601,
197+
SecretLoaderFactory: &TestSecretLoaderFactory{},
198+
},
199+
wantOut: `@version: current
200+
201+
@include "scl.conf"
202+
203+
options {
204+
stats(level(2) freq(10));
205+
};
206+
207+
source "main_input" {
208+
channel {
209+
source {
210+
network(flags("no-parse") port(601) transport("tcp"));
211+
};
212+
parser {
213+
json-parser(prefix("json."));
214+
};
215+
};
216+
};
217+
`,
218+
},
219+
"global options_new_stats": {
220+
input: Input{
221+
Logging: v1beta1.Logging{
222+
Spec: v1beta1.LoggingSpec{
223+
SyslogNGSpec: &v1beta1.SyslogNGSpec{
224+
GlobalOptions: &v1beta1.GlobalOptions{
225+
Stats: &v1beta1.Stats{
226+
Level: amp(3),
227+
Freq: amp(0),
228+
},
229+
},
230+
},
231+
},
232+
},
233+
SourcePort: 601,
234+
SecretLoaderFactory: &TestSecretLoaderFactory{},
235+
},
236+
wantOut: `@version: current
237+
238+
@include "scl.conf"
239+
240+
options {
241+
stats(level(3) freq(0));
242+
};
243+
171244
source "main_input" {
172245
channel {
173246
source {

pkg/sdk/static/gen/crds/generated.go

Lines changed: 2 additions & 2 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

0 commit comments

Comments
 (0)