diff --git a/pkg/splunkoutputsexporter/config.go b/pkg/splunkoutputsexporter/config.go deleted file mode 100644 index 23e19ef..0000000 --- a/pkg/splunkoutputsexporter/config.go +++ /dev/null @@ -1,12 +0,0 @@ -// Copyright Splunk, Inc. -// SPDX-License-Identifier: Apache-2.0 - -package splunkoutputsexporter - -// Config holds the configuration for the splunk_outputs exporter. -type Config struct { - // BaseDir is the Splunk installation root. outputs.conf is discovered - // across etc/system/default, etc/apps/*, and etc/system/local using - // standard Splunk precedence. Overrides $SPLUNK_HOME when set. - BaseDir string `mapstructure:"base_dir"` -} diff --git a/pkg/splunkoutputsexporter/doc.go b/pkg/splunkoutputsexporter/doc.go deleted file mode 100644 index c088984..0000000 --- a/pkg/splunkoutputsexporter/doc.go +++ /dev/null @@ -1,6 +0,0 @@ -// Copyright Splunk, Inc. -// SPDX-License-Identifier: Apache-2.0 - -// Package splunkoutputsexporter provides an OTel exporter that reads -// outputs.conf and forwards logs to configured output destinations. -package splunkoutputsexporter diff --git a/pkg/splunkoutputsexporter/exporter.go b/pkg/splunkoutputsexporter/exporter.go deleted file mode 100644 index 6dd8808..0000000 --- a/pkg/splunkoutputsexporter/exporter.go +++ /dev/null @@ -1,81 +0,0 @@ -// Copyright Splunk, Inc. -// SPDX-License-Identifier: Apache-2.0 - -package splunkoutputsexporter - -import ( - "context" - "errors" - - "go.opentelemetry.io/collector/component" - "go.opentelemetry.io/collector/consumer" - "go.opentelemetry.io/collector/exporter" - "go.opentelemetry.io/collector/pdata/plog" -) - -var nopInstance = &nopExporter{} - -type nopExporter struct { - component.StartFunc - component.ShutdownFunc -} - -func (nopExporter) Capabilities() consumer.Capabilities { - return consumer.Capabilities{} -} - -func (nopExporter) ConsumeLogs(context.Context, plog.Logs) error { - return nil -} - -type aggregateExporter struct { - exporters []exporter.Logs -} - -func (a aggregateExporter) Start(ctx context.Context, host component.Host) error { - var errs []error - for _, e := range a.exporters { - errs = append(errs, e.Start(ctx, host)) - } - return errors.Join(errs...) -} - -func (a aggregateExporter) Shutdown(ctx context.Context) error { - var errs []error - for _, e := range a.exporters { - errs = append(errs, e.Shutdown(ctx)) - } - return errors.Join(errs...) -} - -func (a aggregateExporter) Capabilities() consumer.Capabilities { - var capabilities consumer.Capabilities - for _, e := range a.exporters { - if e.Capabilities().MutatesData { - capabilities.MutatesData = true - break - } - } - return capabilities -} - -func (a aggregateExporter) ConsumeLogs(ctx context.Context, logs plog.Logs) error { - var errs []error - for _, e := range a.exporters { - errs = append(errs, e.ConsumeLogs(ctx, logs)) - } - return errors.Join(errs...) -} - -func packExporters(exporters []exporter.Logs) exporter.Logs { - switch len(exporters) { - case 0: - return nopInstance - case 1: - return exporters[0] - default: - return aggregateExporter{ - exporters: exporters, - } - } -} diff --git a/pkg/splunkoutputsexporter/factory.go b/pkg/splunkoutputsexporter/factory.go deleted file mode 100644 index 91398ec..0000000 --- a/pkg/splunkoutputsexporter/factory.go +++ /dev/null @@ -1,27 +0,0 @@ -// Copyright Splunk, Inc. -// SPDX-License-Identifier: Apache-2.0 - -package splunkoutputsexporter - -import ( - "go.opentelemetry.io/collector/component" - "go.opentelemetry.io/collector/exporter" -) - -// NewFactory returns an exporter factory for splunk_outputs. -// -// By default, the factory supports tarunner's built-in [httpout] stanza. -// Additional schemes, or overrides for built-in schemes, can be registered with -// WithSubExporter. -func NewFactory(opts ...Option) exporter.Factory { - options := newFactoryOptions(opts...) - return exporter.NewFactory( - component.MustNewType("splunk_outputs"), - createDefaultConfig, - exporter.WithLogs(options.createLogsFunc, component.StabilityLevelDevelopment), - ) -} - -func createDefaultConfig() component.Config { - return Config{} -} diff --git a/pkg/splunkoutputsexporter/factory_test.go b/pkg/splunkoutputsexporter/factory_test.go deleted file mode 100644 index 2c2a72f..0000000 --- a/pkg/splunkoutputsexporter/factory_test.go +++ /dev/null @@ -1,141 +0,0 @@ -// Copyright Splunk, Inc. -// SPDX-License-Identifier: Apache-2.0 - -package splunkoutputsexporter_test - -import ( - "context" - "os" - "path/filepath" - "testing" - - "github.com/stretchr/testify/require" - "go.opentelemetry.io/collector/component" - "go.opentelemetry.io/collector/consumer" - "go.opentelemetry.io/collector/exporter" - "go.opentelemetry.io/collector/pdata/plog" - "go.uber.org/zap" - - "github.com/splunk/tarunner/pkg/splunkoutputsexporter" -) - -func TestWithSubExporterOverridesBuiltInHTTPOut(t *testing.T) { - baseDir := writeTA(t, "[httpout]\nuri = https://example.com/services/collector/event\nhttpEventCollectorToken = token\n") - fake := &fakeSubExporterFactory{scheme: "httpout"} - - factory := splunkoutputsexporter.NewFactory(splunkoutputsexporter.WithSubExporter(fake)) - exp, err := factory.CreateLogs(context.Background(), newExporterSettings(), splunkoutputsexporter.Config{BaseDir: baseDir}) - require.NoError(t, err) - require.NotNil(t, exp) - require.Len(t, fake.requests, 1) - require.Equal(t, baseDir, fake.requests[0].BaseDir) - require.Empty(t, fake.requests[0].Path) - require.Equal(t, "httpout", fake.requests[0].Output.Configuration.Stanza.Name) - require.NotNil(t, fake.requests[0].Output.Configuration.Stanza.Params.Get("httpEventCollectorToken")) - require.Equal(t, "token", fake.requests[0].Output.Configuration.Stanza.Params.Get("httpEventCollectorToken").Value) - require.NotNil(t, fake.requests[0].Output.Configuration.Stanza.Params.Get("uri")) - require.Equal(t, "https://example.com/services/collector/event", fake.requests[0].Output.Configuration.Stanza.Params.Get("uri").Value) -} - -func TestWithSubExporterReadsRegisteredOutputSchemes(t *testing.T) { - baseDir := writeTA(t, "[httpout]\nuri = https://example.com/services/collector/event\nhttpEventCollectorToken = token\n\n[tcpout:primary]\nserver = splunk:9997\n") - httpout := &fakeSubExporterFactory{scheme: "httpout"} - tcpout := &fakeSubExporterFactory{scheme: "tcpout"} - - factory := splunkoutputsexporter.NewFactory( - splunkoutputsexporter.WithSubExporter(httpout), - splunkoutputsexporter.WithSubExporter(tcpout), - ) - exp, err := factory.CreateLogs(context.Background(), newExporterSettings(), splunkoutputsexporter.Config{BaseDir: baseDir}) - require.NoError(t, err) - require.NotNil(t, exp) - require.Len(t, httpout.requests, 1) - require.Len(t, tcpout.requests, 1) - require.Equal(t, "primary", tcpout.requests[0].Path) - require.Equal(t, "tcpout:primary", tcpout.requests[0].Output.Configuration.Stanza.Name) - require.NotNil(t, tcpout.requests[0].Output.Configuration.Stanza.Params.Get("server")) - require.Equal(t, "splunk:9997", tcpout.requests[0].Output.Configuration.Stanza.Params.Get("server").Value) -} - -func TestWithSubExporterRegistersCustomScheme(t *testing.T) { - baseDir := writeTA(t, "[s2s://primary]\nserver = splunk:9997\n") - fake := &fakeSubExporterFactory{scheme: "s2s"} - - factory := splunkoutputsexporter.NewFactory(splunkoutputsexporter.WithSubExporter(fake)) - exp, err := factory.CreateLogs(context.Background(), newExporterSettings(), splunkoutputsexporter.Config{BaseDir: baseDir}) - require.NoError(t, err) - require.NotNil(t, exp) - require.Len(t, fake.requests, 1) - require.Equal(t, "primary", fake.requests[0].Path) - require.Equal(t, "s2s://primary", fake.requests[0].Output.Configuration.Stanza.Name) - require.NotNil(t, fake.requests[0].Output.Configuration.Stanza.Params.Get("server")) - require.Equal(t, "splunk:9997", fake.requests[0].Output.Configuration.Stanza.Params.Get("server").Value) -} - -func TestWithSubExporterDoesNotMatchCaseVariantScheme(t *testing.T) { - baseDir := writeTA(t, "[S2S://primary]\nserver = splunk:9997\n") - fake := &fakeSubExporterFactory{scheme: "s2s"} - - factory := splunkoutputsexporter.NewFactory(splunkoutputsexporter.WithSubExporter(fake)) - exp, err := factory.CreateLogs(context.Background(), newExporterSettings(), splunkoutputsexporter.Config{BaseDir: baseDir}) - require.NoError(t, err) - require.NotNil(t, exp) - require.Empty(t, fake.requests) -} - -func TestWithSubExporterSkipsUnsupportedScheme(t *testing.T) { - baseDir := writeTA(t, "[tcpout:primary]\nserver = splunk:9997\n") - - factory := splunkoutputsexporter.NewFactory() - exp, err := factory.CreateLogs(context.Background(), newExporterSettings(), splunkoutputsexporter.Config{BaseDir: baseDir}) - require.NoError(t, err) - require.NotNil(t, exp) -} - -type fakeSubExporterFactory struct { - scheme string - requests []splunkoutputsexporter.ExporterRequest -} - -func (f *fakeSubExporterFactory) Scheme() string { - return f.scheme -} - -func (f *fakeSubExporterFactory) CreateLogs(_ context.Context, _ exporter.Settings, request splunkoutputsexporter.ExporterRequest) (exporter.Logs, error) { - f.requests = append(f.requests, request) - return fakeLogsExporter{}, nil -} - -type fakeLogsExporter struct{} - -func (fakeLogsExporter) Start(context.Context, component.Host) error { - return nil -} - -func (fakeLogsExporter) Shutdown(context.Context) error { - return nil -} - -func (fakeLogsExporter) Capabilities() consumer.Capabilities { - return consumer.Capabilities{} -} - -func (fakeLogsExporter) ConsumeLogs(context.Context, plog.Logs) error { - return nil -} - -func newExporterSettings() exporter.Settings { - return exporter.Settings{ - ID: component.MustNewID("splunk_outputs"), - TelemetrySettings: component.TelemetrySettings{Logger: zap.NewNop()}, - } -} - -func writeTA(t *testing.T, outputsConf string) string { - t.Helper() - baseDir := t.TempDir() - defaultDir := filepath.Join(baseDir, "etc", "system", "default") - require.NoError(t, os.MkdirAll(defaultDir, 0o755)) - require.NoError(t, os.WriteFile(filepath.Join(defaultDir, "outputs.conf"), []byte(outputsConf), 0o600)) - return baseDir -} diff --git a/pkg/splunkoutputsexporter/go.mod b/pkg/splunkoutputsexporter/go.mod deleted file mode 100644 index 9ef2446..0000000 --- a/pkg/splunkoutputsexporter/go.mod +++ /dev/null @@ -1,113 +0,0 @@ -module github.com/splunk/tarunner/pkg/splunkoutputsexporter - -go 1.26.4 - -require ( - github.com/splunk/tarunner v0.5.1 - github.com/stretchr/testify v1.11.1 - go.opentelemetry.io/collector/component v1.65.0 - go.opentelemetry.io/collector/consumer v1.65.0 - go.opentelemetry.io/collector/exporter v1.65.0 - go.opentelemetry.io/collector/pdata v1.65.0 - go.uber.org/zap v1.28.0 -) - -require ( - github.com/Microsoft/go-winio v0.6.2 // indirect - github.com/bmatcuk/doublestar/v4 v4.10.0 // indirect - github.com/cenkalti/backoff/v4 v4.3.0 // indirect - github.com/cenkalti/backoff/v7 v7.0.0 // indirect - github.com/cespare/xxhash/v2 v2.3.0 // indirect - github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc // indirect - github.com/elastic/lunes v0.2.2 // indirect - github.com/expr-lang/expr v1.17.8 // indirect - github.com/felixge/httpsnoop v1.1.0 // indirect - github.com/foxboron/go-tpm-keyfiles v0.0.0-20260427185012-515ba073c4c1 // indirect - github.com/go-logr/logr v1.4.4 // indirect - github.com/go-logr/stdr v1.2.2 // indirect - github.com/go-viper/mapstructure/v2 v2.5.0 // indirect - github.com/gobwas/glob v0.2.3 // indirect - github.com/goccy/go-json v0.10.6 // indirect - github.com/golang/snappy v1.0.0 // indirect - github.com/google/go-tpm v0.9.9-0.20260124013517-8f8f42cba0de // indirect - github.com/google/pprof v0.0.0-20260709232956-b9395ee17fa0 // indirect - github.com/hashicorp/go-version v1.9.0 // indirect - github.com/hashicorp/golang-lru/v2 v2.0.7 // indirect - github.com/jonboulle/clockwork v0.5.0 // indirect - github.com/jpillora/backoff v1.0.0 // indirect - github.com/json-iterator/go v1.1.12 // indirect - github.com/klauspost/compress v1.19.2 // indirect - github.com/klauspost/cpuid/v2 v2.4.0 // indirect - github.com/knadh/koanf/maps v0.1.3 // indirect - github.com/knadh/koanf/providers/confmap v1.0.1 // indirect - github.com/knadh/koanf/v2 v2.3.6 // indirect - github.com/leodido/go-syslog/v4 v4.6.0 // indirect - github.com/leodido/ragel-machinery v0.0.0-20190525184631-5f46317e436b // indirect - github.com/magefile/mage v1.17.2 // indirect - github.com/mitchellh/copystructure v1.2.0 // indirect - github.com/mitchellh/reflectwalk v1.0.2 // indirect - github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd // indirect - github.com/modern-go/reflect2 v1.0.3-0.20250322232337-35a7c28c31ee // indirect - github.com/open-telemetry/opentelemetry-collector-contrib/exporter/splunkhecexporter v0.159.0 // indirect - github.com/open-telemetry/opentelemetry-collector-contrib/internal/coreinternal v0.159.0 // indirect - github.com/open-telemetry/opentelemetry-collector-contrib/internal/splunk v0.159.0 // indirect - github.com/open-telemetry/opentelemetry-collector-contrib/pkg/batchperresourceattr v0.159.0 // indirect - github.com/open-telemetry/opentelemetry-collector-contrib/pkg/stanza v0.159.0 // indirect - github.com/open-telemetry/opentelemetry-collector-contrib/pkg/translator/pprof v0.159.0 // indirect - github.com/open-telemetry/opentelemetry-collector-contrib/pkg/translator/splunk v0.159.0 // indirect - github.com/pierrec/lz4/v4 v4.1.28 // indirect - github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 // indirect - github.com/rs/cors v1.11.1 // indirect - github.com/valyala/fastjson v1.6.10 // indirect - github.com/zeebo/xxh3 v1.1.0 // indirect - go.opentelemetry.io/auto/sdk v1.2.1 // indirect - go.opentelemetry.io/collector/client v1.65.0 // indirect - go.opentelemetry.io/collector/config/configauth v1.65.0 // indirect - go.opentelemetry.io/collector/config/configcompression v1.65.0 // indirect - go.opentelemetry.io/collector/config/confighttp v0.159.0 // indirect - go.opentelemetry.io/collector/config/configmiddleware v1.65.0 // indirect - go.opentelemetry.io/collector/config/confignet v1.65.0 // indirect - go.opentelemetry.io/collector/config/configopaque v1.65.0 // indirect - go.opentelemetry.io/collector/config/configoptional v1.65.0 // indirect - go.opentelemetry.io/collector/config/configretry v1.65.0 // indirect - go.opentelemetry.io/collector/config/configtls v1.65.0 // indirect - go.opentelemetry.io/collector/confmap v1.65.0 // indirect - go.opentelemetry.io/collector/consumer/consumererror v0.159.0 // indirect - go.opentelemetry.io/collector/consumer/consumererror/xconsumererror v0.159.0 // indirect - go.opentelemetry.io/collector/consumer/consumertest v0.159.0 // indirect - go.opentelemetry.io/collector/consumer/xconsumer v0.159.0 // indirect - go.opentelemetry.io/collector/exporter/exporterhelper v0.159.0 // indirect - go.opentelemetry.io/collector/exporter/exporterhelper/xexporterhelper v0.159.0 // indirect - go.opentelemetry.io/collector/exporter/xexporter v0.159.0 // indirect - go.opentelemetry.io/collector/extension v1.65.0 // indirect - go.opentelemetry.io/collector/extension/extensionauth v1.65.0 // indirect - go.opentelemetry.io/collector/extension/extensionmiddleware v0.159.0 // indirect - go.opentelemetry.io/collector/extension/xextension v0.159.0 // indirect - go.opentelemetry.io/collector/featuregate v1.65.0 // indirect - go.opentelemetry.io/collector/internal/componentalias v0.159.0 // indirect - go.opentelemetry.io/collector/pdata/pprofile v0.159.0 // indirect - go.opentelemetry.io/collector/pdata/xpdata v0.159.0 // indirect - go.opentelemetry.io/collector/pipeline v1.65.0 // indirect - go.opentelemetry.io/collector/pipeline/xpipeline v0.159.0 // indirect - go.opentelemetry.io/collector/receiver v1.65.0 // indirect - go.opentelemetry.io/collector/receiver/receiverhelper v0.159.0 // indirect - go.opentelemetry.io/collector/receiver/xreceiver v0.159.0 // indirect - go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.70.0 // indirect - go.opentelemetry.io/otel v1.45.0 // indirect - go.opentelemetry.io/otel/metric v1.45.0 // indirect - go.opentelemetry.io/otel/trace v1.45.0 // indirect - go.uber.org/multierr v1.11.0 // indirect - go.yaml.in/yaml/v3 v3.0.5 // indirect - golang.org/x/crypto v0.54.0 // indirect - golang.org/x/net v0.57.0 // indirect - golang.org/x/sys v0.47.0 // indirect - golang.org/x/text v0.40.0 // indirect - gonum.org/v1/gonum v0.17.0 // indirect - google.golang.org/genproto/googleapis/rpc v0.0.0-20260803160001-6ac0973c030d // indirect - google.golang.org/grpc v1.83.0 // indirect - google.golang.org/protobuf v1.36.12 // indirect - gopkg.in/ini.v1 v1.67.3 // indirect - gopkg.in/yaml.v3 v3.0.1 // indirect -) - -replace github.com/splunk/tarunner => ../../ diff --git a/pkg/splunkoutputsexporter/go.sum b/pkg/splunkoutputsexporter/go.sum deleted file mode 100644 index 050f63a..0000000 --- a/pkg/splunkoutputsexporter/go.sum +++ /dev/null @@ -1,351 +0,0 @@ -dario.cat/mergo v1.0.2 h1:85+piFYR1tMbRrLcDwR18y4UKJ3aH1Tbzi24VRW1TK8= -dario.cat/mergo v1.0.2/go.mod h1:E/hbnu0NxMFBjpMIE34DRGLWqDy0g5FuKDhCb31ngxA= -github.com/Azure/go-ansiterm v0.0.0-20250102033503-faa5f7b0171c h1:udKWzYgxTojEKWjV8V+WSxDXJ4NFATAsZjh8iIbsQIg= -github.com/Azure/go-ansiterm v0.0.0-20250102033503-faa5f7b0171c/go.mod h1:xomTg63KZ2rFqZQzSB4Vz2SUXa1BpHTVz9L5PTmPC4E= -github.com/Microsoft/go-winio v0.6.2 h1:F2VQgta7ecxGYO8k3ZZz3RS8fVIXVxONVUPlNERoyfY= -github.com/Microsoft/go-winio v0.6.2/go.mod h1:yd8OoFMLzJbo9gZq8j5qaps8bJ9aShtEA8Ipt1oGCvU= -github.com/bmatcuk/doublestar/v4 v4.10.0 h1:zU9WiOla1YA122oLM6i4EXvGW62DvKZVxIe6TYWexEs= -github.com/bmatcuk/doublestar/v4 v4.10.0/go.mod h1:xBQ8jztBU6kakFMg+8WGxn0c6z1fTSPVIjEY1Wr7jzc= -github.com/cenkalti/backoff/v4 v4.3.0 h1:MyRJ/UdXutAwSAT+s3wNd7MfTIcy71VQueUuFK343L8= -github.com/cenkalti/backoff/v4 v4.3.0/go.mod h1:Y3VNntkOUPxTVeUxJ/G5vcM//AlwfmyYozVcomhLiZE= -github.com/cenkalti/backoff/v5 v5.0.3 h1:ZN+IMa753KfX5hd8vVaMixjnqRZ3y8CuJKRKj1xcsSM= -github.com/cenkalti/backoff/v5 v5.0.3/go.mod h1:rkhZdG3JZukswDf7f0cwqPNk4K0sa+F97BxZthm/crw= -github.com/cenkalti/backoff/v7 v7.0.0 h1:ZP+QAaaOnVUHo+ufFpZ835hbT3x2fy+h2lecVEosZ6A= -github.com/cenkalti/backoff/v7 v7.0.0/go.mod h1:qcKBGwsu4hpxHtQ8tWYsQ+ifzx2+sS+Xx/3jfe30lI8= -github.com/cespare/xxhash/v2 v2.3.0 h1:UL815xU9SqsFlibzuggzjXhog7bL6oX9BbNZnL2UFvs= -github.com/cespare/xxhash/v2 v2.3.0/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs= -github.com/containerd/errdefs v1.0.0 h1:tg5yIfIlQIrxYtu9ajqY42W3lpS19XqdxRQeEwYG8PI= -github.com/containerd/errdefs v1.0.0/go.mod h1:+YBYIdtsnF4Iw6nWZhJcqGSg/dwvV7tyJ/kCkyJ2k+M= -github.com/containerd/errdefs/pkg v0.3.0 h1:9IKJ06FvyNlexW690DXuQNx2KA2cUJXx151Xdx3ZPPE= -github.com/containerd/errdefs/pkg v0.3.0/go.mod h1:NJw6s9HwNuRhnjJhM7pylWwMyAkmCQvQ4GpJHEqRLVk= -github.com/containerd/log v0.1.0 h1:TCJt7ioM2cr/tfR8GPbGf9/VRAX8D2B4PjzCpfX540I= -github.com/containerd/log v0.1.0/go.mod h1:VRRf09a7mHDIRezVKTRCrOq78v577GXq3bSa3EhrzVo= -github.com/containerd/platforms v0.2.1 h1:zvwtM3rz2YHPQsF2CHYM8+KtB5dvhISiXh5ZpSBQv6A= -github.com/containerd/platforms v0.2.1/go.mod h1:XHCb+2/hzowdiut9rkudds9bE5yJ7npe7dG/wG+uFPw= -github.com/cpuguy83/dockercfg v0.3.2 h1:DlJTyZGBDlXqUZ2Dk2Q3xHs/FtnooJJVaad2S9GKorA= -github.com/cpuguy83/dockercfg v0.3.2/go.mod h1:sugsbF4//dDlL/i+S+rtpIWp+5h0BHJHfjj5/jFyUJc= -github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= -github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= -github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc h1:U9qPSI2PIWSS1VwoXQT9A3Wy9MM3WgvqSxFWenqJduM= -github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= -github.com/distribution/reference v0.6.0 h1:0IXCQ5g4/QMHHkarYzh5l+u8T3t73zM5QvfrDyIgxBk= -github.com/distribution/reference v0.6.0/go.mod h1:BbU0aIcezP1/5jX/8MP0YiH4SdvB5Y4f/wlDRiLyi3E= -github.com/docker/go-connections v0.7.0 h1:6SsRfJddP22WMrCkj19x9WKjEDTB+ahsdiGYf0mN39c= -github.com/docker/go-connections v0.7.0/go.mod h1:no1qkHdjq7kLMGUXYAduOhYPSJxxvgWBh7ogVvptn3Q= -github.com/docker/go-units v0.5.0 h1:69rxXcBk27SvSaaxTtLh/8llcHD8vYHT7WSdRZ/jvr4= -github.com/docker/go-units v0.5.0/go.mod h1:fgPhTUdO+D/Jk86RDLlptpiXQzgHJF7gydDDbaIK4Dk= -github.com/ebitengine/purego v0.10.1 h1:dewVBCBT2GaMu1SrNTYxQhgQBethzfhiwvZiLGP/qyY= -github.com/ebitengine/purego v0.10.1/go.mod h1:iIjxzd6CiRiOG0UyXP+V1+jWqUXVjPKLAI0mRfJZTmQ= -github.com/elastic/lunes v0.2.2 h1:dZFEaebNg9l+mzvOQN6Nd/c9y6y8rUe3tBWsTgvM08U= -github.com/elastic/lunes v0.2.2/go.mod h1:u3W/BdONWTrh0JjNZ21C907dDc+cUZttZrGa625nf2k= -github.com/expr-lang/expr v1.17.8 h1:W1loDTT+0PQf5YteHSTpju2qfUfNoBt4yw9+wOEU9VM= -github.com/expr-lang/expr v1.17.8/go.mod h1:8/vRC7+7HBzESEqt5kKpYXxrxkr31SaO8r40VO/1IT4= -github.com/felixge/httpsnoop v1.1.0 h1:3YtUj32ZZkqZtt3sZZsClsymw/QDuVfpNhoA31zeORc= -github.com/felixge/httpsnoop v1.1.0/go.mod h1:Zqxgdd+1Rkcz8euOqdr7lqgCRJztwr5hp9vDSi5UZCE= -github.com/foxboron/go-tpm-keyfiles v0.0.0-20260427185012-515ba073c4c1 h1:/IDZxzpOhFdoDcVQT9Eaf2kY3grH5AUK+5MqoFq6Yng= -github.com/foxboron/go-tpm-keyfiles v0.0.0-20260427185012-515ba073c4c1/go.mod h1:wxFx38LbEL4RF0JH6PR3lf7ZJ6ZO0yQWQstLCTQQNjA= -github.com/go-logr/logr v1.2.2/go.mod h1:jdQByPbusPIv2/zmleS9BjJVeZ6kBagPoEUsqbVz/1A= -github.com/go-logr/logr v1.4.4 h1:tG4xh9yMsRCAiodLVTxyrkzSZ9+o0L1Kg/+cPVcbP/8= -github.com/go-logr/logr v1.4.4/go.mod h1:9T104GzyrTigFIr8wt5mBrctHMim0Nb2HLGrmQ40KvY= -github.com/go-logr/stdr v1.2.2 h1:hSWxHoqTgW2S2qGc0LTAI563KZ5YKYRhT3MFKZMbjag= -github.com/go-logr/stdr v1.2.2/go.mod h1:mMo/vtBO5dYbehREoey6XUKy/eSumjCCveDpRre4VKE= -github.com/go-ole/go-ole v1.3.0 h1:Dt6ye7+vXGIKZ7Xtk4s6/xVdGDQynvom7xCFEdWr6uE= -github.com/go-ole/go-ole v1.3.0/go.mod h1:5LS6F96DhAwUc7C+1HLexzMXY1xGRSryjyPPKW6zv78= -github.com/go-viper/mapstructure/v2 v2.5.0 h1:vM5IJoUAy3d7zRSVtIwQgBj7BiWtMPfmPEgAXnvj1Ro= -github.com/go-viper/mapstructure/v2 v2.5.0/go.mod h1:oJDH3BJKyqBA2TXFhDsKDGDTlndYOZ6rGS0BRZIxGhM= -github.com/gobwas/glob v0.2.3 h1:A4xDbljILXROh+kObIiy5kIaPYD8e96x1tgBhUI5J+Y= -github.com/gobwas/glob v0.2.3/go.mod h1:d3Ez4x06l9bZtSvzIay5+Yzi0fmZzPgnTbPcKjJAkT8= -github.com/goccy/go-json v0.10.6 h1:p8HrPJzOakx/mn/bQtjgNjdTcN+/S6FcG2CTtQOrHVU= -github.com/goccy/go-json v0.10.6/go.mod h1:oq7eo15ShAhp70Anwd5lgX2pLfOS3QCiwU/PULtXL6M= -github.com/golang/protobuf v1.5.4 h1:i7eJL8qZTpSEXOPTxNKhASYpMn+8e5Q6AdndVa1dWek= -github.com/golang/protobuf v1.5.4/go.mod h1:lnTiLA8Wa4RWRcIUkrtSVa5nRhsEGBg48fD6rSs7xps= -github.com/golang/snappy v1.0.0 h1:Oy607GVXHs7RtbggtPBnr2RmDArIsAefDwvrdWvRhGs= -github.com/golang/snappy v1.0.0/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q= -github.com/google/go-cmp v0.2.0/go.mod h1:oXzfMopK8JAjlY9xF4vHSVASa0yLyX7SntLO5aqRK0M= -github.com/google/go-cmp v0.7.0 h1:wk8382ETsv4JYUZwIsn6YpYiWiBsYLSJiTsyBybVuN8= -github.com/google/go-cmp v0.7.0/go.mod h1:pXiqmnSA92OHEEa9HXL2W4E7lf9JzCmGVUdgjX3N/iU= -github.com/google/go-tpm v0.9.9-0.20260124013517-8f8f42cba0de h1:U6GxkpXnFhR76KyzdJCa3/YopeqiMgKWEGPp5u2mCSQ= -github.com/google/go-tpm v0.9.9-0.20260124013517-8f8f42cba0de/go.mod h1:h9jEsEECg7gtLis0upRBQU+GhYVH6jMjrFxI8u6bVUY= -github.com/google/go-tpm-tools v0.4.7 h1:J3ycC8umYxM9A4eF73EofRZu4BxY0jjQnUnkhIBbvws= -github.com/google/go-tpm-tools v0.4.7/go.mod h1:gSyXTZHe3fgbzb6WEGd90QucmsnT1SRdlye82gH8QjQ= -github.com/google/gofuzz v1.0.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg= -github.com/google/pprof v0.0.0-20260709232956-b9395ee17fa0 h1:du0WGc8xSKq/++e0cglxhS/mXVqsR7+c7jLEi5Vqduw= -github.com/google/pprof v0.0.0-20260709232956-b9395ee17fa0/go.mod h1:MxpfABSjhmINe3F1It9d+8exIHFvUqtLIRCdOGNXqiI= -github.com/google/uuid v1.6.0 h1:NIvaJDMOsjHA8n1jAhLSgzrAzy1Hgr+hNrb57e+94F0= -github.com/google/uuid v1.6.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= -github.com/hashicorp/go-version v1.9.0 h1:CeOIz6k+LoN3qX9Z0tyQrPtiB1DFYRPfCIBtaXPSCnA= -github.com/hashicorp/go-version v1.9.0/go.mod h1:fltr4n8CU8Ke44wwGCBoEymUuxUHl09ZGVZPK5anwXA= -github.com/hashicorp/golang-lru/v2 v2.0.7 h1:a+bsQ5rvGLjzHuww6tVxozPZFVghXaHOwFs4luLUK2k= -github.com/hashicorp/golang-lru/v2 v2.0.7/go.mod h1:QeFd9opnmA6QUJc5vARoKUSoFhyfM2/ZepoAG6RGpeM= -github.com/jonboulle/clockwork v0.5.0 h1:Hyh9A8u51kptdkR+cqRpT1EebBwTn1oK9YfGYbdFz6I= -github.com/jonboulle/clockwork v0.5.0/go.mod h1:3mZlmanh0g2NDKO5TWZVJAfofYk64M7XN3SzBPjZF60= -github.com/jpillora/backoff v1.0.0 h1:uvFg412JmmHBHw7iwprIxkPMI+sGQ4kzOWsMeHnm2EA= -github.com/jpillora/backoff v1.0.0/go.mod h1:J/6gKK9jxlEcS3zixgDgUAsiuZ7yrSoa/FX5e0EB2j4= -github.com/json-iterator/go v1.1.12 h1:PV8peI4a0ysnczrg+LtxykD8LfKY9ML6u2jnxaEnrnM= -github.com/json-iterator/go v1.1.12/go.mod h1:e30LSqwooZae/UwlEbR2852Gd8hjQvJoHmT4TnhNGBo= -github.com/klauspost/compress v1.19.2 h1:hMRETovs/pu/dVWN7zIT1PGG8t509MwT6bO7XSi26R8= -github.com/klauspost/compress v1.19.2/go.mod h1:cwPg85FWrGar70rWktvGQj8/hthj3wpl0PGDogxkrSQ= -github.com/klauspost/cpuid/v2 v2.4.0 h1:S6Hrbc7+ywsr0r+RLapfGBHfyefhCTwEh3A0tV913Dw= -github.com/klauspost/cpuid/v2 v2.4.0/go.mod h1:19jmZ9mjzoF//ddRSUsv0zfBTJWh3QJh9FNxZTMrGxU= -github.com/knadh/koanf/maps v0.1.3 h1:P1z7EvTqdFBrPYbzSvorvrpib+sjkUMxf0FVvA5NKK4= -github.com/knadh/koanf/maps v0.1.3/go.mod h1:npD/QZY3V6ghQDdcQzl1W4ICNVTkohC8E73eI2xW4yI= -github.com/knadh/koanf/providers/confmap v1.0.1 h1:L15hbvMqlvhwUuCtL9BkL+rqiMAjk6cZc8O9XoDtE3A= -github.com/knadh/koanf/providers/confmap v1.0.1/go.mod h1:txHYHiI2hAtF0/0sCmcuol4IDcuQbKTybiB1nOcUo1A= -github.com/knadh/koanf/v2 v2.3.6 h1:JoQPSJmvS4aP0xNc8xMDr5tcrkSEInL23/Il7pITAKo= -github.com/knadh/koanf/v2 v2.3.6/go.mod h1:gRb40VRAbd4iJMYYD5IxZ6hfuopFcXBpc9bbQpZwo28= -github.com/kr/pretty v0.3.1 h1:flRD4NNwYAUpkphVc1HcthR4KEIFJ65n8Mw5qdRn3LE= -github.com/kr/pretty v0.3.1/go.mod h1:hoEshYVHaxMs3cyo3Yncou5ZscifuDolrwPKZanG3xk= -github.com/kr/text v0.2.0 h1:5Nx0Ya0ZqY2ygV366QzturHI13Jq95ApcVaJBhpS+AY= -github.com/kr/text v0.2.0/go.mod h1:eLer722TekiGuMkidMxC/pM04lWEeraHUUmBw8l2grE= -github.com/leodido/go-syslog/v4 v4.6.0 h1:3o9H6K0cj9ITrNt7MG6CJ/Ae+vXmZcEPhI/N30/20Ig= -github.com/leodido/go-syslog/v4 v4.6.0/go.mod h1:BOEXCJSgy32THF4eZWwtZ11w6LrrFVBj+nMtv06ge4w= -github.com/leodido/ragel-machinery v0.0.0-20190525184631-5f46317e436b h1:11UHH39z1RhZ5dc4y4r/4koJo6IYFgTRMe/LlwRTEw0= -github.com/leodido/ragel-machinery v0.0.0-20190525184631-5f46317e436b/go.mod h1:WZxr2/6a/Ar9bMDc2rN/LJrE/hF6bXE4LPyDSIxwAfg= -github.com/lufia/plan9stats v0.0.0-20260330125221-c963978e514e h1:Q6MvJtQK/iRcRtzAscm/zF23XxJlbECiGPyRicsX+Ak= -github.com/lufia/plan9stats v0.0.0-20260330125221-c963978e514e/go.mod h1:autxFIvghDt3jPTLoqZ9OZ7s9qTGNAWmYCjVFWPX/zg= -github.com/magefile/mage v1.17.2 h1:fyXVu1eadI8Ap1HCCNgEhJ5McIWiYhLR8uol64ZZc40= -github.com/magefile/mage v1.17.2/go.mod h1:Yj51kqllmsgFpvvSzgrZPK9WtluG3kUhFaBUVLo4feA= -github.com/magiconair/properties v1.8.10 h1:s31yESBquKXCV9a/ScB3ESkOjUYYv+X0rg8SYxI99mE= -github.com/magiconair/properties v1.8.10/go.mod h1:Dhd985XPs7jluiymwWYZ0G4Z61jb3vdS329zhj2hYo0= -github.com/mitchellh/copystructure v1.2.0 h1:vpKXTN4ewci03Vljg/q9QvCGUDttBOGBIa15WveJJGw= -github.com/mitchellh/copystructure v1.2.0/go.mod h1:qLl+cE2AmVv+CoeAwDPye/v+N2HKCj9FbZEVFJRxO9s= -github.com/mitchellh/reflectwalk v1.0.2 h1:G2LzWKi524PWgd3mLHV8Y5k7s6XUvT0Gef6zxSIeXaQ= -github.com/mitchellh/reflectwalk v1.0.2/go.mod h1:mSTlrgnPZtwu0c4WaC2kGObEpuNDbx0jmZXqmk4esnw= -github.com/moby/docker-image-spec v1.3.1 h1:jMKff3w6PgbfSa69GfNg+zN/XLhfXJGnEx3Nl2EsFP0= -github.com/moby/docker-image-spec v1.3.1/go.mod h1:eKmb5VW8vQEh/BAr2yvVNvuiJuY6UIocYsFu/DxxRpo= -github.com/moby/go-archive v0.2.0 h1:zg5QDUM2mi0JIM9fdQZWC7U8+2ZfixfTYoHL7rWUcP8= -github.com/moby/go-archive v0.2.0/go.mod h1:mNeivT14o8xU+5q1YnNrkQVpK+dnNe/K6fHqnTg4qPU= -github.com/moby/moby/api v1.55.0 h1:2/sexvQyqIWS8pRSCFddBfpW2qE7vR7FCL+vN8pxwMc= -github.com/moby/moby/api v1.55.0/go.mod h1:+RQ6wluLwtYaTd1WnPLykIDPekkuyD/ROWQClE83pzs= -github.com/moby/moby/client v0.5.0 h1:5XhyPk2fuOWf6RlSFa3MkIIgDZkF25xToXW8Q/BH7cc= -github.com/moby/moby/client v0.5.0/go.mod h1:rcVpF8ncl9vo5gaIBdol6CnbEtSj1uxMvEV/UrykF/s= -github.com/moby/patternmatcher v0.6.1 h1:qlhtafmr6kgMIJjKJMDmMWq7WLkKIo23hsrpR3x084U= -github.com/moby/patternmatcher v0.6.1/go.mod h1:hDPoyOpDY7OrrMDLaYoY3hf52gNCR/YOUYxkhApJIxc= -github.com/moby/sys/sequential v0.7.0 h1:ASQNGNROJSuOO6LL6bPHbKvuZu6NU8P4ldPWk31zj/8= -github.com/moby/sys/sequential v0.7.0/go.mod h1:NfSTAp6V3fw4tmkD62PEcOKeZKquXT8VKCkf7aVR79o= -github.com/moby/sys/user v0.4.0 h1:jhcMKit7SA80hivmFJcbB1vqmw//wU61Zdui2eQXuMs= -github.com/moby/sys/user v0.4.0/go.mod h1:bG+tYYYJgaMtRKgEmuueC0hJEAZWwtIbZTB+85uoHjs= -github.com/moby/sys/userns v0.1.0 h1:tVLXkFOxVu9A64/yh59slHVv9ahO9UIev4JZusOLG/g= -github.com/moby/sys/userns v0.1.0/go.mod h1:IHUYgu/kao6N8YZlp9Cf444ySSvCmDlmzUcYfDHOl28= -github.com/moby/term v0.5.2 h1:6qk3FJAFDs6i/q3W/pQ97SX192qKfZgGjCQqfCJkgzQ= -github.com/moby/term v0.5.2/go.mod h1:d3djjFCrjnB+fl8NJux+EJzu0msscUP+f8it8hPkFLc= -github.com/modern-go/concurrent v0.0.0-20180228061459-e0a39a4cb421/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q= -github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd h1:TRLaZ9cD/w8PVh93nsPXa1VrQ6jlwL5oN8l14QlcNfg= -github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q= -github.com/modern-go/reflect2 v1.0.2/go.mod h1:yWuevngMOJpCy52FWWMvUC8ws7m/LJsjYzDa0/r8luk= -github.com/modern-go/reflect2 v1.0.3-0.20250322232337-35a7c28c31ee h1:W5t00kpgFdJifH4BDsTlE89Zl93FEloxaWZfGcifgq8= -github.com/modern-go/reflect2 v1.0.3-0.20250322232337-35a7c28c31ee/go.mod h1:yWuevngMOJpCy52FWWMvUC8ws7m/LJsjYzDa0/r8luk= -github.com/open-telemetry/opentelemetry-collector-contrib/exporter/splunkhecexporter v0.159.0 h1:DADo8cK1Fz5v6TG/lIMIP8gatSxR0Q8JjmfPOS4dayg= -github.com/open-telemetry/opentelemetry-collector-contrib/exporter/splunkhecexporter v0.159.0/go.mod h1:PAc9M9p33sf4YmYrF/a4GWDjgUIKDBl5Tk2h05gfPMs= -github.com/open-telemetry/opentelemetry-collector-contrib/extension/storage v0.159.0 h1:U6uzoElKwpSN2V07a/LziyJK2s8T8sCe644OqoEt8Zg= -github.com/open-telemetry/opentelemetry-collector-contrib/extension/storage v0.159.0/go.mod h1:URPZLfbLJHiRUbV+tL2o78ILDB/yCws9LYePbLUIX8A= -github.com/open-telemetry/opentelemetry-collector-contrib/internal/common v0.159.0 h1:G4p7IRs31oZRdv/X8/dBwGQq8DQv1Vkt5yS4SU+wk9g= -github.com/open-telemetry/opentelemetry-collector-contrib/internal/common v0.159.0/go.mod h1:5ouNduL0q3gng/mT9dYwFI80EBS5T50JwtXDqtLFyIk= -github.com/open-telemetry/opentelemetry-collector-contrib/internal/coreinternal v0.159.0 h1:jBIDzmpwM2t3+H8YbVW3ex0l1zBO42yrCNfZpQs+EAQ= -github.com/open-telemetry/opentelemetry-collector-contrib/internal/coreinternal v0.159.0/go.mod h1:MIo6UvOnouNO14chDWK/kaXapjwGHb9U0xk6GegYMvo= -github.com/open-telemetry/opentelemetry-collector-contrib/internal/splunk v0.159.0 h1:YwhUxqjrX5fBfCCRLQMMyV+BeqtUvur2Ltf/OUK4Wi4= -github.com/open-telemetry/opentelemetry-collector-contrib/internal/splunk v0.159.0/go.mod h1:aqnAhNIWIYCCg7RCWT992ROwjgm7JkZ7f+6LXEFoPgI= -github.com/open-telemetry/opentelemetry-collector-contrib/pkg/batchperresourceattr v0.159.0 h1:lJKnrQtIdmRsBISvPsdWvYRcouKxCPb2ifwju1PZZ/o= -github.com/open-telemetry/opentelemetry-collector-contrib/pkg/batchperresourceattr v0.159.0/go.mod h1:lt+WIObDXpZNmoZn7M7vI0PHlSoeKBEUF77jLhHP5AA= -github.com/open-telemetry/opentelemetry-collector-contrib/pkg/golden v0.159.0 h1:z2FvBmvlvE/jsVFwGfKOUQweGjJlPfH0QBOo2ES76kE= -github.com/open-telemetry/opentelemetry-collector-contrib/pkg/golden v0.159.0/go.mod h1:ExbYdUzLx9i757v9fc3meEPkepBScJKUfFiXxQJX5Do= -github.com/open-telemetry/opentelemetry-collector-contrib/pkg/pdatatest v0.159.0 h1:7JKqFkaTAaLCgP4XY57EAIDXGD4xb0NnlNVhIZ0fEd8= -github.com/open-telemetry/opentelemetry-collector-contrib/pkg/pdatatest v0.159.0/go.mod h1:Hc+PQQduHGJKUXXumlIydv2jr07sFN5yIllZDldoMKc= -github.com/open-telemetry/opentelemetry-collector-contrib/pkg/pdatautil v0.159.0 h1:myQAaDpKnfPy/KU9BsBEWPsinvEPI4UFO5Yi2v7RiTU= -github.com/open-telemetry/opentelemetry-collector-contrib/pkg/pdatautil v0.159.0/go.mod h1:Qzcts6LLXE+jpdEy1LCHL2Ddgit8hw08Ifj3zuYTitw= -github.com/open-telemetry/opentelemetry-collector-contrib/pkg/stanza v0.159.0 h1:NVNc/45H/bHEvl+GbHhcYWsAEmwQ65unsSzZp/QRLKY= -github.com/open-telemetry/opentelemetry-collector-contrib/pkg/stanza v0.159.0/go.mod h1:2/ULyLdHT7D2dGTrY9fYPuN0q4MqoGOCBTgQrYbthnI= -github.com/open-telemetry/opentelemetry-collector-contrib/pkg/translator/pprof v0.159.0 h1:HCJlKjO3i99LsvX9RY3vC7/MrZacfMIoOFlkrFRDho8= -github.com/open-telemetry/opentelemetry-collector-contrib/pkg/translator/pprof v0.159.0/go.mod h1:kKQRmCLTXevSq3PSH2sFsN0zKz8/QYGp9P+5eDcG6/o= -github.com/open-telemetry/opentelemetry-collector-contrib/pkg/translator/splunk v0.159.0 h1:xmwpAI455gA6XGR1HTnAeVJvlhbMEBVPiPFL1i5OeOk= -github.com/open-telemetry/opentelemetry-collector-contrib/pkg/translator/splunk v0.159.0/go.mod h1:iDedibeVnzVdingb/ZB7pq6lkvd4NVH2ZqpTlhKsGQU= -github.com/open-telemetry/sig-profiling/profcheck v0.0.0-20260605055552-091960d5da90 h1:Pvu/hHr3XjXFlWQlNk/+dG69b0R1ScGWk8Bgm29lP2g= -github.com/open-telemetry/sig-profiling/profcheck v0.0.0-20260605055552-091960d5da90/go.mod h1:WPdgk1BinVdvYdkbt1KIkgDw6qUiK8CnGq+ftaJ41Ns= -github.com/opencontainers/go-digest v1.0.0 h1:apOUWs51W5PlhuyGyz9FCeeBIOUDA/6nW8Oi/yOhh5U= -github.com/opencontainers/go-digest v1.0.0/go.mod h1:0JzlMkj0TRzQZfJkVvzbP0HBR3IKzErnv2BNG4W4MAM= -github.com/opencontainers/image-spec v1.1.1 h1:y0fUlFfIZhPF1W537XOLg0/fcx6zcHCJwooC2xJA040= -github.com/opencontainers/image-spec v1.1.1/go.mod h1:qpqAh3Dmcf36wStyyWU+kCeDgrGnAve2nCC8+7h8Q0M= -github.com/pierrec/lz4/v4 v4.1.28 h1:pPEPwRJ4kybBTfGt28q7lQsRJQHhC08axprdLD5Ppio= -github.com/pierrec/lz4/v4 v4.1.28/go.mod h1:EoQMVJgeeEOMsCqCzqFm2O0cJvljX2nGZjcRIPL34O4= -github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= -github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 h1:Jamvg5psRIccs7FGNTlIRMkT8wgtp5eCXdBlqhYGL6U= -github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= -github.com/power-devops/perfstat v0.0.0-20240221224432-82ca36839d55 h1:o4JXh1EVt9k/+g42oCprj/FisM4qX9L3sZB3upGN2ZU= -github.com/power-devops/perfstat v0.0.0-20240221224432-82ca36839d55/go.mod h1:OmDBASR4679mdNQnz2pUhc2G8CO2JrUAVFDRBDP/hJE= -github.com/rogpeppe/go-internal v1.14.1 h1:UQB4HGPB6osV0SQTLymcB4TgvyWu6ZyliaW0tI/otEQ= -github.com/rogpeppe/go-internal v1.14.1/go.mod h1:MaRKkUm5W0goXpeCfT7UZI6fk/L7L7so1lCWt35ZSgc= -github.com/rs/cors v1.11.1 h1:eU3gRzXLRK57F5rKMGMZURNdIG4EoAmX8k94r9wXWHA= -github.com/rs/cors v1.11.1/go.mod h1:XyqrcTp5zjWr1wsJ8PIRZssZ8b/WMcMf71DJnit4EMU= -github.com/shirou/gopsutil/v4 v4.26.6 h1:Mzr/npDtQC/xpeEuQKHZt8Zo9CmPvhTj8nkR8w5TLDs= -github.com/shirou/gopsutil/v4 v4.26.6/go.mod h1:LZ6ewCSkBqUpvSOf+LsTGnRinC6iaNUNMGBtDkJBaLQ= -github.com/sirupsen/logrus v1.9.4 h1:TsZE7l11zFCLZnZ+teH4Umoq5BhEIfIzfRDZ1Uzql2w= -github.com/sirupsen/logrus v1.9.4/go.mod h1:ftWc9WdOfJ0a92nsE2jF5u5ZwH8Bv2zdeOC42RjbV2g= -github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= -github.com/stretchr/objx v0.4.0/go.mod h1:YvHI0jy2hoMjB+UWwv71VJQ9isScKT/TqJzVSSt89Yw= -github.com/stretchr/objx v0.5.0/go.mod h1:Yh+to48EsGEfYuaHDzXPcE3xhTkx73EhmCGUpEOglKo= -github.com/stretchr/objx v0.5.2/go.mod h1:FRsXN1f5AsAjCGJKqEizvkpNtU+EGNCLh3NxZ/8L+MA= -github.com/stretchr/objx v0.5.3 h1:jmXUvGomnU1o3W/V5h2VEradbpJDwGrzugQQvL0POH4= -github.com/stretchr/objx v0.5.3/go.mod h1:rDQraq+vQZU7Fde9LOZLr8Tax6zZvy4kuNKF+QYS+U0= -github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI= -github.com/stretchr/testify v1.7.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= -github.com/stretchr/testify v1.8.0/go.mod h1:yNjHg4UonilssWZ8iaSj1OCr/vHnekPRkoO+kdMU+MU= -github.com/stretchr/testify v1.8.4/go.mod h1:sz/lmYIOXD/1dqDmKjjqLyZ2RngseejIcXlSw2iwfAo= -github.com/stretchr/testify v1.11.1 h1:7s2iGBzp5EwR7/aIZr8ao5+dra3wiQyKjjFuvgVKu7U= -github.com/stretchr/testify v1.11.1/go.mod h1:wZwfW3scLgRK+23gO65QZefKpKQRnfz6sD981Nm4B6U= -github.com/testcontainers/testcontainers-go v0.44.0 h1:/Fwh6HY1mIikhnm9e7HwoxGycx0lzRAE0f5VQpjFxzI= -github.com/testcontainers/testcontainers-go v0.44.0/go.mod h1:IcnwQrYTO86xHXu5bvMaBH7ATlbS3Qn1M1QWW3c66rE= -github.com/tklauser/go-sysconf v0.4.0 h1:7H0uAN+7RkwWRaxhYXDLqa5V3LPrJeV8wmD9dRUgPQU= -github.com/tklauser/go-sysconf v0.4.0/go.mod h1:8mTNWyog7H+MpKijp4VmKJAd2bbYQ2zuUwkYRbUArPI= -github.com/tklauser/numcpus v0.12.0 h1:NR85qdvHA9pFse3x3weVZ0r0ST8R6l5RHbZrlRaqob4= -github.com/tklauser/numcpus v0.12.0/go.mod h1:ABHeXzJnr/qqwguhClkZKT1/8VABcYrsyUiUGobwWJg= -github.com/valyala/fastjson v1.6.10 h1:/yjJg8jaVQdYR3arGxPE2X5z89xrlhS0eGXdv+ADTh4= -github.com/valyala/fastjson v1.6.10/go.mod h1:e6FubmQouUNP73jtMLmcbxS6ydWIpOfhz34TSfO3JaE= -github.com/yusufpapurcu/wmi v1.2.4 h1:zFUKzehAFReQwLys1b/iSMl+JQGSCSjtVqQn9bBrPo0= -github.com/yusufpapurcu/wmi v1.2.4/go.mod h1:SBZ9tNy3G9/m5Oi98Zks0QjeHVDvuK0qfxQmPyzfmi0= -github.com/zeebo/assert v1.3.0 h1:g7C04CbJuIDKNPFHmsk4hwZDO5O+kntRxzaUoNXj+IQ= -github.com/zeebo/assert v1.3.0/go.mod h1:Pq9JiuJQpG8JLJdtkwrJESF0Foym2/D9XMU5ciN/wJ0= -github.com/zeebo/xxh3 v1.1.0 h1:s7DLGDK45Dyfg7++yxI0khrfwq9661w9EN78eP/UZVs= -github.com/zeebo/xxh3 v1.1.0/go.mod h1:IisAie1LELR4xhVinxWS5+zf1lA4p0MW4T+w+W07F5s= -go.opentelemetry.io/auto/sdk v1.2.1 h1:jXsnJ4Lmnqd11kwkBV2LgLoFMZKizbCi5fNZ/ipaZ64= -go.opentelemetry.io/auto/sdk v1.2.1/go.mod h1:KRTj+aOaElaLi+wW1kO/DZRXwkF4C5xPbEe3ZiIhN7Y= -go.opentelemetry.io/collector v0.159.0 h1:gOWL2DGKrPSEdDJ++4NfNhx77A409SNrrZW18hE8dKY= -go.opentelemetry.io/collector/client v1.65.0 h1:twF4y+XeEYh9lI8DBvgBu8/5C0TkqwyK9+cce6UDHE0= -go.opentelemetry.io/collector/client v1.65.0/go.mod h1:W7i5DlE7V88hCQ5DdOSIqlxeJ6A+9ypQSCE7S2f453c= -go.opentelemetry.io/collector/component v1.65.0 h1:whiG2xDJyaTNlOy9x3z0dB9MCQPMVKlxHVgbowkYy4I= -go.opentelemetry.io/collector/component v1.65.0/go.mod h1:H0JerML93L3twiykB7POqoeQtpDRJRbE5JWewS9YNI4= -go.opentelemetry.io/collector/component/componenttest v0.159.0 h1:UdX9IUbKw55k6gvPo7kH2czhUIHbK7oCW7CEi2X3M4s= -go.opentelemetry.io/collector/component/componenttest v0.159.0/go.mod h1:0utMB2qV95H5RHkEx28bNv2AfkiLlLnJ9dyReUT/AQY= -go.opentelemetry.io/collector/config/configauth v1.65.0 h1:MiFR0nh6leBvvsFntqtfxRfZcIowkRS+7l62oFYOKaU= -go.opentelemetry.io/collector/config/configauth v1.65.0/go.mod h1:BZpGJTtfDXbIDLeZAsIzR9K+fXOS+uH4JobhceHSdOM= -go.opentelemetry.io/collector/config/configcompression v1.65.0 h1:BZSE5dbydlqSxndCt7HzdDG8fGlYn6RCgNj+lTbt+5o= -go.opentelemetry.io/collector/config/configcompression v1.65.0/go.mod h1:SEcE2uFLHHPc/Vi8WCkW5MhOMUwaT321HBdZ3P8x8D0= -go.opentelemetry.io/collector/config/confighttp v0.159.0 h1:e3kny2oIPOuEHbXLkSBP6k5cVim8bD2pRHc0hKHoc0s= -go.opentelemetry.io/collector/config/confighttp v0.159.0/go.mod h1:cdcJfO0i2jjWWDAMwckB05jnfmtRV1s5ZuhBxP7k9rM= -go.opentelemetry.io/collector/config/configmiddleware v1.65.0 h1:bQwC9tP0hmCv5KOu/5y/TE4j8WU0BD5KFR6orGYXKbQ= -go.opentelemetry.io/collector/config/configmiddleware v1.65.0/go.mod h1:V5bFJ7Nh7pYVUMA4c+Eh9DuMKWUq4BiqNo8lBQMCqds= -go.opentelemetry.io/collector/config/confignet v1.65.0 h1:HAoGelwvs8Lqor8a5+NqzaALCiMKOhb6oBQAwzqRQJM= -go.opentelemetry.io/collector/config/confignet v1.65.0/go.mod h1:Op+r1B/DtzXgIuKEL7/JkTqtJdL9veu2uEXvSxH3lks= -go.opentelemetry.io/collector/config/configopaque v1.65.0 h1:h5Ze1LbQzcBqt2D/rYDZirT3iA6bKQwCrVYgqxQ9Omg= -go.opentelemetry.io/collector/config/configopaque v1.65.0/go.mod h1:nek5AkZf+gQuPIFETsD8/uqiqTy4JEhbmHXRRKVPJSM= -go.opentelemetry.io/collector/config/configoptional v1.65.0 h1:jxt3lzc8S45sIu5LK0F0HoYjO8UUWiC9PeMZwyOCrjQ= -go.opentelemetry.io/collector/config/configoptional v1.65.0/go.mod h1:KM7eKg0i1G8QXngxcpgxD1FutjYAJR7VezKMV9CXB/Q= -go.opentelemetry.io/collector/config/configretry v1.65.0 h1:Ov0Y7a0rbAfJhScM+Le2ZgA1g4g5q+dgkM4ICqPj9B4= -go.opentelemetry.io/collector/config/configretry v1.65.0/go.mod h1:6aRt0eEIeqBN314h7gU4IMMyzqHL82mKKo8jBDSGpik= -go.opentelemetry.io/collector/config/configtls v1.65.0 h1:YGKgKbimh4BoDw7yAPxG04103w64Cf3gCsUedbHO+8w= -go.opentelemetry.io/collector/config/configtls v1.65.0/go.mod h1:wjZ1ybw5s+1tansSqiuDyDpUHSFtcyQ0cjk+xfRFgZY= -go.opentelemetry.io/collector/confmap v1.65.0 h1:XQomN1YlD2Ek5NzJzFYu/YPieTKnH8U4H3UWCNX7dGw= -go.opentelemetry.io/collector/confmap v1.65.0/go.mod h1:XNYpeLgSeTRleJ1zFRJQTchrCLhFT22LOdBHrACZwNU= -go.opentelemetry.io/collector/consumer v1.65.0 h1:MEy8U9lUd7d+LM4N9JtvEGjrI32I1UGO9uLhuXrTsHg= -go.opentelemetry.io/collector/consumer v1.65.0/go.mod h1:poB6QWd+y7GftI5mqK09nlzkG+1ZgiiiRSjRiRwaxNU= -go.opentelemetry.io/collector/consumer/consumererror v0.159.0 h1:Q531xJXcqJq16/F5vKuZQPq52FEGOTcsZAvcyEDQK0k= -go.opentelemetry.io/collector/consumer/consumererror v0.159.0/go.mod h1:IV+/ykILcihX9JH131l5uATEePMFhpDmLntrEefqJN0= -go.opentelemetry.io/collector/consumer/consumererror/xconsumererror v0.159.0 h1:ckgIOlW58br8pUjSyrOH5eMQ/jr1GbnG3FxUU0AQ/tk= -go.opentelemetry.io/collector/consumer/consumererror/xconsumererror v0.159.0/go.mod h1:72hqCkmrBrHTvBe71EskTWukTIe4CTw8TG7J+W1dSlQ= -go.opentelemetry.io/collector/consumer/consumertest v0.159.0 h1:B2G28jLwVNy0zVVMdw2cPQ8XOqIn9GvLsfHV02GIMHY= -go.opentelemetry.io/collector/consumer/consumertest v0.159.0/go.mod h1:coPCC59aMh29itPFfrwo5moVM43+Uia6H0kL5JMPMjg= -go.opentelemetry.io/collector/consumer/xconsumer v0.159.0 h1:4+SUbQvVtp3620mZJ4Ac4r9fkyqO+h7E7Dq+yKN7Adg= -go.opentelemetry.io/collector/consumer/xconsumer v0.159.0/go.mod h1:oXLv8xLyVwBhA5nANletvv4NuoC++fNe/LscnEUx9TU= -go.opentelemetry.io/collector/exporter v1.65.0 h1:5ab64NSz6WdFY9H9VQkfI3O2eYYzWDY3J+FmZAF3vTM= -go.opentelemetry.io/collector/exporter v1.65.0/go.mod h1:t9yrtcLuCzwA6E0zlOCDc3O/4fZdA86BViHfn3EzPck= -go.opentelemetry.io/collector/exporter/exporterhelper v0.159.0 h1:jfaBiOnX5YsTyvtWnUAvY3xcvpklXVPnfflmfXHHYg0= -go.opentelemetry.io/collector/exporter/exporterhelper v0.159.0/go.mod h1:0nIjl8GvdwtZjh6/X4ufdu7BdGWXlw6SNuBYfYjZEZE= -go.opentelemetry.io/collector/exporter/exporterhelper/xexporterhelper v0.159.0 h1:yNcSdc5SpLgBz3Gubjxlw/IOP3UpuFKlXxbtn6NkzH4= -go.opentelemetry.io/collector/exporter/exporterhelper/xexporterhelper v0.159.0/go.mod h1:dMCKTPR8CE+1vmP7ZcjBbkn6+rgOpoIPmKhzzr6DUuw= -go.opentelemetry.io/collector/exporter/exportertest v0.159.0 h1:IrQ5KKRiN3z2xMgS053o4kDJfbRCAi6s7oE4jas3a34= -go.opentelemetry.io/collector/exporter/exportertest v0.159.0/go.mod h1:ElqlfkSvZVYnEpTKNdATzL4rAa2hFhLP39wW39fNslc= -go.opentelemetry.io/collector/exporter/xexporter v0.159.0 h1:Z3LOupZRror8VjAqp2A2Ymiiplfwc6Tn5xHoYEDKeCo= -go.opentelemetry.io/collector/exporter/xexporter v0.159.0/go.mod h1:/o4qjVnG4Y0fzxy8DClWT+pHfA3T2dTdsXj8+jT/p/w= -go.opentelemetry.io/collector/extension v1.65.0 h1:Ct6G8MY+WeP4RfiL5Y/bQQBYgXR33S/ElkOc23qPyDY= -go.opentelemetry.io/collector/extension v1.65.0/go.mod h1:02XenbtihT6AkyN/sfIjy/f2DfpBO5Vc5sc60/Z3bjQ= -go.opentelemetry.io/collector/extension/extensionauth v1.65.0 h1:GO285CMDIY2t2TrdgLBEV1GPK9MCSd8K2ZISpQxTLi0= -go.opentelemetry.io/collector/extension/extensionauth v1.65.0/go.mod h1:39qT9L7ZUF5DHbDv7zV6i++Av36ovvPrJQL2d/QbKyE= -go.opentelemetry.io/collector/extension/extensionauth/extensionauthtest v0.159.0 h1:YWW1hhCI0paRSCkMr147Cj/LUeHw0/wTwT+D1MBl98I= -go.opentelemetry.io/collector/extension/extensionauth/extensionauthtest v0.159.0/go.mod h1:kSE+E0chgD60AzvVo6UFJtfACHMqlHbPzD0UZJVaOR4= -go.opentelemetry.io/collector/extension/extensionmiddleware v0.159.0 h1:oc94RlDaVQc7S82bOmjTWA8C/lXLpNmvVqXAtibSJnM= -go.opentelemetry.io/collector/extension/extensionmiddleware v0.159.0/go.mod h1:xwEY+ROPoemdsWGGSvQNZW9adtqmRIQiSdoZFBgckK8= -go.opentelemetry.io/collector/extension/extensionmiddleware/extensionmiddlewaretest v0.159.0 h1:R7VTbEKPEzSdUfZnV5m1AxRIrZZvd5OZRZKhoPmUsg0= -go.opentelemetry.io/collector/extension/extensionmiddleware/extensionmiddlewaretest v0.159.0/go.mod h1:KcMhxpdnDGR8cbouTc33qofLcaKlBRbdj3bOnkIrOmo= -go.opentelemetry.io/collector/extension/extensiontest v0.159.0 h1:APUKd7r2PrjaCDIaQLgpHlijt/4eCnXAtT5OjE5MU4o= -go.opentelemetry.io/collector/extension/extensiontest v0.159.0/go.mod h1:RyMmAGZ76nnXcx8n4jRRaf0cs0Du8jwOCXfBcgFjzuA= -go.opentelemetry.io/collector/extension/xextension v0.159.0 h1:g7dijubghKcJ1zGFSooRia/jMCfeBwZz/6Bf7HJDgUU= -go.opentelemetry.io/collector/extension/xextension v0.159.0/go.mod h1:6AMQYY5a7iqFEeD/DUG0gkA8e6OT64PltRH9GivX1Kk= -go.opentelemetry.io/collector/featuregate v1.65.0 h1:Dh+uYVB+POc5DTebZRWjtKJolGhevkiIpbHn+zhkq2o= -go.opentelemetry.io/collector/featuregate v1.65.0/go.mod h1:4ga1QBMPEejXXmpyJS8lmaRpknJ3Lb9Bvk6e420bUFU= -go.opentelemetry.io/collector/internal/componentalias v0.159.0 h1:CRhYG8cplCzjO57+xrJoezisBWCx0SCZjGtPf9u7qOQ= -go.opentelemetry.io/collector/internal/componentalias v0.159.0/go.mod h1:aRu7674wLxCTx3OF/SJW0YOQ8117t2SacGK9gmPCvyA= -go.opentelemetry.io/collector/internal/testutil v0.159.0 h1:/OfAv3ZRIc3eVFFq4bFc+Ju5HQBebiWywgvAcysIX4M= -go.opentelemetry.io/collector/internal/testutil v0.159.0/go.mod h1:Jkjs6rkqs973LqgZ0Fe3zrokQRKULYXPIf4HuqStiEE= -go.opentelemetry.io/collector/pdata v1.65.0 h1:6bQ3sIrEzOdapetxYFjdCns90kKXg1qCoIZ3la1aR5E= -go.opentelemetry.io/collector/pdata v1.65.0/go.mod h1:r5vRY0p7nZcEif06twUW09Sf6vaNsyPzij+EpwI/xeI= -go.opentelemetry.io/collector/pdata/pprofile v0.159.0 h1:XBiJhSbPmx3YNM/6JKlz3f5LhQpDusqW3sG24FQTGiE= -go.opentelemetry.io/collector/pdata/pprofile v0.159.0/go.mod h1:0DEpjmeuvxA3zCiF0duzEIdB6fcKxO4RHz5v+FfOPg4= -go.opentelemetry.io/collector/pdata/testdata v0.159.0 h1:BLFXNpik4QVWX/8j6ZKiEY6Nn+wDgpeyzT2g4pl6eGM= -go.opentelemetry.io/collector/pdata/testdata v0.159.0/go.mod h1:Vtbm+CqE+KnMFU8PQzh0oNF5c0mG/6hPrdICviQ3CRo= -go.opentelemetry.io/collector/pdata/xpdata v0.159.0 h1:+JGRmAwC0265SuqiMkOs3xoYv11StBKsywWFV9wcI38= -go.opentelemetry.io/collector/pdata/xpdata v0.159.0/go.mod h1:PKIj0TUHUj7veBNrweelDrfQ0OMY9Ra7sN35DEdn3Yk= -go.opentelemetry.io/collector/pipeline v1.65.0 h1:vvHaf4XJDS3sQ1zit4/jBGejIZUL1W2GYRaMXAZwwZI= -go.opentelemetry.io/collector/pipeline v1.65.0/go.mod h1:RD90NG3Jbk965Xaqym3JyHkuol4uZJjQVUkD9ddXJIs= -go.opentelemetry.io/collector/pipeline/xpipeline v0.159.0 h1:3z6KzNERv9Liem9a2LYsLmiPLe1KWkW0Hk1yEO+FasQ= -go.opentelemetry.io/collector/pipeline/xpipeline v0.159.0/go.mod h1:y0V0prGDsna+1gYCDuK0XRkrR8s1SV2GO/mI8Ny4O94= -go.opentelemetry.io/collector/receiver v1.65.0 h1:lVSzKBx3OkysH3H5DfRRhcTXeK8t4115kbfBXc2iems= -go.opentelemetry.io/collector/receiver v1.65.0/go.mod h1:EeX+NMDAQlqqmZuL9aAIQKOcPsF4vqCRjhRAQJIitQ0= -go.opentelemetry.io/collector/receiver/receiverhelper v0.159.0 h1:8VQUdyQ1Ipah4LMlpH1DDsVvu/7I5ZKO8mrDL2ld3Qk= -go.opentelemetry.io/collector/receiver/receiverhelper v0.159.0/go.mod h1:fHDb4rC9zmANsj6Ni6c1T+TdJF9O/9l6KAHXtnW3aUk= -go.opentelemetry.io/collector/receiver/receivertest v0.159.0 h1:7oTbQad/Q7viDwht/ARhO/2Fm8XAW5RlbQ7ZZdb/iRY= -go.opentelemetry.io/collector/receiver/receivertest v0.159.0/go.mod h1:IqBtfoI+H3Rfn+vmHt9f9Ija3oFozZ1fmPBhvtKeOtY= -go.opentelemetry.io/collector/receiver/xreceiver v0.159.0 h1:Lphw7A5JKDRujue9TuqzTSzBr/RKMPMzbzKqhFmHGKw= -go.opentelemetry.io/collector/receiver/xreceiver v0.159.0/go.mod h1:5y7aMD3J8ItyWmfqTIoo/WYgbFXSnOyRBJfrX4kILgo= -go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.70.0 h1:LMuyCAyfalSjDyjdC65nK6N0zoTT63+E/u95X0JovZI= -go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.70.0/go.mod h1:085m8qbm4hgc8rZWGDEa4vmyyo2c3nPxUslYUKUIU04= -go.opentelemetry.io/otel v1.45.0 h1:pdrWmLHofpubmArBv1LgFSv1Z0Ie/ppdZzu+kUN5EeU= -go.opentelemetry.io/otel v1.45.0/go.mod h1:XZxIqPapzEYnhNSScF5DIqXhm/rYi0FzCe2XddAwZfQ= -go.opentelemetry.io/otel/metric v1.45.0 h1:7Eg1uH7CJ5cXv9is6tnBe1FI6rj1nwUdbFypRm3br/M= -go.opentelemetry.io/otel/metric v1.45.0/go.mod h1:HAPbm1nd3p1PmFH7v2dR+6BjXxw+Lq4a2+pndMAm08s= -go.opentelemetry.io/otel/sdk v1.45.0 h1:4VVSMgQ83dUgW2aoX5f6JgLvHwIvzcuLnF9lUdCSpCw= -go.opentelemetry.io/otel/sdk v1.45.0/go.mod h1:Sr40LgXV7DsKMMJMKOhUWOgMWTfAaqvm2kF0g7ilwuA= -go.opentelemetry.io/otel/sdk/metric v1.45.0 h1:oVFszMfyj1Am6s24Vtc7wBb8BKLcwepJjNEYILuiE3o= -go.opentelemetry.io/otel/sdk/metric v1.45.0/go.mod h1:vUWUxDZvu1WVRj8JA8S0AdhsPrZoDpA2DdZauIh4mDA= -go.opentelemetry.io/otel/trace v1.45.0 h1:l/mP6Uv7oNO7/TblbhpbgMidxhq1uO/rPsikOyVhxag= -go.opentelemetry.io/otel/trace v1.45.0/go.mod h1:qoJJA2xNMnxRrdISU/kLtfUH2wNeQbiv+jhs/CxI8bc= -go.opentelemetry.io/proto/otlp v1.11.0 h1:5rrYs0Ykyj50sdU/JU0x8etU+LubXWb+gED6TbEdMIk= -go.opentelemetry.io/proto/otlp v1.11.0/go.mod h1:SmVizdCOAm3XBtG1g1NnOdhW6jtddT72hLMhv8VwA8E= -go.opentelemetry.io/proto/otlp/profiles/v1development v0.4.0 h1:K8fVW1jW1xn4iKqvoUED5jDQhlJcYhQ1houjU8clQp0= -go.opentelemetry.io/proto/otlp/profiles/v1development v0.4.0/go.mod h1:pD9EreXXWprVGOuyN/YOTap/X0bKu0Za4yVOiW55/ic= -go.opentelemetry.io/proto/slim/otlp v1.11.0 h1:zB37f+f99+y6UIZR4h7UpwbXd5kFNyip35U7GaJ/Jik= -go.opentelemetry.io/proto/slim/otlp v1.11.0/go.mod h1:mI3DeND+VXZuA4keqFPKDJ3BklwveYm1JqBcEWKDEOM= -go.opentelemetry.io/proto/slim/otlp/collector/profiles/v1development v0.4.0 h1:mt+DWtks0biKnz0jXMpDbxWN0CHJi6OJDKe4GcREkcs= -go.opentelemetry.io/proto/slim/otlp/collector/profiles/v1development v0.4.0/go.mod h1:7UXaX/7uT+kumUHd3LIWyjMlklEp0mPlrE9xmtbG6/8= -go.opentelemetry.io/proto/slim/otlp/profiles/v1development v0.4.0 h1:rLHkdB6eHDiRSIoz0cvNuTJsVJBxaL6IyS1e9BSaXLY= -go.opentelemetry.io/proto/slim/otlp/profiles/v1development v0.4.0/go.mod h1:BrX0dmOGsMuWNXXbFafTD7Gb6F3yK+2czVQ6+c24Cnk= -go.uber.org/goleak v1.3.0 h1:2K3zAYmnTNqV73imy9J1T3WC+gmCePx2hEGkimedGto= -go.uber.org/goleak v1.3.0/go.mod h1:CoHD4mav9JJNrW/WLlf7HGZPjdw8EucARQHekz1X6bE= -go.uber.org/multierr v1.11.0 h1:blXXJkSxSSfBVBlC76pxqeO+LN3aDfLQo+309xJstO0= -go.uber.org/multierr v1.11.0/go.mod h1:20+QtiLqy0Nd6FdQB9TLXag12DsQkrbs3htMFfDN80Y= -go.uber.org/zap v1.28.0 h1:IZzaP1Fv73/T/pBMLk4VutPl36uNC+OSUh3JLG3FIjo= -go.uber.org/zap v1.28.0/go.mod h1:rDLpOi171uODNm/mxFcuYWxDsqWSAVkFdX4XojSKg/Q= -go.yaml.in/yaml/v3 v3.0.5 h1:N6y/pJk8buWs9NY5ERU2HSMfm+IuD/OtfdAnq6kESPw= -go.yaml.in/yaml/v3 v3.0.5/go.mod h1:HVTZu1O7/Vkt2N+BFy8Zza+lnLsABggaTM2ZpNIGuKg= -golang.org/x/crypto v0.54.0 h1:YLIA59K4fiNzHzjnZt2tUJQjQtUWfWbeHBqKtk3eScw= -golang.org/x/crypto v0.54.0/go.mod h1:KWL8ny2AZdGR2cWmzeHrp2azQPGogOv+HeQaVEXC2dk= -golang.org/x/net v0.57.0 h1:K5+3DljvIuDG9/Jv9rvyMywYNFCQ9RSUY6OOTTkT+tE= -golang.org/x/net v0.57.0/go.mod h1:KpXc8iv+r3XplLAG/f7Jsf9RPszJzdR0f58q9vGOuEU= -golang.org/x/sys v0.47.0 h1:o7XGOvZQCADBQQ4Y7VNq2dRWQR7JmOUW8Kxx4ZsNgWs= -golang.org/x/sys v0.47.0/go.mod h1:4GL1E5IUh+htKOUEOaiffhrAeqysfVGipDYzABqnCmw= -golang.org/x/text v0.40.0 h1:Ub2Z6/xjgF1WrYQz2nuITOEegKFtiIy+rieRJ5lHZKs= -golang.org/x/text v0.40.0/go.mod h1:hpnzDAfGV753zIKo+wk3u1bVKCGPbrnF7+7LBF/UHVY= -gonum.org/v1/gonum v0.17.0 h1:VbpOemQlsSMrYmn7T2OUvQ4dqxQXU+ouZFQsZOx50z4= -gonum.org/v1/gonum v0.17.0/go.mod h1:El3tOrEuMpv2UdMrbNlKEh9vd86bmQ6vqIcDwxEOc1E= -google.golang.org/genproto/googleapis/rpc v0.0.0-20260803160001-6ac0973c030d h1:IL4hdHzcUv2l/gcg98/Rj3FbtE6axwqslOW8SW0C+S0= -google.golang.org/genproto/googleapis/rpc v0.0.0-20260803160001-6ac0973c030d/go.mod h1:4Hqkh8ycfw05ld/3BWL7rJOSfebL2Q+DVDeRgYgxUU8= -google.golang.org/grpc v1.83.0 h1:JeNZEKJFbQxArAMl+hiytHauacDNqJUllNfmIMmpqnQ= -google.golang.org/grpc v1.83.0/go.mod h1:kDyl6SKsiHKt0uylY5gtn5cEjkrIOhQOGDgIc4JGwzQ= -google.golang.org/protobuf v1.36.12 h1:pJOKDDOyeXErUroCihFAd5LQuwXBSpVnKGrj5o/fwxc= -google.golang.org/protobuf v1.36.12/go.mod h1:HTf+CrKn2C3g5S8VImy6tdcUvCska2kB7j23XfzDpco= -gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= -gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c h1:Hei/4ADfdWqJk1ZMxUNpqntNwaWcugrBjAiHlqqRiVk= -gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c/go.mod h1:JHkPIbrfpd72SG/EVd6muEfDQjcINNoR0C8j2r3qZ4Q= -gopkg.in/ini.v1 v1.67.3 h1:iM9Lhz5MRSGhHVGGwCuzG9KO8PoirCXj/m/qTmOJJQw= -gopkg.in/ini.v1 v1.67.3/go.mod h1:x/cyOwCgZqOkJoDIJ3c1KNHMo10+nLGAhh+kn3Zizss= -gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= -gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA= -gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= diff --git a/pkg/splunkoutputsexporter/subexporter.go b/pkg/splunkoutputsexporter/subexporter.go deleted file mode 100644 index 8302f8f..0000000 --- a/pkg/splunkoutputsexporter/subexporter.go +++ /dev/null @@ -1,124 +0,0 @@ -// Copyright Splunk, Inc. -// SPDX-License-Identifier: Apache-2.0 - -package splunkoutputsexporter - -import ( - "context" - "fmt" - - "go.opentelemetry.io/collector/component" - "go.opentelemetry.io/collector/exporter" - "go.uber.org/zap" - - "github.com/splunk/tarunner/pkg/splunkta/conf" - "github.com/splunk/tarunner/pkg/splunkta/stanza" - "github.com/splunk/tarunner/pkg/splunkta/tabuilder" -) - -type ( - Output = conf.Output - Configuration = conf.Configuration - Stanza = conf.Stanza - Params = conf.Params - Param = conf.Param -) - -// ExporterRequest is passed to a sub-exporter factory for one outputs.conf -// stanza. Path is the parsed target from the stanza name. -type ExporterRequest struct { - BaseDir string - Path string - Output Output -} - -// SubExporterFactory creates a logs exporter for one outputs.conf stanza kind. -// -// Scheme returns the output stanza kind to match. Kinds are matched -// case-sensitively, matching Splunk UF behavior. -type SubExporterFactory interface { - Scheme() string - CreateLogs(context.Context, exporter.Settings, ExporterRequest) (exporter.Logs, error) -} - -// Option configures the splunk_outputs factory. -type Option func(*factoryOptions) - -// WithSubExporter registers a sub-exporter factory by Scheme. If another -// factory is already registered for the same scheme, it is replaced. -func WithSubExporter(f SubExporterFactory) Option { - return func(o *factoryOptions) { - if f == nil { - return - } - o.subExporters[f.Scheme()] = f - } -} - -type factoryOptions struct { - subExporters map[string]SubExporterFactory -} - -func newFactoryOptions(opts ...Option) factoryOptions { - options := factoryOptions{ - subExporters: map[string]SubExporterFactory{}, - } - - for _, opt := range opts { - if opt != nil { - opt(&options) - } - } - return options -} - -func (o factoryOptions) createLogsFunc(ctx context.Context, settings exporter.Settings, config component.Config) (exporter.Logs, error) { - cfg := config.(Config) - - splunkHome, err := tabuilder.ResolveSplunkHome(cfg.BaseDir) - if err != nil { - return nil, fmt.Errorf("splunk_outputs: %w", err) - } - - outputs, err := tabuilder.ReadOutputGroups(splunkHome) - if err != nil { - return nil, fmt.Errorf("splunk_outputs: %w (base_dir: %s)", err, splunkHome) - } - - exporters, err := o.createExporters(ctx, splunkHome, outputs, settings) - if err != nil { - return nil, fmt.Errorf("splunk_outputs: %w", err) - } - return packExporters(exporters), nil -} - -func (o factoryOptions) createExporters(ctx context.Context, baseDir string, outputs []Output, settings exporter.Settings) ([]exporter.Logs, error) { - var exporters []exporter.Logs - for _, output := range outputs { - e, err := o.createExporter(ctx, baseDir, output, settings) - if err != nil { - return nil, fmt.Errorf("failed to create exporter %q: %w", output.Configuration.Stanza.Name, err) - } - if e == nil { - settings.Logger.Info("splunk_outputs: skipping unsupported output stanza", zap.String("stanza", output.Configuration.Stanza.Name)) - continue - } - exporters = append(exporters, e) - } - return exporters, nil -} - -func (o factoryOptions) createExporter(ctx context.Context, baseDir string, output Output, settings exporter.Settings) (exporter.Logs, error) { - parsed, err := stanza.ParseOutputName(output.Configuration.Stanza.Name) - if err != nil { - return nil, err - } - if f, ok := o.subExporters[parsed.Kind]; ok { - return f.CreateLogs(ctx, settings, ExporterRequest{ - BaseDir: baseDir, - Path: parsed.Target, - Output: output, - }) - } - return tabuilder.CreateOutputExporter(&output, settings.Logger, settings.TelemetrySettings) -} diff --git a/pkg/splunkoutputsexporter/testdata/nohttpout/etc/system/local/outputs.conf b/pkg/splunkoutputsexporter/testdata/nohttpout/etc/system/local/outputs.conf deleted file mode 100644 index 0200a82..0000000 --- a/pkg/splunkoutputsexporter/testdata/nohttpout/etc/system/local/outputs.conf +++ /dev/null @@ -1,2 +0,0 @@ -[tcpout] -server = splunk:9997 \ No newline at end of file diff --git a/pkg/splunkta/tabuilder/tabuilder.go b/pkg/splunkta/tabuilder/tabuilder.go index 12fc5fe..efc8880 100644 --- a/pkg/splunkta/tabuilder/tabuilder.go +++ b/pkg/splunkta/tabuilder/tabuilder.go @@ -5,7 +5,7 @@ // the per-input logs receivers and per-output logs exporters. It is the single // source of truth for the stanza -> component mapping, shared by the standalone // collector runner (internal/collector) and the OTel plugins -// (pkg/splunkinputsreceiver, pkg/splunkoutputsexporter). +// (pkg/splunkinputsreceiver). package tabuilder import (