From 42ea430bbfbdc80414c6b81ce14f0e7570e46b29 Mon Sep 17 00:00:00 2001 From: Szilard Parrag Date: Thu, 18 Apr 2024 18:16:08 +0200 Subject: [PATCH] fixups Signed-off-by: Szilard Parrag --- api/telemetry/v1alpha1/oteloutput_types.go | 2 +- .../otel_col_conf_test_fixtures/complex.yaml | 5 ++++ .../controller/telemetry/otel_conf_gen.go | 27 +++++++++++++++++++ 3 files changed, 33 insertions(+), 1 deletion(-) diff --git a/api/telemetry/v1alpha1/oteloutput_types.go b/api/telemetry/v1alpha1/oteloutput_types.go index f520a27..f431543 100644 --- a/api/telemetry/v1alpha1/oteloutput_types.go +++ b/api/telemetry/v1alpha1/oteloutput_types.go @@ -75,7 +75,7 @@ type TCPClientSettings struct { Endpoint string `json:"endpoint,omitempty" yaml:"endpoint,omitempty"` // Connection Timeout parameter configures `net.Dialer`. - ConnectionTimeout time.Duration `json:"connection_timeout,omitempty" yaml:"connection_timeout, omitempty"` + ConnectionTimeout time.Duration `json:"connection_timeout,omitempty" yaml:"connection_timeout,omitempty"` // TLSSetting struct exposes TLS client configuration. TLSSetting TLSClientSetting `json:"tls,omitempty" yaml:"tls,omitempty"` diff --git a/internal/controller/telemetry/otel_col_conf_test_fixtures/complex.yaml b/internal/controller/telemetry/otel_col_conf_test_fixtures/complex.yaml index c07e29f..5276f62 100644 --- a/internal/controller/telemetry/otel_col_conf_test_fixtures/complex.yaml +++ b/internal/controller/telemetry/otel_col_conf_test_fixtures/complex.yaml @@ -62,6 +62,11 @@ exporters: endpoint: loki.example-tenant-ns.svc.cluster.local:4317 tls: insecure: true + fluentforwardexporter/collector_fluentforward-test-output: + endpoint: fluentforward.example-tenant-ns.svc.cluster.local:8888 + map_metadata: true + tls: + insecure: true otlp/collector_otlp-test-output: endpoint: receiver-collector.example-tenant-ns.svc.cluster.local:4317 tls: diff --git a/internal/controller/telemetry/otel_conf_gen.go b/internal/controller/telemetry/otel_conf_gen.go index 0cbef62..0104767 100644 --- a/internal/controller/telemetry/otel_conf_gen.go +++ b/internal/controller/telemetry/otel_conf_gen.go @@ -108,6 +108,7 @@ func (cfgInput *OtelColConfigInput) generateExporters(ctx context.Context) map[s maps.Copy(exporters, cfgInput.generateOTLPExporters(ctx)) maps.Copy(exporters, cfgInput.generateLokiExporters(ctx)) + maps.Copy(exporters, cfgInput.generateFluentforwardExporters(ctx)) exporters["logging/debug"] = map[string]any{ "verbosity": "detailed", } @@ -162,6 +163,32 @@ func (cfgInput *OtelColConfigInput) generateLokiExporters(ctx context.Context) m return result } +func (cfgInput *OtelColConfigInput) generateFluentforwardExporters(ctx context.Context) map[string]any { + logger := log.FromContext(ctx) + + var result = make(map[string]any) + + for _, output := range cfgInput.Outputs { + if output.Spec.Fluentforward != nil { + + // TODO: add proper error handling + name := fmt.Sprintf("fluentforwardexporter/%s_%s", output.Namespace, output.Name) + fluetForwardMarshaled, err := yaml.Marshal(output.Spec.Fluentforward) + if err != nil { + logger.Error(errors.New("failed to compile config for output"), "failed to compile config for output %q", output.NamespacedName().String()) + } + var fluetForwardValues map[string]any + if err := yaml.Unmarshal(fluetForwardMarshaled, &fluetForwardValues); err != nil { + logger.Error(errors.New("failed to compile config for output"), "failed to compile config for output %q", output.NamespacedName().String()) + } + + result[name] = fluetForwardValues + } + } + + return result +} + func generatePipeline(receivers, processors, exporters []string) Pipeline { var result = Pipeline{}