Skip to content

Commit c8c335d

Browse files
authored
Merge pull request #1871 from kube-logging/feat/validate-syslogng-flows
feat: add syslogng flow-output validation
2 parents 9c7483b + 70d4f55 commit c8c335d

File tree

2 files changed

+20
-0
lines changed

2 files changed

+20
-0
lines changed

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

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -56,6 +56,10 @@ type Input struct {
5656
SourcePort int
5757
}
5858

59+
type outputInfo struct {
60+
ref types.NamespacedName
61+
}
62+
5963
type clusterOutputInfo struct {
6064
ref types.NamespacedName
6165
protected bool
@@ -99,7 +103,11 @@ func configRenderer(in Input) (render.Renderer, error) {
99103
}
100104
destinationDefs = append(destinationDefs, renderClusterOutput(co, in.SecretLoaderFactory))
101105
}
106+
outputRefs := make(map[string]outputInfo, len(in.Outputs))
102107
for _, o := range in.Outputs {
108+
outputRefs[o.Name] = outputInfo{
109+
ref: types.NamespacedName{Namespace: o.Namespace, Name: o.Name},
110+
}
103111
destinationDefs = append(destinationDefs, renderOutput(o, in.SecretLoaderFactory))
104112
}
105113

@@ -114,6 +122,9 @@ func configRenderer(in Input) (render.Renderer, error) {
114122
if err := validateClusterOutputs(clusterOutputRefs, client.ObjectKeyFromObject(&f).String(), f.Spec.GlobalOutputRefs, f.Kind); err != nil {
115123
errs = errors.Append(errs, err)
116124
}
125+
if err := validateOutputs(outputRefs, client.ObjectKeyFromObject(&f).String(), f.Spec.LocalOutputRefs); err != nil {
126+
errs = errors.Append(errs, err)
127+
}
117128
logDefs = append(logDefs, renderFlow(in.Name, clusterOutputRefs, sourceName, keyDelim(in.SyslogNGSpec.JSONKeyDelimiter), f, in.SecretLoaderFactory))
118129
}
119130

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

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,15 @@ const (
3535
syslogNGFlowKind = "SyslogNGFlow"
3636
)
3737

38+
func validateOutputs(outputRefs map[string]outputInfo, flow string, localOutputRefs []string) error {
39+
return seqs.SeededReduce(seqs.FromSlice(localOutputRefs), nil, func(err error, ref string) error {
40+
if _, ok := outputRefs[ref]; !ok {
41+
return errors.Append(err, errors.Errorf("output reference %s for flow %s cannot be found", ref, flow))
42+
}
43+
return err
44+
})
45+
}
46+
3847
func validateClusterOutputs(clusterOutputRefs map[string]clusterOutputInfo, flow string, globalOutputRefs []string, flowKind string) error {
3948
return seqs.SeededReduce(seqs.FromSlice(globalOutputRefs), nil, func(err error, ref string) error {
4049
if _, ok := clusterOutputRefs[ref]; !ok {

0 commit comments

Comments
 (0)