From e60252bfd2f70ac4b79fca47ca9617d929b4a6ee Mon Sep 17 00:00:00 2001 From: alex boten <223565+codeboten@users.noreply.github.com> Date: Thu, 30 Oct 2025 14:37:48 -0700 Subject: [PATCH 01/12] otelconf: update test files Split off from #8106, updating the tls files to real test files. Signed-off-by: alex boten <223565+codeboten@users.noreply.github.com> --- otelconf/config_test.go | 36 ++++++++++++------------ otelconf/testdata/client.crt | 22 +++++++++++++++ otelconf/testdata/{ca.key => client.key} | 0 otelconf/testdata/v1.0.0.json | 36 ++++++++++++------------ otelconf/testdata/v1.0.0.yaml | 36 ++++++++++++------------ 5 files changed, 76 insertions(+), 54 deletions(-) create mode 100644 otelconf/testdata/client.crt rename otelconf/testdata/{ca.key => client.key} (100%) diff --git a/otelconf/config_test.go b/otelconf/config_test.go index 582e87cff7a..f458e9ffefe 100644 --- a/otelconf/config_test.go +++ b/otelconf/config_test.go @@ -557,9 +557,9 @@ var v10OpenTelemetryConfig = OpenTelemetryConfiguration{ ExportTimeout: ptr(30000), Exporter: LogRecordExporter{ OTLPHttp: &OTLPHttpExporter{ - CertificateFile: ptr("/app/cert.pem"), - ClientCertificateFile: ptr("/app/cert.pem"), - ClientKeyFile: ptr("/app/cert.pem"), + CertificateFile: ptr("testdata/ca.crt"), + ClientCertificateFile: ptr("testdata/client.crt"), + ClientKeyFile: ptr("testdata/client.key"), Compression: ptr("gzip"), Encoding: ptr(OTLPHttpEncodingProtobuf), Endpoint: ptr("http://localhost:4318/v1/logs"), @@ -579,9 +579,9 @@ var v10OpenTelemetryConfig = OpenTelemetryConfiguration{ Batch: &BatchLogRecordProcessor{ Exporter: LogRecordExporter{ OTLPGrpc: &OTLPGrpcExporter{ - CertificateFile: ptr("/app/cert.pem"), - ClientCertificateFile: ptr("/app/cert.pem"), - ClientKeyFile: ptr("/app/cert.pem"), + CertificateFile: ptr("testdata/ca.crt"), + ClientCertificateFile: ptr("testdata/client.crt"), + ClientKeyFile: ptr("testdata/client.key"), Compression: ptr("gzip"), Endpoint: ptr("http://localhost:4317"), Headers: []NameStringValuePair{ @@ -689,9 +689,9 @@ var v10OpenTelemetryConfig = OpenTelemetryConfiguration{ }, Exporter: PushMetricExporter{ OTLPHttp: &OTLPHttpMetricExporter{ - CertificateFile: ptr("/app/cert.pem"), - ClientCertificateFile: ptr("/app/cert.pem"), - ClientKeyFile: ptr("/app/cert.pem"), + CertificateFile: ptr("testdata/ca.crt"), + ClientCertificateFile: ptr("testdata/client.crt"), + ClientKeyFile: ptr("testdata/client.key"), Compression: ptr("gzip"), DefaultHistogramAggregation: ptr(ExporterDefaultHistogramAggregationBase2ExponentialBucketHistogram), Endpoint: ptr("http://localhost:4318/v1/metrics"), @@ -712,9 +712,9 @@ var v10OpenTelemetryConfig = OpenTelemetryConfiguration{ Periodic: &PeriodicMetricReader{ Exporter: PushMetricExporter{ OTLPGrpc: &OTLPGrpcMetricExporter{ - CertificateFile: ptr("/app/cert.pem"), - ClientCertificateFile: ptr("/app/cert.pem"), - ClientKeyFile: ptr("/app/cert.pem"), + CertificateFile: ptr("testdata/ca.crt"), + ClientCertificateFile: ptr("testdata/client.crt"), + ClientKeyFile: ptr("testdata/client.key"), Compression: ptr("gzip"), DefaultHistogramAggregation: ptr(ExporterDefaultHistogramAggregationBase2ExponentialBucketHistogram), Endpoint: ptr("http://localhost:4317"), @@ -863,9 +863,9 @@ var v10OpenTelemetryConfig = OpenTelemetryConfiguration{ ExportTimeout: ptr(30000), Exporter: SpanExporter{ OTLPHttp: &OTLPHttpExporter{ - CertificateFile: ptr("/app/cert.pem"), - ClientCertificateFile: ptr("/app/cert.pem"), - ClientKeyFile: ptr("/app/cert.pem"), + CertificateFile: ptr("testdata/ca.crt"), + ClientCertificateFile: ptr("testdata/client.crt"), + ClientKeyFile: ptr("testdata/client.key"), Compression: ptr("gzip"), Encoding: ptr(OTLPHttpEncodingProtobuf), Endpoint: ptr("http://localhost:4318/v1/traces"), @@ -885,9 +885,9 @@ var v10OpenTelemetryConfig = OpenTelemetryConfiguration{ Batch: &BatchSpanProcessor{ Exporter: SpanExporter{ OTLPGrpc: &OTLPGrpcExporter{ - CertificateFile: ptr("/app/cert.pem"), - ClientCertificateFile: ptr("/app/cert.pem"), - ClientKeyFile: ptr("/app/cert.pem"), + CertificateFile: ptr("testdata/ca.crt"), + ClientCertificateFile: ptr("testdata/client.crt"), + ClientKeyFile: ptr("testdata/client.key"), Compression: ptr("gzip"), Endpoint: ptr("http://localhost:4317"), Headers: []NameStringValuePair{ diff --git a/otelconf/testdata/client.crt b/otelconf/testdata/client.crt new file mode 100644 index 00000000000..51013bceb5d --- /dev/null +++ b/otelconf/testdata/client.crt @@ -0,0 +1,22 @@ +-----BEGIN CERTIFICATE----- +MIIDnzCCAoegAwIBAgIUBxmeJyLb45dq6RmW5bOFIl8VON0wDQYJKoZIhvcNAQEL +BQAwXzELMAkGA1UEBhMCVVMxEzARBgNVBAgMCkNhbGlmb3JuaWExFjAUBgNVBAcM +DVNhbiBGcmFuY2lzY28xEzARBgNVBAoMCk15IENvbXBhbnkxDjAMBgNVBAMMBU15 +IENBMB4XDTI1MDQxNTEyMjM0MloXDTI2MDQxNTEyMjM0MlowXzELMAkGA1UEBhMC +VVMxEzARBgNVBAgMCkNhbGlmb3JuaWExFjAUBgNVBAcMDVNhbiBGcmFuY2lzY28x +EzARBgNVBAoMCk15IENvbXBhbnkxDjAMBgNVBAMMBU15IENBMIIBIjANBgkqhkiG +9w0BAQEFAAOCAQ8AMIIBCgKCAQEA3ywD9NQpjd2H/PaHnodeX6YWn67OaqODTsUs +mOcJphhfya+/lybNtWScHoiURpB40QhTacDsjQ7J0Trykznm6ynl06uSQZKONVxo +LW+FmCBDRE+BqmFBFdMEMvRBGVxns7IctzY//GaZbX81Ni1pyLrzrRG9B5LuU7Sb +yggByJrut72RC7bRgAz8v2s++JKvDVKRk3hTmSwCiEC30s9QUu1N9BGnib5V09v/ +Sa7wseVp7ICGC0YckCkJMIjvzpaVMFA9/uMHFnloty+gMs/eMWGw0bb391QJb+k8 +WQHRZAlKTaLKVqeXC5G5CvK+u3q6j+4hQG46IclOJ76lRY//MwIDAQABo1MwUTAd +BgNVHQ4EFgQU5QWO+akQtDDflpGrTaXR4zEeah8wHwYDVR0jBBgwFoAU5QWO+akQ +tDDflpGrTaXR4zEeah8wDwYDVR0TAQH/BAUwAwEB/zANBgkqhkiG9w0BAQsFAAOC +AQEAkNcppwcF+zjeZNmzGTccO1lSkPeC2LLlp/oEna0KUEGuKDFCemamxvESmua0 ++bXt9vw1qd+VztDIZ+zB+yAYYWyKYm41Nu1+IweLD8jmKPoQc5UXiWlSdF1Sjeub +9vcuX/G+FPOAGklt6X62y/jnlcumv1SOMB2BftSdD1Co8Yl9NRqFf3/OiEvd10bH +UXttTae4XEOp5p06ZFHW4JAnrHWBeuiLNJoswdKbA3rQO1Z6u5ioakluNHiCJX6T +fcJxbEVmorLNfBOnZTm61rPsC5aVtvFAxXDDb6B00KBW9FrV9m2MEFw71bMmC8X3 +rFaC9Gm5g2bfyX/65YBQyLwXRA== +-----END CERTIFICATE----- diff --git a/otelconf/testdata/ca.key b/otelconf/testdata/client.key similarity index 100% rename from otelconf/testdata/ca.key rename to otelconf/testdata/client.key diff --git a/otelconf/testdata/v1.0.0.json b/otelconf/testdata/v1.0.0.json index fe6a130b3f4..d9f81f6bd24 100644 --- a/otelconf/testdata/v1.0.0.json +++ b/otelconf/testdata/v1.0.0.json @@ -17,9 +17,9 @@ "exporter": { "otlp_http": { "endpoint": "http://localhost:4318/v1/logs", - "certificate_file": "/app/cert.pem", - "client_key_file": "/app/cert.pem", - "client_certificate_file": "/app/cert.pem", + "certificate_file": "testdata/ca.crt", + "client_key_file": "testdata/client.key", + "client_certificate_file": "testdata/client.crt", "headers": [ { "name": "api-key", @@ -39,9 +39,9 @@ "exporter": { "otlp_grpc": { "endpoint": "http://localhost:4317", - "certificate_file": "/app/cert.pem", - "client_key_file": "/app/cert.pem", - "client_certificate_file": "/app/cert.pem", + "certificate_file": "testdata/ca.crt", + "client_key_file": "testdata/client.key", + "client_certificate_file": "testdata/client.crt", "headers": [ { "name": "api-key", @@ -144,9 +144,9 @@ "exporter": { "otlp_http": { "endpoint": "http://localhost:4318/v1/metrics", - "certificate_file": "/app/cert.pem", - "client_key_file": "/app/cert.pem", - "client_certificate_file": "/app/cert.pem", + "certificate_file": "testdata/ca.crt", + "client_key_file": "testdata/client.key", + "client_certificate_file": "testdata/client.crt", "headers": [ { "name": "api-key", @@ -183,9 +183,9 @@ "exporter": { "otlp_grpc": { "endpoint": "http://localhost:4317", - "certificate_file": "/app/cert.pem", - "client_key_file": "/app/cert.pem", - "client_certificate_file": "/app/cert.pem", + "certificate_file": "testdata/ca.crt", + "client_key_file": "testdata/client.key", + "client_certificate_file": "testdata/client.crt", "headers": [ { "name": "api-key", @@ -329,9 +329,9 @@ "exporter": { "otlp_http": { "endpoint": "http://localhost:4318/v1/traces", - "certificate_file": "/app/cert.pem", - "client_key_file": "/app/cert.pem", - "client_certificate_file": "/app/cert.pem", + "certificate_file": "testdata/ca.crt", + "client_key_file": "testdata/client.key", + "client_certificate_file": "testdata/client.crt", "headers": [ { "name": "api-key", @@ -351,9 +351,9 @@ "exporter": { "otlp_grpc": { "endpoint": "http://localhost:4317", - "certificate_file": "/app/cert.pem", - "client_key_file": "/app/cert.pem", - "client_certificate_file": "/app/cert.pem", + "certificate_file": "testdata/ca.crt", + "client_key_file": "testdata/client.key", + "client_certificate_file": "testdata/client.crt", "headers": [ { "name": "api-key", diff --git a/otelconf/testdata/v1.0.0.yaml b/otelconf/testdata/v1.0.0.yaml index ba0341f7eed..1a7814ab7f0 100644 --- a/otelconf/testdata/v1.0.0.yaml +++ b/otelconf/testdata/v1.0.0.yaml @@ -54,15 +54,15 @@ logger_provider: # Configure certificate used to verify a server's TLS credentials. # Absolute path to certificate file in PEM format. # If omitted or null, system default certificate verification is used for secure connections. - certificate_file: /app/cert.pem + certificate_file: testdata/ca.crt # Configure mTLS private client key. # Absolute path to client key file in PEM format. If set, .client_certificate must also be set. # If omitted or null, mTLS is not used. - client_key_file: /app/cert.pem + client_key_file: testdata/client.key # Configure mTLS client certificate. # Absolute path to client certificate file in PEM format. If set, .client_key must also be set. # If omitted or null, mTLS is not used. - client_certificate_file: /app/cert.pem + client_certificate_file: testdata/client.crt # Configure headers. Entries have higher priority than entries from .headers_list. # If an entry's .value is null, the entry is ignored. headers: @@ -96,15 +96,15 @@ logger_provider: # Configure certificate used to verify a server's TLS credentials. # Absolute path to certificate file in PEM format. # If omitted or null, system default certificate verification is used for secure connections. - certificate_file: /app/cert.pem + certificate_file: testdata/ca.crt # Configure mTLS private client key. # Absolute path to client key file in PEM format. If set, .client_certificate must also be set. # If omitted or null, mTLS is not used. - client_key_file: /app/cert.pem + client_key_file: testdata/client.key # Configure mTLS client certificate. # Absolute path to client certificate file in PEM format. If set, .client_key must also be set. # If omitted or null, mTLS is not used. - client_certificate_file: /app/cert.pem + client_certificate_file: testdata/client.crt # Configure headers. Entries have higher priority than entries from .headers_list. # If an entry's .value is null, the entry is ignored. headers: @@ -279,15 +279,15 @@ meter_provider: # Configure certificate used to verify a server's TLS credentials. # Absolute path to certificate file in PEM format. # If omitted or null, system default certificate verification is used for secure connections. - certificate_file: /app/cert.pem + certificate_file: testdata/ca.crt # Configure mTLS private client key. # Absolute path to client key file in PEM format. If set, .client_certificate must also be set. # If omitted or null, mTLS is not used. - client_key_file: /app/cert.pem + client_key_file: testdata/client.key # Configure mTLS client certificate. # Absolute path to client certificate file in PEM format. If set, .client_key must also be set. # If omitted or null, mTLS is not used. - client_certificate_file: /app/cert.pem + client_certificate_file: testdata/client.crt # Configure headers. Entries have higher priority than entries from .headers_list. # If an entry's .value is null, the entry is ignored. headers: @@ -360,15 +360,15 @@ meter_provider: # Configure certificate used to verify a server's TLS credentials. # Absolute path to certificate file in PEM format. # If omitted or null, system default certificate verification is used for secure connections. - certificate_file: /app/cert.pem + certificate_file: testdata/ca.crt # Configure mTLS private client key. # Absolute path to client key file in PEM format. If set, .client_certificate must also be set. # If omitted or null, mTLS is not used. - client_key_file: /app/cert.pem + client_key_file: testdata/client.key # Configure mTLS client certificate. # Absolute path to client certificate file in PEM format. If set, .client_key must also be set. # If omitted or null, mTLS is not used. - client_certificate_file: /app/cert.pem + client_certificate_file: testdata/client.crt # Configure headers. Entries have higher priority than entries from .headers_list. # If an entry's .value is null, the entry is ignored. headers: @@ -591,15 +591,15 @@ tracer_provider: # Configure certificate used to verify a server's TLS credentials. # Absolute path to certificate file in PEM format. # If omitted or null, system default certificate verification is used for secure connections. - certificate_file: /app/cert.pem + certificate_file: testdata/ca.crt # Configure mTLS private client key. # Absolute path to client key file in PEM format. If set, .client_certificate must also be set. # If omitted or null, mTLS is not used. - client_key_file: /app/cert.pem + client_key_file: testdata/client.key # Configure mTLS client certificate. # Absolute path to client certificate file in PEM format. If set, .client_key must also be set. # If omitted or null, mTLS is not used. - client_certificate_file: /app/cert.pem + client_certificate_file: testdata/client.crt # Configure headers. Entries have higher priority than entries from .headers_list. # If an entry's .value is null, the entry is ignored. headers: @@ -633,15 +633,15 @@ tracer_provider: # Configure certificate used to verify a server's TLS credentials. # Absolute path to certificate file in PEM format. # If omitted or null, system default certificate verification is used for secure connections. - certificate_file: /app/cert.pem + certificate_file: testdata/ca.crt # Configure mTLS private client key. # Absolute path to client key file in PEM format. If set, .client_certificate must also be set. # If omitted or null, mTLS is not used. - client_key_file: /app/cert.pem + client_key_file: testdata/client.key # Configure mTLS client certificate. # Absolute path to client certificate file in PEM format. If set, .client_key must also be set. # If omitted or null, mTLS is not used. - client_certificate_file: /app/cert.pem + client_certificate_file: testdata/client.crt # Configure headers. Entries have higher priority than entries from .headers_list. # If an entry's .value is null, the entry is ignored. headers: From 7f1a732e4adda78fd55f6b6febf0e2fcadd7fc96 Mon Sep 17 00:00:00 2001 From: alex boten <223565+codeboten@users.noreply.github.com> Date: Thu, 30 Oct 2025 14:37:48 -0700 Subject: [PATCH 02/12] otelconf: add support for OTEL_EXPERIMENTAL_CONFIG_FILE As discussed in #8059, adding an init function to support users passing in a configuration file via the environment variables OTEL_EXPERIMENTAL_CONFIG_FILE. Fixes https://github.com/open-telemetry/opentelemetry-go-contrib/issues/8059 Signed-off-by: alex boten <223565+codeboten@users.noreply.github.com> --- otelconf/config.go | 56 ++++++++++++++++++++++++++++++++++++++++++---- 1 file changed, 52 insertions(+), 4 deletions(-) diff --git a/otelconf/config.go b/otelconf/config.go index db6305803b8..c3a9bd9f027 100644 --- a/otelconf/config.go +++ b/otelconf/config.go @@ -7,8 +7,12 @@ package otelconf // import "go.opentelemetry.io/contrib/otelconf" import ( "context" "errors" + "log" + "os" - "go.opentelemetry.io/otel/log" + "go.opentelemetry.io/otel" + apilog "go.opentelemetry.io/otel/log" + "go.opentelemetry.io/otel/log/global" nooplog "go.opentelemetry.io/otel/log/noop" "go.opentelemetry.io/otel/metric" noopmetric "go.opentelemetry.io/otel/metric/noop" @@ -27,7 +31,7 @@ import ( type SDK struct { meterProvider metric.MeterProvider tracerProvider trace.TracerProvider - loggerProvider log.LoggerProvider + loggerProvider apilog.LoggerProvider shutdown shutdownFunc } @@ -41,8 +45,8 @@ func (s *SDK) MeterProvider() metric.MeterProvider { return s.meterProvider } -// LoggerProvider returns a configured log.LoggerProvider. -func (s *SDK) LoggerProvider() log.LoggerProvider { +// LoggerProvider returns a configured apilog.LoggerProvider. +func (s *SDK) LoggerProvider() apilog.LoggerProvider { return s.loggerProvider } @@ -58,6 +62,50 @@ var noopSDK = SDK{ shutdown: func(context.Context) error { return nil }, } +var sdk *SDK + +// init checks the local environment and uses the file set in the variable +// `OTEL_EXPERIMENTAL_CONFIG_FILE` to configure the SDK automatically. +func init() { + // look for the env variable + filename, ok := os.LookupEnv("OTEL_EXPERIMENTAL_CONFIG_FILE") + if !ok { + return + } + b, err := os.ReadFile(filename) + if err != nil { + log.Fatal(err) + } + + // Parse a configuration file into an OpenTelemetryConfiguration model. + c, err := ParseYAML(b) + if err != nil { + log.Fatal(err) + } + + // Create SDK components with the parsed configuration. + s, err := NewSDK(WithOpenTelemetryConfiguration(*c)) + if err != nil { + log.Fatal(err) + } + + // Set the global providers. + otel.SetTracerProvider(s.TracerProvider()) + otel.SetMeterProvider(s.MeterProvider()) + global.SetLoggerProvider(s.LoggerProvider()) + sdk = &s +} + +// Shutdown calls the shutdown function of the global SDK instantiated if +func Shutdown(ctx context.Context) { + if sdk == nil { + return + } + if err := sdk.Shutdown(ctx); err != nil { + log.Fatal(err) + } +} + // NewSDK creates SDK providers based on the configuration model. func NewSDK(opts ...ConfigurationOption) (SDK, error) { o := configOptions{ From 39603ef055195cb7707bf3ec58ebfb3e441ad5f7 Mon Sep 17 00:00:00 2001 From: alex boten <223565+codeboten@users.noreply.github.com> Date: Mon, 24 Nov 2025 11:50:06 -0800 Subject: [PATCH 03/12] changelog Signed-off-by: alex boten <223565+codeboten@users.noreply.github.com> --- CHANGELOG.md | 1 + 1 file changed, 1 insertion(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 5c65386dc4a..24e39822e11 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -22,6 +22,7 @@ This project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.htm - Add unmarshaling and validation for `AttributeType`, `AttributeNameValue`, `SimpleSpanProcessor`, `SimpleLogRecordProcessor`, `ZipkinSpanExporter`, `NameStringValuePair`, `InstrumentType`, `ExperimentalPeerInstrumentationServiceMappingElem`, `ExporterDefaultHistogramAggregation`, `PullMetricReader` to v1.0.0 model in `go.opentelemetry.io/contrib/otelconf`. (#8127) - Updated `go.opentelemetry.io/contrib/otelconf` to include the [v1.0.0-rc2](https://github.com/open-telemetry/opentelemetry-configuration/releases/tag/v1.0.0-rc.2) release candidate of schema which includes backwards incompatible changes. (#8026) - Support `db.client.operation.duration` metric for `go.opentelemetry.io/contrib/instrumentation/go.mongodb.org/mongo-driver/v2/mongo/otelmongo`. (#7983) +- Add support for `OTEL_EXPERIMENTAL_CONFIG_FILE` via an init function in `go.opentelemetry.io/contrib/otelconf` (#8106) ### Changed From 1808418f05b593ad1c0329cf20a014fde82e6c25 Mon Sep 17 00:00:00 2001 From: alex boten <223565+codeboten@users.noreply.github.com> Date: Thu, 27 Nov 2025 07:59:24 -0800 Subject: [PATCH 04/12] apply review feedback Signed-off-by: alex boten <223565+codeboten@users.noreply.github.com> --- otelconf/config.go | 20 +++++++++++++------- 1 file changed, 13 insertions(+), 7 deletions(-) diff --git a/otelconf/config.go b/otelconf/config.go index c3a9bd9f027..923b1880128 100644 --- a/otelconf/config.go +++ b/otelconf/config.go @@ -10,9 +10,7 @@ import ( "log" "os" - "go.opentelemetry.io/otel" apilog "go.opentelemetry.io/otel/log" - "go.opentelemetry.io/otel/log/global" nooplog "go.opentelemetry.io/otel/log/noop" "go.opentelemetry.io/otel/metric" noopmetric "go.opentelemetry.io/otel/metric/noop" @@ -89,14 +87,22 @@ func init() { log.Fatal(err) } - // Set the global providers. - otel.SetTracerProvider(s.TracerProvider()) - otel.SetMeterProvider(s.MeterProvider()) - global.SetLoggerProvider(s.LoggerProvider()) sdk = &s } -// Shutdown calls the shutdown function of the global SDK instantiated if +// Global returns the globally configured SDK only instantiated +// through the use of the `OTEL_EXPERIMENTAL_CONFIG_FILE“ environment +// variable. +func Global() SDK { + if sdk != nil { + return *sdk + } + return noopSDK +} + +// Shutdown calls the `Shutdown` function of the globally configured SDK only instantiated +// through the use of the `OTEL_EXPERIMENTAL_CONFIG_FILE“ environment +// variable. func Shutdown(ctx context.Context) { if sdk == nil { return From cb913010168e62d36975776896fa06d67b640f97 Mon Sep 17 00:00:00 2001 From: alex boten <223565+codeboten@users.noreply.github.com> Date: Thu, 27 Nov 2025 08:13:55 -0800 Subject: [PATCH 05/12] update code to use env var in NewSDK instead of init func Signed-off-by: alex boten <223565+codeboten@users.noreply.github.com> --- CHANGELOG.md | 2 +- otelconf/config.go | 56 ++++++++++++---------------------------------- 2 files changed, 15 insertions(+), 43 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 24e39822e11..8dd64126697 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -22,7 +22,7 @@ This project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.htm - Add unmarshaling and validation for `AttributeType`, `AttributeNameValue`, `SimpleSpanProcessor`, `SimpleLogRecordProcessor`, `ZipkinSpanExporter`, `NameStringValuePair`, `InstrumentType`, `ExperimentalPeerInstrumentationServiceMappingElem`, `ExporterDefaultHistogramAggregation`, `PullMetricReader` to v1.0.0 model in `go.opentelemetry.io/contrib/otelconf`. (#8127) - Updated `go.opentelemetry.io/contrib/otelconf` to include the [v1.0.0-rc2](https://github.com/open-telemetry/opentelemetry-configuration/releases/tag/v1.0.0-rc.2) release candidate of schema which includes backwards incompatible changes. (#8026) - Support `db.client.operation.duration` metric for `go.opentelemetry.io/contrib/instrumentation/go.mongodb.org/mongo-driver/v2/mongo/otelmongo`. (#7983) -- Add support for `OTEL_EXPERIMENTAL_CONFIG_FILE` via an init function in `go.opentelemetry.io/contrib/otelconf` (#8106) +- Add support for `OTEL_EXPERIMENTAL_CONFIG_FILE` via the `NewSDK` function in `go.opentelemetry.io/contrib/otelconf` (#8106) ### Changed diff --git a/otelconf/config.go b/otelconf/config.go index 923b1880128..3d63f8e20a8 100644 --- a/otelconf/config.go +++ b/otelconf/config.go @@ -7,7 +7,6 @@ package otelconf // import "go.opentelemetry.io/contrib/otelconf" import ( "context" "errors" - "log" "os" apilog "go.opentelemetry.io/otel/log" @@ -60,60 +59,33 @@ var noopSDK = SDK{ shutdown: func(context.Context) error { return nil }, } -var sdk *SDK - -// init checks the local environment and uses the file set in the variable -// `OTEL_EXPERIMENTAL_CONFIG_FILE` to configure the SDK automatically. -func init() { - // look for the env variable - filename, ok := os.LookupEnv("OTEL_EXPERIMENTAL_CONFIG_FILE") - if !ok { - return - } +func parseConfigFileFromEnvironment(filename string) (ConfigurationOption, error) { b, err := os.ReadFile(filename) if err != nil { - log.Fatal(err) + return nil, err } // Parse a configuration file into an OpenTelemetryConfiguration model. c, err := ParseYAML(b) if err != nil { - log.Fatal(err) + return nil, err } // Create SDK components with the parsed configuration. - s, err := NewSDK(WithOpenTelemetryConfiguration(*c)) - if err != nil { - log.Fatal(err) - } - - sdk = &s + return WithOpenTelemetryConfiguration(*c), nil } -// Global returns the globally configured SDK only instantiated -// through the use of the `OTEL_EXPERIMENTAL_CONFIG_FILE“ environment -// variable. -func Global() SDK { - if sdk != nil { - return *sdk - } - return noopSDK -} - -// Shutdown calls the `Shutdown` function of the globally configured SDK only instantiated -// through the use of the `OTEL_EXPERIMENTAL_CONFIG_FILE“ environment -// variable. -func Shutdown(ctx context.Context) { - if sdk == nil { - return - } - if err := sdk.Shutdown(ctx); err != nil { - log.Fatal(err) - } -} - -// NewSDK creates SDK providers based on the configuration model. +// NewSDK creates SDK providers based on the configuration model. It checks the local environment and +// uses the file set in the variable `OTEL_EXPERIMENTAL_CONFIG_FILE` to configure the SDK automatically. func NewSDK(opts ...ConfigurationOption) (SDK, error) { + filename, ok := os.LookupEnv("OTEL_EXPERIMENTAL_CONFIG_FILE") + if ok { + opt, err := parseConfigFileFromEnvironment(filename) + if err != nil { + return noopSDK, err + } + opts = append(opts, opt) + } o := configOptions{ ctx: context.Background(), } From bac0580366b8d2017f5234086ed2de466c54e9b5 Mon Sep 17 00:00:00 2001 From: alex boten <223565+codeboten@users.noreply.github.com> Date: Thu, 27 Nov 2025 09:33:32 -0800 Subject: [PATCH 06/12] use const for env var Signed-off-by: alex boten <223565+codeboten@users.noreply.github.com> --- otelconf/config.go | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/otelconf/config.go b/otelconf/config.go index 3d63f8e20a8..0c58d3cc4b9 100644 --- a/otelconf/config.go +++ b/otelconf/config.go @@ -23,6 +23,8 @@ import ( "go.opentelemetry.io/contrib/otelconf/internal/provider" ) +const envVarConfigFile = "OTEL_EXPERIMENTAL_CONFIG_FILE" + // SDK is a struct that contains all the providers // configured via the configuration model. type SDK struct { @@ -78,7 +80,7 @@ func parseConfigFileFromEnvironment(filename string) (ConfigurationOption, error // NewSDK creates SDK providers based on the configuration model. It checks the local environment and // uses the file set in the variable `OTEL_EXPERIMENTAL_CONFIG_FILE` to configure the SDK automatically. func NewSDK(opts ...ConfigurationOption) (SDK, error) { - filename, ok := os.LookupEnv("OTEL_EXPERIMENTAL_CONFIG_FILE") + filename, ok := os.LookupEnv(envVarConfigFile) if ok { opt, err := parseConfigFileFromEnvironment(filename) if err != nil { From 629cb1289fe05f78f3f7b3392a03cc39ce8202cd Mon Sep 17 00:00:00 2001 From: alex boten <223565+codeboten@users.noreply.github.com> Date: Thu, 27 Nov 2025 09:34:02 -0800 Subject: [PATCH 07/12] update test Signed-off-by: alex boten <223565+codeboten@users.noreply.github.com> --- otelconf/config_test.go | 26 ++++++++++++++++++++++++++ 1 file changed, 26 insertions(+) diff --git a/otelconf/config_test.go b/otelconf/config_test.go index f458e9ffefe..47ec198aabc 100644 --- a/otelconf/config_test.go +++ b/otelconf/config_test.go @@ -450,6 +450,32 @@ func TestNewSDK(t *testing.T) { } } +func TestNewSDKWithEnvVar(t *testing.T) { + cfg := []ConfigurationOption{ + WithContext(t.Context()), + WithOpenTelemetryConfiguration(OpenTelemetryConfiguration{ + TracerProvider: &ResourceJson{}, + }), + } + // NewSDK without an env file set + _, err := NewSDK(cfg...) + require.Equal(t, newErrInvalid("tracer_provider"), err) + // test a non existent file + t.Setenv(envVarConfigFile, filepath.Join("testdata", "file_missing.yaml")) + _, err = NewSDK(cfg...) + require.Error(t, err) + require.ErrorContains(t, err, "no such file or directory") + // test a file that causes a parse error + t.Setenv(envVarConfigFile, filepath.Join("testdata", "v1.0.0_invalid_nil_name.yaml")) + _, err = NewSDK(cfg...) + require.Error(t, err) + require.ErrorIs(t, err, newErrRequired(&NameStringValuePair{}, "name")) + // test a valid file, error is returned from the SDK instantiation + t.Setenv(envVarConfigFile, filepath.Join("testdata", "v1.0.0.yaml")) + _, err = NewSDK(cfg...) + require.ErrorIs(t, err, newErrInvalid("otlp_file/development")) +} + var v10OpenTelemetryConfig = OpenTelemetryConfiguration{ Disabled: ptr(false), FileFormat: "1.0-rc.2", From 5d726388c6a5c9a0ec5bdb696953d10ecfa67e10 Mon Sep 17 00:00:00 2001 From: alex boten <223565+codeboten@users.noreply.github.com> Date: Thu, 27 Nov 2025 09:50:29 -0800 Subject: [PATCH 08/12] remove apilog Signed-off-by: alex boten <223565+codeboten@users.noreply.github.com> --- otelconf/config.go | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/otelconf/config.go b/otelconf/config.go index 0c58d3cc4b9..456283cc7af 100644 --- a/otelconf/config.go +++ b/otelconf/config.go @@ -9,7 +9,7 @@ import ( "errors" "os" - apilog "go.opentelemetry.io/otel/log" + "go.opentelemetry.io/otel/log" nooplog "go.opentelemetry.io/otel/log/noop" "go.opentelemetry.io/otel/metric" noopmetric "go.opentelemetry.io/otel/metric/noop" @@ -30,7 +30,7 @@ const envVarConfigFile = "OTEL_EXPERIMENTAL_CONFIG_FILE" type SDK struct { meterProvider metric.MeterProvider tracerProvider trace.TracerProvider - loggerProvider apilog.LoggerProvider + loggerProvider log.LoggerProvider shutdown shutdownFunc } @@ -44,8 +44,8 @@ func (s *SDK) MeterProvider() metric.MeterProvider { return s.meterProvider } -// LoggerProvider returns a configured apilog.LoggerProvider. -func (s *SDK) LoggerProvider() apilog.LoggerProvider { +// LoggerProvider returns a configured log.LoggerProvider. +func (s *SDK) LoggerProvider() log.LoggerProvider { return s.loggerProvider } From 92a926988800e15d4eee6f6c199acabcc952c796 Mon Sep 17 00:00:00 2001 From: alex boten <223565+codeboten@users.noreply.github.com> Date: Fri, 14 Nov 2025 15:14:09 -0800 Subject: [PATCH 09/12] otelconf: add support for parsing resource detectors Fixes #7252 Signed-off-by: alex boten <223565+codeboten@users.noreply.github.com> --- otelconf/config_json.go | 50 +++++++++++++++++++++++++++++++++++ otelconf/config_test.go | 9 ++++--- otelconf/testdata/v1.0.0.json | 8 +++++- otelconf/testdata/v1.0.0.yaml | 19 +++++++------ 4 files changed, 72 insertions(+), 14 deletions(-) diff --git a/otelconf/config_json.go b/otelconf/config_json.go index 6e29871047c..b0a967409cf 100644 --- a/otelconf/config_json.go +++ b/otelconf/config_json.go @@ -122,6 +122,56 @@ func (j *TraceContextPropagator) UnmarshalJSON(b []byte) error { return nil } +// UnmarshalJSON implements json.Unmarshaler. +func (j *ExperimentalResourceDetector) UnmarshalJSON(b []byte) error { + // Use a shadow struct with a RawMessage field to detect key presence. + type Plain ExperimentalResourceDetector + type shadow struct { + Plain + Container json.RawMessage `json:"container"` + Host json.RawMessage `json:"host"` + Process json.RawMessage `json:"process"` + Service json.RawMessage `json:"service"` + } + var sh shadow + if err := json.Unmarshal(b, &sh); err != nil { + return errors.Join(newErrUnmarshal(j), err) + } + + if sh.Container != nil { + var c ExperimentalContainerResourceDetector + if err := json.Unmarshal(sh.Container, &c); err != nil { + return err + } + sh.Plain.Container = c + } + + if sh.Host != nil { + var c ExperimentalHostResourceDetector + if err := json.Unmarshal(sh.Host, &c); err != nil { + return err + } + sh.Plain.Host = c + } + + if sh.Process != nil { + var c ExperimentalProcessResourceDetector + if err := json.Unmarshal(sh.Process, &c); err != nil { + return err + } + sh.Plain.Process = c + } + + if sh.Service != nil { + var c ExperimentalServiceResourceDetector + if err := json.Unmarshal(sh.Service, &c); err != nil { + return err + } + sh.Plain.Service = c + } + return nil +} + // UnmarshalJSON implements json.Unmarshaler. func (j *PushMetricExporter) UnmarshalJSON(b []byte) error { // Use a shadow struct with a RawMessage field to detect key presence. diff --git a/otelconf/config_test.go b/otelconf/config_test.go index 47ec198aabc..c7dd87e0c91 100644 --- a/otelconf/config_test.go +++ b/otelconf/config_test.go @@ -854,9 +854,12 @@ var v10OpenTelemetryConfig = OpenTelemetryConfiguration{ Excluded: []string{"process.command_args"}, Included: []string{"process.*"}, }, - // TODO: implement resource detectors https://github.com/open-telemetry/opentelemetry-go-contrib/issues/7252 - // Detectors: []ExperimentalResourceDetector{} - // }, + Detectors: []ExperimentalResourceDetector{ + {Container: ExperimentalContainerResourceDetector{}}, + {Host: ExperimentalHostResourceDetector{}}, + {Process: ExperimentalProcessResourceDetector{}}, + {Service: ExperimentalServiceResourceDetector{}}, + }, }, SchemaUrl: ptr("https://opentelemetry.io/schemas/1.16.0"), }, diff --git a/otelconf/testdata/v1.0.0.json b/otelconf/testdata/v1.0.0.json index d9f81f6bd24..eec69eadf46 100644 --- a/otelconf/testdata/v1.0.0.json +++ b/otelconf/testdata/v1.0.0.json @@ -515,7 +515,13 @@ "excluded": [ "process.command_args" ] - } + }, + "detectors": [ + {"container": null}, + {"host": null}, + {"process": null}, + {"service": null} + ] }, "schema_url": "https://opentelemetry.io/schemas/1.16.0" }, diff --git a/otelconf/testdata/v1.0.0.yaml b/otelconf/testdata/v1.0.0.yaml index 1a7814ab7f0..2dcdf8a9d11 100644 --- a/otelconf/testdata/v1.0.0.yaml +++ b/otelconf/testdata/v1.0.0.yaml @@ -841,16 +841,15 @@ resource: # Configure resource detectors. # Resource detector names are dependent on the SDK language ecosystem. Please consult documentation for each respective language. # If omitted or null, no resource detectors are enabled. - # TODO: implement resource detectors https://github.com/open-telemetry/opentelemetry-go-contrib/issues/7252 - # detectors: - # - # Enable the container resource detector, which populates container.* attributes. - # container: - # - # Enable the host resource detector, which populates host.* and os.* attributes. - # host: - # - # Enable the process resource detector, which populates process.* attributes. - # process: - # - # Enable the service detector, which populates service.name based on the OTEL_SERVICE_NAME environment variable and service.instance.id. - # service: + detectors: + - # Enable the container resource detector, which populates container.* attributes. + container: + - # Enable the host resource detector, which populates host.* and os.* attributes. + host: + - # Enable the process resource detector, which populates process.* attributes. + process: + - # Enable the service detector, which populates service.name based on the OTEL_SERVICE_NAME environment variable and service.instance.id. + service: # Configure resource schema URL. # If omitted or null, no schema URL is used. schema_url: https://opentelemetry.io/schemas/1.16.0 From f497165247d68f2023575190fc8cd25810ed5765 Mon Sep 17 00:00:00 2001 From: alex boten <223565+codeboten@users.noreply.github.com> Date: Fri, 28 Nov 2025 12:30:11 -0800 Subject: [PATCH 10/12] add resource detector code Signed-off-by: alex boten <223565+codeboten@users.noreply.github.com> --- otelconf/config_test.go | 25 ++++++ otelconf/config_yaml.go | 27 +++++++ otelconf/go.mod | 58 +++++++++++++- otelconf/go.sum | 165 +++++++++++++++++++++++++++++++++++++++- otelconf/resource.go | 48 +++++++++++- 5 files changed, 317 insertions(+), 6 deletions(-) diff --git a/otelconf/config_test.go b/otelconf/config_test.go index c7dd87e0c91..c9f2f4e49f9 100644 --- a/otelconf/config_test.go +++ b/otelconf/config_test.go @@ -2354,3 +2354,28 @@ func TestUnmarshalPullMetricReader(t *testing.T) { }) } } + +func TestUnmarshalResourceJson(t *testing.T) { + r := ResourceJson{} + + err := yaml.Unmarshal([]byte("detection/development:\n detectors:\n - container:\n - host:\n - process:\n - service:"), &r) + require.NoError(t, err) + require.Equal(t, ResourceJson{ + DetectionDevelopment: &ExperimentalResourceDetection{ + Detectors: []ExperimentalResourceDetector{ + { + Container: ExperimentalContainerResourceDetector{}, + }, + { + Host: ExperimentalHostResourceDetector{}, + }, + { + Process: ExperimentalProcessResourceDetector{}, + }, + { + Service: ExperimentalServiceResourceDetector{}, + }, + }, + }, + }, r) +} diff --git a/otelconf/config_yaml.go b/otelconf/config_yaml.go index e116dab207c..8c251e83c24 100644 --- a/otelconf/config_yaml.go +++ b/otelconf/config_yaml.go @@ -26,6 +26,33 @@ func hasYAMLMapKey(node *yaml.Node, key string) bool { return false } +// UnmarshalYAML implements yaml.Unmarshaler. +func (j *ExperimentalResourceDetector) UnmarshalYAML(node *yaml.Node) error { + type Plain ExperimentalResourceDetector + var plain Plain + if err := node.Decode(&plain); err != nil { + return errors.Join(newErrUnmarshal(j), err) + } + // container can be nil, must check and set here + if hasYAMLMapKey(node, "container") && plain.Container == nil { + plain.Container = ExperimentalContainerResourceDetector{} + } + // host can be nil, must check and set here + if hasYAMLMapKey(node, "host") && plain.Host == nil { + plain.Host = ExperimentalHostResourceDetector{} + } + // process can be nil, must check and set here + if hasYAMLMapKey(node, "process") && plain.Process == nil { + plain.Process = ExperimentalProcessResourceDetector{} + } + // service can be nil, must check and set here + if hasYAMLMapKey(node, "service") && plain.Service == nil { + plain.Service = ExperimentalServiceResourceDetector{} + } + *j = ExperimentalResourceDetector(plain) + return nil +} + // UnmarshalYAML implements yaml.Unmarshaler. func (j *PushMetricExporter) UnmarshalYAML(node *yaml.Node) error { type Plain PushMetricExporter diff --git a/otelconf/go.mod b/otelconf/go.mod index a70cdc9a041..8eb5c7f6c92 100644 --- a/otelconf/go.mod +++ b/otelconf/go.mod @@ -6,6 +6,7 @@ require ( github.com/prometheus/client_golang v1.23.2 github.com/prometheus/otlptranslator v1.0.0 github.com/stretchr/testify v1.11.1 + go.opentelemetry.io/contrib/detectors/autodetect v0.10.0 go.opentelemetry.io/otel v1.38.0 go.opentelemetry.io/otel/exporters/otlp/otlplog/otlploggrpc v0.14.0 go.opentelemetry.io/otel/exporters/otlp/otlplog/otlploghttp v0.14.0 @@ -30,27 +31,80 @@ require ( ) require ( + cloud.google.com/go/compute/metadata v0.9.0 // indirect + github.com/GoogleCloudPlatform/opentelemetry-operations-go/detectors/gcp v1.30.0 // indirect + github.com/aws/aws-sdk-go-v2 v1.38.3 // indirect + github.com/aws/aws-sdk-go-v2/config v1.31.6 // indirect + github.com/aws/aws-sdk-go-v2/credentials v1.18.10 // indirect + github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.18.6 // indirect + github.com/aws/aws-sdk-go-v2/internal/configsources v1.4.6 // indirect + github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.7.6 // indirect + github.com/aws/aws-sdk-go-v2/internal/ini v1.8.3 // indirect + github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding v1.13.1 // indirect + github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.13.6 // indirect + github.com/aws/aws-sdk-go-v2/service/sso v1.29.1 // indirect + github.com/aws/aws-sdk-go-v2/service/ssooidc v1.34.2 // indirect + github.com/aws/aws-sdk-go-v2/service/sts v1.38.2 // indirect + github.com/aws/smithy-go v1.23.0 // indirect github.com/beorn7/perks v1.0.1 // indirect + github.com/brunoscheufler/aws-ecs-metadata-go v0.0.0-20221221133751-67e37ae746cd // indirect github.com/cenkalti/backoff/v5 v5.0.3 // indirect github.com/cespare/xxhash/v2 v2.3.0 // indirect - github.com/davecgh/go-spew v1.1.1 // indirect + github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc // indirect + github.com/emicklei/go-restful/v3 v3.13.0 // indirect + github.com/fxamacker/cbor/v2 v2.9.0 // indirect github.com/go-logr/logr v1.4.3 // indirect github.com/go-logr/stdr v1.2.2 // indirect + github.com/go-openapi/jsonpointer v0.21.2 // indirect + github.com/go-openapi/jsonreference v0.21.0 // indirect + github.com/go-openapi/swag v0.23.1 // indirect + github.com/gogo/protobuf v1.3.2 // indirect + github.com/golang/protobuf v1.5.4 // indirect + github.com/google/gnostic-models v0.7.0 // indirect + github.com/google/go-cmp v0.7.0 // indirect + github.com/google/gofuzz v1.2.0 // indirect github.com/google/uuid v1.6.0 // indirect github.com/grpc-ecosystem/grpc-gateway/v2 v2.27.3 // indirect + github.com/josharian/intern v1.0.0 // indirect + github.com/json-iterator/go v1.1.12 // indirect + github.com/mailru/easyjson v0.9.0 // indirect + github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd // indirect + github.com/modern-go/reflect2 v1.0.2 // indirect github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822 // indirect - github.com/pmezard/go-difflib v1.0.0 // indirect + github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 // indirect github.com/prometheus/client_model v0.6.2 // indirect github.com/prometheus/common v0.67.4 // indirect github.com/prometheus/procfs v0.19.2 // indirect + github.com/x448/float16 v0.8.4 // indirect go.opentelemetry.io/auto/sdk v1.2.1 // indirect + go.opentelemetry.io/contrib/detectors/aws/ec2/v2 v2.0.0 // indirect + go.opentelemetry.io/contrib/detectors/aws/ecs v1.38.0 // indirect + go.opentelemetry.io/contrib/detectors/aws/eks v1.38.0 // indirect + go.opentelemetry.io/contrib/detectors/aws/lambda v0.63.0 // indirect + go.opentelemetry.io/contrib/detectors/azure/azurevm v0.10.0 // indirect + go.opentelemetry.io/contrib/detectors/gcp v1.38.0 // indirect go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.38.0 // indirect go.yaml.in/yaml/v2 v2.4.3 // indirect golang.org/x/net v0.47.0 // indirect + golang.org/x/oauth2 v0.32.0 // indirect golang.org/x/sys v0.38.0 // indirect + golang.org/x/term v0.37.0 // indirect golang.org/x/text v0.31.0 // indirect + golang.org/x/time v0.12.0 // indirect google.golang.org/genproto/googleapis/api v0.0.0-20251124214823-79d6a2a48846 // indirect google.golang.org/genproto/googleapis/rpc v0.0.0-20251124214823-79d6a2a48846 // indirect google.golang.org/protobuf v1.36.10 // indirect + gopkg.in/evanphx/json-patch.v4 v4.13.0 // indirect + gopkg.in/inf.v0 v0.9.1 // indirect gopkg.in/yaml.v3 v3.0.1 // indirect + k8s.io/api v0.32.4 // indirect + k8s.io/apimachinery v0.32.4 // indirect + k8s.io/client-go v0.32.4 // indirect + k8s.io/klog/v2 v2.130.1 // indirect + k8s.io/kube-openapi v0.0.0-20250701173324-9bd5c66d9911 // indirect + k8s.io/utils v0.0.0-20250820121507-0af2bda4dd1d // indirect + sigs.k8s.io/json v0.0.0-20250730193827-2d320260d730 // indirect + sigs.k8s.io/randfill v1.0.0 // indirect + sigs.k8s.io/structured-merge-diff/v4 v4.7.0 // indirect + sigs.k8s.io/yaml v1.6.0 // indirect ) diff --git a/otelconf/go.sum b/otelconf/go.sum index c4b6378f241..9fa451b02f8 100644 --- a/otelconf/go.sum +++ b/otelconf/go.sum @@ -1,24 +1,86 @@ +cloud.google.com/go/compute/metadata v0.9.0 h1:pDUj4QMoPejqq20dK0Pg2N4yG9zIkYGdBtwLoEkH9Zs= +cloud.google.com/go/compute/metadata v0.9.0/go.mod h1:E0bWwX5wTnLPedCKqk3pJmVgCBSM6qQI1yTBdEb3C10= +github.com/GoogleCloudPlatform/opentelemetry-operations-go/detectors/gcp v1.30.0 h1:sBEjpZlNHzK1voKq9695PJSX2o5NEXl7/OL3coiIY0c= +github.com/GoogleCloudPlatform/opentelemetry-operations-go/detectors/gcp v1.30.0/go.mod h1:P4WPRUkOhJC13W//jWpyfJNDAIpvRbAUIYLX/4jtlE0= +github.com/aws/aws-sdk-go-v2 v1.38.3 h1:B6cV4oxnMs45fql4yRH+/Po/YU+597zgWqvDpYMturk= +github.com/aws/aws-sdk-go-v2 v1.38.3/go.mod h1:sDioUELIUO9Znk23YVmIk86/9DOpkbyyVb1i/gUNFXY= +github.com/aws/aws-sdk-go-v2/config v1.31.6 h1:a1t8fXY4GT4xjyJExz4knbuoxSCacB5hT/WgtfPyLjo= +github.com/aws/aws-sdk-go-v2/config v1.31.6/go.mod h1:5ByscNi7R+ztvOGzeUaIu49vkMk2soq5NaH5PYe33MQ= +github.com/aws/aws-sdk-go-v2/credentials v1.18.10 h1:xdJnXCouCx8Y0NncgoptztUocIYLKeQxrCgN6x9sdhg= +github.com/aws/aws-sdk-go-v2/credentials v1.18.10/go.mod h1:7tQk08ntj914F/5i9jC4+2HQTAuJirq7m1vZVIhEkWs= +github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.18.6 h1:wbjnrrMnKew78/juW7I2BtKQwa1qlf6EjQgS69uYY14= +github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.18.6/go.mod h1:AtiqqNrDioJXuUgz3+3T0mBWN7Hro2n9wll2zRUc0ww= +github.com/aws/aws-sdk-go-v2/internal/configsources v1.4.6 h1:uF68eJA6+S9iVr9WgX1NaRGyQ/6MdIyc4JNUo6TN1FA= +github.com/aws/aws-sdk-go-v2/internal/configsources v1.4.6/go.mod h1:qlPeVZCGPiobx8wb1ft0GHT5l+dc6ldnwInDFaMvC7Y= +github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.7.6 h1:pa1DEC6JoI0zduhZePp3zmhWvk/xxm4NB8Hy/Tlsgos= +github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.7.6/go.mod h1:gxEjPebnhWGJoaDdtDkA0JX46VRg1wcTHYe63OfX5pE= +github.com/aws/aws-sdk-go-v2/internal/ini v1.8.3 h1:bIqFDwgGXXN1Kpp99pDOdKMTTb5d2KyU5X/BZxjOkRo= +github.com/aws/aws-sdk-go-v2/internal/ini v1.8.3/go.mod h1:H5O/EsxDWyU+LP/V8i5sm8cxoZgc2fdNR9bxlOFrQTo= +github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding v1.13.1 h1:oegbebPEMA/1Jny7kvwejowCaHz1FWZAQ94WXFNCyTM= +github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding v1.13.1/go.mod h1:kemo5Myr9ac0U9JfSjMo9yHLtw+pECEHsFtJ9tqCEI8= +github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.13.6 h1:LHS1YAIJXJ4K9zS+1d/xa9JAA9sL2QyXIQCQFQW/X08= +github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.13.6/go.mod h1:c9PCiTEuh0wQID5/KqA32J+HAgZxN9tOGXKCiYJjTZI= +github.com/aws/aws-sdk-go-v2/service/sso v1.29.1 h1:8OLZnVJPvjnrxEwHFg9hVUof/P4sibH+Ea4KKuqAGSg= +github.com/aws/aws-sdk-go-v2/service/sso v1.29.1/go.mod h1:27M3BpVi0C02UiQh1w9nsBEit6pLhlaH3NHna6WUbDE= +github.com/aws/aws-sdk-go-v2/service/ssooidc v1.34.2 h1:gKWSTnqudpo8dAxqBqZnDoDWCiEh/40FziUjr/mo6uA= +github.com/aws/aws-sdk-go-v2/service/ssooidc v1.34.2/go.mod h1:x7+rkNmRoEN1U13A6JE2fXne9EWyJy54o3n6d4mGaXQ= +github.com/aws/aws-sdk-go-v2/service/sts v1.38.2 h1:YZPjhyaGzhDQEvsffDEcpycq49nl7fiGcfJTIo8BszI= +github.com/aws/aws-sdk-go-v2/service/sts v1.38.2/go.mod h1:2dIN8qhQfv37BdUYGgEC8Q3tteM3zFxTI1MLO2O3J3c= +github.com/aws/smithy-go v1.23.0 h1:8n6I3gXzWJB2DxBDnfxgBaSX6oe0d/t10qGz7OKqMCE= +github.com/aws/smithy-go v1.23.0/go.mod h1:t1ufH5HMublsJYulve2RKmHDC15xu1f26kHCp/HgceI= github.com/beorn7/perks v1.0.1 h1:VlbKKnNfV8bJzeqoa4cOKqO6bYr3WgKZxO8Z16+hsOM= github.com/beorn7/perks v1.0.1/go.mod h1:G2ZrVWU2WbWT9wwq4/hrbKbnv/1ERSJQ0ibhJ6rlkpw= +github.com/brunoscheufler/aws-ecs-metadata-go v0.0.0-20221221133751-67e37ae746cd h1:C0dfBzAdNMqxokqWUysk2KTJSMmqvh9cNW1opdy5+0Q= +github.com/brunoscheufler/aws-ecs-metadata-go v0.0.0-20221221133751-67e37ae746cd/go.mod h1:CeKhh8xSs3WZAc50xABMxu+FlfAAd5PNumo7NfOv7EE= 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/cespare/xxhash/v2 v2.3.0 h1:UL815xU9SqsFlibzuggzjXhog7bL6oX9BbNZnL2UFvs= github.com/cespare/xxhash/v2 v2.3.0/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs= -github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c= +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/emicklei/go-restful/v3 v3.13.0 h1:C4Bl2xDndpU6nJ4bc1jXd+uTmYPVUwkD6bFY/oTyCes= +github.com/emicklei/go-restful/v3 v3.13.0/go.mod h1:6n3XBCmQQb25CM2LCACGz8ukIrRry+4bhvbpWn3mrbc= +github.com/fxamacker/cbor/v2 v2.9.0 h1:NpKPmjDBgUfBms6tr6JZkTHtfFGcMKsw3eGcmD/sapM= +github.com/fxamacker/cbor/v2 v2.9.0/go.mod h1:vM4b+DJCtHn+zz7h3FFp/hDAI9WNWCsZj23V5ytsSxQ= github.com/go-logr/logr v1.2.2/go.mod h1:jdQByPbusPIv2/zmleS9BjJVeZ6kBagPoEUsqbVz/1A= github.com/go-logr/logr v1.4.3 h1:CjnDlHq8ikf6E492q6eKboGOC0T8CDaOvkHCIg8idEI= github.com/go-logr/logr v1.4.3/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-openapi/jsonpointer v0.21.2 h1:AqQaNADVwq/VnkCmQg6ogE+M3FOsKTytwges0JdwVuA= +github.com/go-openapi/jsonpointer v0.21.2/go.mod h1:50I1STOfbY1ycR8jGz8DaMeLCdXiI6aDteEdRNNzpdk= +github.com/go-openapi/jsonreference v0.21.0 h1:Rs+Y7hSXT83Jacb7kFyjn4ijOuVGSvOdF2+tg1TRrwQ= +github.com/go-openapi/jsonreference v0.21.0/go.mod h1:LmZmgsrTkVg9LG4EaHeY8cBDslNPMo06cago5JNLkm4= +github.com/go-openapi/swag v0.23.1 h1:lpsStH0n2ittzTnbaSloVZLuB5+fvSY/+hnagBjSNZU= +github.com/go-openapi/swag v0.23.1/go.mod h1:STZs8TbRvEQQKUA+JZNAm3EWlgaOBGpyFDqQnDHMef0= +github.com/go-task/slim-sprig/v3 v3.0.0 h1:sUs3vkvUymDpBKi3qH1YSqBQk9+9D/8M2mN1vB6EwHI= +github.com/go-task/slim-sprig/v3 v3.0.0/go.mod h1:W848ghGpv3Qj3dhTPRyJypKRiqCdHZiAzKg9hl15HA8= +github.com/gogo/protobuf v1.3.2 h1:Ov1cvc58UF3b5XjBnZv7+opcTcQFZebYjWzi34vdm4Q= +github.com/gogo/protobuf v1.3.2/go.mod h1:P1XiOD3dCwIKUDQYPy72D8LYyHL2YPYrpS2s69NZV8Q= github.com/golang/protobuf v1.5.4 h1:i7eJL8qZTpSEXOPTxNKhASYpMn+8e5Q6AdndVa1dWek= github.com/golang/protobuf v1.5.4/go.mod h1:lnTiLA8Wa4RWRcIUkrtSVa5nRhsEGBg48fD6rSs7xps= +github.com/google/gnostic-models v0.7.0 h1:qwTtogB15McXDaNqTZdzPJRHvaVJlAl+HVQnLmJEJxo= +github.com/google/gnostic-models v0.7.0/go.mod h1:whL5G0m6dmc5cPxKc5bdKdEN3UjI7OUGxBlw57miDrQ= +github.com/google/go-cmp v0.5.9/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY= 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/gofuzz v1.0.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg= +github.com/google/gofuzz v1.2.0 h1:xRy4A+RhZaiKjJ1bPfwQ8sedCA+YS2YcCHW6ec7JMi0= +github.com/google/gofuzz v1.2.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg= +github.com/google/pprof v0.0.0-20241029153458-d1b30febd7db h1:097atOisP2aRj7vFgYQBbFN4U4JNXUNYpxael3UzMyo= +github.com/google/pprof v0.0.0-20241029153458-d1b30febd7db/go.mod h1:vavhavw2zAxS5dIdcRluK6cSGGPlZynqzFM8NdvU144= 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/grpc-ecosystem/grpc-gateway/v2 v2.27.3 h1:NmZ1PKzSTQbuGHw9DGPFomqkkLWMC+vZCkfs+FHv1Vg= github.com/grpc-ecosystem/grpc-gateway/v2 v2.27.3/go.mod h1:zQrxl1YP88HQlA6i9c63DSVPFklWpGX4OWAc9bFuaH4= +github.com/josharian/intern v1.0.0 h1:vlS4z54oSdjm0bgjRigI+G1HpF+tI+9rE5LLzOg8HmY= +github.com/josharian/intern v1.0.0/go.mod h1:5DoeVV0s6jJacbCEi61lwdGj/aVlrQvzHFFd8Hwg//Y= +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/kisielk/errcheck v1.5.0/go.mod h1:pFxgyoBC7bSaBwPgfKdkLd5X25qrDl4LWUI2bnpBCr8= +github.com/kisielk/gotool v1.0.0/go.mod h1:XhKaO+MFFWcvkIS/tQcRk01m1F5IRFswLeQ+oQHNcck= github.com/klauspost/compress v1.18.0 h1:c/Cqfb0r+Yi+JtIEq73FWXVkRonBlf0CRNYc8Zttxdo= github.com/klauspost/compress v1.18.0/go.mod h1:2Pp+KzxcywXVXMr50+X0Q/Lsb43OQHYWRCY2AiWywWQ= github.com/kr/pretty v0.3.1 h1:flRD4NNwYAUpkphVc1HcthR4KEIFJ65n8Mw5qdRn3LE= @@ -27,10 +89,22 @@ github.com/kr/text v0.2.0 h1:5Nx0Ya0ZqY2ygV366QzturHI13Jq95ApcVaJBhpS+AY= github.com/kr/text v0.2.0/go.mod h1:eLer722TekiGuMkidMxC/pM04lWEeraHUUmBw8l2grE= github.com/kylelemons/godebug v1.1.0 h1:RPNrshWIDI6G2gRW9EHilWtl7Z6Sb1BR0xunSBf0SNc= github.com/kylelemons/godebug v1.1.0/go.mod h1:9/0rRGxNHcop5bhtWyNeEfOS8JIWk580+fNqagV/RAw= +github.com/mailru/easyjson v0.9.0 h1:PrnmzHw7262yW8sTBwxi1PdJA3Iw/EKBa8psRf7d9a4= +github.com/mailru/easyjson v0.9.0/go.mod h1:1+xMtQp2MRNVL/V1bOzuP3aP8VNwRW55fQUto+XFtTU= +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 h1:xBagoLtFs94CBntxluKeaWgTMpvLxC4ur3nMaC9Gz0M= +github.com/modern-go/reflect2 v1.0.2/go.mod h1:yWuevngMOJpCy52FWWMvUC8ws7m/LJsjYzDa0/r8luk= github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822 h1:C3w9PqII01/Oq1c1nUAm88MOHcQC9l5mIlSMApZMrHA= github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822/go.mod h1:+n7T8mK8HuQTcFwEeznm/DIxMOiR9yIdICNftLE1DvQ= -github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM= +github.com/onsi/ginkgo/v2 v2.21.0 h1:7rg/4f3rB88pb5obDgNZrNHrQ4e6WpjonchcpuBRnZM= +github.com/onsi/ginkgo/v2 v2.21.0/go.mod h1:7Du3c42kxCUegi0IImZ1wUQzMBVecgIHjR1C+NkhLQo= +github.com/onsi/gomega v1.35.1 h1:Cwbd75ZBPxFSuZ6T+rN/WCb/gOc6YgFBXLlZLhC7Ds4= +github.com/onsi/gomega v1.35.1/go.mod h1:PvZbdDc8J6XJEpDK4HCuRBm8a6Fzp9/DmhC9C7yFlog= 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/prometheus/client_golang v1.23.2 h1:Je96obch5RDVy3FDMndoUsjAhG5Edi49h0RJWRi/o0o= github.com/prometheus/client_golang v1.23.2/go.mod h1:Tb1a6LWHB3/SPIzCoaDXI4I8UHKeFTEQ1YCr+0Gyqmg= github.com/prometheus/client_model v0.6.2 h1:oBsgwpGs7iVziMvrGhE53c/GrLUsZdHnqNwqPLxwZyk= @@ -43,10 +117,37 @@ github.com/prometheus/procfs v0.19.2 h1:zUMhqEW66Ex7OXIiDkll3tl9a1ZdilUOd/F6ZXw4 github.com/prometheus/procfs v0.19.2/go.mod h1:M0aotyiemPhBCM0z5w87kL22CxfcH05ZpYlu+b4J7mw= 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/spf13/pflag v1.0.5 h1:iy+VFUOCP1a+8yFto/drg2CJ5u0yRoB7fZw3DKv/JXA= +github.com/spf13/pflag v1.0.5/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg= +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.2 h1:xuMeJ0Sdp5ZMRXx/aWO6RZxdr3beISkG5/G/aIRr3pY= +github.com/stretchr/objx v0.5.2/go.mod h1:FRsXN1f5AsAjCGJKqEizvkpNtU+EGNCLh3NxZ/8L+MA= +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.11.1 h1:7s2iGBzp5EwR7/aIZr8ao5+dra3wiQyKjjFuvgVKu7U= github.com/stretchr/testify v1.11.1/go.mod h1:wZwfW3scLgRK+23gO65QZefKpKQRnfz6sD981Nm4B6U= +github.com/x448/float16 v0.8.4 h1:qLwI1I70+NjRFUR3zs1JPUCgaCXSh3SW62uAKT1mSBM= +github.com/x448/float16 v0.8.4/go.mod h1:14CWIYCyZA/cWjXOioeEpHeN/83MdbZDRQHoFcYsOfg= +github.com/yuin/goldmark v1.1.27/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= +github.com/yuin/goldmark v1.2.1/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= 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/contrib/detectors/autodetect v0.10.0 h1:vZ0jhtR5UYCMEUqtQAz0UBFLlM7YomI6e5qYnRXK22U= +go.opentelemetry.io/contrib/detectors/autodetect v0.10.0/go.mod h1:Veb3Vo0ArUd9/7Ox4+4YL8y86PLKNKyeqH3EliCWWEw= +go.opentelemetry.io/contrib/detectors/aws/ec2/v2 v2.0.0 h1:29ryzGOpNONSkgpOzJqYFOaUxAt7rmuvHRAPRCKe9Mw= +go.opentelemetry.io/contrib/detectors/aws/ec2/v2 v2.0.0/go.mod h1:5NPwG/iuUWEeSVX8yPxuGQDXhdMuPte7PdaBTh/qLhY= +go.opentelemetry.io/contrib/detectors/aws/ecs v1.38.0 h1:3k8Hm/2d06eFegWKjPgGqyrGBTa8xGWMXsV3EHmXqUY= +go.opentelemetry.io/contrib/detectors/aws/ecs v1.38.0/go.mod h1:/RMzURa608/HpVWxCeTkkQVgasv/KG8SvFrLyic4le8= +go.opentelemetry.io/contrib/detectors/aws/eks v1.38.0 h1:N3mrs+jMlEjCBKiWuaXV8sn/x6zeip+lvFxhwDgEQ6Q= +go.opentelemetry.io/contrib/detectors/aws/eks v1.38.0/go.mod h1:bffeYuSvwpjeBDXPsPnJfNixemroWjR290Wmm1EYTv8= +go.opentelemetry.io/contrib/detectors/aws/lambda v0.63.0 h1:CmbVV36Lhkw1yCvaVkflJWjTWcN8TdUKEkQSTTT4w9c= +go.opentelemetry.io/contrib/detectors/aws/lambda v0.63.0/go.mod h1:ay/1ldlc56MdSdBKZXqhydRz72+dO8mwpOVXe1oiJEk= +go.opentelemetry.io/contrib/detectors/azure/azurevm v0.10.0 h1:Qkr2veHT0lGrecsw6zadwf7rbM5pbRrw6afMZ1phMrA= +go.opentelemetry.io/contrib/detectors/azure/azurevm v0.10.0/go.mod h1:D/XnxUI81qmRP5D35iAnvvHP58dZXqBx+mxMhN03XI8= +go.opentelemetry.io/contrib/detectors/gcp v1.38.0 h1:ZoYbqX7OaA/TAikspPl3ozPI6iY6LiIY9I8cUfm+pJs= +go.opentelemetry.io/contrib/detectors/gcp v1.38.0/go.mod h1:SU+iU7nu5ud4oCb3LQOhIZ3nRLj6FNVrKgtflbaf2ts= go.opentelemetry.io/otel v1.38.0 h1:RkfdswUDRimDg0m2Az18RKOsnI8UDzppJAtj01/Ymk8= go.opentelemetry.io/otel v1.38.0/go.mod h1:zcmtmQ1+YmQM9wrNsTGV/q/uyusom3P8RxwExxkZhjM= go.opentelemetry.io/otel/exporters/otlp/otlplog/otlploggrpc v0.14.0 h1:OMqPldHt79PqWKOMYIAQs3CxAi7RLgPxwfFSwr4ZxtM= @@ -93,12 +194,45 @@ go.yaml.in/yaml/v2 v2.4.3 h1:6gvOSjQoTB3vt1l+CU+tSyi/HOjfOjRLJ4YwYZGwRO0= go.yaml.in/yaml/v2 v2.4.3/go.mod h1:zSxWcmIDjOzPXpjlTTbAsKokqkDNAVtZO0WOMiT90s8= go.yaml.in/yaml/v3 v3.0.4 h1:tfq32ie2Jv2UxXFdLJdh3jXuOzWiL1fo0bu/FbuKpbc= go.yaml.in/yaml/v3 v3.0.4/go.mod h1:DhzuOOF2ATzADvBadXxruRBLzYTpT36CKvDb3+aBEFg= +golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= +golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= +golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= +golang.org/x/mod v0.2.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= +golang.org/x/mod v0.3.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= +golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= +golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= +golang.org/x/net v0.0.0-20200226121028-0de0cce0169b/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= +golang.org/x/net v0.0.0-20201021035429-f5854403a974/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= golang.org/x/net v0.47.0 h1:Mx+4dIFzqraBXUugkia1OOvlD6LemFo1ALMHjrXDOhY= golang.org/x/net v0.47.0/go.mod h1:/jNxtkgq5yWUGYkaZGqo27cfGZ1c5Nen03aYrrKpVRU= +golang.org/x/oauth2 v0.32.0 h1:jsCblLleRMDrxMN29H3z/k1KliIvpLgCkE6R8FXXNgY= +golang.org/x/oauth2 v0.32.0/go.mod h1:lzm5WQJQwKZ3nwavOZ3IS5Aulzxi68dUSgRHujetwEA= +golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200930185726-fdedc70b468f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.38.0 h1:3yZWxaJjBmCWXqhN1qh02AkOnCQ1poK6oF+a7xWL6Gc= golang.org/x/sys v0.38.0/go.mod h1:OgkHotnGiDImocRcuBABYBEXf8A9a87e/uXjp9XT3ks= +golang.org/x/term v0.37.0 h1:8EGAD0qCmHYZg6J17DvsMy9/wJ7/D/4pV/wfnld5lTU= +golang.org/x/term v0.37.0/go.mod h1:5pB4lxRNYYVZuTLmy8oR2BH8dflOR+IbTYFD8fi3254= +golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= +golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/text v0.31.0 h1:aC8ghyu4JhP8VojJ2lEHBnochRno1sgL6nEi9WGFGMM= golang.org/x/text v0.31.0/go.mod h1:tKRAlv61yKIjGGHX/4tP1LTbc13YSec1pxVEWXzfoeM= +golang.org/x/time v0.12.0 h1:ScB/8o8olJvc+CQPWrK3fPZNfh7qgwCrY0zJmoEQLSE= +golang.org/x/time v0.12.0/go.mod h1:CDIdPxbZBQxdj6cxyCIdrNogrJKMJ7pr37NYpMcMDSg= +golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= +golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= +golang.org/x/tools v0.0.0-20200619180055-7c47624df98f/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= +golang.org/x/tools v0.0.0-20210106214847-113979e3529a/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= +golang.org/x/tools v0.38.0 h1:Hx2Xv8hISq8Lm16jvBZ2VQf+RLmbd7wVUsALibYI/IQ= +golang.org/x/tools v0.38.0/go.mod h1:yEsQ/d/YK8cjh0L6rZlY8tgtlKiBNTL14pGDJPJpYQs= +golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= +golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= +golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= +golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= gonum.org/v1/gonum v0.16.0 h1:5+ul4Swaf3ESvrOnidPp4GZbzf0mxVQpDCYUQE7OJfk= gonum.org/v1/gonum v0.16.0/go.mod h1:fef3am4MQ93R2HHpKnLk4/Tbh/s0+wqD5nfa6Pnwy4E= google.golang.org/genproto/googleapis/api v0.0.0-20251124214823-79d6a2a48846 h1:ZdyUkS9po3H7G0tuh955QVyyotWvOD4W0aEapeGeUYk= @@ -112,5 +246,32 @@ google.golang.org/protobuf v1.36.10/go.mod h1:HTf+CrKn2C3g5S8VImy6tdcUvCska2kB7j 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/evanphx/json-patch.v4 v4.13.0 h1:czT3CmqEaQ1aanPc5SdlgQrrEIb8w/wwCvWWnfEbYzo= +gopkg.in/evanphx/json-patch.v4 v4.13.0/go.mod h1:p8EYWUEYMpynmqDbY58zCKCFZw8pRWMG4EsWvDvM72M= +gopkg.in/inf.v0 v0.9.1 h1:73M5CoZyi3ZLMOyDlQh031Cx6N9NDJ2Vvfl76EDAgDc= +gopkg.in/inf.v0 v0.9.1/go.mod h1:cWUDdTG/fYaXco+Dcufb5Vnc6Gp2YChqWtbxRZE0mXw= +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= +k8s.io/api v0.32.4 h1:kw8Y/G8E7EpNy7gjB8gJZl3KJkNz8HM2YHrZPtAZsF4= +k8s.io/api v0.32.4/go.mod h1:5MYFvLvweRhyKylM3Es/6uh/5hGp0dg82vP34KifX4g= +k8s.io/apimachinery v0.32.4 h1:8EEksaxA7nd7xWJkkwLDN4SvWS5ot9g6Z/VZb3ju25I= +k8s.io/apimachinery v0.32.4/go.mod h1:GpHVgxoKlTxClKcteaeuF1Ul/lDVb74KpZcxcmLDElE= +k8s.io/client-go v0.32.4 h1:zaGJS7xoYOYumoWIFXlcVrsiYioRPrXGO7dBfVC5R6M= +k8s.io/client-go v0.32.4/go.mod h1:k0jftcyYnEtwlFW92xC7MTtFv5BNcZBr+zn9jPlT9Ic= +k8s.io/klog/v2 v2.130.1 h1:n9Xl7H1Xvksem4KFG4PYbdQCQxqc/tTUyrgXaOhHSzk= +k8s.io/klog/v2 v2.130.1/go.mod h1:3Jpz1GvMt720eyJH1ckRHK1EDfpxISzJ7I9OYgaDtPE= +k8s.io/kube-openapi v0.0.0-20250701173324-9bd5c66d9911 h1:gAXU86Fmbr/ktY17lkHwSjw5aoThQvhnstGGIYKlKYc= +k8s.io/kube-openapi v0.0.0-20250701173324-9bd5c66d9911/go.mod h1:GLOk5B+hDbRROvt0X2+hqX64v/zO3vXN7J78OUmBSKw= +k8s.io/utils v0.0.0-20250820121507-0af2bda4dd1d h1:wAhiDyZ4Tdtt7e46e9M5ZSAJ/MnPGPs+Ki1gHw4w1R0= +k8s.io/utils v0.0.0-20250820121507-0af2bda4dd1d/go.mod h1:OLgZIPagt7ERELqWJFomSt595RzquPNLL48iOWgYOg0= +sigs.k8s.io/json v0.0.0-20250730193827-2d320260d730 h1:IpInykpT6ceI+QxKBbEflcR5EXP7sU1kvOlxwZh5txg= +sigs.k8s.io/json v0.0.0-20250730193827-2d320260d730/go.mod h1:mdzfpAEoE6DHQEN0uh9ZbOCuHbLK5wOm7dK4ctXE9Tg= +sigs.k8s.io/randfill v0.0.0-20250304075658-069ef1bbf016/go.mod h1:XeLlZ/jmk4i1HRopwe7/aU3H5n1zNUcX6TM94b3QxOY= +sigs.k8s.io/randfill v1.0.0 h1:JfjMILfT8A6RbawdsK2JXGBR5AQVfd+9TbzrlneTyrU= +sigs.k8s.io/randfill v1.0.0/go.mod h1:XeLlZ/jmk4i1HRopwe7/aU3H5n1zNUcX6TM94b3QxOY= +sigs.k8s.io/structured-merge-diff/v4 v4.7.0 h1:qPeWmscJcXP0snki5IYF79Z8xrl8ETFxgMd7wez1XkI= +sigs.k8s.io/structured-merge-diff/v4 v4.7.0/go.mod h1:dDy58f92j70zLsuZVuUX5Wp9vtxXpaZnkPGWeqDfCps= +sigs.k8s.io/yaml v1.4.0/go.mod h1:Ejl7/uTz7PSA4eKMyQCUTnhZYNmLIl+5c2lQPGR2BPY= +sigs.k8s.io/yaml v1.6.0 h1:G8fkbMSAFqgEFgh4b1wmtzDnioxFCUgTZhlbj5P9QYs= +sigs.k8s.io/yaml v1.6.0/go.mod h1:796bPqUfzR/0jLAl6XjHl3Ck7MiyVv8dbTdyT3/pMf4= diff --git a/otelconf/resource.go b/otelconf/resource.go index 5411bc691ab..0e2a625262e 100644 --- a/otelconf/resource.go +++ b/otelconf/resource.go @@ -4,12 +4,41 @@ package otelconf // import "go.opentelemetry.io/contrib/otelconf" import ( + "context" + "fmt" + "go.opentelemetry.io/otel/attribute" "go.opentelemetry.io/otel/sdk/resource" + "go.opentelemetry.io/contrib/detectors/autodetect" "go.opentelemetry.io/contrib/otelconf/internal/kv" ) +func toDetectorId(detectors []ExperimentalResourceDetector) []autodetect.ID { + ids := []autodetect.ID{} + for _, d := range detectors { + if d.Container != nil { + ids = append(ids, autodetect.IDContainer) + } + if d.Host != nil { + ids = append(ids, autodetect.IDHost, autodetect.IDHostID) + } + if d.Process != nil { + ids = append(ids, + autodetect.IDProcessCommandArgs, + autodetect.IDProcessExecutableName, + autodetect.IDProcessExecutablePath, + autodetect.IDProcessOwner, + autodetect.IDProcessPID, + autodetect.IDProcessRuntimeDescription, + autodetect.IDProcessRuntimeName, + autodetect.IDProcessRuntimeVersion, + ) + } + } + return ids +} + func newResource(res OpenTelemetryConfigurationResource) (*resource.Resource, error) { if res == nil { return resource.Default(), nil @@ -25,8 +54,23 @@ func newResource(res OpenTelemetryConfigurationResource) (*resource.Resource, er attrs = append(attrs, kv.FromNameValue(v.Name, v.Value)) } + var detectedResource *resource.Resource + + if r.DetectionDevelopment != nil { + detectors := toDetectorId(r.DetectionDevelopment.Detectors) + fmt.Println(detectors) + detector, err := autodetect.Detector(detectors...) + if err != nil { + return nil, err + } + detectedResource, err = detector.Detect(context.Background()) + if err != nil { + return nil, err + } + } + if r.SchemaUrl == nil { - return resource.NewSchemaless(attrs...), nil + return resource.Merge(resource.NewSchemaless(attrs...), detectedResource) } - return resource.NewWithAttributes(*r.SchemaUrl, attrs...), nil + return resource.Merge(resource.NewWithAttributes(*r.SchemaUrl, attrs...), detectedResource) } From f41bb171a48b8e5453aa85a42603cc69ff805e97 Mon Sep 17 00:00:00 2001 From: alex boten <223565+codeboten@users.noreply.github.com> Date: Fri, 28 Nov 2025 14:38:27 -0800 Subject: [PATCH 11/12] fix tests Signed-off-by: alex boten <223565+codeboten@users.noreply.github.com> --- otelconf/config_json.go | 65 ++++++++++++++ otelconf/config_test.go | 60 ++++++++----- otelconf/go.mod | 54 ------------ otelconf/go.sum | 161 ---------------------------------- otelconf/resource.go | 50 ++++------- otelconf/testdata/v1.0.0.json | 3 +- otelconf/testdata/v1.0.0.yaml | 3 - 7 files changed, 124 insertions(+), 272 deletions(-) diff --git a/otelconf/config_json.go b/otelconf/config_json.go index b0a967409cf..d4f7c61bcfa 100644 --- a/otelconf/config_json.go +++ b/otelconf/config_json.go @@ -122,6 +122,70 @@ func (j *TraceContextPropagator) UnmarshalJSON(b []byte) error { return nil } +// UnmarshalJSON implements json.Unmarshaler. +func (j *ExperimentalContainerResourceDetector) UnmarshalJSON(b []byte) error { + type plain ExperimentalContainerResourceDetector + var p plain + if err := json.Unmarshal(b, &p); err != nil { + return errors.Join(newErrUnmarshal(j), err) + } + // If key is present (even if empty object), ensure non-nil value. + if p == nil { + *j = ExperimentalContainerResourceDetector{} + } else { + *j = ExperimentalContainerResourceDetector(p) + } + return nil +} + +// UnmarshalJSON implements json.Unmarshaler. +func (j *ExperimentalHostResourceDetector) UnmarshalJSON(b []byte) error { + type plain ExperimentalHostResourceDetector + var p plain + if err := json.Unmarshal(b, &p); err != nil { + return errors.Join(newErrUnmarshal(j), err) + } + // If key is present (even if empty object), ensure non-nil value. + if p == nil { + *j = ExperimentalHostResourceDetector{} + } else { + *j = ExperimentalHostResourceDetector(p) + } + return nil +} + +// UnmarshalJSON implements json.Unmarshaler. +func (j *ExperimentalProcessResourceDetector) UnmarshalJSON(b []byte) error { + type plain ExperimentalProcessResourceDetector + var p plain + if err := json.Unmarshal(b, &p); err != nil { + return errors.Join(newErrUnmarshal(j), err) + } + // If key is present (even if empty object), ensure non-nil value. + if p == nil { + *j = ExperimentalProcessResourceDetector{} + } else { + *j = ExperimentalProcessResourceDetector(p) + } + return nil +} + +// UnmarshalJSON implements json.Unmarshaler. +func (j *ExperimentalServiceResourceDetector) UnmarshalJSON(b []byte) error { + type plain ExperimentalServiceResourceDetector + var p plain + if err := json.Unmarshal(b, &p); err != nil { + return errors.Join(newErrUnmarshal(j), err) + } + // If key is present (even if empty object), ensure non-nil value. + if p == nil { + *j = ExperimentalServiceResourceDetector{} + } else { + *j = ExperimentalServiceResourceDetector(p) + } + return nil +} + // UnmarshalJSON implements json.Unmarshaler. func (j *ExperimentalResourceDetector) UnmarshalJSON(b []byte) error { // Use a shadow struct with a RawMessage field to detect key presence. @@ -169,6 +233,7 @@ func (j *ExperimentalResourceDetector) UnmarshalJSON(b []byte) error { } sh.Plain.Service = c } + *j = ExperimentalResourceDetector(sh.Plain) return nil } diff --git a/otelconf/config_test.go b/otelconf/config_test.go index c9f2f4e49f9..9f6b0d205d5 100644 --- a/otelconf/config_test.go +++ b/otelconf/config_test.go @@ -861,7 +861,6 @@ var v10OpenTelemetryConfig = OpenTelemetryConfiguration{ {Service: ExperimentalServiceResourceDetector{}}, }, }, - SchemaUrl: ptr("https://opentelemetry.io/schemas/1.16.0"), }, TracerProvider: &TracerProviderJson{ TracerConfiguratorDevelopment: &ExperimentalTracerConfigurator{ @@ -2356,26 +2355,47 @@ func TestUnmarshalPullMetricReader(t *testing.T) { } func TestUnmarshalResourceJson(t *testing.T) { - r := ResourceJson{} - - err := yaml.Unmarshal([]byte("detection/development:\n detectors:\n - container:\n - host:\n - process:\n - service:"), &r) - require.NoError(t, err) - require.Equal(t, ResourceJson{ - DetectionDevelopment: &ExperimentalResourceDetection{ - Detectors: []ExperimentalResourceDetector{ - { - Container: ExperimentalContainerResourceDetector{}, - }, - { - Host: ExperimentalHostResourceDetector{}, - }, - { - Process: ExperimentalProcessResourceDetector{}, - }, - { - Service: ExperimentalServiceResourceDetector{}, + for _, tt := range []struct { + name string + yamlConfig []byte + jsonConfig []byte + wantErrT error + wantResource ResourceJson + }{ + { + name: "valid with all detectors", + jsonConfig: []byte(`{"detection/development": {"detectors": [{"container": null},{"host": null},{"process": null},{"service": null}]}}`), + yamlConfig: []byte("detection/development:\n detectors:\n - container:\n - host:\n - process:\n - service:"), + wantResource: ResourceJson{ + DetectionDevelopment: &ExperimentalResourceDetection{ + Detectors: []ExperimentalResourceDetector{ + { + Container: ExperimentalContainerResourceDetector{}, + }, + { + Host: ExperimentalHostResourceDetector{}, + }, + { + Process: ExperimentalProcessResourceDetector{}, + }, + { + Service: ExperimentalServiceResourceDetector{}, + }, + }, }, }, }, - }, r) + } { + t.Run(tt.name, func(t *testing.T) { + r := ResourceJson{} + err := json.Unmarshal(tt.jsonConfig, &r) + assert.ErrorIs(t, err, tt.wantErrT) + assert.Equal(t, tt.wantResource, r) + + r = ResourceJson{} + err = yaml.Unmarshal(tt.yamlConfig, &r) + assert.ErrorIs(t, err, tt.wantErrT) + assert.Equal(t, tt.wantResource, r) + }) + } } diff --git a/otelconf/go.mod b/otelconf/go.mod index 8eb5c7f6c92..3518f473150 100644 --- a/otelconf/go.mod +++ b/otelconf/go.mod @@ -6,7 +6,6 @@ require ( github.com/prometheus/client_golang v1.23.2 github.com/prometheus/otlptranslator v1.0.0 github.com/stretchr/testify v1.11.1 - go.opentelemetry.io/contrib/detectors/autodetect v0.10.0 go.opentelemetry.io/otel v1.38.0 go.opentelemetry.io/otel/exporters/otlp/otlplog/otlploggrpc v0.14.0 go.opentelemetry.io/otel/exporters/otlp/otlplog/otlploghttp v0.14.0 @@ -31,80 +30,27 @@ require ( ) require ( - cloud.google.com/go/compute/metadata v0.9.0 // indirect - github.com/GoogleCloudPlatform/opentelemetry-operations-go/detectors/gcp v1.30.0 // indirect - github.com/aws/aws-sdk-go-v2 v1.38.3 // indirect - github.com/aws/aws-sdk-go-v2/config v1.31.6 // indirect - github.com/aws/aws-sdk-go-v2/credentials v1.18.10 // indirect - github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.18.6 // indirect - github.com/aws/aws-sdk-go-v2/internal/configsources v1.4.6 // indirect - github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.7.6 // indirect - github.com/aws/aws-sdk-go-v2/internal/ini v1.8.3 // indirect - github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding v1.13.1 // indirect - github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.13.6 // indirect - github.com/aws/aws-sdk-go-v2/service/sso v1.29.1 // indirect - github.com/aws/aws-sdk-go-v2/service/ssooidc v1.34.2 // indirect - github.com/aws/aws-sdk-go-v2/service/sts v1.38.2 // indirect - github.com/aws/smithy-go v1.23.0 // indirect github.com/beorn7/perks v1.0.1 // indirect - github.com/brunoscheufler/aws-ecs-metadata-go v0.0.0-20221221133751-67e37ae746cd // indirect github.com/cenkalti/backoff/v5 v5.0.3 // indirect github.com/cespare/xxhash/v2 v2.3.0 // indirect github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc // indirect - github.com/emicklei/go-restful/v3 v3.13.0 // indirect - github.com/fxamacker/cbor/v2 v2.9.0 // indirect github.com/go-logr/logr v1.4.3 // indirect github.com/go-logr/stdr v1.2.2 // indirect - github.com/go-openapi/jsonpointer v0.21.2 // indirect - github.com/go-openapi/jsonreference v0.21.0 // indirect - github.com/go-openapi/swag v0.23.1 // indirect - github.com/gogo/protobuf v1.3.2 // indirect - github.com/golang/protobuf v1.5.4 // indirect - github.com/google/gnostic-models v0.7.0 // indirect - github.com/google/go-cmp v0.7.0 // indirect - github.com/google/gofuzz v1.2.0 // indirect github.com/google/uuid v1.6.0 // indirect github.com/grpc-ecosystem/grpc-gateway/v2 v2.27.3 // indirect - github.com/josharian/intern v1.0.0 // indirect - github.com/json-iterator/go v1.1.12 // indirect - github.com/mailru/easyjson v0.9.0 // indirect - github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd // indirect - github.com/modern-go/reflect2 v1.0.2 // indirect github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822 // indirect github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 // indirect github.com/prometheus/client_model v0.6.2 // indirect github.com/prometheus/common v0.67.4 // indirect github.com/prometheus/procfs v0.19.2 // indirect - github.com/x448/float16 v0.8.4 // indirect go.opentelemetry.io/auto/sdk v1.2.1 // indirect - go.opentelemetry.io/contrib/detectors/aws/ec2/v2 v2.0.0 // indirect - go.opentelemetry.io/contrib/detectors/aws/ecs v1.38.0 // indirect - go.opentelemetry.io/contrib/detectors/aws/eks v1.38.0 // indirect - go.opentelemetry.io/contrib/detectors/aws/lambda v0.63.0 // indirect - go.opentelemetry.io/contrib/detectors/azure/azurevm v0.10.0 // indirect - go.opentelemetry.io/contrib/detectors/gcp v1.38.0 // indirect go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.38.0 // indirect go.yaml.in/yaml/v2 v2.4.3 // indirect golang.org/x/net v0.47.0 // indirect - golang.org/x/oauth2 v0.32.0 // indirect golang.org/x/sys v0.38.0 // indirect - golang.org/x/term v0.37.0 // indirect golang.org/x/text v0.31.0 // indirect - golang.org/x/time v0.12.0 // indirect google.golang.org/genproto/googleapis/api v0.0.0-20251124214823-79d6a2a48846 // indirect google.golang.org/genproto/googleapis/rpc v0.0.0-20251124214823-79d6a2a48846 // indirect google.golang.org/protobuf v1.36.10 // indirect - gopkg.in/evanphx/json-patch.v4 v4.13.0 // indirect - gopkg.in/inf.v0 v0.9.1 // indirect gopkg.in/yaml.v3 v3.0.1 // indirect - k8s.io/api v0.32.4 // indirect - k8s.io/apimachinery v0.32.4 // indirect - k8s.io/client-go v0.32.4 // indirect - k8s.io/klog/v2 v2.130.1 // indirect - k8s.io/kube-openapi v0.0.0-20250701173324-9bd5c66d9911 // indirect - k8s.io/utils v0.0.0-20250820121507-0af2bda4dd1d // indirect - sigs.k8s.io/json v0.0.0-20250730193827-2d320260d730 // indirect - sigs.k8s.io/randfill v1.0.0 // indirect - sigs.k8s.io/structured-merge-diff/v4 v4.7.0 // indirect - sigs.k8s.io/yaml v1.6.0 // indirect ) diff --git a/otelconf/go.sum b/otelconf/go.sum index 9fa451b02f8..d2be7fc508b 100644 --- a/otelconf/go.sum +++ b/otelconf/go.sum @@ -1,86 +1,24 @@ -cloud.google.com/go/compute/metadata v0.9.0 h1:pDUj4QMoPejqq20dK0Pg2N4yG9zIkYGdBtwLoEkH9Zs= -cloud.google.com/go/compute/metadata v0.9.0/go.mod h1:E0bWwX5wTnLPedCKqk3pJmVgCBSM6qQI1yTBdEb3C10= -github.com/GoogleCloudPlatform/opentelemetry-operations-go/detectors/gcp v1.30.0 h1:sBEjpZlNHzK1voKq9695PJSX2o5NEXl7/OL3coiIY0c= -github.com/GoogleCloudPlatform/opentelemetry-operations-go/detectors/gcp v1.30.0/go.mod h1:P4WPRUkOhJC13W//jWpyfJNDAIpvRbAUIYLX/4jtlE0= -github.com/aws/aws-sdk-go-v2 v1.38.3 h1:B6cV4oxnMs45fql4yRH+/Po/YU+597zgWqvDpYMturk= -github.com/aws/aws-sdk-go-v2 v1.38.3/go.mod h1:sDioUELIUO9Znk23YVmIk86/9DOpkbyyVb1i/gUNFXY= -github.com/aws/aws-sdk-go-v2/config v1.31.6 h1:a1t8fXY4GT4xjyJExz4knbuoxSCacB5hT/WgtfPyLjo= -github.com/aws/aws-sdk-go-v2/config v1.31.6/go.mod h1:5ByscNi7R+ztvOGzeUaIu49vkMk2soq5NaH5PYe33MQ= -github.com/aws/aws-sdk-go-v2/credentials v1.18.10 h1:xdJnXCouCx8Y0NncgoptztUocIYLKeQxrCgN6x9sdhg= -github.com/aws/aws-sdk-go-v2/credentials v1.18.10/go.mod h1:7tQk08ntj914F/5i9jC4+2HQTAuJirq7m1vZVIhEkWs= -github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.18.6 h1:wbjnrrMnKew78/juW7I2BtKQwa1qlf6EjQgS69uYY14= -github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.18.6/go.mod h1:AtiqqNrDioJXuUgz3+3T0mBWN7Hro2n9wll2zRUc0ww= -github.com/aws/aws-sdk-go-v2/internal/configsources v1.4.6 h1:uF68eJA6+S9iVr9WgX1NaRGyQ/6MdIyc4JNUo6TN1FA= -github.com/aws/aws-sdk-go-v2/internal/configsources v1.4.6/go.mod h1:qlPeVZCGPiobx8wb1ft0GHT5l+dc6ldnwInDFaMvC7Y= -github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.7.6 h1:pa1DEC6JoI0zduhZePp3zmhWvk/xxm4NB8Hy/Tlsgos= -github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.7.6/go.mod h1:gxEjPebnhWGJoaDdtDkA0JX46VRg1wcTHYe63OfX5pE= -github.com/aws/aws-sdk-go-v2/internal/ini v1.8.3 h1:bIqFDwgGXXN1Kpp99pDOdKMTTb5d2KyU5X/BZxjOkRo= -github.com/aws/aws-sdk-go-v2/internal/ini v1.8.3/go.mod h1:H5O/EsxDWyU+LP/V8i5sm8cxoZgc2fdNR9bxlOFrQTo= -github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding v1.13.1 h1:oegbebPEMA/1Jny7kvwejowCaHz1FWZAQ94WXFNCyTM= -github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding v1.13.1/go.mod h1:kemo5Myr9ac0U9JfSjMo9yHLtw+pECEHsFtJ9tqCEI8= -github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.13.6 h1:LHS1YAIJXJ4K9zS+1d/xa9JAA9sL2QyXIQCQFQW/X08= -github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.13.6/go.mod h1:c9PCiTEuh0wQID5/KqA32J+HAgZxN9tOGXKCiYJjTZI= -github.com/aws/aws-sdk-go-v2/service/sso v1.29.1 h1:8OLZnVJPvjnrxEwHFg9hVUof/P4sibH+Ea4KKuqAGSg= -github.com/aws/aws-sdk-go-v2/service/sso v1.29.1/go.mod h1:27M3BpVi0C02UiQh1w9nsBEit6pLhlaH3NHna6WUbDE= -github.com/aws/aws-sdk-go-v2/service/ssooidc v1.34.2 h1:gKWSTnqudpo8dAxqBqZnDoDWCiEh/40FziUjr/mo6uA= -github.com/aws/aws-sdk-go-v2/service/ssooidc v1.34.2/go.mod h1:x7+rkNmRoEN1U13A6JE2fXne9EWyJy54o3n6d4mGaXQ= -github.com/aws/aws-sdk-go-v2/service/sts v1.38.2 h1:YZPjhyaGzhDQEvsffDEcpycq49nl7fiGcfJTIo8BszI= -github.com/aws/aws-sdk-go-v2/service/sts v1.38.2/go.mod h1:2dIN8qhQfv37BdUYGgEC8Q3tteM3zFxTI1MLO2O3J3c= -github.com/aws/smithy-go v1.23.0 h1:8n6I3gXzWJB2DxBDnfxgBaSX6oe0d/t10qGz7OKqMCE= -github.com/aws/smithy-go v1.23.0/go.mod h1:t1ufH5HMublsJYulve2RKmHDC15xu1f26kHCp/HgceI= github.com/beorn7/perks v1.0.1 h1:VlbKKnNfV8bJzeqoa4cOKqO6bYr3WgKZxO8Z16+hsOM= github.com/beorn7/perks v1.0.1/go.mod h1:G2ZrVWU2WbWT9wwq4/hrbKbnv/1ERSJQ0ibhJ6rlkpw= -github.com/brunoscheufler/aws-ecs-metadata-go v0.0.0-20221221133751-67e37ae746cd h1:C0dfBzAdNMqxokqWUysk2KTJSMmqvh9cNW1opdy5+0Q= -github.com/brunoscheufler/aws-ecs-metadata-go v0.0.0-20221221133751-67e37ae746cd/go.mod h1:CeKhh8xSs3WZAc50xABMxu+FlfAAd5PNumo7NfOv7EE= 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/cespare/xxhash/v2 v2.3.0 h1:UL815xU9SqsFlibzuggzjXhog7bL6oX9BbNZnL2UFvs= github.com/cespare/xxhash/v2 v2.3.0/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs= -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/emicklei/go-restful/v3 v3.13.0 h1:C4Bl2xDndpU6nJ4bc1jXd+uTmYPVUwkD6bFY/oTyCes= -github.com/emicklei/go-restful/v3 v3.13.0/go.mod h1:6n3XBCmQQb25CM2LCACGz8ukIrRry+4bhvbpWn3mrbc= -github.com/fxamacker/cbor/v2 v2.9.0 h1:NpKPmjDBgUfBms6tr6JZkTHtfFGcMKsw3eGcmD/sapM= -github.com/fxamacker/cbor/v2 v2.9.0/go.mod h1:vM4b+DJCtHn+zz7h3FFp/hDAI9WNWCsZj23V5ytsSxQ= github.com/go-logr/logr v1.2.2/go.mod h1:jdQByPbusPIv2/zmleS9BjJVeZ6kBagPoEUsqbVz/1A= github.com/go-logr/logr v1.4.3 h1:CjnDlHq8ikf6E492q6eKboGOC0T8CDaOvkHCIg8idEI= github.com/go-logr/logr v1.4.3/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-openapi/jsonpointer v0.21.2 h1:AqQaNADVwq/VnkCmQg6ogE+M3FOsKTytwges0JdwVuA= -github.com/go-openapi/jsonpointer v0.21.2/go.mod h1:50I1STOfbY1ycR8jGz8DaMeLCdXiI6aDteEdRNNzpdk= -github.com/go-openapi/jsonreference v0.21.0 h1:Rs+Y7hSXT83Jacb7kFyjn4ijOuVGSvOdF2+tg1TRrwQ= -github.com/go-openapi/jsonreference v0.21.0/go.mod h1:LmZmgsrTkVg9LG4EaHeY8cBDslNPMo06cago5JNLkm4= -github.com/go-openapi/swag v0.23.1 h1:lpsStH0n2ittzTnbaSloVZLuB5+fvSY/+hnagBjSNZU= -github.com/go-openapi/swag v0.23.1/go.mod h1:STZs8TbRvEQQKUA+JZNAm3EWlgaOBGpyFDqQnDHMef0= -github.com/go-task/slim-sprig/v3 v3.0.0 h1:sUs3vkvUymDpBKi3qH1YSqBQk9+9D/8M2mN1vB6EwHI= -github.com/go-task/slim-sprig/v3 v3.0.0/go.mod h1:W848ghGpv3Qj3dhTPRyJypKRiqCdHZiAzKg9hl15HA8= -github.com/gogo/protobuf v1.3.2 h1:Ov1cvc58UF3b5XjBnZv7+opcTcQFZebYjWzi34vdm4Q= -github.com/gogo/protobuf v1.3.2/go.mod h1:P1XiOD3dCwIKUDQYPy72D8LYyHL2YPYrpS2s69NZV8Q= github.com/golang/protobuf v1.5.4 h1:i7eJL8qZTpSEXOPTxNKhASYpMn+8e5Q6AdndVa1dWek= github.com/golang/protobuf v1.5.4/go.mod h1:lnTiLA8Wa4RWRcIUkrtSVa5nRhsEGBg48fD6rSs7xps= -github.com/google/gnostic-models v0.7.0 h1:qwTtogB15McXDaNqTZdzPJRHvaVJlAl+HVQnLmJEJxo= -github.com/google/gnostic-models v0.7.0/go.mod h1:whL5G0m6dmc5cPxKc5bdKdEN3UjI7OUGxBlw57miDrQ= -github.com/google/go-cmp v0.5.9/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY= 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/gofuzz v1.0.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg= -github.com/google/gofuzz v1.2.0 h1:xRy4A+RhZaiKjJ1bPfwQ8sedCA+YS2YcCHW6ec7JMi0= -github.com/google/gofuzz v1.2.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg= -github.com/google/pprof v0.0.0-20241029153458-d1b30febd7db h1:097atOisP2aRj7vFgYQBbFN4U4JNXUNYpxael3UzMyo= -github.com/google/pprof v0.0.0-20241029153458-d1b30febd7db/go.mod h1:vavhavw2zAxS5dIdcRluK6cSGGPlZynqzFM8NdvU144= 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/grpc-ecosystem/grpc-gateway/v2 v2.27.3 h1:NmZ1PKzSTQbuGHw9DGPFomqkkLWMC+vZCkfs+FHv1Vg= github.com/grpc-ecosystem/grpc-gateway/v2 v2.27.3/go.mod h1:zQrxl1YP88HQlA6i9c63DSVPFklWpGX4OWAc9bFuaH4= -github.com/josharian/intern v1.0.0 h1:vlS4z54oSdjm0bgjRigI+G1HpF+tI+9rE5LLzOg8HmY= -github.com/josharian/intern v1.0.0/go.mod h1:5DoeVV0s6jJacbCEi61lwdGj/aVlrQvzHFFd8Hwg//Y= -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/kisielk/errcheck v1.5.0/go.mod h1:pFxgyoBC7bSaBwPgfKdkLd5X25qrDl4LWUI2bnpBCr8= -github.com/kisielk/gotool v1.0.0/go.mod h1:XhKaO+MFFWcvkIS/tQcRk01m1F5IRFswLeQ+oQHNcck= github.com/klauspost/compress v1.18.0 h1:c/Cqfb0r+Yi+JtIEq73FWXVkRonBlf0CRNYc8Zttxdo= github.com/klauspost/compress v1.18.0/go.mod h1:2Pp+KzxcywXVXMr50+X0Q/Lsb43OQHYWRCY2AiWywWQ= github.com/kr/pretty v0.3.1 h1:flRD4NNwYAUpkphVc1HcthR4KEIFJ65n8Mw5qdRn3LE= @@ -89,20 +27,8 @@ github.com/kr/text v0.2.0 h1:5Nx0Ya0ZqY2ygV366QzturHI13Jq95ApcVaJBhpS+AY= github.com/kr/text v0.2.0/go.mod h1:eLer722TekiGuMkidMxC/pM04lWEeraHUUmBw8l2grE= github.com/kylelemons/godebug v1.1.0 h1:RPNrshWIDI6G2gRW9EHilWtl7Z6Sb1BR0xunSBf0SNc= github.com/kylelemons/godebug v1.1.0/go.mod h1:9/0rRGxNHcop5bhtWyNeEfOS8JIWk580+fNqagV/RAw= -github.com/mailru/easyjson v0.9.0 h1:PrnmzHw7262yW8sTBwxi1PdJA3Iw/EKBa8psRf7d9a4= -github.com/mailru/easyjson v0.9.0/go.mod h1:1+xMtQp2MRNVL/V1bOzuP3aP8VNwRW55fQUto+XFtTU= -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 h1:xBagoLtFs94CBntxluKeaWgTMpvLxC4ur3nMaC9Gz0M= -github.com/modern-go/reflect2 v1.0.2/go.mod h1:yWuevngMOJpCy52FWWMvUC8ws7m/LJsjYzDa0/r8luk= github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822 h1:C3w9PqII01/Oq1c1nUAm88MOHcQC9l5mIlSMApZMrHA= github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822/go.mod h1:+n7T8mK8HuQTcFwEeznm/DIxMOiR9yIdICNftLE1DvQ= -github.com/onsi/ginkgo/v2 v2.21.0 h1:7rg/4f3rB88pb5obDgNZrNHrQ4e6WpjonchcpuBRnZM= -github.com/onsi/ginkgo/v2 v2.21.0/go.mod h1:7Du3c42kxCUegi0IImZ1wUQzMBVecgIHjR1C+NkhLQo= -github.com/onsi/gomega v1.35.1 h1:Cwbd75ZBPxFSuZ6T+rN/WCb/gOc6YgFBXLlZLhC7Ds4= -github.com/onsi/gomega v1.35.1/go.mod h1:PvZbdDc8J6XJEpDK4HCuRBm8a6Fzp9/DmhC9C7yFlog= -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/prometheus/client_golang v1.23.2 h1:Je96obch5RDVy3FDMndoUsjAhG5Edi49h0RJWRi/o0o= @@ -117,37 +43,10 @@ github.com/prometheus/procfs v0.19.2 h1:zUMhqEW66Ex7OXIiDkll3tl9a1ZdilUOd/F6ZXw4 github.com/prometheus/procfs v0.19.2/go.mod h1:M0aotyiemPhBCM0z5w87kL22CxfcH05ZpYlu+b4J7mw= 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/spf13/pflag v1.0.5 h1:iy+VFUOCP1a+8yFto/drg2CJ5u0yRoB7fZw3DKv/JXA= -github.com/spf13/pflag v1.0.5/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg= -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.2 h1:xuMeJ0Sdp5ZMRXx/aWO6RZxdr3beISkG5/G/aIRr3pY= -github.com/stretchr/objx v0.5.2/go.mod h1:FRsXN1f5AsAjCGJKqEizvkpNtU+EGNCLh3NxZ/8L+MA= -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.11.1 h1:7s2iGBzp5EwR7/aIZr8ao5+dra3wiQyKjjFuvgVKu7U= github.com/stretchr/testify v1.11.1/go.mod h1:wZwfW3scLgRK+23gO65QZefKpKQRnfz6sD981Nm4B6U= -github.com/x448/float16 v0.8.4 h1:qLwI1I70+NjRFUR3zs1JPUCgaCXSh3SW62uAKT1mSBM= -github.com/x448/float16 v0.8.4/go.mod h1:14CWIYCyZA/cWjXOioeEpHeN/83MdbZDRQHoFcYsOfg= -github.com/yuin/goldmark v1.1.27/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= -github.com/yuin/goldmark v1.2.1/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= 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/contrib/detectors/autodetect v0.10.0 h1:vZ0jhtR5UYCMEUqtQAz0UBFLlM7YomI6e5qYnRXK22U= -go.opentelemetry.io/contrib/detectors/autodetect v0.10.0/go.mod h1:Veb3Vo0ArUd9/7Ox4+4YL8y86PLKNKyeqH3EliCWWEw= -go.opentelemetry.io/contrib/detectors/aws/ec2/v2 v2.0.0 h1:29ryzGOpNONSkgpOzJqYFOaUxAt7rmuvHRAPRCKe9Mw= -go.opentelemetry.io/contrib/detectors/aws/ec2/v2 v2.0.0/go.mod h1:5NPwG/iuUWEeSVX8yPxuGQDXhdMuPte7PdaBTh/qLhY= -go.opentelemetry.io/contrib/detectors/aws/ecs v1.38.0 h1:3k8Hm/2d06eFegWKjPgGqyrGBTa8xGWMXsV3EHmXqUY= -go.opentelemetry.io/contrib/detectors/aws/ecs v1.38.0/go.mod h1:/RMzURa608/HpVWxCeTkkQVgasv/KG8SvFrLyic4le8= -go.opentelemetry.io/contrib/detectors/aws/eks v1.38.0 h1:N3mrs+jMlEjCBKiWuaXV8sn/x6zeip+lvFxhwDgEQ6Q= -go.opentelemetry.io/contrib/detectors/aws/eks v1.38.0/go.mod h1:bffeYuSvwpjeBDXPsPnJfNixemroWjR290Wmm1EYTv8= -go.opentelemetry.io/contrib/detectors/aws/lambda v0.63.0 h1:CmbVV36Lhkw1yCvaVkflJWjTWcN8TdUKEkQSTTT4w9c= -go.opentelemetry.io/contrib/detectors/aws/lambda v0.63.0/go.mod h1:ay/1ldlc56MdSdBKZXqhydRz72+dO8mwpOVXe1oiJEk= -go.opentelemetry.io/contrib/detectors/azure/azurevm v0.10.0 h1:Qkr2veHT0lGrecsw6zadwf7rbM5pbRrw6afMZ1phMrA= -go.opentelemetry.io/contrib/detectors/azure/azurevm v0.10.0/go.mod h1:D/XnxUI81qmRP5D35iAnvvHP58dZXqBx+mxMhN03XI8= -go.opentelemetry.io/contrib/detectors/gcp v1.38.0 h1:ZoYbqX7OaA/TAikspPl3ozPI6iY6LiIY9I8cUfm+pJs= -go.opentelemetry.io/contrib/detectors/gcp v1.38.0/go.mod h1:SU+iU7nu5ud4oCb3LQOhIZ3nRLj6FNVrKgtflbaf2ts= go.opentelemetry.io/otel v1.38.0 h1:RkfdswUDRimDg0m2Az18RKOsnI8UDzppJAtj01/Ymk8= go.opentelemetry.io/otel v1.38.0/go.mod h1:zcmtmQ1+YmQM9wrNsTGV/q/uyusom3P8RxwExxkZhjM= go.opentelemetry.io/otel/exporters/otlp/otlplog/otlploggrpc v0.14.0 h1:OMqPldHt79PqWKOMYIAQs3CxAi7RLgPxwfFSwr4ZxtM= @@ -194,45 +93,12 @@ go.yaml.in/yaml/v2 v2.4.3 h1:6gvOSjQoTB3vt1l+CU+tSyi/HOjfOjRLJ4YwYZGwRO0= go.yaml.in/yaml/v2 v2.4.3/go.mod h1:zSxWcmIDjOzPXpjlTTbAsKokqkDNAVtZO0WOMiT90s8= go.yaml.in/yaml/v3 v3.0.4 h1:tfq32ie2Jv2UxXFdLJdh3jXuOzWiL1fo0bu/FbuKpbc= go.yaml.in/yaml/v3 v3.0.4/go.mod h1:DhzuOOF2ATzADvBadXxruRBLzYTpT36CKvDb3+aBEFg= -golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= -golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= -golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= -golang.org/x/mod v0.2.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= -golang.org/x/mod v0.3.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= -golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= -golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= -golang.org/x/net v0.0.0-20200226121028-0de0cce0169b/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= -golang.org/x/net v0.0.0-20201021035429-f5854403a974/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= golang.org/x/net v0.47.0 h1:Mx+4dIFzqraBXUugkia1OOvlD6LemFo1ALMHjrXDOhY= golang.org/x/net v0.47.0/go.mod h1:/jNxtkgq5yWUGYkaZGqo27cfGZ1c5Nen03aYrrKpVRU= -golang.org/x/oauth2 v0.32.0 h1:jsCblLleRMDrxMN29H3z/k1KliIvpLgCkE6R8FXXNgY= -golang.org/x/oauth2 v0.32.0/go.mod h1:lzm5WQJQwKZ3nwavOZ3IS5Aulzxi68dUSgRHujetwEA= -golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= -golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200930185726-fdedc70b468f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.38.0 h1:3yZWxaJjBmCWXqhN1qh02AkOnCQ1poK6oF+a7xWL6Gc= golang.org/x/sys v0.38.0/go.mod h1:OgkHotnGiDImocRcuBABYBEXf8A9a87e/uXjp9XT3ks= -golang.org/x/term v0.37.0 h1:8EGAD0qCmHYZg6J17DvsMy9/wJ7/D/4pV/wfnld5lTU= -golang.org/x/term v0.37.0/go.mod h1:5pB4lxRNYYVZuTLmy8oR2BH8dflOR+IbTYFD8fi3254= -golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= -golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/text v0.31.0 h1:aC8ghyu4JhP8VojJ2lEHBnochRno1sgL6nEi9WGFGMM= golang.org/x/text v0.31.0/go.mod h1:tKRAlv61yKIjGGHX/4tP1LTbc13YSec1pxVEWXzfoeM= -golang.org/x/time v0.12.0 h1:ScB/8o8olJvc+CQPWrK3fPZNfh7qgwCrY0zJmoEQLSE= -golang.org/x/time v0.12.0/go.mod h1:CDIdPxbZBQxdj6cxyCIdrNogrJKMJ7pr37NYpMcMDSg= -golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= -golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= -golang.org/x/tools v0.0.0-20200619180055-7c47624df98f/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= -golang.org/x/tools v0.0.0-20210106214847-113979e3529a/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= -golang.org/x/tools v0.38.0 h1:Hx2Xv8hISq8Lm16jvBZ2VQf+RLmbd7wVUsALibYI/IQ= -golang.org/x/tools v0.38.0/go.mod h1:yEsQ/d/YK8cjh0L6rZlY8tgtlKiBNTL14pGDJPJpYQs= -golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= -golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= -golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= -golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= gonum.org/v1/gonum v0.16.0 h1:5+ul4Swaf3ESvrOnidPp4GZbzf0mxVQpDCYUQE7OJfk= gonum.org/v1/gonum v0.16.0/go.mod h1:fef3am4MQ93R2HHpKnLk4/Tbh/s0+wqD5nfa6Pnwy4E= google.golang.org/genproto/googleapis/api v0.0.0-20251124214823-79d6a2a48846 h1:ZdyUkS9po3H7G0tuh955QVyyotWvOD4W0aEapeGeUYk= @@ -246,32 +112,5 @@ google.golang.org/protobuf v1.36.10/go.mod h1:HTf+CrKn2C3g5S8VImy6tdcUvCska2kB7j 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/evanphx/json-patch.v4 v4.13.0 h1:czT3CmqEaQ1aanPc5SdlgQrrEIb8w/wwCvWWnfEbYzo= -gopkg.in/evanphx/json-patch.v4 v4.13.0/go.mod h1:p8EYWUEYMpynmqDbY58zCKCFZw8pRWMG4EsWvDvM72M= -gopkg.in/inf.v0 v0.9.1 h1:73M5CoZyi3ZLMOyDlQh031Cx6N9NDJ2Vvfl76EDAgDc= -gopkg.in/inf.v0 v0.9.1/go.mod h1:cWUDdTG/fYaXco+Dcufb5Vnc6Gp2YChqWtbxRZE0mXw= -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= -k8s.io/api v0.32.4 h1:kw8Y/G8E7EpNy7gjB8gJZl3KJkNz8HM2YHrZPtAZsF4= -k8s.io/api v0.32.4/go.mod h1:5MYFvLvweRhyKylM3Es/6uh/5hGp0dg82vP34KifX4g= -k8s.io/apimachinery v0.32.4 h1:8EEksaxA7nd7xWJkkwLDN4SvWS5ot9g6Z/VZb3ju25I= -k8s.io/apimachinery v0.32.4/go.mod h1:GpHVgxoKlTxClKcteaeuF1Ul/lDVb74KpZcxcmLDElE= -k8s.io/client-go v0.32.4 h1:zaGJS7xoYOYumoWIFXlcVrsiYioRPrXGO7dBfVC5R6M= -k8s.io/client-go v0.32.4/go.mod h1:k0jftcyYnEtwlFW92xC7MTtFv5BNcZBr+zn9jPlT9Ic= -k8s.io/klog/v2 v2.130.1 h1:n9Xl7H1Xvksem4KFG4PYbdQCQxqc/tTUyrgXaOhHSzk= -k8s.io/klog/v2 v2.130.1/go.mod h1:3Jpz1GvMt720eyJH1ckRHK1EDfpxISzJ7I9OYgaDtPE= -k8s.io/kube-openapi v0.0.0-20250701173324-9bd5c66d9911 h1:gAXU86Fmbr/ktY17lkHwSjw5aoThQvhnstGGIYKlKYc= -k8s.io/kube-openapi v0.0.0-20250701173324-9bd5c66d9911/go.mod h1:GLOk5B+hDbRROvt0X2+hqX64v/zO3vXN7J78OUmBSKw= -k8s.io/utils v0.0.0-20250820121507-0af2bda4dd1d h1:wAhiDyZ4Tdtt7e46e9M5ZSAJ/MnPGPs+Ki1gHw4w1R0= -k8s.io/utils v0.0.0-20250820121507-0af2bda4dd1d/go.mod h1:OLgZIPagt7ERELqWJFomSt595RzquPNLL48iOWgYOg0= -sigs.k8s.io/json v0.0.0-20250730193827-2d320260d730 h1:IpInykpT6ceI+QxKBbEflcR5EXP7sU1kvOlxwZh5txg= -sigs.k8s.io/json v0.0.0-20250730193827-2d320260d730/go.mod h1:mdzfpAEoE6DHQEN0uh9ZbOCuHbLK5wOm7dK4ctXE9Tg= -sigs.k8s.io/randfill v0.0.0-20250304075658-069ef1bbf016/go.mod h1:XeLlZ/jmk4i1HRopwe7/aU3H5n1zNUcX6TM94b3QxOY= -sigs.k8s.io/randfill v1.0.0 h1:JfjMILfT8A6RbawdsK2JXGBR5AQVfd+9TbzrlneTyrU= -sigs.k8s.io/randfill v1.0.0/go.mod h1:XeLlZ/jmk4i1HRopwe7/aU3H5n1zNUcX6TM94b3QxOY= -sigs.k8s.io/structured-merge-diff/v4 v4.7.0 h1:qPeWmscJcXP0snki5IYF79Z8xrl8ETFxgMd7wez1XkI= -sigs.k8s.io/structured-merge-diff/v4 v4.7.0/go.mod h1:dDy58f92j70zLsuZVuUX5Wp9vtxXpaZnkPGWeqDfCps= -sigs.k8s.io/yaml v1.4.0/go.mod h1:Ejl7/uTz7PSA4eKMyQCUTnhZYNmLIl+5c2lQPGR2BPY= -sigs.k8s.io/yaml v1.6.0 h1:G8fkbMSAFqgEFgh4b1wmtzDnioxFCUgTZhlbj5P9QYs= -sigs.k8s.io/yaml v1.6.0/go.mod h1:796bPqUfzR/0jLAl6XjHl3Ck7MiyVv8dbTdyT3/pMf4= diff --git a/otelconf/resource.go b/otelconf/resource.go index 0e2a625262e..f840027e053 100644 --- a/otelconf/resource.go +++ b/otelconf/resource.go @@ -5,38 +5,29 @@ package otelconf // import "go.opentelemetry.io/contrib/otelconf" import ( "context" - "fmt" "go.opentelemetry.io/otel/attribute" "go.opentelemetry.io/otel/sdk/resource" - "go.opentelemetry.io/contrib/detectors/autodetect" "go.opentelemetry.io/contrib/otelconf/internal/kv" ) -func toDetectorId(detectors []ExperimentalResourceDetector) []autodetect.ID { - ids := []autodetect.ID{} +func resourceOpts(detectors []ExperimentalResourceDetector) []resource.Option { + opts := []resource.Option{} for _, d := range detectors { if d.Container != nil { - ids = append(ids, autodetect.IDContainer) + opts = append(opts, resource.WithContainer()) } if d.Host != nil { - ids = append(ids, autodetect.IDHost, autodetect.IDHostID) + opts = append(opts, resource.WithHost(), resource.WithHostID()) } if d.Process != nil { - ids = append(ids, - autodetect.IDProcessCommandArgs, - autodetect.IDProcessExecutableName, - autodetect.IDProcessExecutablePath, - autodetect.IDProcessOwner, - autodetect.IDProcessPID, - autodetect.IDProcessRuntimeDescription, - autodetect.IDProcessRuntimeName, - autodetect.IDProcessRuntimeVersion, - ) + opts = append(opts, resource.WithProcess()) } + // TODO: implement service: + // Waiting on https://github.com/open-telemetry/opentelemetry-go/pull/7642 } - return ids + return opts } func newResource(res OpenTelemetryConfigurationResource) (*resource.Resource, error) { @@ -54,23 +45,18 @@ func newResource(res OpenTelemetryConfigurationResource) (*resource.Resource, er attrs = append(attrs, kv.FromNameValue(v.Name, v.Value)) } - var detectedResource *resource.Resource + var schema string + if r.SchemaUrl != nil { + schema = *r.SchemaUrl + } + opts := []resource.Option{ + resource.WithAttributes(attrs...), + resource.WithSchemaURL(schema), + } if r.DetectionDevelopment != nil { - detectors := toDetectorId(r.DetectionDevelopment.Detectors) - fmt.Println(detectors) - detector, err := autodetect.Detector(detectors...) - if err != nil { - return nil, err - } - detectedResource, err = detector.Detect(context.Background()) - if err != nil { - return nil, err - } + opts = append(opts, resourceOpts(r.DetectionDevelopment.Detectors)...) } - if r.SchemaUrl == nil { - return resource.Merge(resource.NewSchemaless(attrs...), detectedResource) - } - return resource.Merge(resource.NewWithAttributes(*r.SchemaUrl, attrs...), detectedResource) + return resource.New(context.Background(), opts...) } diff --git a/otelconf/testdata/v1.0.0.json b/otelconf/testdata/v1.0.0.json index eec69eadf46..ef936596658 100644 --- a/otelconf/testdata/v1.0.0.json +++ b/otelconf/testdata/v1.0.0.json @@ -522,8 +522,7 @@ {"process": null}, {"service": null} ] - }, - "schema_url": "https://opentelemetry.io/schemas/1.16.0" + } }, "instrumentation/development": { "general": { diff --git a/otelconf/testdata/v1.0.0.yaml b/otelconf/testdata/v1.0.0.yaml index 2dcdf8a9d11..cad6d14798f 100644 --- a/otelconf/testdata/v1.0.0.yaml +++ b/otelconf/testdata/v1.0.0.yaml @@ -850,9 +850,6 @@ resource: process: - # Enable the service detector, which populates service.name based on the OTEL_SERVICE_NAME environment variable and service.instance.id. service: - # Configure resource schema URL. - # If omitted or null, no schema URL is used. - schema_url: https://opentelemetry.io/schemas/1.16.0 # Configure instrumentation. # This type is in development and subject to breaking changes in minor versions. instrumentation/development: From 96c6ac445112b35fbf9976ca1906b2b690116820 Mon Sep 17 00:00:00 2001 From: alex boten <223565+codeboten@users.noreply.github.com> Date: Fri, 28 Nov 2025 14:40:10 -0800 Subject: [PATCH 12/12] changelog Signed-off-by: alex boten <223565+codeboten@users.noreply.github.com> --- CHANGELOG.md | 1 + 1 file changed, 1 insertion(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 8dd64126697..9facebe8c7d 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -23,6 +23,7 @@ This project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.htm - Updated `go.opentelemetry.io/contrib/otelconf` to include the [v1.0.0-rc2](https://github.com/open-telemetry/opentelemetry-configuration/releases/tag/v1.0.0-rc.2) release candidate of schema which includes backwards incompatible changes. (#8026) - Support `db.client.operation.duration` metric for `go.opentelemetry.io/contrib/instrumentation/go.mongodb.org/mongo-driver/v2/mongo/otelmongo`. (#7983) - Add support for `OTEL_EXPERIMENTAL_CONFIG_FILE` via the `NewSDK` function in `go.opentelemetry.io/contrib/otelconf` (#8106) +- Add support for `container`, `host`, `process` resource detectors in `go.opentelemetry.io/contrib/otelconf` (#8180) ### Changed