diff --git a/OPENTELEMETRY_VERSION b/OPENTELEMETRY_VERSION index cdc2beac1..50e7c4025 100644 --- a/OPENTELEMETRY_VERSION +++ b/OPENTELEMETRY_VERSION @@ -1 +1 @@ -v0.148.0 +v0.149.0 diff --git a/TARGETALLOCATOR_VERSION b/TARGETALLOCATOR_VERSION index cdc2beac1..50e7c4025 100644 --- a/TARGETALLOCATOR_VERSION +++ b/TARGETALLOCATOR_VERSION @@ -1 +1 @@ -v0.148.0 +v0.149.0 diff --git a/otelcollector/configuration-reader-builder/go.mod b/otelcollector/configuration-reader-builder/go.mod index 72f2c1f9a..9efb94101 100644 --- a/otelcollector/configuration-reader-builder/go.mod +++ b/otelcollector/configuration-reader-builder/go.mod @@ -55,8 +55,8 @@ require ( github.com/onsi/gomega v1.36.2 // indirect github.com/prometheus/client_golang v1.20.4 // indirect github.com/prometheus/client_model v0.6.2 // indirect - github.com/prometheus/procfs v0.15.1 // indirect github.com/prometheus/common v0.67.5 // indirect + github.com/prometheus/procfs v0.15.1 // indirect github.com/x448/float16 v0.8.4 // indirect golang.org/x/net v0.48.0 // indirect golang.org/x/oauth2 v0.34.0 // indirect diff --git a/otelcollector/opentelemetry-collector-builder/collector-config-default.yml b/otelcollector/opentelemetry-collector-builder/collector-config-default.yml index a3ef5a6fa..89256f04c 100644 --- a/otelcollector/opentelemetry-collector-builder/collector-config-default.yml +++ b/otelcollector/opentelemetry-collector-builder/collector-config-default.yml @@ -36,6 +36,7 @@ processors: receivers: prometheus: api_server: + enabled: true server_config: endpoint: "localhost:9092" config: diff --git a/otelcollector/opentelemetry-collector-builder/collector-config-replicaset.yml b/otelcollector/opentelemetry-collector-builder/collector-config-replicaset.yml index bc099197e..d6d40df5e 100644 --- a/otelcollector/opentelemetry-collector-builder/collector-config-replicaset.yml +++ b/otelcollector/opentelemetry-collector-builder/collector-config-replicaset.yml @@ -36,6 +36,7 @@ processors: receivers: prometheus: api_server: + enabled: true server_config: endpoint: "localhost:9092" target_allocator: diff --git a/otelcollector/opentelemetry-collector-builder/collector-config-template.yml b/otelcollector/opentelemetry-collector-builder/collector-config-template.yml index 21be3926b..90d366aa1 100644 --- a/otelcollector/opentelemetry-collector-builder/collector-config-template.yml +++ b/otelcollector/opentelemetry-collector-builder/collector-config-template.yml @@ -36,6 +36,7 @@ processors: receivers: prometheus: api_server: + enabled: true server_config: endpoint: "localhost:9092" config: diff --git a/otelcollector/opentelemetry-collector-builder/go.mod b/otelcollector/opentelemetry-collector-builder/go.mod index b9503329b..b753d40fd 100644 --- a/otelcollector/opentelemetry-collector-builder/go.mod +++ b/otelcollector/opentelemetry-collector-builder/go.mod @@ -3,22 +3,22 @@ module github.com/vishiy/opentelemetry-collector-builder go 1.25.0 require ( - github.com/open-telemetry/opentelemetry-collector-contrib/exporter/prometheusexporter v0.148.0 - github.com/open-telemetry/opentelemetry-collector-contrib/processor/filterprocessor v0.148.0 - github.com/open-telemetry/opentelemetry-collector-contrib/processor/resourceprocessor v0.148.0 - github.com/open-telemetry/opentelemetry-collector-contrib/receiver/prometheusreceiver v0.148.0 - go.opentelemetry.io/collector/component v1.54.0 - go.opentelemetry.io/collector/confmap v1.54.0 - go.opentelemetry.io/collector/confmap/provider/envprovider v1.54.0 - go.opentelemetry.io/collector/confmap/provider/fileprovider v1.54.0 - go.opentelemetry.io/collector/exporter v1.54.0 - go.opentelemetry.io/collector/exporter/otlpexporter v0.148.0 - go.opentelemetry.io/collector/extension v1.54.0 - go.opentelemetry.io/collector/otelcol v0.148.0 - go.opentelemetry.io/collector/processor v1.54.0 - go.opentelemetry.io/collector/processor/batchprocessor v0.148.0 - go.opentelemetry.io/collector/receiver v1.54.0 - go.opentelemetry.io/collector/service v0.148.0 + github.com/open-telemetry/opentelemetry-collector-contrib/exporter/prometheusexporter v0.149.0 + github.com/open-telemetry/opentelemetry-collector-contrib/processor/filterprocessor v0.149.0 + github.com/open-telemetry/opentelemetry-collector-contrib/processor/resourceprocessor v0.149.0 + github.com/open-telemetry/opentelemetry-collector-contrib/receiver/prometheusreceiver v0.149.0 + go.opentelemetry.io/collector/component v1.55.0 + go.opentelemetry.io/collector/confmap v1.55.0 + go.opentelemetry.io/collector/confmap/provider/envprovider v1.55.0 + go.opentelemetry.io/collector/confmap/provider/fileprovider v1.55.0 + go.opentelemetry.io/collector/exporter v1.55.0 + go.opentelemetry.io/collector/exporter/otlpexporter v0.149.0 + go.opentelemetry.io/collector/extension v1.55.0 + go.opentelemetry.io/collector/otelcol v0.149.0 + go.opentelemetry.io/collector/processor v1.55.0 + go.opentelemetry.io/collector/processor/batchprocessor v0.149.0 + go.opentelemetry.io/collector/receiver v1.55.0 + go.opentelemetry.io/collector/service v0.149.0 ) require ( @@ -35,7 +35,7 @@ require ( github.com/Microsoft/go-winio v0.6.2 // indirect github.com/alecthomas/participle/v2 v2.1.4 // indirect github.com/alecthomas/units v0.0.0-20240927000941-0f3dac36c52b // indirect - github.com/antchfx/xmlquery v1.5.0 // indirect + github.com/antchfx/xmlquery v1.5.1 // indirect github.com/antchfx/xpath v1.3.6 // indirect github.com/armon/go-metrics v0.4.1 // indirect github.com/aws/aws-sdk-go-v2 v1.41.1 // indirect @@ -60,7 +60,7 @@ require ( github.com/basgys/goxml2json v1.1.1-0.20231018121955-e66ee54ceaad // indirect github.com/bboreham/go-loser v0.0.0-20230920113527-fcc2c21820a3 // indirect github.com/beorn7/perks v1.0.1 // indirect - github.com/buger/jsonparser v1.1.1 // indirect + github.com/buger/jsonparser v1.1.2 // indirect github.com/cenkalti/backoff/v5 v5.0.3 // indirect github.com/cespare/xxhash/v2 v2.3.0 // indirect github.com/cncf/xds/go v0.0.0-20251210132809-ee656c7534f5 // indirect @@ -75,7 +75,7 @@ require ( github.com/docker/go-connections v0.6.0 // indirect github.com/docker/go-units v0.5.0 // indirect github.com/ebitengine/purego v0.10.0 // indirect - github.com/edsrzf/mmap-go v1.2.0 // indirect + github.com/edsrzf/mmap-go v1.2.1-0.20241212181136-fad1cd13edbd // indirect github.com/elastic/go-grok v0.3.1 // indirect github.com/elastic/lunes v0.2.0 // indirect github.com/emicklei/go-restful/v3 v3.12.2 // indirect @@ -118,7 +118,7 @@ require ( github.com/go-viper/mapstructure/v2 v2.5.0 // indirect github.com/go-zookeeper/zk v1.0.4 // indirect github.com/gobwas/glob v0.2.3 // indirect - github.com/goccy/go-json v0.10.5 // indirect + github.com/goccy/go-json v0.10.6 // indirect github.com/goccy/go-yaml v1.19.2 // indirect github.com/gogo/protobuf v1.3.2 // indirect github.com/golang-jwt/jwt/v5 v5.3.1 // indirect @@ -158,11 +158,11 @@ require ( github.com/jpillora/backoff v1.0.0 // indirect github.com/json-iterator/go v1.1.12 // indirect github.com/julienschmidt/httprouter v1.3.0 // indirect - github.com/klauspost/compress v1.18.4 // indirect + github.com/klauspost/compress v1.18.5 // indirect github.com/klauspost/cpuid/v2 v2.3.0 // indirect github.com/knadh/koanf/maps v0.1.2 // indirect github.com/knadh/koanf/providers/confmap v1.0.0 // indirect - github.com/knadh/koanf/v2 v2.3.3 // indirect + github.com/knadh/koanf/v2 v2.3.4 // indirect github.com/kolo/xmlrpc v0.0.0-20220921171641-a4b6fa1dd06b // indirect github.com/kylelemons/godebug v1.1.0 // indirect github.com/linode/linodego v1.65.0 // indirect @@ -185,14 +185,14 @@ require ( github.com/mwitkow/go-conntrack v0.0.0-20190716064945-2f068394615f // indirect github.com/oklog/ulid v1.3.1 // indirect github.com/oklog/ulid/v2 v2.1.1 // indirect - github.com/open-telemetry/opentelemetry-collector-contrib/internal/coreinternal v0.148.0 // indirect - github.com/open-telemetry/opentelemetry-collector-contrib/internal/exp/metrics v0.148.0 // indirect - github.com/open-telemetry/opentelemetry-collector-contrib/internal/filter v0.148.0 // indirect - github.com/open-telemetry/opentelemetry-collector-contrib/pkg/ottl v0.148.0 // indirect - github.com/open-telemetry/opentelemetry-collector-contrib/pkg/pdatautil v0.148.0 // indirect - github.com/open-telemetry/opentelemetry-collector-contrib/pkg/resourcetotelemetry v0.148.0 // indirect - github.com/open-telemetry/opentelemetry-collector-contrib/pkg/translator/prometheus v0.148.0 // indirect - github.com/open-telemetry/opentelemetry-collector-contrib/processor/deltatocumulativeprocessor v0.148.0 // indirect + github.com/open-telemetry/opentelemetry-collector-contrib/internal/coreinternal v0.149.0 // indirect + github.com/open-telemetry/opentelemetry-collector-contrib/internal/exp/metrics v0.149.0 // indirect + github.com/open-telemetry/opentelemetry-collector-contrib/internal/filter v0.149.0 // indirect + github.com/open-telemetry/opentelemetry-collector-contrib/pkg/ottl v0.149.0 // indirect + github.com/open-telemetry/opentelemetry-collector-contrib/pkg/pdatautil v0.149.0 // indirect + github.com/open-telemetry/opentelemetry-collector-contrib/pkg/resourcetotelemetry v0.149.0 // indirect + github.com/open-telemetry/opentelemetry-collector-contrib/pkg/translator/prometheus v0.149.0 // indirect + github.com/open-telemetry/opentelemetry-collector-contrib/processor/deltatocumulativeprocessor v0.149.0 // indirect github.com/opencontainers/go-digest v1.0.0 // indirect github.com/opencontainers/image-spec v1.1.1 // indirect github.com/ovh/go-ovh v1.9.0 // indirect @@ -237,57 +237,57 @@ require ( github.com/zeebo/xxh3 v1.1.0 // indirect go.mongodb.org/mongo-driver v1.17.6 // indirect go.opentelemetry.io/auto/sdk v1.2.1 // indirect - go.opentelemetry.io/collector v0.148.0 // indirect - go.opentelemetry.io/collector/client v1.54.0 // indirect - go.opentelemetry.io/collector/component/componentstatus v0.148.0 // indirect - go.opentelemetry.io/collector/component/componenttest v0.148.0 // indirect - go.opentelemetry.io/collector/config/configauth v1.54.0 // indirect - go.opentelemetry.io/collector/config/configcompression v1.54.0 // indirect - go.opentelemetry.io/collector/config/configgrpc v0.148.0 // indirect - go.opentelemetry.io/collector/config/confighttp v0.148.0 // indirect - go.opentelemetry.io/collector/config/configmiddleware v1.54.0 // indirect - go.opentelemetry.io/collector/config/confignet v1.54.0 // indirect - go.opentelemetry.io/collector/config/configopaque v1.54.0 // indirect - go.opentelemetry.io/collector/config/configoptional v1.54.0 // indirect - go.opentelemetry.io/collector/config/configretry v1.54.0 // indirect - go.opentelemetry.io/collector/config/configtelemetry v0.148.0 // indirect - go.opentelemetry.io/collector/config/configtls v1.54.0 // indirect - go.opentelemetry.io/collector/confmap/xconfmap v0.148.0 // indirect - go.opentelemetry.io/collector/connector v0.148.0 // indirect - go.opentelemetry.io/collector/connector/connectortest v0.148.0 // indirect - go.opentelemetry.io/collector/connector/xconnector v0.148.0 // indirect - go.opentelemetry.io/collector/consumer v1.54.0 // indirect - go.opentelemetry.io/collector/consumer/consumererror v0.148.0 // indirect - go.opentelemetry.io/collector/consumer/consumererror/xconsumererror v0.148.0 // indirect - go.opentelemetry.io/collector/consumer/consumertest v0.148.0 // indirect - go.opentelemetry.io/collector/consumer/xconsumer v0.148.0 // indirect - go.opentelemetry.io/collector/exporter/exporterhelper v0.148.0 // indirect - go.opentelemetry.io/collector/exporter/exporterhelper/xexporterhelper v0.148.0 // indirect - go.opentelemetry.io/collector/exporter/exportertest v0.148.0 // indirect - go.opentelemetry.io/collector/exporter/xexporter v0.148.0 // indirect - go.opentelemetry.io/collector/extension/extensionauth v1.54.0 // indirect - go.opentelemetry.io/collector/extension/extensioncapabilities v0.148.0 // indirect - go.opentelemetry.io/collector/extension/extensionmiddleware v0.148.0 // indirect - go.opentelemetry.io/collector/extension/extensiontest v0.148.0 // indirect - go.opentelemetry.io/collector/extension/xextension v0.148.0 // indirect - go.opentelemetry.io/collector/featuregate v1.54.0 // indirect - go.opentelemetry.io/collector/internal/componentalias v0.148.0 // indirect - go.opentelemetry.io/collector/internal/fanoutconsumer v0.148.0 // indirect - go.opentelemetry.io/collector/internal/telemetry v0.148.0 // indirect - go.opentelemetry.io/collector/pdata v1.54.0 // indirect - go.opentelemetry.io/collector/pdata/pprofile v0.148.0 // indirect - go.opentelemetry.io/collector/pdata/testdata v0.148.0 // indirect - go.opentelemetry.io/collector/pdata/xpdata v0.148.0 // indirect - go.opentelemetry.io/collector/pipeline v1.54.0 // indirect - go.opentelemetry.io/collector/pipeline/xpipeline v0.148.0 // indirect - go.opentelemetry.io/collector/processor/processorhelper v0.148.0 // indirect - go.opentelemetry.io/collector/processor/processorhelper/xprocessorhelper v0.148.0 // indirect - go.opentelemetry.io/collector/processor/processortest v0.148.0 // indirect - go.opentelemetry.io/collector/processor/xprocessor v0.148.0 // indirect - go.opentelemetry.io/collector/receiver/receiverhelper v0.148.0 // indirect - go.opentelemetry.io/collector/receiver/receivertest v0.148.0 // indirect - go.opentelemetry.io/collector/receiver/xreceiver v0.148.0 // indirect - go.opentelemetry.io/collector/service/hostcapabilities v0.148.0 // indirect + go.opentelemetry.io/collector v0.149.0 // indirect + go.opentelemetry.io/collector/client v1.55.0 // indirect + go.opentelemetry.io/collector/component/componentstatus v0.149.0 // indirect + go.opentelemetry.io/collector/component/componenttest v0.149.0 // indirect + go.opentelemetry.io/collector/config/configauth v1.55.0 // indirect + go.opentelemetry.io/collector/config/configcompression v1.55.0 // indirect + go.opentelemetry.io/collector/config/configgrpc v0.149.0 // indirect + go.opentelemetry.io/collector/config/confighttp v0.149.0 // indirect + go.opentelemetry.io/collector/config/configmiddleware v1.55.0 // indirect + go.opentelemetry.io/collector/config/confignet v1.55.0 // indirect + go.opentelemetry.io/collector/config/configopaque v1.55.0 // indirect + go.opentelemetry.io/collector/config/configoptional v1.55.0 // indirect + go.opentelemetry.io/collector/config/configretry v1.55.0 // indirect + go.opentelemetry.io/collector/config/configtelemetry v0.149.0 // indirect + go.opentelemetry.io/collector/config/configtls v1.55.0 // indirect + go.opentelemetry.io/collector/confmap/xconfmap v0.149.0 // indirect + go.opentelemetry.io/collector/connector v0.149.0 // indirect + go.opentelemetry.io/collector/connector/connectortest v0.149.0 // indirect + go.opentelemetry.io/collector/connector/xconnector v0.149.0 // indirect + go.opentelemetry.io/collector/consumer v1.55.0 // indirect + go.opentelemetry.io/collector/consumer/consumererror v0.149.0 // indirect + go.opentelemetry.io/collector/consumer/consumererror/xconsumererror v0.149.0 // indirect + go.opentelemetry.io/collector/consumer/consumertest v0.149.0 // indirect + go.opentelemetry.io/collector/consumer/xconsumer v0.149.0 // indirect + go.opentelemetry.io/collector/exporter/exporterhelper v0.149.0 // indirect + go.opentelemetry.io/collector/exporter/exporterhelper/xexporterhelper v0.149.0 // indirect + go.opentelemetry.io/collector/exporter/exportertest v0.149.0 // indirect + go.opentelemetry.io/collector/exporter/xexporter v0.149.0 // indirect + go.opentelemetry.io/collector/extension/extensionauth v1.55.0 // indirect + go.opentelemetry.io/collector/extension/extensioncapabilities v0.149.0 // indirect + go.opentelemetry.io/collector/extension/extensionmiddleware v0.149.0 // indirect + go.opentelemetry.io/collector/extension/extensiontest v0.149.0 // indirect + go.opentelemetry.io/collector/extension/xextension v0.149.0 // indirect + go.opentelemetry.io/collector/featuregate v1.55.0 // indirect + go.opentelemetry.io/collector/internal/componentalias v0.149.0 // indirect + go.opentelemetry.io/collector/internal/fanoutconsumer v0.149.0 // indirect + go.opentelemetry.io/collector/internal/telemetry v0.149.0 // indirect + go.opentelemetry.io/collector/pdata v1.55.0 // indirect + go.opentelemetry.io/collector/pdata/pprofile v0.149.0 // indirect + go.opentelemetry.io/collector/pdata/testdata v0.149.0 // indirect + go.opentelemetry.io/collector/pdata/xpdata v0.149.0 // indirect + go.opentelemetry.io/collector/pipeline v1.55.0 // indirect + go.opentelemetry.io/collector/pipeline/xpipeline v0.149.0 // indirect + go.opentelemetry.io/collector/processor/processorhelper v0.149.0 // indirect + go.opentelemetry.io/collector/processor/processorhelper/xprocessorhelper v0.149.0 // indirect + go.opentelemetry.io/collector/processor/processortest v0.149.0 // indirect + go.opentelemetry.io/collector/processor/xprocessor v0.149.0 // indirect + go.opentelemetry.io/collector/receiver/receiverhelper v0.149.0 // indirect + go.opentelemetry.io/collector/receiver/receivertest v0.149.0 // indirect + go.opentelemetry.io/collector/receiver/xreceiver v0.149.0 // indirect + go.opentelemetry.io/collector/service/hostcapabilities v0.149.0 // indirect go.opentelemetry.io/contrib/bridges/otelzap v0.17.0 // indirect go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.67.0 // indirect go.opentelemetry.io/contrib/instrumentation/net/http/httptrace/otelhttptrace v0.65.0 // indirect @@ -321,22 +321,22 @@ require ( go.yaml.in/yaml/v2 v2.4.3 // indirect go.yaml.in/yaml/v3 v3.0.4 // indirect go.yaml.in/yaml/v4 v4.0.0-rc.4 // indirect - golang.org/x/crypto v0.48.0 // indirect + golang.org/x/crypto v0.49.0 // indirect golang.org/x/exp v0.0.0-20260218203240-3dfff04db8fa // indirect - golang.org/x/mod v0.33.0 // indirect - golang.org/x/net v0.51.0 // indirect + golang.org/x/mod v0.34.0 // indirect + golang.org/x/net v0.52.0 // indirect golang.org/x/oauth2 v0.35.0 // indirect - golang.org/x/sync v0.19.0 // indirect + golang.org/x/sync v0.20.0 // indirect golang.org/x/sys v0.42.0 // indirect - golang.org/x/term v0.40.0 // indirect - golang.org/x/text v0.34.0 // indirect + golang.org/x/term v0.41.0 // indirect + golang.org/x/text v0.35.0 // indirect golang.org/x/time v0.14.0 // indirect - golang.org/x/tools v0.42.0 // indirect + golang.org/x/tools v0.43.0 // indirect gonum.org/v1/gonum v0.17.0 // indirect google.golang.org/api v0.265.0 // indirect google.golang.org/genproto/googleapis/api v0.0.0-20260226221140-a57be14db171 // indirect google.golang.org/genproto/googleapis/rpc v0.0.0-20260226221140-a57be14db171 // indirect - google.golang.org/grpc v1.79.2 // indirect + google.golang.org/grpc v1.79.3 // indirect google.golang.org/protobuf v1.36.11 // indirect gopkg.in/evanphx/json-patch.v4 v4.13.0 // indirect gopkg.in/inf.v0 v0.9.1 // indirect diff --git a/otelcollector/opentelemetry-collector-builder/go.sum b/otelcollector/opentelemetry-collector-builder/go.sum index 3e44bbb67..734195783 100644 --- a/otelcollector/opentelemetry-collector-builder/go.sum +++ b/otelcollector/opentelemetry-collector-builder/go.sum @@ -47,9 +47,8 @@ github.com/alecthomas/units v0.0.0-20151022065526-2efee857e7cf/go.mod h1:ybxpYRF github.com/alecthomas/units v0.0.0-20190717042225-c3de453c63f4/go.mod h1:ybxpYRFXyAe+OPACYpWeL0wqObRcbAqCMya13uyzqw0= github.com/alecthomas/units v0.0.0-20240927000941-0f3dac36c52b h1:mimo19zliBX/vSQ6PWWSL9lK8qwHozUj03+zLoEB8O0= github.com/alecthomas/units v0.0.0-20240927000941-0f3dac36c52b/go.mod h1:fvzegU4vN3H1qMT+8wDmzjAcDONcgo2/SZ/TyfdUOFs= -github.com/antchfx/xmlquery v1.5.0 h1:uAi+mO40ZWfyU6mlUBxRVvL6uBNZ6LMU4M3+mQIBV4c= -github.com/antchfx/xmlquery v1.5.0/go.mod h1:lJfWRXzYMK1ss32zm1GQV3gMIW/HFey3xDZmkP1SuNc= -github.com/antchfx/xpath v1.3.5/go.mod h1:i54GszH55fYfBmoZXapTHN8T8tkcHfRgLyVwwqzXNcs= +github.com/antchfx/xmlquery v1.5.1 h1:T9I4Ns1EXiWHy0IqKupGhnfTQtJwlGrpXtauYOoNv78= +github.com/antchfx/xmlquery v1.5.1/go.mod h1:bVqnl7TaDXSReKINrhZz+2E/PbCu2tUahb+wZ7WZNT8= github.com/antchfx/xpath v1.3.6 h1:s0y+ElRRtTQdfHP609qFu0+c6bglDv20pqOViQjjdPI= github.com/antchfx/xpath v1.3.6/go.mod h1:i54GszH55fYfBmoZXapTHN8T8tkcHfRgLyVwwqzXNcs= github.com/armon/circbuf v0.0.0-20150827004946-bbbad097214e/go.mod h1:3U/XgcO3hCbHZ8TKRvWD2dDTCfh9M9ya+I9JpbB7O8o= @@ -107,8 +106,8 @@ github.com/beorn7/perks v1.0.1/go.mod h1:G2ZrVWU2WbWT9wwq4/hrbKbnv/1ERSJQ0ibhJ6r github.com/bgentry/speakeasy v0.1.0/go.mod h1:+zsyZBPWlz7T6j88CTgSN5bM796AkVf0kBD4zp0CCIs= github.com/bitly/go-simplejson v0.5.1 h1:xgwPbetQScXt1gh9BmoJ6j9JMr3TElvuIyjR8pgdoow= github.com/bitly/go-simplejson v0.5.1/go.mod h1:YOPVLzCfwK14b4Sff3oP1AmGhI9T9Vsg84etUnlyp+Q= -github.com/buger/jsonparser v1.1.1 h1:2PnMjfWD7wBILjqQbt530v576A/cAbQvEW9gGIpYMUs= -github.com/buger/jsonparser v1.1.1/go.mod h1:6RYKKt7H4d4+iWqouImQ9R2FZql3VbhNgx27UK13J/0= +github.com/buger/jsonparser v1.1.2 h1:frqHqw7otoVbk5M8LlE/L7HTnIq2v9RX6EJ48i9AxJk= +github.com/buger/jsonparser v1.1.2/go.mod h1:6RYKKt7H4d4+iWqouImQ9R2FZql3VbhNgx27UK13J/0= github.com/cenkalti/backoff/v4 v4.3.0 h1:MyRJ/UdXutAwSAT+s3wNd7MfTIcy71VQueUuFK343L8= github.com/cenkalti/backoff/v4 v4.3.0/go.mod h1:Y3VNntkOUPxTVeUxJ/G5vcM//AlwfmyYozVcomhLiZE= github.com/cenkalti/backoff/v5 v5.0.3 h1:ZN+IMa753KfX5hd8vVaMixjnqRZ3y8CuJKRKj1xcsSM= @@ -159,8 +158,8 @@ github.com/docker/go-units v0.5.0 h1:69rxXcBk27SvSaaxTtLh/8llcHD8vYHT7WSdRZ/jvr4 github.com/docker/go-units v0.5.0/go.mod h1:fgPhTUdO+D/Jk86RDLlptpiXQzgHJF7gydDDbaIK4Dk= github.com/ebitengine/purego v0.10.0 h1:QIw4xfpWT6GWTzaW5XEKy3HXoqrJGx1ijYHzTF0/ISU= github.com/ebitengine/purego v0.10.0/go.mod h1:iIjxzd6CiRiOG0UyXP+V1+jWqUXVjPKLAI0mRfJZTmQ= -github.com/edsrzf/mmap-go v1.2.0 h1:hXLYlkbaPzt1SaQk+anYwKSRNhufIDCchSPkUD6dD84= -github.com/edsrzf/mmap-go v1.2.0/go.mod h1:19H/e8pUPLicwkyNgOykDXkJ9F0MHE+Z52B8EIth78Q= +github.com/edsrzf/mmap-go v1.2.1-0.20241212181136-fad1cd13edbd h1:I4PrRZuNMeDP3VbFrak4QsqwO5tWkQf0tqrrr1L2DsU= +github.com/edsrzf/mmap-go v1.2.1-0.20241212181136-fad1cd13edbd/go.mod h1:19H/e8pUPLicwkyNgOykDXkJ9F0MHE+Z52B8EIth78Q= github.com/elastic/go-grok v0.3.1 h1:WEhUxe2KrwycMnlvMimJXvzRa7DoByJB4PVUIE1ZD/U= github.com/elastic/go-grok v0.3.1/go.mod h1:n38ls8ZgOboZRgKcjMY8eFeZFMmcL9n2lP0iHhIDk64= github.com/elastic/lunes v0.2.0 h1:WI3bsdOTuaYXVe2DS1KbqA7u7FOHN4o8qJw80ZyZoQs= @@ -265,8 +264,8 @@ github.com/gobwas/glob v0.2.3/go.mod h1:d3Ez4x06l9bZtSvzIay5+Yzi0fmZzPgnTbPcKjJA github.com/gobwas/httphead v0.1.0/go.mod h1:O/RXo79gxV8G+RqlR/otEwx4Q36zl9rqC5u12GKvMCM= github.com/gobwas/pool v0.2.1/go.mod h1:q8bcK0KcYlCgd9e7WYLm9LpyS+YeLd8JVDW6WezmKEw= github.com/gobwas/ws v1.2.1/go.mod h1:hRKAFb8wOxFROYNsT1bqfWnhX+b5MFeJM9r2ZSwg/KY= -github.com/goccy/go-json v0.10.5 h1:Fq85nIqj+gXn/S5ahsiTlK3TmC85qgirsdTP/+DeaC4= -github.com/goccy/go-json v0.10.5/go.mod h1:oq7eo15ShAhp70Anwd5lgX2pLfOS3QCiwU/PULtXL6M= +github.com/goccy/go-json v0.10.6 h1:p8HrPJzOakx/mn/bQtjgNjdTcN+/S6FcG2CTtQOrHVU= +github.com/goccy/go-json v0.10.6/go.mod h1:oq7eo15ShAhp70Anwd5lgX2pLfOS3QCiwU/PULtXL6M= github.com/goccy/go-yaml v1.19.2 h1:PmFC1S6h8ljIz6gMRBopkjP1TVT7xuwrButHID66PoM= github.com/goccy/go-yaml v1.19.2/go.mod h1:XBurs7gK8ATbW4ZPGKgcbrY1Br56PdM69F7LkFRi1kA= github.com/gogo/protobuf v1.1.1/go.mod h1:r8qH/GZQm5c6nD/R0oafs1akxWv10x8SbQlK7atdtwQ= @@ -404,16 +403,16 @@ github.com/keybase/go-keychain v0.0.1 h1:way+bWYa6lDppZoZcgMbYsvC7GxljxrskdNInRt github.com/keybase/go-keychain v0.0.1/go.mod h1:PdEILRW3i9D8JcdM+FmY6RwkHGnhHxXwkPPMeUgOK1k= 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.4 h1:RPhnKRAQ4Fh8zU2FY/6ZFDwTVTxgJ/EMydqSTzE9a2c= -github.com/klauspost/compress v1.18.4/go.mod h1:R0h/fSBs8DE4ENlcrlib3PsXS61voFxhIs2DeRhCvJ4= +github.com/klauspost/compress v1.18.5 h1:/h1gH5Ce+VWNLSWqPzOVn6XBO+vJbCNGvjoaGBFW2IE= +github.com/klauspost/compress v1.18.5/go.mod h1:cwPg85FWrGar70rWktvGQj8/hthj3wpl0PGDogxkrSQ= github.com/klauspost/cpuid/v2 v2.3.0 h1:S4CRMLnYUhGeDFDqkGriYKdfoFlDnMtqTiI/sFzhA9Y= github.com/klauspost/cpuid/v2 v2.3.0/go.mod h1:hqwkgyIinND0mEev00jJYCxPNVRVXFQeu1XKlok6oO0= github.com/knadh/koanf/maps v0.1.2 h1:RBfmAW5CnZT+PJ1CVc1QSJKf4Xu9kxfQgYVQSu8hpbo= github.com/knadh/koanf/maps v0.1.2/go.mod h1:npD/QZY3V6ghQDdcQzl1W4ICNVTkohC8E73eI2xW4yI= github.com/knadh/koanf/providers/confmap v1.0.0 h1:mHKLJTE7iXEys6deO5p6olAiZdG5zwp8Aebir+/EaRE= github.com/knadh/koanf/providers/confmap v1.0.0/go.mod h1:txHYHiI2hAtF0/0sCmcuol4IDcuQbKTybiB1nOcUo1A= -github.com/knadh/koanf/v2 v2.3.3 h1:jLJC8XCRfLC7n4F+ZKKdBsbq1bfXTpuFhf4L7t94D94= -github.com/knadh/koanf/v2 v2.3.3/go.mod h1:gRb40VRAbd4iJMYYD5IxZ6hfuopFcXBpc9bbQpZwo28= +github.com/knadh/koanf/v2 v2.3.4 h1:fnynNSDlujWE+v83hAp8wKr/cdoxHLO0629SN+U8Urc= +github.com/knadh/koanf/v2 v2.3.4/go.mod h1:gRb40VRAbd4iJMYYD5IxZ6hfuopFcXBpc9bbQpZwo28= github.com/kolo/xmlrpc v0.0.0-20220921171641-a4b6fa1dd06b h1:udzkj9S/zlT5X367kqJis0QP7YMxobob6zhzq6Yre00= github.com/kolo/xmlrpc v0.0.0-20220921171641-a4b6fa1dd06b/go.mod h1:pcaDhQK0/NJZEvtCO0qQPPropqV0sJOJ6YW7X+9kRwM= github.com/konsorten/go-windows-terminal-sequences v1.0.1/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ= @@ -513,38 +512,38 @@ github.com/onsi/ginkgo/v2 v2.27.2 h1:LzwLj0b89qtIy6SSASkzlNvX6WktqurSHwkk2ipF/Ns github.com/onsi/ginkgo/v2 v2.27.2/go.mod h1:ArE1D/XhNXBXCBkKOLkbsb2c81dQHCRcF5zwn/ykDRo= github.com/onsi/gomega v1.38.2 h1:eZCjf2xjZAqe+LeWvKb5weQ+NcPwX84kqJ0cZNxok2A= github.com/onsi/gomega v1.38.2/go.mod h1:W2MJcYxRGV63b418Ai34Ud0hEdTVXq9NW9+Sx6uXf3k= -github.com/open-telemetry/opentelemetry-collector-contrib/exporter/prometheusexporter v0.148.0 h1:O/YDgVDrnuHFLRWP8NnZYltVBHDzPtnO+wg3WuLO12o= -github.com/open-telemetry/opentelemetry-collector-contrib/exporter/prometheusexporter v0.148.0/go.mod h1:p/ePRqR9XoIZekYliEuFG2Me7dCvQczuEmBjQMZ69wI= -github.com/open-telemetry/opentelemetry-collector-contrib/exporter/prometheusremotewriteexporter v0.148.0 h1:wPh+YmUnpewoHZULN/te4+woOs7OZMozYy4QKAXy7No= -github.com/open-telemetry/opentelemetry-collector-contrib/exporter/prometheusremotewriteexporter v0.148.0/go.mod h1:G7Ql+f10bXdx5v9bWomLd1LnSMiKkjZKofKBCLi04Ac= -github.com/open-telemetry/opentelemetry-collector-contrib/internal/common v0.148.0 h1:XfnWquAk1ZhCuUNFIg4MKKOXiTfJrSulU8yKPxArFSM= -github.com/open-telemetry/opentelemetry-collector-contrib/internal/common v0.148.0/go.mod h1:uq/XRz2qvgDqO03Z90K/pqV8+h20uauP3E2XseKIIDE= -github.com/open-telemetry/opentelemetry-collector-contrib/internal/coreinternal v0.148.0 h1:pbsTNnV4+4q27bIftrITw/EuJbI5z94RF5bwcRrMZJY= -github.com/open-telemetry/opentelemetry-collector-contrib/internal/coreinternal v0.148.0/go.mod h1:Nk8pkfQ5BxhCCODJvBIsC8b8VWXg35OxwRSUT6R+fUE= -github.com/open-telemetry/opentelemetry-collector-contrib/internal/exp/metrics v0.148.0 h1:CiTjQE/Hh5xK2t56ogrDK4nl0+tJPNmASCs4zEYZ/xU= -github.com/open-telemetry/opentelemetry-collector-contrib/internal/exp/metrics v0.148.0/go.mod h1:WUFkzTiOpt7EYyL67gv1GOf3RD8qKWGtin3lY9LYzW4= -github.com/open-telemetry/opentelemetry-collector-contrib/internal/filter v0.148.0 h1:05de/VW7LjTS5ysK0lhyxGrp3whAJQRgZBzp26XZ+jw= -github.com/open-telemetry/opentelemetry-collector-contrib/internal/filter v0.148.0/go.mod h1:siHbiFjy0I2SujB8YgE40aDCloVMOhzf1oWZuBDIWU0= -github.com/open-telemetry/opentelemetry-collector-contrib/pkg/golden v0.148.0 h1:YwgrFMV91ZwDGxQr5cexsBYDnJyWcgOBFlMdTmP1jto= -github.com/open-telemetry/opentelemetry-collector-contrib/pkg/golden v0.148.0/go.mod h1:dvvRvNbHkeSZwG8TCpqIpKGwoS6XwN4zu/QSeWJryOE= -github.com/open-telemetry/opentelemetry-collector-contrib/pkg/ottl v0.148.0 h1:a2TH+o0srWj/aXc+jXz+Wu8I4Ve/dh97VV0vuDcMbEk= -github.com/open-telemetry/opentelemetry-collector-contrib/pkg/ottl v0.148.0/go.mod h1:kNIffaZJyeGAs4hRhOj2aFhyfQUZ7WkjsvKumomYI9k= -github.com/open-telemetry/opentelemetry-collector-contrib/pkg/pdatatest v0.148.0 h1:i12duJOl5VCb9mbb8FfZCaP2CjeXbNsbg82JjSe7sy8= -github.com/open-telemetry/opentelemetry-collector-contrib/pkg/pdatatest v0.148.0/go.mod h1:jyw+QvkmCrF/oYy31O2ndb5KZZK4l+iR89msnV3LN/k= -github.com/open-telemetry/opentelemetry-collector-contrib/pkg/pdatautil v0.148.0 h1:1TLg6YrS3Au6F7xw3ws2Njbwj13IMqPplvGFi+18fWs= -github.com/open-telemetry/opentelemetry-collector-contrib/pkg/pdatautil v0.148.0/go.mod h1:P8hZEDIQk4REgUWyLhSVRHwTxK6KkifKfg36BmmQ/DI= -github.com/open-telemetry/opentelemetry-collector-contrib/pkg/resourcetotelemetry v0.148.0 h1:kU1mAWAnilMTNl3oTWtpTUSJ4wfnwsmnwLDgmfRCcKE= -github.com/open-telemetry/opentelemetry-collector-contrib/pkg/resourcetotelemetry v0.148.0/go.mod h1:6NEvP8esqtJQ86p2TX5fpB6/m3SdrHfrz6RbwKekLm4= -github.com/open-telemetry/opentelemetry-collector-contrib/pkg/translator/prometheus v0.148.0 h1:avKwssJ9H+qNe0Oh99SBCNqQ/A5V2mvMAPW2OoKQTA0= -github.com/open-telemetry/opentelemetry-collector-contrib/pkg/translator/prometheus v0.148.0/go.mod h1:bomnDhYEZ9H6QsL7jBwpCuWlAOXa5AJMNdMTY3e1HnA= -github.com/open-telemetry/opentelemetry-collector-contrib/pkg/translator/prometheusremotewrite v0.148.0 h1:iXZN0mWjLYs/6OV7I0pLuokxwymmsMekELzngUs5fOI= -github.com/open-telemetry/opentelemetry-collector-contrib/pkg/translator/prometheusremotewrite v0.148.0/go.mod h1:Eq1/BjDueB0AprWzp++sLvcnj+kcO74Z6vk1YXNhySg= -github.com/open-telemetry/opentelemetry-collector-contrib/processor/deltatocumulativeprocessor v0.148.0 h1:xgD/kNGp/wWY+bwY599Pc01OamYN17phRiTP934bM5Y= -github.com/open-telemetry/opentelemetry-collector-contrib/processor/deltatocumulativeprocessor v0.148.0/go.mod h1:ZK7wvaefla9lB3bAW0rNKt7IzRPcTRQoOFqr4sZy/XM= -github.com/open-telemetry/opentelemetry-collector-contrib/processor/filterprocessor v0.148.0 h1:QcPqTs/5PFhxehiNSHAGNasCmQOC7hHksnF0tMJ6Dz4= -github.com/open-telemetry/opentelemetry-collector-contrib/processor/filterprocessor v0.148.0/go.mod h1:goFQF15qVJW8XklQEnWTDCS5lloJg4VTsphlNvOuwXw= -github.com/open-telemetry/opentelemetry-collector-contrib/processor/resourceprocessor v0.148.0 h1:Ctr19EUwKQlpalwtlW2LO5+JuYngczXxMIRc5Grv5eo= -github.com/open-telemetry/opentelemetry-collector-contrib/processor/resourceprocessor v0.148.0/go.mod h1:NyKoX9vvpmQIWkURfLb45drpO07MwhlprYTFlJlE82E= +github.com/open-telemetry/opentelemetry-collector-contrib/exporter/prometheusexporter v0.149.0 h1:kkoCt+UaQ9rJ9zmOdWXQOGOF95lFA8Pxt8nTi9UNxPU= +github.com/open-telemetry/opentelemetry-collector-contrib/exporter/prometheusexporter v0.149.0/go.mod h1:l+7IxABnuD5R0xBlb4dOCVlbpVL4WsLrpXEY9dksDYs= +github.com/open-telemetry/opentelemetry-collector-contrib/exporter/prometheusremotewriteexporter v0.149.0 h1:rTIL0dk9Fb9cGSgZm7tpUnPi6FIjMKUFIY6ckWoFr94= +github.com/open-telemetry/opentelemetry-collector-contrib/exporter/prometheusremotewriteexporter v0.149.0/go.mod h1:1hS+tu/oEaterSkgc8vpiyO4lAdccOyBNOckPXc7Q5Y= +github.com/open-telemetry/opentelemetry-collector-contrib/internal/common v0.149.0 h1:190VB4TTET+Wl6ptrsTdY/vmnCtTftemWUUJqkCBKxc= +github.com/open-telemetry/opentelemetry-collector-contrib/internal/common v0.149.0/go.mod h1:WhkSst4tY+c4WPaZAbF7EwbxHVm22EuxrII83Qf7tgI= +github.com/open-telemetry/opentelemetry-collector-contrib/internal/coreinternal v0.149.0 h1:7tjwxaak0p0e86aqdYJ+rn/8z6277lS2/kwxfDWXVQQ= +github.com/open-telemetry/opentelemetry-collector-contrib/internal/coreinternal v0.149.0/go.mod h1:Y4n54xT8NfHlelDDcpxla7pwI6h8wqqc0gWU5RSteE4= +github.com/open-telemetry/opentelemetry-collector-contrib/internal/exp/metrics v0.149.0 h1:Zovdium/2408dqJzSxA5XebZBxGBnDkfrai1HKT5Omc= +github.com/open-telemetry/opentelemetry-collector-contrib/internal/exp/metrics v0.149.0/go.mod h1:ughjuka9JQd81X6we9PmdvaiIjeOWtKK04BladDtzZc= +github.com/open-telemetry/opentelemetry-collector-contrib/internal/filter v0.149.0 h1:KpeSGXIld5Rqx4gdUc+Tc/B751C2u2GM6Q0pQUKJWbo= +github.com/open-telemetry/opentelemetry-collector-contrib/internal/filter v0.149.0/go.mod h1:4brSxqI1ifPRBql0e4pA3uBRZFgZbJdQRck3bRw8MJ4= +github.com/open-telemetry/opentelemetry-collector-contrib/pkg/golden v0.149.0 h1:EuXIJolnTL+oBFzF0almZEkHiV4thwnSjEcr3L5nNu0= +github.com/open-telemetry/opentelemetry-collector-contrib/pkg/golden v0.149.0/go.mod h1:VKgoaDIUxOoTiskp7HK7ESS+CgsgoNKD2PgzF0wRXvQ= +github.com/open-telemetry/opentelemetry-collector-contrib/pkg/ottl v0.149.0 h1:M2aT3Bvkn4rmi74Jbz5JxaDFedwYDowD8IHGDRBE36U= +github.com/open-telemetry/opentelemetry-collector-contrib/pkg/ottl v0.149.0/go.mod h1:1TZ3dpFUw3hFouqKIDynZqMsZYbTyUTrAHwBGoVbVik= +github.com/open-telemetry/opentelemetry-collector-contrib/pkg/pdatatest v0.149.0 h1:2VC/s/j8LFVE9+CvoNhjAPtKHgDAOgRb/JXkRdrPUnI= +github.com/open-telemetry/opentelemetry-collector-contrib/pkg/pdatatest v0.149.0/go.mod h1:sycQ9JOpSQY+iTiDOVcQL84TgYUIj7fF3z5Yc6nOwnc= +github.com/open-telemetry/opentelemetry-collector-contrib/pkg/pdatautil v0.149.0 h1:OZKthV+cLQO5MCFhBQme3AveZ5vorqaFwb0Qn8jvSQQ= +github.com/open-telemetry/opentelemetry-collector-contrib/pkg/pdatautil v0.149.0/go.mod h1:eB74l+/1nW5tofwCjD5TKRqHFYnBSWo0j0xWD8BHYuE= +github.com/open-telemetry/opentelemetry-collector-contrib/pkg/resourcetotelemetry v0.149.0 h1:1Uwf77CT2yfx+c/1nqn+994g53FiRDBRA0ENOz/0VEU= +github.com/open-telemetry/opentelemetry-collector-contrib/pkg/resourcetotelemetry v0.149.0/go.mod h1:rJ4DYBZls/oC3ITroSLYJd7Fng9WFNs5CfTTy7F0gw4= +github.com/open-telemetry/opentelemetry-collector-contrib/pkg/translator/prometheus v0.149.0 h1:vWkV4CPudpCVDduqRtHY63Vpj8sEqT4jXiRrsKepv0k= +github.com/open-telemetry/opentelemetry-collector-contrib/pkg/translator/prometheus v0.149.0/go.mod h1:bWxyNmmVVA0YoxyyJxCUuVjxIYeAs6U5c2lBzT3argY= +github.com/open-telemetry/opentelemetry-collector-contrib/pkg/translator/prometheusremotewrite v0.149.0 h1:dwm+5Hwl2KJNeb4O9Sku9D0xyGFtgxxmIBrbMfAgVyM= +github.com/open-telemetry/opentelemetry-collector-contrib/pkg/translator/prometheusremotewrite v0.149.0/go.mod h1:aKE14o1E9mEsVRIglDSYomXR0rjIhOK5TE5kMFllCzY= +github.com/open-telemetry/opentelemetry-collector-contrib/processor/deltatocumulativeprocessor v0.149.0 h1:4QJFwu4guYeLNnlHLYWJQx8Dps6ii1rwjE9B9dekYdY= +github.com/open-telemetry/opentelemetry-collector-contrib/processor/deltatocumulativeprocessor v0.149.0/go.mod h1:K/+3geevCDJiJew7MuQU481B9JNlc7eLEFv4t59WGRM= +github.com/open-telemetry/opentelemetry-collector-contrib/processor/filterprocessor v0.149.0 h1:Cn2ipf2ClUWS7ujfgNJzf1P7v4oPQQp8OfSuQEOLKQw= +github.com/open-telemetry/opentelemetry-collector-contrib/processor/filterprocessor v0.149.0/go.mod h1:cnHVn4tZWaSenOdq32m/yPgKBWvQXAg3sy5qXqtr82k= +github.com/open-telemetry/opentelemetry-collector-contrib/processor/resourceprocessor v0.149.0 h1:4xhzQTA7iCti16CvKMgCzmjsMXG1+GPg3euu+ZAf5CE= +github.com/open-telemetry/opentelemetry-collector-contrib/processor/resourceprocessor v0.149.0/go.mod h1:3zRzERG9mKrsiVFw6Uh6uJ/IsDwvlG4N8d+Z+u4z9Do= github.com/opencontainers/go-digest v1.0.0 h1:apOUWs51W5PlhuyGyz9FCeeBIOUDA/6nW8Oi/yOhh5U= github.com/opencontainers/go-digest v1.0.0/go.mod h1:0JzlMkj0TRzQZfJkVvzbP0HBR3IKzErnv2BNG4W4MAM= github.com/opencontainers/image-spec v1.1.1 h1:y0fUlFfIZhPF1W537XOLg0/fcx6zcHCJwooC2xJA040= @@ -700,142 +699,142 @@ go.mongodb.org/mongo-driver v1.17.6 h1:87JUG1wZfWsr6rIz3ZmpH90rL5tea7O3IHuSwHUps go.mongodb.org/mongo-driver v1.17.6/go.mod h1:Hy04i7O2kC4RS06ZrhPRqj/u4DTYkFDAAccj+rVKqgQ= go.opentelemetry.io/auto/sdk v1.2.1 h1:jXsnJ4Lmnqd11kwkBV2LgLoFMZKizbCi5fNZ/ipaZ64= go.opentelemetry.io/auto/sdk v1.2.1/go.mod h1:KRTj+aOaElaLi+wW1kO/DZRXwkF4C5xPbEe3ZiIhN7Y= -go.opentelemetry.io/collector v0.148.0 h1:v/MudgCZ7n0LfOxtMIJjYdA8R073vjUllhhsaBtiTro= -go.opentelemetry.io/collector v0.148.0/go.mod h1:EoAnQknwq/wemQGw89xl6+IITdNwenPWl0ARNhgWwPA= -go.opentelemetry.io/collector/client v1.54.0 h1:JDpDdc67n2LGVcDzMKN7fSsmmB7333g6d38LshTuXR0= -go.opentelemetry.io/collector/client v1.54.0/go.mod h1:4ODFLlgYmMEA+GNy96Qsn6Gi2PwFQFNUScvv5vVTyfE= -go.opentelemetry.io/collector/component v1.54.0 h1:LvtX0Tzz18n44OrUFVk77N1FNsejfWJqztB28hrmDM8= -go.opentelemetry.io/collector/component v1.54.0/go.mod h1:yUMBYsySY/sDcXm8kOzEoZxt+JLdala6hxzSW0npOxY= -go.opentelemetry.io/collector/component/componentstatus v0.148.0 h1:sCGRaXNQolHFhPjrNJEwQ1WZOf96iL99tzm9GxuZsvg= -go.opentelemetry.io/collector/component/componentstatus v0.148.0/go.mod h1:yqg3SpGQc22W3wGICdnb+2kZVW9daBr3+LrGUCHkKfc= -go.opentelemetry.io/collector/component/componenttest v0.148.0 h1:tBXJWmy2X6KD8S0QU2YZa2zYBqP+IycSM4iOtwDD2pA= -go.opentelemetry.io/collector/component/componenttest v0.148.0/go.mod h1:1c1+6mZOmI0raoya5vA/X0F+fawEjNS6tCEs5xLATtA= -go.opentelemetry.io/collector/config/configauth v1.54.0 h1:qJ3JdalSJmKWa59kkJoD/nElPlxWvyGf3xZAVnp1TrI= -go.opentelemetry.io/collector/config/configauth v1.54.0/go.mod h1:vyp8mZJ793H82GV4eVuuoL+sG6n32SQgG/6jGGfOf+o= -go.opentelemetry.io/collector/config/configcompression v1.54.0 h1:YDnrdNSEXqam0OQWRAE+arMsvm/fxQb3oNhgcWhAZ5k= -go.opentelemetry.io/collector/config/configcompression v1.54.0/go.mod h1:SEcE2uFLHHPc/Vi8WCkW5MhOMUwaT321HBdZ3P8x8D0= -go.opentelemetry.io/collector/config/configgrpc v0.148.0 h1:UxGCpYGw55RVsNkhesRF4im6TJvB9ImaJenpwEgOWco= -go.opentelemetry.io/collector/config/configgrpc v0.148.0/go.mod h1:wdDhkiKYPLEfU/8dcHQaJWQiY0nbI/Z75q0YBEQ3f3Q= -go.opentelemetry.io/collector/config/confighttp v0.148.0 h1:1OYlN1pK0IlJrZTLiNxQNPD90AnrEjJ72HXd77w5Xqs= -go.opentelemetry.io/collector/config/confighttp v0.148.0/go.mod h1:bXmmkVH3L4E2XZwKOQuy/5EbOzhX97e0iuv9iMlFbXQ= -go.opentelemetry.io/collector/config/configmiddleware v1.54.0 h1:FPMNDPumiZ7FhfzRggn5PR0AnPZQOVB7VWua11VGAUU= -go.opentelemetry.io/collector/config/configmiddleware v1.54.0/go.mod h1:6PYzhcC5402GuSjIs6Q14O2HjH2ZE+A60wWdQuI7ZhY= -go.opentelemetry.io/collector/config/confignet v1.54.0 h1:Led1uZQkFDSRIaO9GyZjvpIfuMBAADou7MvhtZkV/Pc= -go.opentelemetry.io/collector/config/confignet v1.54.0/go.mod h1:okpHzgIUQW9ga1P9PXzUsggmG1woR1rYsfZGDWKAC6c= -go.opentelemetry.io/collector/config/configopaque v1.54.0 h1:DsVlBIk3RDbRz48GxkrKFN5uNet8EaGXU39C6VsUjZQ= -go.opentelemetry.io/collector/config/configopaque v1.54.0/go.mod h1:beDuR48blgodzbJkUgMFu9vg0qxjU04tcBtb/rVEP/A= -go.opentelemetry.io/collector/config/configoptional v1.54.0 h1:W6MHMrVEbjw/5boxN+VXGZmMBi62IF/lf41vhuNGebU= -go.opentelemetry.io/collector/config/configoptional v1.54.0/go.mod h1:c8cFSCUN/A6U00janThFC64ZpyKV1viq/chPOoaqe3I= -go.opentelemetry.io/collector/config/configretry v1.54.0 h1:v0G/FxIkkcZzaM/1JrHN5sWBoUWWvb3c+UEgvo5iFs4= -go.opentelemetry.io/collector/config/configretry v1.54.0/go.mod h1:1BoQ5SvJT751bqP/5g0VTPLkNgMtvifAr2QqMCVOv2o= -go.opentelemetry.io/collector/config/configtelemetry v0.148.0 h1:TZPiz6T6AOvEHmKzU0cPF+CcRbJVR0c3DCqP8Orylx8= -go.opentelemetry.io/collector/config/configtelemetry v0.148.0/go.mod h1:vLUthxDJbDk0ZE9MXPvmSslNESDdGblIXWoDMov3UOE= -go.opentelemetry.io/collector/config/configtls v1.54.0 h1:Xt5oEs+q7Y6l7mdFYqSrqr0lwJilGcg9EBlCBd/jiBw= -go.opentelemetry.io/collector/config/configtls v1.54.0/go.mod h1:ikruZqHoIlR+MaqUgDKotQiuN64uAdlH6zxsTjSKjSM= -go.opentelemetry.io/collector/confmap v1.54.0 h1:RUoxQ4uAYHTI57GfHh61D00tTQsXm9T88ozrAiicByc= -go.opentelemetry.io/collector/confmap v1.54.0/go.mod h1:mQxG8bk0IWIt9gbWMvzE+cRkOuCuzbzkNGBq2YJ4wNM= -go.opentelemetry.io/collector/confmap/provider/envprovider v1.54.0 h1:oFzvQvVf6w/H6niYNkp/I3FJpjD3bG7Phw8pad/mO60= -go.opentelemetry.io/collector/confmap/provider/envprovider v1.54.0/go.mod h1:NxRpjioeOYqRaqg83REYYUAIaraZapbhWsvIrDVhQ8k= -go.opentelemetry.io/collector/confmap/provider/fileprovider v1.54.0 h1:oypNOydhUDKyg2GBhchpwofKQbgnGrLmXkldrXD8T3Q= -go.opentelemetry.io/collector/confmap/provider/fileprovider v1.54.0/go.mod h1:x2HycFHWpfplIjjMERFOO9byCLLMCnuoxZ87TYwvPF4= -go.opentelemetry.io/collector/confmap/xconfmap v0.148.0 h1:UW8MX5VlKJf67x4Et7J9kPwP9Rv4VSmJ+UUpgRcb//c= -go.opentelemetry.io/collector/confmap/xconfmap v0.148.0/go.mod h1:4qTMr3V0uSXXac9wVs/UD5fIqRKw5yIl58+Vjsc6RHM= -go.opentelemetry.io/collector/connector v0.148.0 h1:nJOvqm57ab4xRDxF0C+PQdptOF/x6NU9MAaqQJqOq7A= -go.opentelemetry.io/collector/connector v0.148.0/go.mod h1:Evipn8SpEed4NSynwcef3s/VihyutpAzv9aFh2KvtJA= -go.opentelemetry.io/collector/connector/connectortest v0.148.0 h1:LPrjLF9UbGOtZkG/PfA2Lh94Aouxf0FeqtL4TLvKXvY= -go.opentelemetry.io/collector/connector/connectortest v0.148.0/go.mod h1:y9S8I7FLfb8+nyqugOFiExv/ZlGi/BIcINUEdowX4eQ= -go.opentelemetry.io/collector/connector/xconnector v0.148.0 h1:O6GOSkFezdCovPWIlcx0ZkymLGBlmMIoBrRzMLUV8ho= -go.opentelemetry.io/collector/connector/xconnector v0.148.0/go.mod h1:FMtp0iuWWmv2wY30QQyMbetNLn0MJfFgVXZDAViUwKs= -go.opentelemetry.io/collector/consumer v1.54.0 h1:RGGtUN+GbkV1px3T6XdUHmgJ+ldJ1hAHdesFzW/wgL0= -go.opentelemetry.io/collector/consumer v1.54.0/go.mod h1:1PC6XINTL9DdT1bwvfMdHE72EB4RWU/WcPemUrhqKN8= -go.opentelemetry.io/collector/consumer/consumererror v0.148.0 h1:lKVkNWBeRXG41lHBf5KzA9oErRZifx6qTd9erAFfEkE= -go.opentelemetry.io/collector/consumer/consumererror v0.148.0/go.mod h1:N/UppmtknIdzpEiy3xirH1EiBEBOqKqD77NCyNi2Rbc= -go.opentelemetry.io/collector/consumer/consumererror/xconsumererror v0.148.0 h1:61RfzjtvnATQEahTN/Enwz0QFEBK9M9eNcxHh5Etzm0= -go.opentelemetry.io/collector/consumer/consumererror/xconsumererror v0.148.0/go.mod h1:vJSXpbjZelXtXdV3AjdGC2WjoVQkNLpzxy+5MUl3Xd8= -go.opentelemetry.io/collector/consumer/consumertest v0.148.0 h1:ms0HtWMj17tI1Yds0hSuUI5QYpNEqd11AAhwIoUY2HE= -go.opentelemetry.io/collector/consumer/consumertest v0.148.0/go.mod h1:wScw/OzKkf/ZzJn4ToI30OoI1kJiY16WNrcFToXSzK0= -go.opentelemetry.io/collector/consumer/xconsumer v0.148.0 h1:m3b9rY7CLD5Pcge6sSKHIT3OlcPN6xqYsdtVs9oJ528= -go.opentelemetry.io/collector/consumer/xconsumer v0.148.0/go.mod h1:bG+Wz6xmIBl/gHzq1sqvksWXqTLuTX17Wo//zIsdZpw= -go.opentelemetry.io/collector/exporter v1.54.0 h1:SSkEc9VGCf4OJaf+spj4euZ/FcswzOwLm8zR9an5Fxc= -go.opentelemetry.io/collector/exporter v1.54.0/go.mod h1:thsNaoV7xRq91sXkKsyFXHj0l2c/ZDM88Mdwe2/QP40= -go.opentelemetry.io/collector/exporter/exporterhelper v0.148.0 h1:mZXGdleKMaEF0jSOcCoOVRWwt3AcgSTAnIZmAqdDYNs= -go.opentelemetry.io/collector/exporter/exporterhelper v0.148.0/go.mod h1:+EZCJ6vlgQiozHvUoeEJHnIaV6Ez7HHOLdNWNpo+CUc= -go.opentelemetry.io/collector/exporter/exporterhelper/xexporterhelper v0.148.0 h1:LpTc/OsKXy/MBIdpCJ0VC9BCJreH5JUE8DIaNRlw488= -go.opentelemetry.io/collector/exporter/exporterhelper/xexporterhelper v0.148.0/go.mod h1:bc03Yf1kCAG4LwkztlOR9NXKBZ6dMfnJLV6SL77zAzQ= -go.opentelemetry.io/collector/exporter/exportertest v0.148.0 h1:joLVWwfWDk7idnikGPeOWOa7nJG1pG1+jGvuuOOB1/E= -go.opentelemetry.io/collector/exporter/exportertest v0.148.0/go.mod h1:R202E9bjYU4R+2jiDt+aiZSwsIZI3slL6M8y1MeuqkM= -go.opentelemetry.io/collector/exporter/otlpexporter v0.148.0 h1:oBcYpuuRdK0gZNXO/zCQViSZTn/JH/Z9j/tuqpmd+q4= -go.opentelemetry.io/collector/exporter/otlpexporter v0.148.0/go.mod h1:Eavhwd/38JzeDeiDRsO8WFY2+FPmw0pSJt8k1tMz2d0= -go.opentelemetry.io/collector/exporter/xexporter v0.148.0 h1:QKMwwrUe4snzB9B97NaBtf9qFEeIjx4/oBSwv8EZbJc= -go.opentelemetry.io/collector/exporter/xexporter v0.148.0/go.mod h1:rZ60Z9Ny4H+IX5dsn+RiJEJQRNEXAEYZ6XFwE2EWxGU= -go.opentelemetry.io/collector/extension v1.54.0 h1:nF+pPfXWcWXjauX0+E1gsWUlUdAe2+26VKIb9hKZJAk= -go.opentelemetry.io/collector/extension v1.54.0/go.mod h1:hqjEnkrjjxLXjzyDnLsOJnWMLWkfEjbqm8CHj1ud5pY= -go.opentelemetry.io/collector/extension/extensionauth v1.54.0 h1:IglgKxygOcGCCCB31bBxOYwtB8h1oQ2MXVGWKV0k1C0= -go.opentelemetry.io/collector/extension/extensionauth v1.54.0/go.mod h1:5SXF5D0r+uhrHU50xCXAnJ1HNmSDDuXamD+fZdcYRLs= -go.opentelemetry.io/collector/extension/extensionauth/extensionauthtest v0.148.0 h1:k2Hk5VhnWkn5C79tkZ554KAydyf0awfaW6Ku/bttS6s= -go.opentelemetry.io/collector/extension/extensionauth/extensionauthtest v0.148.0/go.mod h1:LhiPIqE7pIDo0+Njo9gPtrAbpnx4tjzqVCP8C0UFBvQ= -go.opentelemetry.io/collector/extension/extensioncapabilities v0.148.0 h1:nhIKJyE5YDy0KkI1mrULLBxMwLsq/EyeXQJJZDSRXHI= -go.opentelemetry.io/collector/extension/extensioncapabilities v0.148.0/go.mod h1:WQEEnK/GdM4n5EwEUL5PYimT4JFYgGzUrT7yAe8yaxI= -go.opentelemetry.io/collector/extension/extensionmiddleware v0.148.0 h1:GdlmwwQ1IxExKL27Ou5YRCs91Z8QYzlENUOBax252bc= -go.opentelemetry.io/collector/extension/extensionmiddleware v0.148.0/go.mod h1:ySiHSkCzMcgphWdZiGYIPrFgaEGO2tPY3D0MipGsYpo= -go.opentelemetry.io/collector/extension/extensionmiddleware/extensionmiddlewaretest v0.148.0 h1:SgNl5DswPxs+gDH5Ojg8xyorogbxTqXoayLGZkvdB/A= -go.opentelemetry.io/collector/extension/extensionmiddleware/extensionmiddlewaretest v0.148.0/go.mod h1:WMKYe+WIhgCnXAmOtn69yY7tTZZqgSkx+lh1Y5tk3OI= -go.opentelemetry.io/collector/extension/extensiontest v0.148.0 h1:ZBrYWe+7oQQVqChXrq4PL1P/Febuo6un2/g7oQP9zfQ= -go.opentelemetry.io/collector/extension/extensiontest v0.148.0/go.mod h1:wLxKb/SkoqbStm6zv+9MAhzhySI49oGw2aszPaw9No4= -go.opentelemetry.io/collector/extension/xextension v0.148.0 h1:LoSXaI3jd7fhQbPdIDpXy0HC2j4ftsG7LlVrUrghtwA= -go.opentelemetry.io/collector/extension/xextension v0.148.0/go.mod h1:dlMQsSTo8Jgd+u8/ssdg0oIItQptkUIfX4zO9xy+hiE= -go.opentelemetry.io/collector/extension/zpagesextension v0.148.0 h1:s2M8HLykiRB7Ub5qyTsYoeJ5hR9MdsG9FJR9wricyVM= -go.opentelemetry.io/collector/extension/zpagesextension v0.148.0/go.mod h1:+x2vb3TFNtE32qCv6ScG//RpAYdAZYE6ok4Ua++DWkU= -go.opentelemetry.io/collector/featuregate v1.54.0 h1:ufo5Hy4Co9pcHVg24hyanm8qFG3TkkYbVyQXPVAbwDc= -go.opentelemetry.io/collector/featuregate v1.54.0/go.mod h1:PS7zY/zaCb28EqciePVwRHVhc3oKortTFXsi3I6ee4g= -go.opentelemetry.io/collector/internal/componentalias v0.148.0 h1:Y6MftNIZSzOr47TTj6A2z2UR3IwbeG46sAQshicGtDg= -go.opentelemetry.io/collector/internal/componentalias v0.148.0/go.mod h1:uwKzfehzwRgHxdHgFXYSBHNBeWSSqsqQYGWr5fk08G0= -go.opentelemetry.io/collector/internal/fanoutconsumer v0.148.0 h1:Vy5HOsm6IODqbg7ZHaGizcs0mXXU7yZYFTH9Be0u4mM= -go.opentelemetry.io/collector/internal/fanoutconsumer v0.148.0/go.mod h1:0wG5wD4+XPIrrS69j1DnUvCbfAvnhMqcrxPvQkWzdpo= -go.opentelemetry.io/collector/internal/telemetry v0.148.0 h1:7U/be+11agYLb67lzoRzsCBoDpaGy8vDFhgI1gGYcco= -go.opentelemetry.io/collector/internal/telemetry v0.148.0/go.mod h1:pvflQkIAaj5UwURlkaB8BNTaYw6OjmXTbiWQ75PnYqc= -go.opentelemetry.io/collector/internal/testutil v0.148.0 h1:3Z9hperte3vSmbBTYeNndoEUICICrNz8hzx+v0FYXBQ= -go.opentelemetry.io/collector/internal/testutil v0.148.0/go.mod h1:Jkjs6rkqs973LqgZ0Fe3zrokQRKULYXPIf4HuqStiEE= -go.opentelemetry.io/collector/otelcol v0.148.0 h1:MFhR9u5SMJG3WcT+ON0aV8CV7lIuBWo0o7DQM1TXWtE= -go.opentelemetry.io/collector/otelcol v0.148.0/go.mod h1:ocDXLyaKKJOPyb7A5Mr0VuIJWgqUtiL6qpispV/xVv8= -go.opentelemetry.io/collector/pdata v1.54.0 h1:3LharKb792cQ3VrUGxd3IcpWwfu3ST+GSTU382jVz1s= -go.opentelemetry.io/collector/pdata v1.54.0/go.mod h1:+MqC3VVOv/EX9YVFUo+mI4F0YmwJ+fXBYwjmu+mRiZ8= -go.opentelemetry.io/collector/pdata/pprofile v0.148.0 h1:MgrNZmqwhZGfiYwcKKtM/iXgTZqqvG5dUphriRXMZHU= -go.opentelemetry.io/collector/pdata/pprofile v0.148.0/go.mod h1:MTTMnZPqWX1S/rBDatU0W19udlycBkWuzVV5qnemHdc= -go.opentelemetry.io/collector/pdata/testdata v0.148.0 h1:yzakPuFgoKK8WcrlhyYHLMLA/kLScQKGsXkIgwieAQ8= -go.opentelemetry.io/collector/pdata/testdata v0.148.0/go.mod h1:2rFvxm8qwd3nlO90FtJw6ZGAjt+bLndxmQuJaMO9kfQ= -go.opentelemetry.io/collector/pdata/xpdata v0.148.0 h1:pTXz872QDl5oHByjlIEkQhIFvv0oeX/5cKNWsUg9KeY= -go.opentelemetry.io/collector/pdata/xpdata v0.148.0/go.mod h1:4iL8wugmu589aQNx0dFVT3Ecui/d3TEvVgMlAu8S//0= -go.opentelemetry.io/collector/pipeline v1.54.0 h1:jYlCkdFLITVBdeB+IGS07zXWywEgvT3Ky46vdKKT+Ks= -go.opentelemetry.io/collector/pipeline v1.54.0/go.mod h1:RD90NG3Jbk965Xaqym3JyHkuol4uZJjQVUkD9ddXJIs= -go.opentelemetry.io/collector/pipeline/xpipeline v0.148.0 h1:WTgUC/QXYxhWEwPQ0ezOMbkh4p4DzsRdCxdYLBqNz+U= -go.opentelemetry.io/collector/pipeline/xpipeline v0.148.0/go.mod h1:ECXG1qs+H1pUnK0Wu0MUlAbsUlzJOKhV9z4wqep6KWQ= -go.opentelemetry.io/collector/processor v1.54.0 h1:zmHBFiEFmU9ZYuHhVP3lHIkbfy+ueapzGpTdXVMcWBg= -go.opentelemetry.io/collector/processor v1.54.0/go.mod h1:L0lA6DZ0VbrtQBg44cmYfSpRlgm4zxW1I6QfBnRizPw= -go.opentelemetry.io/collector/processor/batchprocessor v0.148.0 h1:RN/NU7giTuTCeWsbFmtk27rBprzJv4xfj4KDYzROEyc= -go.opentelemetry.io/collector/processor/batchprocessor v0.148.0/go.mod h1:i79zRqG29xhLEX0rpOLo7dqdEAIiVZPcV4l3eRsLCJM= -go.opentelemetry.io/collector/processor/processorhelper v0.148.0 h1:qbX7EJ7QJAP47PIdo9Jzxj39VP5Nke48uwP52HYs/O0= -go.opentelemetry.io/collector/processor/processorhelper v0.148.0/go.mod h1:ZuNKoLZ3jMZQ+hsA6XFz3GmH6l23eLsYSgHB0qdAf/U= -go.opentelemetry.io/collector/processor/processorhelper/xprocessorhelper v0.148.0 h1:8KTlVM8PGGuLwOTMhfeAaH2ok+aEccdbPe5Z2JPf/xw= -go.opentelemetry.io/collector/processor/processorhelper/xprocessorhelper v0.148.0/go.mod h1:xojdMQqttMu9kh6xi/oG81gnslB3rSHSMZkKfhmiB8c= -go.opentelemetry.io/collector/processor/processortest v0.148.0 h1:p0k59frZxy/Z4fXe82i5eOJv/UyOH75XhI8nFD1ZWCE= -go.opentelemetry.io/collector/processor/processortest v0.148.0/go.mod h1:E2Li2gnkUXgvApvGyEtn3Eq5KyzV05ljfbFRsZ7sTC4= -go.opentelemetry.io/collector/processor/xprocessor v0.148.0 h1:v7Qv6k2b2cvgGWuTO5KN5QYDLl1r5sznt7Le4Fhpa4c= -go.opentelemetry.io/collector/processor/xprocessor v0.148.0/go.mod h1:r7ADpSX2nf0rZR9STxh956Qw1740QOWMXLnEM/ZiaF8= -go.opentelemetry.io/collector/receiver v1.54.0 h1:2e9o+eihZ/nJnzVj5JAcJ+VQ653HcZRiT127qBZRqa8= -go.opentelemetry.io/collector/receiver v1.54.0/go.mod h1:xFZnvYTBjdi9iS/d/UUXzss4h311mLsZliQFQXk4o/k= -go.opentelemetry.io/collector/receiver/receiverhelper v0.148.0 h1:B1JOFfdv1dj4WhxSSt3KL1+BOV7Zkf27KisTWdhiFLs= -go.opentelemetry.io/collector/receiver/receiverhelper v0.148.0/go.mod h1:jBJbrMZ1dUn/gKr9vEDmU+MPsrz9RhRFWooG72qhUkU= -go.opentelemetry.io/collector/receiver/receivertest v0.148.0 h1:Fu+B4jCqgZVZmhsKBz3tcgimFryR6TRAK2D5VGLD2Xc= -go.opentelemetry.io/collector/receiver/receivertest v0.148.0/go.mod h1:K8dMDMEggEg6jB688VOHutivOGEEZ20FJGe4jV9RtWU= -go.opentelemetry.io/collector/receiver/xreceiver v0.148.0 h1:u66Zi3udD9RMRiNOsZzsVcUjRwqJEK+5LV76Ry9l3K0= -go.opentelemetry.io/collector/receiver/xreceiver v0.148.0/go.mod h1:jyHxf8SOfH48ZXb32IS3vPbVYDinsLlZYQddyrveqMg= -go.opentelemetry.io/collector/service v0.148.0 h1:GsAx4nkGTB21QRK9hOTFmLcATN/mugLWsb3iQwt91nY= -go.opentelemetry.io/collector/service v0.148.0/go.mod h1:f7oBS9IdX0nLRtyPOIgPj0Q1HCqbxepgWJfEpyVNAfE= -go.opentelemetry.io/collector/service/hostcapabilities v0.148.0 h1:BHQV7Fa1y8fQ87V1ieXNpP4+7UGOAj66xWryXSSj27I= -go.opentelemetry.io/collector/service/hostcapabilities v0.148.0/go.mod h1:UwHkux+xSVl7k5PEl+qYi8VSONv538rgZeHhfYqBwmE= -go.opentelemetry.io/collector/service/telemetry/telemetrytest v0.148.0 h1:0KKY0VHy8y+6LRkW/jE7a2G96tK7rfpl/6hKCt3mHD4= -go.opentelemetry.io/collector/service/telemetry/telemetrytest v0.148.0/go.mod h1:uhEy3Ez2aJjGpAIYuy1C0NFO5yr86EJlJGoKFucXQFE= +go.opentelemetry.io/collector v0.149.0 h1:q+BSroKuC7GRMY2sWLqQXPABH8BRNRmMTnAeYZU0qp0= +go.opentelemetry.io/collector v0.149.0/go.mod h1:r9/O/S4jQOv6dCjOIkQn63tyfZ2LfwfdB4OF3nwHL9o= +go.opentelemetry.io/collector/client v1.55.0 h1:79dOP+9U5ZyOd+7IP1FvIYpq00IZ5YeXs2mqykpTqgI= +go.opentelemetry.io/collector/client v1.55.0/go.mod h1:Jp/VewJg5A0y9Gk7P0CAPEBFzo5Pb2h5JxgylMSSpfM= +go.opentelemetry.io/collector/component v1.55.0 h1:45nb42/UqPDhRdS8FgGRDybRsWSuvS+r6WC2VTVqIRw= +go.opentelemetry.io/collector/component v1.55.0/go.mod h1:7EpGxVpqFkZ2HidyiE9MLvh4cuKU7ye6i5OtxxiYKps= +go.opentelemetry.io/collector/component/componentstatus v0.149.0 h1:6UM+yHoMtZmyu1Sz8Gy9B27eBtURR5sFinWf2LRdE7Y= +go.opentelemetry.io/collector/component/componentstatus v0.149.0/go.mod h1:6jTQab606D+ICobKO/q4UrPy6hwvU3ZY+LcJnPrurds= +go.opentelemetry.io/collector/component/componenttest v0.149.0 h1:7SSYIiLpe84LGfYAp7RCkzYuYLuYVSZVn/K/qsJZgHY= +go.opentelemetry.io/collector/component/componenttest v0.149.0/go.mod h1:8xPU3XMsI+J4vfy87YG1bsCVTeedligKWgBcPEZ0yzw= +go.opentelemetry.io/collector/config/configauth v1.55.0 h1:JiWouGwxYipdjWl57G7SU+JKjOrq/oXx/p/S+Q3zfO0= +go.opentelemetry.io/collector/config/configauth v1.55.0/go.mod h1:D/7mu0EPk1SJi8wAkG301gb1lVpAWUn7Ij/OwLP87q8= +go.opentelemetry.io/collector/config/configcompression v1.55.0 h1:KZjHgXQG0FKer+0Dt3ET0tPQicgq21vvswBqVwLwmLw= +go.opentelemetry.io/collector/config/configcompression v1.55.0/go.mod h1:SEcE2uFLHHPc/Vi8WCkW5MhOMUwaT321HBdZ3P8x8D0= +go.opentelemetry.io/collector/config/configgrpc v0.149.0 h1:9+kcCLu6v/3MeCF1mVHwOINZWNIUdObBSrOLxWddKeI= +go.opentelemetry.io/collector/config/configgrpc v0.149.0/go.mod h1:rSUcnR6vjccieTERpNeob78fERO59/Y7OHqrrKK40BM= +go.opentelemetry.io/collector/config/confighttp v0.149.0 h1:2R1UQUjMALz5nMuegvnS2jfeX0j7yiHqd7fV3GFK6C0= +go.opentelemetry.io/collector/config/confighttp v0.149.0/go.mod h1:BlP61qzl9O8vGM82WsVw3P2sWaqyoellSj5xxQ0X9ik= +go.opentelemetry.io/collector/config/configmiddleware v1.55.0 h1:p8NFQXy59VgGWZUcVX2pI5wHWKyEm16UMSHQPTtoZ8s= +go.opentelemetry.io/collector/config/configmiddleware v1.55.0/go.mod h1:6ZNFlGQUTEet5NUORDPpTzNwWsQAdiuLprNXSn8fOa0= +go.opentelemetry.io/collector/config/confignet v1.55.0 h1:eb1o6zpoCwR6yfdtwpZqGdvkE0kd7HAV/+N6DFG2Jis= +go.opentelemetry.io/collector/config/confignet v1.55.0/go.mod h1:okpHzgIUQW9ga1P9PXzUsggmG1woR1rYsfZGDWKAC6c= +go.opentelemetry.io/collector/config/configopaque v1.55.0 h1:j8I6lotzrJX29X1YhKUQTuJs/9HWgFV3Ckbe/tZZzhI= +go.opentelemetry.io/collector/config/configopaque v1.55.0/go.mod h1:xEWgIwWn8J3cn5E6DybThH0Cdu3Be8IVEItWkbWU2Xc= +go.opentelemetry.io/collector/config/configoptional v1.55.0 h1:Ii6eukF4hdPAJSwsNLevkEP3auJj0+N5tOghtmb3nfo= +go.opentelemetry.io/collector/config/configoptional v1.55.0/go.mod h1:4SJTjAl+6IGnyofeczFPbT/BxaBh1RW97hZlAcgSrVc= +go.opentelemetry.io/collector/config/configretry v1.55.0 h1:Fu5NUqH6AFMW6C95EOkQT0dAQJyq5cdzuO/QP80i3mI= +go.opentelemetry.io/collector/config/configretry v1.55.0/go.mod h1:1BoQ5SvJT751bqP/5g0VTPLkNgMtvifAr2QqMCVOv2o= +go.opentelemetry.io/collector/config/configtelemetry v0.149.0 h1:GiMgR+xwZRXG7ns8PbQb5jcXiwGdCwvy2y8tUQwRzGc= +go.opentelemetry.io/collector/config/configtelemetry v0.149.0/go.mod h1:vLUthxDJbDk0ZE9MXPvmSslNESDdGblIXWoDMov3UOE= +go.opentelemetry.io/collector/config/configtls v1.55.0 h1:cpXaocVvU/sHj9Xn8xVM6E1Zh9gSyEQuwn49yHMymI8= +go.opentelemetry.io/collector/config/configtls v1.55.0/go.mod h1:JjWg/y/tge3SeQlGkk7s4ga6IhIuFupV1iJY1yx2Dug= +go.opentelemetry.io/collector/confmap v1.55.0 h1:pBJbjWfIT3q8cy+eVcHCCYXx984NxOjaGTHqIWsXC1A= +go.opentelemetry.io/collector/confmap v1.55.0/go.mod h1:rSKNE5ztWU6fS0pT8rwACn573r4jJc4QzJyoQzZIVtE= +go.opentelemetry.io/collector/confmap/provider/envprovider v1.55.0 h1:0+xwTNHTzFrvX9j7648Cs3OMIyi3x/mdTZ+T61oQqTc= +go.opentelemetry.io/collector/confmap/provider/envprovider v1.55.0/go.mod h1:JdSr6jYZCvHXCr4lvms4knRtiTbMgprkrQxHk67BR8w= +go.opentelemetry.io/collector/confmap/provider/fileprovider v1.55.0 h1:zSSMElAWM5buXLcbLB+XFXjTDCc9AByo9gkSE+DH+MI= +go.opentelemetry.io/collector/confmap/provider/fileprovider v1.55.0/go.mod h1:FoujmivK7VAABBO61KRCUHpOnDXG/2ayMAe4wWM0m50= +go.opentelemetry.io/collector/confmap/xconfmap v0.149.0 h1:D/WzrxKOKedRztoY/MiAj9z8W0/2unpTCbANFCwvuuY= +go.opentelemetry.io/collector/confmap/xconfmap v0.149.0/go.mod h1:lJ1nHIQbH6L5wnj5vTWGr7RWi5Kib2KX5stAxar13Jo= +go.opentelemetry.io/collector/connector v0.149.0 h1:WbxMi0Eu8DHpjcCXZ7e988r8AHrvq37iUca5g99nO5M= +go.opentelemetry.io/collector/connector v0.149.0/go.mod h1:93UEgyk9AVINT0M2x2Mdj+MuirxkVlsH4lIcGg3e+wY= +go.opentelemetry.io/collector/connector/connectortest v0.149.0 h1:Uo6tnKhtdGe1v7DjJawCaawhXZu8Feos4FCo5hqlspI= +go.opentelemetry.io/collector/connector/connectortest v0.149.0/go.mod h1:93oVnmP4DBekh+73st+wFLVXWtnl2iUh3Tblhixm8Io= +go.opentelemetry.io/collector/connector/xconnector v0.149.0 h1:hDlXFlbwk/Bt1zuHg8RsYXxJPflO2CT19ViToUCsev4= +go.opentelemetry.io/collector/connector/xconnector v0.149.0/go.mod h1:1+/p4QxwYXwjGeLfbsvy6nE9ZuJ1xvUSdGZNDt7CgFg= +go.opentelemetry.io/collector/consumer v1.55.0 h1:7Per8P4J0nlBrFVSXb+nwZ+egiel1BRtggZngyykGsM= +go.opentelemetry.io/collector/consumer v1.55.0/go.mod h1:Qrn5fDp/HpDmUp+l2RGKsdKyOPlgGlaZPKvw/z9FfEc= +go.opentelemetry.io/collector/consumer/consumererror v0.149.0 h1:lXJv8UySfvnISJnCbkxf9ghYRQoWcXC78PxGurdnhKY= +go.opentelemetry.io/collector/consumer/consumererror v0.149.0/go.mod h1:8mZKwHejnZpD0+hjg6T2ZYPzs/Ib8512DMFnx4yaknY= +go.opentelemetry.io/collector/consumer/consumererror/xconsumererror v0.149.0 h1:igOwSP5ytu2WKKl8pSzzQPWt97IY/MWA2pZ6TRlLhv8= +go.opentelemetry.io/collector/consumer/consumererror/xconsumererror v0.149.0/go.mod h1:2Ni6IZUmiqXMP8z25ka2TjedglJgXZOTkgUUmn2pzD4= +go.opentelemetry.io/collector/consumer/consumertest v0.149.0 h1:IxOkDInfuUM8mT+rMNGtdUuuDlV9X2VS4WAQ/dZSYqg= +go.opentelemetry.io/collector/consumer/consumertest v0.149.0/go.mod h1:ZMvFzch5IRjYBvj6WPc30HRy19smS0WFBXaOu16Wac0= +go.opentelemetry.io/collector/consumer/xconsumer v0.149.0 h1:2z0wRTDsWqPdcC8xp9HJIAJej+07g4/yJrS0xkJJ4hA= +go.opentelemetry.io/collector/consumer/xconsumer v0.149.0/go.mod h1:AG9w3bk38dq3Rk7C2JGf3jw4ldxR063ujYBm3eiMJ7k= +go.opentelemetry.io/collector/exporter v1.55.0 h1:1pExfXXKDPbwY4Be6cHd8LQOIpP7pt7ed4SOiYruxks= +go.opentelemetry.io/collector/exporter v1.55.0/go.mod h1:Hp85myjvKjC+rLeMdVpatzYCglAv4V0MaFN8HXHfnaQ= +go.opentelemetry.io/collector/exporter/exporterhelper v0.149.0 h1:y5eKO5aFBWYv/cSL2QnLxJ8k57STn9r+g1gdTVw9Z6Q= +go.opentelemetry.io/collector/exporter/exporterhelper v0.149.0/go.mod h1:mR78r/JKfxu0x87YGplZsbYG6PBUyTr5bKgluc1qqNQ= +go.opentelemetry.io/collector/exporter/exporterhelper/xexporterhelper v0.149.0 h1:oV8Yc9zgCEA2S13u0mqOdWYaPq/6VVg4dNgY7XW3p/A= +go.opentelemetry.io/collector/exporter/exporterhelper/xexporterhelper v0.149.0/go.mod h1:nyLVBRGcwOOk9+uYpDA/+Gt3b3V7Mfu3HPvI8E2esk8= +go.opentelemetry.io/collector/exporter/exportertest v0.149.0 h1:bmBvcffsXbDoWIEq2nSiY36+n0s2/Qd70ps5N5xObWA= +go.opentelemetry.io/collector/exporter/exportertest v0.149.0/go.mod h1:4PrrXXNfTdkWxGT5fNiJ/70g8eRDLlQgh64UwhcjUzU= +go.opentelemetry.io/collector/exporter/otlpexporter v0.149.0 h1:8ARBKbaxKz/pXagsHTCGCjvMzSdf5n0bVJGzC1ksilk= +go.opentelemetry.io/collector/exporter/otlpexporter v0.149.0/go.mod h1:f0qnHmSPbCj6l/jNEyE0FMs4BtEpzY7s6Z0wEItVMBQ= +go.opentelemetry.io/collector/exporter/xexporter v0.149.0 h1:4uR3VnSxUVeV8igM7H3YkfKoQtndW8ZshWPjpGQIFUA= +go.opentelemetry.io/collector/exporter/xexporter v0.149.0/go.mod h1:My5S6QPUDggCdQ4tNbUHb7/GAk5t5CoTDY1wvCqUnTs= +go.opentelemetry.io/collector/extension v1.55.0 h1:B+1lH6sBHJPq0AX+WAtHsteqbeHQuRhHFtnjSDwSjKs= +go.opentelemetry.io/collector/extension v1.55.0/go.mod h1:2Diht9BMbFleBReevFQfnzrNpQgka3402VfLZIFyIzA= +go.opentelemetry.io/collector/extension/extensionauth v1.55.0 h1:ybszqQ+5Y+7uNkygCSVRUBHuXyYO/d/uoM1hXdDiy2s= +go.opentelemetry.io/collector/extension/extensionauth v1.55.0/go.mod h1:JSV7nc25cGtVfmVIaXywAGUU4MrZdb9R4rDdcZsddWU= +go.opentelemetry.io/collector/extension/extensionauth/extensionauthtest v0.149.0 h1:VFhyA7deUrUDbsOhCGscAouMZpapqeRjPSfp0HOgVow= +go.opentelemetry.io/collector/extension/extensionauth/extensionauthtest v0.149.0/go.mod h1:k8vS5ZzLWZIoNSuCe1rWONW2PK0ukGfIvqWLYyp+B18= +go.opentelemetry.io/collector/extension/extensioncapabilities v0.149.0 h1:XPaeWYYiosexWmxeMbEajKzyM9HaDTogj6UCBzbLcEo= +go.opentelemetry.io/collector/extension/extensioncapabilities v0.149.0/go.mod h1:9PjCfJZQRJbgewN1OlUtyQDQMUwPzN1sQnhp+d23S0c= +go.opentelemetry.io/collector/extension/extensionmiddleware v0.149.0 h1:HTyFY8jDxmd4cTzuIYIFze3fY1Bf3PM7+SXeyrx+fXk= +go.opentelemetry.io/collector/extension/extensionmiddleware v0.149.0/go.mod h1:WZ4uS1t4i39oeMhW7i5D9X9A7arYYS2q4PQBrZ5aF4U= +go.opentelemetry.io/collector/extension/extensionmiddleware/extensionmiddlewaretest v0.149.0 h1:fQioFG2Td8qVKIf5TLpTBnQ3C4VTYwyTvVEfB5qLEOE= +go.opentelemetry.io/collector/extension/extensionmiddleware/extensionmiddlewaretest v0.149.0/go.mod h1:aL1hkkYG66512S0xRnYs4XmlAmMaOYWty86HSH/Jd4I= +go.opentelemetry.io/collector/extension/extensiontest v0.149.0 h1:EvKYy2L2COLvmbiu033i9/uao+OLzINhV/aI3PT1E0k= +go.opentelemetry.io/collector/extension/extensiontest v0.149.0/go.mod h1:23mLGyEuu4j0ihcs0J+YtpVO2nD5Ak8Li0r/I07DlkQ= +go.opentelemetry.io/collector/extension/xextension v0.149.0 h1:4LCwC++YmLz+JrglBLL1JerpMo+O6ENIBG3lGA6VSN0= +go.opentelemetry.io/collector/extension/xextension v0.149.0/go.mod h1:iC2BD2whYV8ZcJTtRYEMlz0ezu5Q03/x/Hb5RGj5Pe0= +go.opentelemetry.io/collector/extension/zpagesextension v0.149.0 h1:w0w02vuT/vhLMO8hXKeb+NZcGINLEkaQTsbom4pac30= +go.opentelemetry.io/collector/extension/zpagesextension v0.149.0/go.mod h1:Np5Vdgameb0S65S7CZcXx1QXkfGb8sU/AkX9JgNnJT8= +go.opentelemetry.io/collector/featuregate v1.55.0 h1:s/bE8135+8GZpVlQ9qLXQjvprE9KNOGsLhNkqm+EDEU= +go.opentelemetry.io/collector/featuregate v1.55.0/go.mod h1:PS7zY/zaCb28EqciePVwRHVhc3oKortTFXsi3I6ee4g= +go.opentelemetry.io/collector/internal/componentalias v0.149.0 h1:0cH1hCy4vujhnAc6z4baLM0mauFZPfyqF9HtQF6YvGo= +go.opentelemetry.io/collector/internal/componentalias v0.149.0/go.mod h1:8oIpxyFLZECp6O7zFDTGeWw72CQ67C8wb6FqAL9wvCo= +go.opentelemetry.io/collector/internal/fanoutconsumer v0.149.0 h1:Eq3pjYKiXxZkmti4vmgh/jWBJ6tfwd+fDfcKcA/sHk8= +go.opentelemetry.io/collector/internal/fanoutconsumer v0.149.0/go.mod h1:Bl84aBXh5UWHWjJ/FYxXkroup1lBNpzgbdZfFOvz0cY= +go.opentelemetry.io/collector/internal/telemetry v0.149.0 h1:AlvNOgcu6/O/FZMQK7UkN3xkWGvKmj1jroX864YfXCM= +go.opentelemetry.io/collector/internal/telemetry v0.149.0/go.mod h1:y9yEZ8zgC4Ax84flfTVPZNQWxySP7mx47lb9ZbM31cs= +go.opentelemetry.io/collector/internal/testutil v0.149.0 h1:OWfUPO3NFKSaJtz/SBZph/2ENHbr/VbzzlBadKUhm8o= +go.opentelemetry.io/collector/internal/testutil v0.149.0/go.mod h1:Jkjs6rkqs973LqgZ0Fe3zrokQRKULYXPIf4HuqStiEE= +go.opentelemetry.io/collector/otelcol v0.149.0 h1:/sECMEcje2R4vSUSiZoKn7Ul/nbvk6WkKCMLqoJHvi8= +go.opentelemetry.io/collector/otelcol v0.149.0/go.mod h1:f+LKU3H4BYniQtrp65n8zt7ZJk7B4WAuajGyibcf4KY= +go.opentelemetry.io/collector/pdata v1.55.0 h1:WBgye8bo8koUyV9Vmp/r2Q3lgDezdsgfKDQAaM1oT2I= +go.opentelemetry.io/collector/pdata v1.55.0/go.mod h1:6jPrbM4tuliCPACDznjFtxnnHisfKfzwrBVoeuESYuk= +go.opentelemetry.io/collector/pdata/pprofile v0.149.0 h1:4/uI7wsgMnmBZm6Z/VNY6sWnaFN09+Nk3jr7XEmTtOk= +go.opentelemetry.io/collector/pdata/pprofile v0.149.0/go.mod h1:4uprs5wMp4MI1/bcP5mYERfobFxBn+QoeNFQBUSVk/U= +go.opentelemetry.io/collector/pdata/testdata v0.149.0 h1:Y9WCJpr9fvpCGmvh6wK0i+QtOn0OyGXnoOkLfq7xtok= +go.opentelemetry.io/collector/pdata/testdata v0.149.0/go.mod h1:5BscHKM7cy9lzPMpnaIFaTOMI8SI02AsEF4rH3aRJBg= +go.opentelemetry.io/collector/pdata/xpdata v0.149.0 h1:crfGmh5LsOAVc1ImdnPIUTMmHbOGYmWXgOyWSDnAKyw= +go.opentelemetry.io/collector/pdata/xpdata v0.149.0/go.mod h1:YgOtcDn7E/4dHw0/Yy/PvSa3GLqMKKAIikzBPM+ML2g= +go.opentelemetry.io/collector/pipeline v1.55.0 h1:jxFicLy3QYWQaQZp2f+wdCfHpOYb3mKNTqHR1KIut+U= +go.opentelemetry.io/collector/pipeline v1.55.0/go.mod h1:RD90NG3Jbk965Xaqym3JyHkuol4uZJjQVUkD9ddXJIs= +go.opentelemetry.io/collector/pipeline/xpipeline v0.149.0 h1:T30l3eiGqQe68PHXh2tnDL6VT5niZCQFKqbJ6/fVToE= +go.opentelemetry.io/collector/pipeline/xpipeline v0.149.0/go.mod h1:7KQ4/TT7mte7O5toMJk2IbqBUVgvGYpp3uU3g2CA6/o= +go.opentelemetry.io/collector/processor v1.55.0 h1:d4bCnvtAVTjy1/3JOj3ud6eEZCMsaz2C9lVStB1FM/8= +go.opentelemetry.io/collector/processor v1.55.0/go.mod h1:ruMOb0N76S+H8rhzkLoIzALAMCe7XI9qFONDWsR5IOA= +go.opentelemetry.io/collector/processor/batchprocessor v0.149.0 h1:Zl6EM6UQWd6LrjhkNr3sIFMiI8OpOAembbEbmiMxBMU= +go.opentelemetry.io/collector/processor/batchprocessor v0.149.0/go.mod h1:v7DSE83r+nwf+gtx5CYgiFErQbcJlFrK0D/wM8p41Gw= +go.opentelemetry.io/collector/processor/processorhelper v0.149.0 h1:T5HpundGbSHj96CpJfD1ZHBRlodPJWXoCIijA9Ozi2g= +go.opentelemetry.io/collector/processor/processorhelper v0.149.0/go.mod h1:Pi0qpQXlfgFfJPKbj8baxBFt2qht6JyVtUerUQNCMts= +go.opentelemetry.io/collector/processor/processorhelper/xprocessorhelper v0.149.0 h1:mtKK0uM0W36KypM8PFSCVyDkXJ60XLF8lSTYtjRIj6E= +go.opentelemetry.io/collector/processor/processorhelper/xprocessorhelper v0.149.0/go.mod h1:fNrp4nyyxv7ZRJIzWHgDXLirj5Krze1GUWbB9Eo3/pE= +go.opentelemetry.io/collector/processor/processortest v0.149.0 h1:J73vvUuqyG2Ojnc2CQd6yNqI/wqoWuZuNo/JQH7WTsU= +go.opentelemetry.io/collector/processor/processortest v0.149.0/go.mod h1:z7YKrOnM/y6h7ovZ3JKpCLqzRlE+xoeAhf9PU76EGtg= +go.opentelemetry.io/collector/processor/xprocessor v0.149.0 h1:hmQS3HfO9VqSVsf5h1qIwg5DRYzP1WHxg32tBkHW2Es= +go.opentelemetry.io/collector/processor/xprocessor v0.149.0/go.mod h1:kMEqqiVkTFedwNmFRg2wjA9A+CE44+CrM1wHb5Vfu0k= +go.opentelemetry.io/collector/receiver v1.55.0 h1:7GVQOPleD60LzxvkqHaChlbWw5nJvw6i2fV6UBL+7EQ= +go.opentelemetry.io/collector/receiver v1.55.0/go.mod h1:Sdx1R+nh6p9lQSZJk8KfQK4nzLI4zNrceIk7a8WpSQg= +go.opentelemetry.io/collector/receiver/receiverhelper v0.149.0 h1:cuRWQ5alfQUwtQosjbOvy2+eKjKaVBaZat0r5S3dC0A= +go.opentelemetry.io/collector/receiver/receiverhelper v0.149.0/go.mod h1:LpSzl7PfuN7LVmwdj6FwPKuwYwiNwUqtMDHU1uroNQU= +go.opentelemetry.io/collector/receiver/receivertest v0.149.0 h1:S33+mAxh7QTxY2o0fTFKEN/ULgcuw36hUVQDyIlSpTc= +go.opentelemetry.io/collector/receiver/receivertest v0.149.0/go.mod h1:w+W/7Dd64jHeCsQcJZBB6oSz3gasvKz5KP1yKzaN8V8= +go.opentelemetry.io/collector/receiver/xreceiver v0.149.0 h1:EpJ5zqTrJwQT1QsX+JHRcDfTA1Mzf0gAOPGihkxtn7E= +go.opentelemetry.io/collector/receiver/xreceiver v0.149.0/go.mod h1:hoUUGXcIr7ZuDdkqzLGfy5P7Njsc/YQ8riWX70Ukf6E= +go.opentelemetry.io/collector/service v0.149.0 h1:wYdGBC+dUs1oBpjx7hKMlN75UKc2CBJsDSbvZYu4ZvI= +go.opentelemetry.io/collector/service v0.149.0/go.mod h1:hJUZUh0LDy53geG7RA1ym/GLVeWpiMGp6gX+sXh6Z88= +go.opentelemetry.io/collector/service/hostcapabilities v0.149.0 h1:vLw9GIbpZUvRI1M2mHJMGZCsy7ijNOKTL81rTByzu7k= +go.opentelemetry.io/collector/service/hostcapabilities v0.149.0/go.mod h1:tMD3mdx4BTljhfvScmSdewN89NUgj/eoKXCUDkD0F1Y= +go.opentelemetry.io/collector/service/telemetry/telemetrytest v0.149.0 h1:Ao4axvnPWwQ07vK+67VL8veAz5eNH9v530H+B7Jsw70= +go.opentelemetry.io/collector/service/telemetry/telemetrytest v0.149.0/go.mod h1:+scbyWSHHiabLiZLLRpM80P0uhAR+NkwIhL9OGv5LZ4= go.opentelemetry.io/contrib/bridges/otelzap v0.17.0 h1:oCltVHJcblcth2z9B9dRTeZIZTe2Sf9Ad9h8bcc+s8M= go.opentelemetry.io/contrib/bridges/otelzap v0.17.0/go.mod h1:G/VE1A/hRn6mEWdfC8rMvSdQVGM64KUPi4XilLkwcQw= go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.67.0 h1:yI1/OhfEPy7J9eoa6Sj051C7n5dvpj0QX8g4sRchg04= @@ -925,8 +924,8 @@ golang.org/x/crypto v0.13.0/go.mod h1:y6Z2r+Rw4iayiXXAIxJIDAJ1zMW4yaTpebo8fPOliY golang.org/x/crypto v0.19.0/go.mod h1:Iy9bg/ha4yyC70EfRS8jz+B6ybOBKMaSxLj6P6oBDfU= golang.org/x/crypto v0.23.0/go.mod h1:CKFgDieR+mRhux2Lsu27y0fO304Db0wZe70UKqHu0v8= golang.org/x/crypto v0.31.0/go.mod h1:kDsLvtWBEx7MV9tJOj9bnXsPbxwJQ6csT/x4KIN4Ssk= -golang.org/x/crypto v0.48.0 h1:/VRzVqiRSggnhY7gNRxPauEQ5Drw9haKdM0jqfcCFts= -golang.org/x/crypto v0.48.0/go.mod h1:r0kV5h3qnFPlQnBSrULhlsRfryS2pmewsg+XfMgkVos= +golang.org/x/crypto v0.49.0 h1:+Ng2ULVvLHnJ/ZFEq4KdcDd/cfjrrjjNSXNzxg0Y4U4= +golang.org/x/crypto v0.49.0/go.mod h1:ErX4dUh2UM+CFYiXZRTcMpEcN8b/1gxEuv3nODoYtCA= golang.org/x/exp v0.0.0-20260218203240-3dfff04db8fa h1:Zt3DZoOFFYkKhDT3v7Lm9FDMEV06GpzjG2jrqW+QTE0= golang.org/x/exp v0.0.0-20260218203240-3dfff04db8fa/go.mod h1:K79w1Vqn7PoiZn+TkNpx3BUWUQksGO3JcVX6qIjytmA= golang.org/x/mod v0.2.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= @@ -936,8 +935,8 @@ golang.org/x/mod v0.8.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs= golang.org/x/mod v0.12.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs= golang.org/x/mod v0.15.0/go.mod h1:hTbmBsO62+eylJbnUtE2MGJUyE7QWk4xUqPFrRgJ+7c= golang.org/x/mod v0.17.0/go.mod h1:hTbmBsO62+eylJbnUtE2MGJUyE7QWk4xUqPFrRgJ+7c= -golang.org/x/mod v0.33.0 h1:tHFzIWbBifEmbwtGz65eaWyGiGZatSrT9prnU8DbVL8= -golang.org/x/mod v0.33.0/go.mod h1:swjeQEj+6r7fODbD2cqrnje9PnziFuw4bmLbBZFrQ5w= +golang.org/x/mod v0.34.0 h1:xIHgNUUnW6sYkcM5Jleh05DvLOtwc6RitGHbDk4akRI= +golang.org/x/mod v0.34.0/go.mod h1:ykgH52iCZe79kzLLMhyCUzhMci+nQj+0XkbXpNYtVjY= golang.org/x/net v0.0.0-20181114220301-adae6a3d119a/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= golang.org/x/net v0.0.0-20190613194153-d28f0bde5980/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= @@ -955,8 +954,8 @@ golang.org/x/net v0.15.0/go.mod h1:idbUs1IY1+zTqbi8yxTbhexhEEk5ur9LInksu6HrEpk= golang.org/x/net v0.21.0/go.mod h1:bIjVDfnllIU7BJ2DNgfnXvpSvtn8VRwhlsaeUTyUS44= golang.org/x/net v0.25.0/go.mod h1:JkAGAh7GEvH74S6FOH42FLoXpXbE/aqXSrIQjXgsiwM= golang.org/x/net v0.33.0/go.mod h1:HXLR5J+9DxmrqMwG9qjGCxZ+zKXxBru04zlTvWlWuN4= -golang.org/x/net v0.51.0 h1:94R/GTO7mt3/4wIKpcR5gkGmRLOuE/2hNGeWq/GBIFo= -golang.org/x/net v0.51.0/go.mod h1:aamm+2QF5ogm02fjy5Bb7CQ0WMt1/WVM7FtyaTLlA9Y= +golang.org/x/net v0.52.0 h1:He/TN1l0e4mmR3QqHMT2Xab3Aj3L9qjbhRm78/6jrW0= +golang.org/x/net v0.52.0/go.mod h1:R1MAz7uMZxVMualyPXb+VaqGSa3LIaUqk0eEt3w36Sw= golang.org/x/oauth2 v0.35.0 h1:Mv2mzuHuZuY2+bkyWXIHMfhNdJAdwW3FuWeCPYN5GVQ= golang.org/x/oauth2 v0.35.0/go.mod h1:lzm5WQJQwKZ3nwavOZ3IS5Aulzxi68dUSgRHujetwEA= golang.org/x/sync v0.0.0-20181108010431-42b317875d0f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= @@ -971,8 +970,8 @@ golang.org/x/sync v0.3.0/go.mod h1:FU7BRWz2tNW+3quACPkgCx/L+uEAv1htQ0V83Z9Rj+Y= golang.org/x/sync v0.6.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk= golang.org/x/sync v0.7.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk= golang.org/x/sync v0.10.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk= -golang.org/x/sync v0.19.0 h1:vV+1eWNmZ5geRlYjzm2adRgW2/mcpevXNg50YZtPCE4= -golang.org/x/sync v0.19.0/go.mod h1:9KTHXmSnoGruLpwFjVSX0lNNA75CykiMECbovNTZqGI= +golang.org/x/sync v0.20.0 h1:e0PTpb7pjO8GAtTs2dQ6jYa5BWYlMuX047Dco/pItO4= +golang.org/x/sync v0.20.0/go.mod h1:9xrNwdLfx4jkKbNva9FpL6vEN7evnE43NNNJQ2LF3+0= golang.org/x/sys v0.0.0-20180823144017-11551d06cbcc/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20180905080454-ebe1bf3edb33/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20181116152217-5ac8a444bdc5/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= @@ -1021,8 +1020,8 @@ golang.org/x/term v0.12.0/go.mod h1:owVbMEjm3cBLCHdkQu9b1opXd4ETQWc3BhuQGKgXgvU= golang.org/x/term v0.17.0/go.mod h1:lLRBjIVuehSbZlaOtGMbcMncT+aqLLLmKrsjNrUguwk= golang.org/x/term v0.20.0/go.mod h1:8UkIAJTvZgivsXaD6/pH6U9ecQzZ45awqEOzuCvwpFY= golang.org/x/term v0.27.0/go.mod h1:iMsnZpn0cago0GOrHO2+Y7u7JPn5AylBrcoWkElMTSM= -golang.org/x/term v0.40.0 h1:36e4zGLqU4yhjlmxEaagx2KuYbJq3EwY8K943ZsHcvg= -golang.org/x/term v0.40.0/go.mod h1:w2P8uVp06p2iyKKuvXIm7N/y0UCRt3UfJTfZ7oOpglM= +golang.org/x/term v0.41.0 h1:QCgPso/Q3RTJx2Th4bDLqML4W6iJiaXFq2/ftQF13YU= +golang.org/x/term v0.41.0/go.mod h1:3pfBgksrReYfZ5lvYM0kSO0LIkAl4Yl2bXOkKP7Ec2A= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.2/go.mod h1:bEr9sfX3Q8Zfm5fL9x+3itogRgK3+ptLWKqgva+5dAk= golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= @@ -1035,8 +1034,8 @@ golang.org/x/text v0.13.0/go.mod h1:TvPlkZtksWOMsz7fbANvkp4WM8x/WCo/om8BMLbz+aE= golang.org/x/text v0.14.0/go.mod h1:18ZOQIKpY8NJVqYksKHtTdi31H5itFRjB5/qKTNYzSU= golang.org/x/text v0.15.0/go.mod h1:18ZOQIKpY8NJVqYksKHtTdi31H5itFRjB5/qKTNYzSU= golang.org/x/text v0.21.0/go.mod h1:4IBbMaMmOPCJ8SecivzSH54+73PCFmPWxNTLm+vZkEQ= -golang.org/x/text v0.34.0 h1:oL/Qq0Kdaqxa1KbNeMKwQq0reLCCaFtqu2eNuSeNHbk= -golang.org/x/text v0.34.0/go.mod h1:homfLqTYRFyVYemLBFl5GgL/DWEiH5wcsQ5gSh1yziA= +golang.org/x/text v0.35.0 h1:JOVx6vVDFokkpaq1AEptVzLTpDe9KGpj5tR4/X+ybL8= +golang.org/x/text v0.35.0/go.mod h1:khi/HExzZJ2pGnjenulevKNX1W67CUy0AsXcNubPGCA= golang.org/x/time v0.14.0 h1:MRx4UaLrDotUKUdCIqzPC48t1Y9hANFKIRpNx+Te8PI= golang.org/x/time v0.14.0/go.mod h1:eL/Oa2bBBK0TkX57Fyni+NgnyQQN4LitPmob2Hjnqw4= golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= @@ -1048,8 +1047,8 @@ golang.org/x/tools v0.1.12/go.mod h1:hNGJHUnrk76NpqgfD5Aqm5Crs+Hm0VOH/i9J2+nxYbc golang.org/x/tools v0.6.0/go.mod h1:Xwgl3UAJ/d3gWutnCtw505GrjyAbvKui8lOU390QaIU= golang.org/x/tools v0.13.0/go.mod h1:HvlwmtVNQAhOuCjW7xxvovg8wbNq7LwfXh/k7wXUl58= golang.org/x/tools v0.21.1-0.20240508182429-e35e4ccd0d2d/go.mod h1:aiJjzUbINMkxbQROHiO6hDPo2LHcIPhhQsa9DLh0yGk= -golang.org/x/tools v0.42.0 h1:uNgphsn75Tdz5Ji2q36v/nsFSfR/9BRFvqhGBaJGd5k= -golang.org/x/tools v0.42.0/go.mod h1:Ma6lCIwGZvHK6XtgbswSoWroEkhugApmsXyrUmBhfr0= +golang.org/x/tools v0.43.0 h1:12BdW9CeB3Z+J/I/wj34VMl8X+fEXBxVR90JeMX5E7s= +golang.org/x/tools v0.43.0/go.mod h1:uHkMso649BX2cZK6+RpuIPXS3ho2hZo4FVwfoy1vIk0= golang.org/x/tools/godoc v0.1.0-deprecated h1:o+aZ1BOj6Hsx/GBdJO/s815sqftjSnrZZwyYTHODvtk= golang.org/x/tools/godoc v0.1.0-deprecated/go.mod h1:qM63CriJ961IHWmnWa9CjZnBndniPt4a3CK0PVB9bIg= golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= @@ -1066,8 +1065,8 @@ google.golang.org/genproto/googleapis/api v0.0.0-20260226221140-a57be14db171 h1: google.golang.org/genproto/googleapis/api v0.0.0-20260226221140-a57be14db171/go.mod h1:M5krXqk4GhBKvB596udGL3UyjL4I1+cTbK0orROM9ng= google.golang.org/genproto/googleapis/rpc v0.0.0-20260226221140-a57be14db171 h1:ggcbiqK8WWh6l1dnltU4BgWGIGo+EVYxCaAPih/zQXQ= google.golang.org/genproto/googleapis/rpc v0.0.0-20260226221140-a57be14db171/go.mod h1:4Hqkh8ycfw05ld/3BWL7rJOSfebL2Q+DVDeRgYgxUU8= -google.golang.org/grpc v1.79.2 h1:fRMD94s2tITpyJGtBBn7MkMseNpOZU8ZxgC3MMBaXRU= -google.golang.org/grpc v1.79.2/go.mod h1:KmT0Kjez+0dde/v2j9vzwoAScgEPx/Bw1CYChhHLrHQ= +google.golang.org/grpc v1.79.3 h1:sybAEdRIEtvcD68Gx7dmnwjZKlyfuc61Dyo9pGXXkKE= +google.golang.org/grpc v1.79.3/go.mod h1:KmT0Kjez+0dde/v2j9vzwoAScgEPx/Bw1CYChhHLrHQ= google.golang.org/protobuf v1.36.11 h1:fV6ZwhNocDyBLK0dj+fg8ektcVegBBuEolpbTQyBNVE= google.golang.org/protobuf v1.36.11/go.mod h1:HTf+CrKn2C3g5S8VImy6tdcUvCska2kB7j23XfzDpco= gopkg.in/alecthomas/kingpin.v2 v2.2.6/go.mod h1:FMv+mEhP44yOT+4EoQTLFTRgOQ1FBLkstjWtayDeSgw= diff --git a/otelcollector/opentelemetry-collector-builder/main.go b/otelcollector/opentelemetry-collector-builder/main.go index 7f83029c9..b80b3adb8 100644 --- a/otelcollector/opentelemetry-collector-builder/main.go +++ b/otelcollector/opentelemetry-collector-builder/main.go @@ -14,7 +14,7 @@ func main() { info := component.BuildInfo{ Command: "custom-collector-distro", Description: "Custom OpenTelemetry Collector distribution", - Version: "0.148.0", + Version: "0.149.0", } set := otelcol.CollectorSettings{ diff --git a/otelcollector/otel-allocator/go.mod b/otelcollector/otel-allocator/go.mod index ac731fb49..067d07dec 100644 --- a/otelcollector/otel-allocator/go.mod +++ b/otelcollector/otel-allocator/go.mod @@ -1,82 +1,80 @@ module github.com/open-telemetry/opentelemetry-operator/cmd/otel-allocator -go 1.25.3 +go 1.25.7 retract v1.51.0 require ( - github.com/aws/smithy-go v1.24.2 + github.com/aws/smithy-go v1.25.0 github.com/blang/semver/v4 v4.0.0 github.com/buraksezer/consistent v0.10.0 github.com/cespare/xxhash/v2 v2.3.0 github.com/distribution/reference v0.6.0 // indirect github.com/ghodss/yaml v1.0.0 - github.com/gin-gonic/gin v1.10.1 + github.com/gin-gonic/gin v1.12.0 github.com/go-logr/logr v1.4.3 github.com/go-viper/mapstructure/v2 v2.5.0 - github.com/goccy/go-json v0.10.5 + github.com/goccy/go-json v0.10.6 github.com/goccy/go-yaml v1.19.2 github.com/google/gnostic-models v0.7.1 // indirect github.com/google/go-cmp v0.7.0 // indirect github.com/google/uuid v1.6.0 // indirect github.com/mitchellh/mapstructure v1.5.0 // indirect github.com/oklog/run v1.2.0 - github.com/oklog/ulid v1.3.1 // indirect - github.com/prometheus-operator/prometheus-operator v0.89.0 - github.com/prometheus-operator/prometheus-operator/pkg/apis/monitoring v0.89.0 - github.com/prometheus-operator/prometheus-operator/pkg/client v0.89.0 + github.com/prometheus-operator/prometheus-operator v0.90.1 + github.com/prometheus-operator/prometheus-operator/pkg/apis/monitoring v0.90.1 + github.com/prometheus-operator/prometheus-operator/pkg/client v0.90.1 github.com/prometheus/client_golang v1.23.2 github.com/prometheus/common v0.67.5 - github.com/prometheus/prometheus v0.309.1 + github.com/prometheus/prometheus v0.310.0 github.com/spf13/pflag v1.0.10 github.com/stretchr/testify v1.11.1 - go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.67.0 // indirect - go.opentelemetry.io/otel v1.42.0 - go.opentelemetry.io/otel/exporters/prometheus v0.64.0 - go.opentelemetry.io/otel/metric v1.42.0 - go.opentelemetry.io/otel/sdk v1.42.0 // indirect - go.opentelemetry.io/otel/sdk/metric v1.42.0 + go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.68.0 // indirect + go.opentelemetry.io/otel v1.43.0 + go.opentelemetry.io/otel/exporters/prometheus v0.65.0 + go.opentelemetry.io/otel/metric v1.43.0 + go.opentelemetry.io/otel/sdk v1.43.0 // indirect + go.opentelemetry.io/otel/sdk/metric v1.43.0 go.uber.org/zap v1.27.1 google.golang.org/protobuf v1.36.11 // indirect gopkg.in/yaml.v2 v2.4.0 gotest.tools/v3 v3.5.2 - k8s.io/api v0.34.3 - k8s.io/apiextensions-apiserver v0.34.3 // indirect - k8s.io/apimachinery v0.34.3 - k8s.io/client-go v0.34.3 - k8s.io/component-base v0.34.3 // indirect - k8s.io/klog/v2 v2.130.1 - k8s.io/utils v0.0.0-20260108192941-914a6e750570 - sigs.k8s.io/controller-runtime v0.22.5 + k8s.io/api v0.35.4 + k8s.io/apiextensions-apiserver v0.35.4 // indirect + k8s.io/apimachinery v0.35.4 + k8s.io/client-go v0.35.4 + k8s.io/component-base v0.35.4 // indirect + k8s.io/klog/v2 v2.140.0 + k8s.io/utils v0.0.0-20260210185600-b8788abfbbc2 + sigs.k8s.io/controller-runtime v0.23.3 sigs.k8s.io/yaml v1.6.0 // indirect ) require ( - cloud.google.com/go/auth v0.17.0 // indirect + cloud.google.com/go/auth v0.18.1 // indirect cloud.google.com/go/auth/oauth2adapt v0.2.8 // indirect cloud.google.com/go/compute/metadata v0.9.0 // indirect - github.com/Azure/azure-sdk-for-go/sdk/azcore v1.20.0 // indirect + github.com/Azure/azure-sdk-for-go/sdk/azcore v1.21.0 // indirect github.com/Azure/azure-sdk-for-go/sdk/azidentity v1.13.1 // indirect github.com/Azure/azure-sdk-for-go/sdk/internal v1.11.2 // indirect github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/compute/armcompute/v5 v5.7.0 // indirect github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/network/armnetwork/v4 v4.3.0 // indirect github.com/AzureAD/microsoft-authentication-library-for-go v1.6.0 // indirect github.com/Code-Hex/go-generics-cache v1.5.1 // indirect - github.com/Microsoft/go-winio v0.6.1 // indirect + github.com/Microsoft/go-winio v0.6.2 // indirect github.com/alecthomas/units v0.0.0-20240927000941-0f3dac36c52b // indirect github.com/armon/go-metrics v0.4.1 // indirect github.com/asaskevich/govalidator v0.0.0-20230301143203-a9d515a09cc2 // indirect github.com/beorn7/perks v1.0.1 // indirect - github.com/bytedance/sonic v1.11.6 // indirect - github.com/bytedance/sonic/loader v0.1.1 // indirect - github.com/cloudwego/base64x v0.1.4 // indirect - github.com/cloudwego/iasm v0.2.0 // indirect + github.com/bytedance/sonic v1.15.0 // indirect + github.com/bytedance/sonic/loader v0.5.0 // indirect + github.com/cloudwego/base64x v0.1.6 // indirect github.com/cncf/xds/go v0.0.0-20251210132809-ee656c7534f5 // indirect github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc // indirect github.com/dennwc/varint v1.0.0 // indirect - github.com/digitalocean/godo v1.171.0 // indirect + github.com/digitalocean/godo v1.173.0 // indirect github.com/docker/docker v28.5.2+incompatible // indirect - github.com/docker/go-connections v0.4.0 // indirect + github.com/docker/go-connections v0.6.0 // indirect github.com/docker/go-units v0.5.0 // indirect github.com/edsrzf/mmap-go v1.2.0 // indirect github.com/efficientgo/core v1.0.0-rc.3 // indirect @@ -88,32 +86,32 @@ require ( github.com/felixge/httpsnoop v1.0.4 // indirect github.com/fsnotify/fsnotify v1.9.0 // indirect github.com/fxamacker/cbor/v2 v2.9.0 // indirect - github.com/gabriel-vasile/mimetype v1.4.3 // indirect - github.com/gin-contrib/sse v0.1.0 // indirect + github.com/gabriel-vasile/mimetype v1.4.12 // indirect + github.com/gin-contrib/sse v1.1.0 // indirect github.com/go-logfmt/logfmt v0.6.1 // indirect github.com/go-logr/stdr v1.2.2 // indirect github.com/go-logr/zapr v1.3.0 // indirect - github.com/go-openapi/analysis v0.24.2 // indirect - github.com/go-openapi/errors v0.22.6 // indirect - github.com/go-openapi/jsonpointer v0.22.4 // indirect - github.com/go-openapi/jsonreference v0.21.4 // indirect - github.com/go-openapi/loads v0.23.2 // indirect - github.com/go-openapi/runtime v0.29.2 // indirect - github.com/go-openapi/spec v0.22.3 // indirect - github.com/go-openapi/strfmt v0.25.0 // indirect - github.com/go-openapi/swag v0.25.4 // indirect - github.com/go-openapi/validate v0.25.1 // indirect + github.com/go-openapi/analysis v0.25.0 // indirect + github.com/go-openapi/errors v0.22.7 // indirect + github.com/go-openapi/jsonpointer v0.22.5 // indirect + github.com/go-openapi/jsonreference v0.21.5 // indirect + github.com/go-openapi/loads v0.23.3 // indirect + github.com/go-openapi/runtime v0.29.3 // indirect + github.com/go-openapi/spec v0.22.4 // indirect + github.com/go-openapi/strfmt v0.26.1 // indirect + github.com/go-openapi/swag v0.25.5 // indirect + github.com/go-openapi/validate v0.25.2 // indirect github.com/go-playground/locales v0.14.1 // indirect github.com/go-playground/universal-translator v0.18.1 // indirect - github.com/go-playground/validator/v10 v10.20.0 // indirect + github.com/go-playground/validator/v10 v10.30.1 // indirect github.com/go-resty/resty/v2 v2.17.1 // indirect github.com/go-zookeeper/zk v1.0.4 // indirect github.com/gogo/protobuf v1.3.2 // indirect - github.com/golang-jwt/jwt/v5 v5.3.0 // indirect - github.com/google/go-querystring v1.1.0 // indirect + github.com/golang-jwt/jwt/v5 v5.3.1 // indirect + github.com/google/go-querystring v1.2.0 // indirect github.com/google/s2a-go v0.1.9 // indirect - github.com/googleapis/enterprise-certificate-proxy v0.3.7 // indirect - github.com/googleapis/gax-go/v2 v2.15.0 // indirect + github.com/googleapis/enterprise-certificate-proxy v0.3.11 // indirect + github.com/googleapis/gax-go/v2 v2.16.0 // indirect github.com/gorilla/websocket v1.5.4-0.20250319132907-e064f32e3674 // indirect github.com/grafana/regexp v0.0.0-20250905093917-f7b3be9d1853 // indirect github.com/hashicorp/consul/api v1.32.1 // indirect @@ -125,22 +123,23 @@ require ( github.com/hashicorp/go-multierror v1.1.1 // indirect github.com/hashicorp/go-retryablehttp v0.7.8 // indirect github.com/hashicorp/go-rootcerts v1.0.2 // indirect + github.com/hashicorp/go-version v1.9.0 // indirect github.com/hashicorp/golang-lru v0.6.0 // indirect - github.com/hashicorp/nomad/api v0.0.0-20251216171439-1dee0671280e // indirect + github.com/hashicorp/nomad/api v0.0.0-20260205205048-8315996478d1 // indirect github.com/hashicorp/serf v0.10.1 // indirect - github.com/hetznercloud/hcloud-go/v2 v2.32.0 // indirect + github.com/hetznercloud/hcloud-go/v2 v2.36.0 // indirect github.com/inconshreveable/mousetrap v1.1.0 // indirect - github.com/ionos-cloud/sdk-go/v6 v6.3.5 // indirect + github.com/ionos-cloud/sdk-go/v6 v6.3.6 // indirect github.com/jpillora/backoff v1.0.0 // indirect - github.com/klauspost/cpuid/v2 v2.2.10 // indirect + github.com/klauspost/cpuid/v2 v2.3.0 // indirect github.com/kolo/xmlrpc v0.0.0-20220921171641-a4b6fa1dd06b // indirect github.com/kylelemons/godebug v1.1.0 // indirect github.com/leodido/go-urn v1.4.0 // indirect - github.com/linode/linodego v1.63.0 // indirect - github.com/mattn/go-colorable v0.1.13 // indirect + github.com/linode/linodego v1.65.0 // indirect + github.com/mattn/go-colorable v0.1.14 // indirect github.com/mattn/go-isatty v0.0.20 // indirect github.com/metalmatze/signal v0.0.0-20210307161603-1c9aa721a97a // indirect - github.com/miekg/dns v1.1.69 // indirect + github.com/miekg/dns v1.1.72 // indirect github.com/mitchellh/go-homedir v1.1.0 // indirect github.com/moby/docker-image-spec v1.3.1 // indirect github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd // indirect @@ -148,49 +147,47 @@ require ( github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822 // indirect github.com/mwitkow/go-conntrack v0.0.0-20190716064945-2f068394615f // indirect github.com/opencontainers/go-digest v1.0.0 // indirect - github.com/opencontainers/image-spec v1.0.2 // indirect + github.com/opencontainers/image-spec v1.1.1 // indirect github.com/ovh/go-ovh v1.9.0 // indirect - github.com/pelletier/go-toml/v2 v2.2.2 // indirect + github.com/pelletier/go-toml/v2 v2.2.4 // indirect github.com/pkg/browser v0.0.0-20240102092130-5ac0b6a4141c // indirect github.com/pkg/errors v0.9.1 // indirect github.com/planetscale/vtprotobuf v0.6.1-0.20240319094008-0393e58bdf10 // indirect github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 // indirect github.com/prometheus-community/prom-label-proxy v0.12.1 // indirect - github.com/prometheus/alertmanager v0.31.0 // indirect + github.com/prometheus/alertmanager v0.31.1 // indirect github.com/prometheus/client_model v0.6.2 // indirect github.com/prometheus/procfs v0.20.1 // indirect - github.com/scaleway/scaleway-sdk-go v1.0.0-beta.35 // indirect - github.com/sirupsen/logrus v1.9.4 // indirect + github.com/scaleway/scaleway-sdk-go v1.0.0-beta.36 // indirect github.com/spf13/cobra v1.10.2 // indirect github.com/twitchyliquid64/golang-asm v0.15.1 // indirect - github.com/ugorji/go/codec v1.2.12 // indirect + github.com/ugorji/go/codec v1.3.1 // indirect github.com/vultr/govultr/v2 v2.17.2 // indirect github.com/x448/float16 v0.8.4 // indirect - go.mongodb.org/mongo-driver v1.17.6 // indirect go.opentelemetry.io/auto/sdk v1.2.1 // indirect - go.opentelemetry.io/otel/trace v1.42.0 // indirect + go.opentelemetry.io/otel/trace v1.43.0 // indirect go.uber.org/atomic v1.11.0 // indirect - golang.org/x/arch v0.8.0 // indirect - golang.org/x/crypto v0.48.0 // indirect - golang.org/x/exp v0.0.0-20260218203240-3dfff04db8fa // indirect - golang.org/x/mod v0.33.0 // indirect - golang.org/x/net v0.51.0 // indirect - golang.org/x/oauth2 v0.35.0 // indirect - golang.org/x/sync v0.19.0 // indirect - golang.org/x/sys v0.41.0 // indirect - golang.org/x/term v0.40.0 // indirect - golang.org/x/text v0.34.0 // indirect - golang.org/x/time v0.14.0 // indirect - golang.org/x/tools v0.42.0 // indirect + golang.org/x/arch v0.22.0 // indirect + golang.org/x/crypto v0.49.0 // indirect + golang.org/x/exp v0.0.0-20260312153236-7ab1446f8b90 // indirect + golang.org/x/mod v0.34.0 // indirect + golang.org/x/net v0.52.0 // indirect + golang.org/x/oauth2 v0.36.0 // indirect + golang.org/x/sync v0.20.0 // indirect + golang.org/x/sys v0.42.0 // indirect + golang.org/x/term v0.41.0 // indirect + golang.org/x/text v0.35.0 // indirect + golang.org/x/time v0.15.0 // indirect + golang.org/x/tools v0.43.0 // indirect gomodules.xyz/jsonpatch/v2 v2.5.0 // indirect - google.golang.org/api v0.257.0 // indirect - google.golang.org/genproto/googleapis/api v0.0.0-20260226221140-a57be14db171 // indirect - google.golang.org/genproto/googleapis/rpc v0.0.0-20260226221140-a57be14db171 // indirect - google.golang.org/grpc v1.79.3 // indirect + google.golang.org/api v0.265.0 // indirect + google.golang.org/genproto/googleapis/api v0.0.0-20260406210006-6f92a3bedf2d // indirect + google.golang.org/genproto/googleapis/rpc v0.0.0-20260406210006-6f92a3bedf2d // indirect + google.golang.org/grpc v1.80.0 // indirect gopkg.in/evanphx/json-patch.v4 v4.13.0 // indirect gopkg.in/inf.v0 v0.9.1 // indirect - gopkg.in/ini.v1 v1.67.0 // indirect - k8s.io/kube-openapi v0.0.0-20250910181357-589584f1c912 // indirect + gopkg.in/ini.v1 v1.67.1 // indirect + k8s.io/kube-openapi v0.0.0-20260317180543-43fb72c5454a // indirect sigs.k8s.io/json v0.0.0-20250730193827-2d320260d730 // indirect ) @@ -202,47 +199,53 @@ require ( github.com/aws/aws-sdk-go-v2/internal/configsources v1.4.17 // indirect github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.7.17 // indirect github.com/aws/aws-sdk-go-v2/internal/ini v1.8.4 // indirect - github.com/aws/aws-sdk-go-v2/service/ec2 v1.277.0 // indirect - github.com/aws/aws-sdk-go-v2/service/ecs v1.69.5 // indirect + github.com/aws/aws-sdk-go-v2/service/ec2 v1.285.0 // indirect + github.com/aws/aws-sdk-go-v2/service/ecs v1.71.0 // indirect github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding v1.13.4 // indirect github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.13.17 // indirect - github.com/aws/aws-sdk-go-v2/service/lightsail v1.50.10 // indirect + github.com/aws/aws-sdk-go-v2/service/kafka v1.46.7 // indirect + github.com/aws/aws-sdk-go-v2/service/lightsail v1.50.11 // indirect github.com/aws/aws-sdk-go-v2/service/signin v1.0.5 // indirect github.com/aws/aws-sdk-go-v2/service/sso v1.30.9 // indirect github.com/aws/aws-sdk-go-v2/service/ssooidc v1.35.13 // indirect github.com/aws/aws-sdk-go-v2/service/sts v1.41.6 // indirect + github.com/bytedance/gopkg v0.1.3 // indirect github.com/containerd/errdefs v1.0.0 // indirect github.com/containerd/errdefs/pkg v0.3.0 // indirect github.com/envoyproxy/go-control-plane/envoy v1.36.0 // indirect github.com/evanphx/json-patch v5.9.0+incompatible // indirect github.com/go-kit/log v0.2.1 // indirect - github.com/go-openapi/swag/cmdutils v0.25.4 // indirect - github.com/go-openapi/swag/conv v0.25.4 // indirect - github.com/go-openapi/swag/fileutils v0.25.4 // indirect - github.com/go-openapi/swag/jsonname v0.25.4 // indirect - github.com/go-openapi/swag/jsonutils v0.25.4 // indirect - github.com/go-openapi/swag/loading v0.25.4 // indirect - github.com/go-openapi/swag/mangling v0.25.4 // indirect - github.com/go-openapi/swag/netutils v0.25.4 // indirect - github.com/go-openapi/swag/stringutils v0.25.4 // indirect - github.com/go-openapi/swag/typeutils v0.25.4 // indirect - github.com/go-openapi/swag/yamlutils v0.25.4 // indirect + github.com/go-openapi/swag/cmdutils v0.25.5 // indirect + github.com/go-openapi/swag/conv v0.25.5 // indirect + github.com/go-openapi/swag/fileutils v0.25.5 // indirect + github.com/go-openapi/swag/jsonname v0.25.5 // indirect + github.com/go-openapi/swag/jsonutils v0.25.5 // indirect + github.com/go-openapi/swag/loading v0.25.5 // indirect + github.com/go-openapi/swag/mangling v0.25.5 // indirect + github.com/go-openapi/swag/netutils v0.25.5 // indirect + github.com/go-openapi/swag/stringutils v0.25.5 // indirect + github.com/go-openapi/swag/typeutils v0.25.5 // indirect + github.com/go-openapi/swag/yamlutils v0.25.5 // indirect github.com/google/btree v1.1.3 // indirect - github.com/gophercloud/gophercloud/v2 v2.9.0 // indirect + github.com/gophercloud/gophercloud/v2 v2.10.0 // indirect github.com/json-iterator/go v1.1.12 // indirect - github.com/klauspost/compress v1.18.2 // indirect + github.com/klauspost/compress v1.18.3 // indirect github.com/moby/sys/sequential v0.6.0 // indirect + github.com/oklog/ulid/v2 v2.1.1 // indirect github.com/onsi/ginkgo/v2 v2.28.1 // indirect github.com/onsi/gomega v1.39.1 // indirect - github.com/prometheus/client_golang/exp v0.0.0-20251212205219-7ba246a648ca // indirect + github.com/prometheus/client_golang/exp v0.0.0-20260108101519-fb0838f53562 // indirect github.com/prometheus/otlptranslator v1.0.0 // indirect - github.com/prometheus/sigv4 v0.4.0 // indirect - github.com/stackitcloud/stackit-sdk-go/core v0.20.1 // indirect - go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp v1.42.0 // indirect + github.com/prometheus/sigv4 v0.4.1 // indirect + github.com/quic-go/qpack v0.6.0 // indirect + github.com/quic-go/quic-go v0.59.0 // indirect + github.com/stackitcloud/stackit-sdk-go/core v0.21.1 // indirect + go.mongodb.org/mongo-driver/v2 v2.5.0 // indirect + go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp v1.43.0 // indirect go.uber.org/multierr v1.11.0 // indirect - go.yaml.in/yaml/v2 v2.4.3 // indirect + go.yaml.in/yaml/v2 v2.4.4 // indirect go.yaml.in/yaml/v3 v3.0.4 // indirect gopkg.in/yaml.v3 v3.0.1 // indirect sigs.k8s.io/randfill v1.0.0 // indirect - sigs.k8s.io/structured-merge-diff/v6 v6.3.2-0.20260122202528-d9cc6641c482 // indirect + sigs.k8s.io/structured-merge-diff/v6 v6.3.2 // indirect ) diff --git a/otelcollector/otel-allocator/go.sum b/otelcollector/otel-allocator/go.sum index b36ca5016..3ce6929c5 100644 --- a/otelcollector/otel-allocator/go.sum +++ b/otelcollector/otel-allocator/go.sum @@ -1,11 +1,11 @@ -cloud.google.com/go/auth v0.17.0 h1:74yCm7hCj2rUyyAocqnFzsAYXgJhrG26XCFimrc/Kz4= -cloud.google.com/go/auth v0.17.0/go.mod h1:6wv/t5/6rOPAX4fJiRjKkJCvswLwdet7G8+UGXt7nCQ= +cloud.google.com/go/auth v0.18.1 h1:IwTEx92GFUo2pJ6Qea0EU3zYvKnTAeRCODxfA/G5UWs= +cloud.google.com/go/auth v0.18.1/go.mod h1:GfTYoS9G3CWpRA3Va9doKN9mjPGRS+v41jmZAhBzbrA= cloud.google.com/go/auth/oauth2adapt v0.2.8 h1:keo8NaayQZ6wimpNSmW5OPc283g65QNIiLpZnkHRbnc= cloud.google.com/go/auth/oauth2adapt v0.2.8/go.mod h1:XQ9y31RkqZCcwJWNSx2Xvric3RrU88hAYYbjDWYDL+c= 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/Azure/azure-sdk-for-go/sdk/azcore v1.20.0 h1:JXg2dwJUmPB9JmtVmdEB16APJ7jurfbY5jnfXpJoRMc= -github.com/Azure/azure-sdk-for-go/sdk/azcore v1.20.0/go.mod h1:YD5h/ldMsG0XiIw7PdyNhLxaM317eFh5yNLccNfGdyw= +github.com/Azure/azure-sdk-for-go/sdk/azcore v1.21.0 h1:fou+2+WFTib47nS+nz/ozhEBnvU96bKHy6LjRsY4E28= +github.com/Azure/azure-sdk-for-go/sdk/azcore v1.21.0/go.mod h1:t76Ruy8AHvUAC8GfMWJMa0ElSbuIcO03NLpynfbgsPA= github.com/Azure/azure-sdk-for-go/sdk/azidentity v1.13.1 h1:Hk5QBxZQC1jb2Fwj6mpzme37xbCDdNTxU7O9eb5+LB4= github.com/Azure/azure-sdk-for-go/sdk/azidentity v1.13.1/go.mod h1:IYus9qsFobWIc2YVwe/WPjcnyCkPKtnHAqUYeebc8z0= github.com/Azure/azure-sdk-for-go/sdk/azidentity/cache v0.3.2 h1:yz1bePFlP5Vws5+8ez6T3HWXPmwOK7Yvq8QxDBD3SKY= @@ -32,8 +32,8 @@ github.com/DATA-DOG/go-sqlmock v1.4.1/go.mod h1:f/Ixk793poVmq4qj/V1dPUg2JEAKC73Q github.com/DataDog/datadog-go v3.2.0+incompatible/go.mod h1:LButxg5PwREeZtORoXG3tL4fMGNddJ+vMq1mwgfaqoQ= github.com/Masterminds/semver/v3 v3.4.0 h1:Zog+i5UMtVoCU8oKka5P7i9q9HgrJeGzI9SA1Xbatp0= github.com/Masterminds/semver/v3 v3.4.0/go.mod h1:4V+yj/TJE1HU9XfppCwVMZq3I84lprf4nC11bSS5beM= -github.com/Microsoft/go-winio v0.6.1 h1:9/kr64B9VUZrLm5YYwbGtUJnMgqWVOdUAXu6Migciow= -github.com/Microsoft/go-winio v0.6.1/go.mod h1:LRdKpFKfdobln8UmuiYcKPot9D2v6svN5+sAH+4kjUM= +github.com/Microsoft/go-winio v0.6.2 h1:F2VQgta7ecxGYO8k3ZZz3RS8fVIXVxONVUPlNERoyfY= +github.com/Microsoft/go-winio v0.6.2/go.mod h1:yd8OoFMLzJbo9gZq8j5qaps8bJ9aShtEA8Ipt1oGCvU= github.com/alecthomas/template v0.0.0-20160405071501-a0175ee3bccc/go.mod h1:LOuyumcjzFXgccqObfd/Ljyb9UuFJ6TxHnclSeseNhc= github.com/alecthomas/template v0.0.0-20190718012654-fb15b899a751/go.mod h1:LOuyumcjzFXgccqObfd/Ljyb9UuFJ6TxHnclSeseNhc= github.com/alecthomas/units v0.0.0-20151022065526-2efee857e7cf/go.mod h1:ybxpYRFXyAe+OPACYpWeL0wqObRcbAqCMya13uyzqw0= @@ -62,16 +62,18 @@ github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.7.17 h1:WWLqlh79iO48yLkj1v github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.7.17/go.mod h1:EhG22vHRrvF8oXSTYStZhJc1aUgKtnJe+aOiFEV90cM= github.com/aws/aws-sdk-go-v2/internal/ini v1.8.4 h1:WKuaxf++XKWlHWu9ECbMlha8WOEGm0OUEZqm4K/Gcfk= github.com/aws/aws-sdk-go-v2/internal/ini v1.8.4/go.mod h1:ZWy7j6v1vWGmPReu0iSGvRiise4YI5SkR3OHKTZ6Wuc= -github.com/aws/aws-sdk-go-v2/service/ec2 v1.277.0 h1:RHJSkRXDGkAKrV4CTEsZsZkOmSpxXKO4aKx4rXd94K4= -github.com/aws/aws-sdk-go-v2/service/ec2 v1.277.0/go.mod h1:Wg68QRgy2gEGGdmTPU/UbVpdv8sM14bUZmF64KFwAsY= -github.com/aws/aws-sdk-go-v2/service/ecs v1.69.5 h1:5nkhwt0d/gjuT3AQ2LUK0aFRNB3MGlzB2elqy/ZsKP4= -github.com/aws/aws-sdk-go-v2/service/ecs v1.69.5/go.mod h1:LQMlcWBoiFVD3vUVEz42ST0yTiaDujv2dRE6sXt1yPE= +github.com/aws/aws-sdk-go-v2/service/ec2 v1.285.0 h1:cRZQsqCy59DSJmvmUYzi9K+dutysXzfx6F+fkcIHtOk= +github.com/aws/aws-sdk-go-v2/service/ec2 v1.285.0/go.mod h1:Uy+C+Sc58jozdoL1McQr8bDsEvNFx+/nBY+vpO1HVUY= +github.com/aws/aws-sdk-go-v2/service/ecs v1.71.0 h1:MzP/ElwTpINq+hS80ZQz4epKVnUTlz8Sz+P/AFORCKM= +github.com/aws/aws-sdk-go-v2/service/ecs v1.71.0/go.mod h1:pMlGFDpHoLTJOIZHGdJOAWmi+xeIlQXuFTuQxs1epYE= github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding v1.13.4 h1:0ryTNEdJbzUCEWkVXEXoqlXV72J5keC1GvILMOuD00E= github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding v1.13.4/go.mod h1:HQ4qwNZh32C3CBeO6iJLQlgtMzqeG17ziAA/3KDJFow= github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.13.17 h1:RuNSMoozM8oXlgLG/n6WLaFGoea7/CddrCfIiSA+xdY= github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.13.17/go.mod h1:F2xxQ9TZz5gDWsclCtPQscGpP0VUOc8RqgFM3vDENmU= -github.com/aws/aws-sdk-go-v2/service/lightsail v1.50.10 h1:MQuZZ6Tq1qQabPlkVxrCMdyVl70Ogl4AERZKo+y9Wzo= -github.com/aws/aws-sdk-go-v2/service/lightsail v1.50.10/go.mod h1:U5C3JME1ibKESmpzBAqlRpTYZfVbTqrb5ICJm+sVVd8= +github.com/aws/aws-sdk-go-v2/service/kafka v1.46.7 h1:0jDb9b505gbCmtjH1RT7kx8hDbVDzOhnTeZm7dzskpQ= +github.com/aws/aws-sdk-go-v2/service/kafka v1.46.7/go.mod h1:tWnHS64fg5ydLHivFlCAtEh/1iMNzr56QsH3F+UTwD4= +github.com/aws/aws-sdk-go-v2/service/lightsail v1.50.11 h1:VM5e5M39zRSs+aT0O9SoxHjUXqXxhbw3Yi0FdMQWPIc= +github.com/aws/aws-sdk-go-v2/service/lightsail v1.50.11/go.mod h1:0jvzYPIQGCpnY/dmdaotTk2JH4QuBlnW0oeyrcGLWJ4= github.com/aws/aws-sdk-go-v2/service/signin v1.0.5 h1:VrhDvQib/i0lxvr3zqlUwLwJP4fpmpyD9wYG1vfSu+Y= github.com/aws/aws-sdk-go-v2/service/signin v1.0.5/go.mod h1:k029+U8SY30/3/ras4G/Fnv/b88N4mAfliNn08Dem4M= github.com/aws/aws-sdk-go-v2/service/sso v1.30.9 h1:v6EiMvhEYBoHABfbGB4alOYmCIrcgyPPiBE1wZAEbqk= @@ -80,8 +82,8 @@ github.com/aws/aws-sdk-go-v2/service/ssooidc v1.35.13 h1:gd84Omyu9JLriJVCbGApcLz github.com/aws/aws-sdk-go-v2/service/ssooidc v1.35.13/go.mod h1:sTGThjphYE4Ohw8vJiRStAcu3rbjtXRsdNB0TvZ5wwo= github.com/aws/aws-sdk-go-v2/service/sts v1.41.6 h1:5fFjR/ToSOzB2OQ/XqWpZBmNvmP/pJ1jOWYlFDJTjRQ= github.com/aws/aws-sdk-go-v2/service/sts v1.41.6/go.mod h1:qgFDZQSD/Kys7nJnVqYlWKnh0SSdMjAi0uSwON4wgYQ= -github.com/aws/smithy-go v1.24.2 h1:FzA3bu/nt/vDvmnkg+R8Xl46gmzEDam6mZ1hzmwXFng= -github.com/aws/smithy-go v1.24.2/go.mod h1:YE2RhdIuDbA5E5bTdciG9KrW3+TiEONeUWCqxX9i1Fc= +github.com/aws/smithy-go v1.25.0 h1:Sz/XJ64rwuiKtB6j98nDIPyYrV1nVNJ4YU74gttcl5U= +github.com/aws/smithy-go v1.25.0/go.mod h1:YE2RhdIuDbA5E5bTdciG9KrW3+TiEONeUWCqxX9i1Fc= github.com/bboreham/go-loser v0.0.0-20230920113527-fcc2c21820a3 h1:6df1vn4bBlDDo4tARvBm7l6KA9iVMnE3NWizDeWSrps= github.com/bboreham/go-loser v0.0.0-20230920113527-fcc2c21820a3/go.mod h1:CIWtjkly68+yqLPbvwwR/fjNJA/idrtULjZWh2v1ys0= github.com/beorn7/perks v0.0.0-20180321164747-3a771d992973/go.mod h1:Dwedo/Wpr24TaqPxmxbtue+5NUziq4I4S80YR8gNf3Q= @@ -93,10 +95,12 @@ github.com/blang/semver/v4 v4.0.0 h1:1PFHFE6yCCTv8C1TeyNNarDzntLi7wMI5i/pzqYIsAM github.com/blang/semver/v4 v4.0.0/go.mod h1:IbckMUScFkM3pff0VJDNKRiT6TG/YpiHIM2yvyW5YoQ= github.com/buraksezer/consistent v0.10.0 h1:hqBgz1PvNLC5rkWcEBVAL9dFMBWz6I0VgUCW25rrZlU= github.com/buraksezer/consistent v0.10.0/go.mod h1:6BrVajWq7wbKZlTOUPs/XVfR8c0maujuPowduSpZqmw= -github.com/bytedance/sonic v1.11.6 h1:oUp34TzMlL+OY1OUWxHqsdkgC/Zfc85zGqw9siXjrc0= -github.com/bytedance/sonic v1.11.6/go.mod h1:LysEHSvpvDySVdC2f87zGWf6CIKJcAvqab1ZaiQtds4= -github.com/bytedance/sonic/loader v0.1.1 h1:c+e5Pt1k/cy5wMveRDyk2X4B9hF4g7an8N3zCYjJFNM= -github.com/bytedance/sonic/loader v0.1.1/go.mod h1:ncP89zfokxS5LZrJxl5z0UJcsk4M4yY2JpfqGeCtNLU= +github.com/bytedance/gopkg v0.1.3 h1:TPBSwH8RsouGCBcMBktLt1AymVo2TVsBVCY4b6TnZ/M= +github.com/bytedance/gopkg v0.1.3/go.mod h1:576VvJ+eJgyCzdjS+c4+77QF3p7ubbtiKARP3TxducM= +github.com/bytedance/sonic v1.15.0 h1:/PXeWFaR5ElNcVE84U0dOHjiMHQOwNIx3K4ymzh/uSE= +github.com/bytedance/sonic v1.15.0/go.mod h1:tFkWrPz0/CUCLEF4ri4UkHekCIcdnkqXw9VduqpJh0k= +github.com/bytedance/sonic/loader v0.5.0 h1:gXH3KVnatgY7loH5/TkeVyXPfESoqSBSBEiDd5VjlgE= +github.com/bytedance/sonic/loader v0.5.0/go.mod h1:AR4NYCk5DdzZizZ5djGqQ92eEhCCcdf5x77udYiSJRo= 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.1.1/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs= @@ -104,10 +108,8 @@ github.com/cespare/xxhash/v2 v2.3.0 h1:UL815xU9SqsFlibzuggzjXhog7bL6oX9BbNZnL2UF github.com/cespare/xxhash/v2 v2.3.0/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs= github.com/circonus-labs/circonus-gometrics v2.3.1+incompatible/go.mod h1:nmEj6Dob7S7YxXgwXpfOuvO54S+tGdZdw9fuRZt25Ag= github.com/circonus-labs/circonusllhist v0.1.3/go.mod h1:kMXHVDlOchFAehlya5ePtbp5jckzBHf4XRpQvBOLI+I= -github.com/cloudwego/base64x v0.1.4 h1:jwCgWpFanWmN8xoIUHa2rtzmkd5J2plF/dnLS6Xd/0Y= -github.com/cloudwego/base64x v0.1.4/go.mod h1:0zlkT4Wn5C6NdauXdJRhSKRlJvmclQ1hhJgA0rcu/8w= -github.com/cloudwego/iasm v0.2.0 h1:1KNIy1I1H9hNNFEEH3DVnI4UujN+1zjpuk6gwHLTssg= -github.com/cloudwego/iasm v0.2.0/go.mod h1:8rXZaNYT2n95jn+zTI1sDr+IgcD2GVs0nlbbQPiEFhY= +github.com/cloudwego/base64x v0.1.6 h1:t11wG9AECkCDk5fMSoxmufanudBtJ+/HemLstXDLI2M= +github.com/cloudwego/base64x v0.1.6/go.mod h1:OFcloc187FXDaYHvrNIjxSe8ncn0OOM8gEHfghB2IPU= github.com/cncf/xds/go v0.0.0-20251210132809-ee656c7534f5 h1:6xNmx7iTtyBRev0+D/Tv1FZd4SCg8axKApyNyRsAt/w= github.com/cncf/xds/go v0.0.0-20251210132809-ee656c7534f5/go.mod h1:KdCmV+x/BuvyMxRnYBlmVaq4OLiKW6iRQfvC62cvdkI= github.com/containerd/errdefs v1.0.0 h1:tg5yIfIlQIrxYtu9ajqY42W3lpS19XqdxRQeEwYG8PI= @@ -123,16 +125,14 @@ github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc h1:U9qPSI2PIWSS1 github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/dennwc/varint v1.0.0 h1:kGNFFSSw8ToIy3obO/kKr8U9GZYUAxQEVuix4zfDWzE= github.com/dennwc/varint v1.0.0/go.mod h1:hnItb35rvZvJrbTALZtY/iQfDs48JKRG1RPpgziApxA= -github.com/digitalocean/godo v1.171.0 h1:QwpkwWKr3v7yxc8D4NQG973NoR9APCEWjYnLOQeXVpQ= -github.com/digitalocean/godo v1.171.0/go.mod h1:xQsWpVCCbkDrWisHA72hPzPlnC+4W5w/McZY5ij9uvU= +github.com/digitalocean/godo v1.173.0 h1:tgzevGhlz9VFjk2y3NmeItUT4vIVVCRFETlG/1GlEQI= +github.com/digitalocean/godo v1.173.0/go.mod h1:xQsWpVCCbkDrWisHA72hPzPlnC+4W5w/McZY5ij9uvU= github.com/distribution/reference v0.6.0 h1:0IXCQ5g4/QMHHkarYzh5l+u8T3t73zM5QvfrDyIgxBk= github.com/distribution/reference v0.6.0/go.mod h1:BbU0aIcezP1/5jX/8MP0YiH4SdvB5Y4f/wlDRiLyi3E= -github.com/dnaeon/go-vcr v1.2.0 h1:zHCHvJYTMh1N7xnV7zf1m1GPBF9Ad0Jk/whtQ1663qI= -github.com/dnaeon/go-vcr v1.2.0/go.mod h1:R4UdLID7HZT3taECzJs4YgbbH6PIGXB6W/sc5OLb6RQ= github.com/docker/docker v28.5.2+incompatible h1:DBX0Y0zAjZbSrm1uzOkdr1onVghKaftjlSWt4AFexzM= github.com/docker/docker v28.5.2+incompatible/go.mod h1:eEKB0N0r5NX/I1kEveEz05bcu8tLC/8azJZsviup8Sk= -github.com/docker/go-connections v0.4.0 h1:El9xVISelRB7BuFusrZozjnkIM5YnzCViNKohAFqRJQ= -github.com/docker/go-connections v0.4.0/go.mod h1:Gbd7IOopHjR8Iph03tsViu4nIes5XhDvyHbTtUxmeec= +github.com/docker/go-connections v0.6.0 h1:LlMG9azAe1TqfR7sO+NJttz1gy6KO7VJBh+pMmjSD94= +github.com/docker/go-connections v0.6.0/go.mod h1:AahvXYshr6JgfUJGdDCs2b5EZG/vmaMAntpSFH5BFKE= github.com/docker/go-units v0.5.0 h1:69rxXcBk27SvSaaxTtLh/8llcHD8vYHT7WSdRZ/jvr4= github.com/docker/go-units v0.5.0/go.mod h1:fgPhTUdO+D/Jk86RDLlptpiXQzgHJF7gydDDbaIK4Dk= github.com/edsrzf/mmap-go v1.2.0 h1:hXLYlkbaPzt1SaQk+anYwKSRNhufIDCchSPkUD6dD84= @@ -162,14 +162,14 @@ github.com/fsnotify/fsnotify v1.9.0 h1:2Ml+OJNzbYCTzsxtv8vKSFD9PbJjmhYF14k/jKC7S github.com/fsnotify/fsnotify v1.9.0/go.mod h1:8jBTzvmWwFyi3Pb8djgCCO5IBqzKJ/Jwo8TRcHyHii0= 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/gabriel-vasile/mimetype v1.4.3 h1:in2uUcidCuFcDKtdcBxlR0rJ1+fsokWf+uqxgUFjbI0= -github.com/gabriel-vasile/mimetype v1.4.3/go.mod h1:d8uq/6HKRL6CGdk+aubisF/M5GcPfT7nKyLpA0lbSSk= +github.com/gabriel-vasile/mimetype v1.4.12 h1:e9hWvmLYvtp846tLHam2o++qitpguFiYCKbn0w9jyqw= +github.com/gabriel-vasile/mimetype v1.4.12/go.mod h1:d+9Oxyo1wTzWdyVUPMmXFvp4F9tea18J8ufA774AB3s= github.com/ghodss/yaml v1.0.0 h1:wQHKEahhL6wmXdzwWG11gIVCkOv05bNOh+Rxn0yngAk= github.com/ghodss/yaml v1.0.0/go.mod h1:4dBDuWmgqj2HViK6kFavaiC9ZROes6MMH2rRYeMEF04= -github.com/gin-contrib/sse v0.1.0 h1:Y/yl/+YNO8GZSjAhjMsSuLt29uWRFHdHYUb5lYOV9qE= -github.com/gin-contrib/sse v0.1.0/go.mod h1:RHrZQHXnP2xjPF+u1gW/2HnVO7nvIa9PG3Gm+fLHvGI= -github.com/gin-gonic/gin v1.10.1 h1:T0ujvqyCSqRopADpgPgiTT63DUQVSfojyME59Ei63pQ= -github.com/gin-gonic/gin v1.10.1/go.mod h1:4PMNQiOhvDRa013RKVbsiNwoyezlm2rm0uX/T7kzp5Y= +github.com/gin-contrib/sse v1.1.0 h1:n0w2GMuUpWDVp7qSpvze6fAu9iRxJY4Hmj6AmBOU05w= +github.com/gin-contrib/sse v1.1.0/go.mod h1:hxRZ5gVpWMT7Z0B0gSNYqqsSCNIJMjzvm6fqCz9vjwM= +github.com/gin-gonic/gin v1.12.0 h1:b3YAbrZtnf8N//yjKeU2+MQsh2mY5htkZidOM7O0wG8= +github.com/gin-gonic/gin v1.12.0/go.mod h1:VxccKfsSllpKshkBWgVgRniFFAzFb9csfngsqANjnLc= github.com/go-kit/kit v0.8.0/go.mod h1:xBxKIO96dXMWWy0MnWVtmwkA9/13aqxPnvrjFYMA2as= github.com/go-kit/kit v0.9.0/go.mod h1:xBxKIO96dXMWWy0MnWVtmwkA9/13aqxPnvrjFYMA2as= github.com/go-kit/log v0.2.1 h1:MRVx0/zhvdseW+Gza6N9rVzU/IVzaeE1SFI4raAhmBU= @@ -185,62 +185,62 @@ 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-logr/zapr v1.3.0 h1:XGdV8XW8zdwFiwOA2Dryh1gj2KRQyOOoNmBy4EplIcQ= github.com/go-logr/zapr v1.3.0/go.mod h1:YKepepNBd1u/oyhd/yQmtjVXmm9uML4IXUgMOwR8/Gg= -github.com/go-openapi/analysis v0.24.2 h1:6p7WXEuKy1llDgOH8FooVeO+Uq2za9qoAOq4ZN08B50= -github.com/go-openapi/analysis v0.24.2/go.mod h1:x27OOHKANE0lutg2ml4kzYLoHGMKgRm1Cj2ijVOjJuE= -github.com/go-openapi/errors v0.22.6 h1:eDxcf89O8odEnohIXwEjY1IB4ph5vmbUsBMsFNwXWPo= -github.com/go-openapi/errors v0.22.6/go.mod h1:z9S8ASTUqx7+CP1Q8dD8ewGH/1JWFFLX/2PmAYNQLgk= -github.com/go-openapi/jsonpointer v0.22.4 h1:dZtK82WlNpVLDW2jlA1YCiVJFVqkED1MegOUy9kR5T4= -github.com/go-openapi/jsonpointer v0.22.4/go.mod h1:elX9+UgznpFhgBuaMQ7iu4lvvX1nvNsesQ3oxmYTw80= -github.com/go-openapi/jsonreference v0.21.4 h1:24qaE2y9bx/q3uRK/qN+TDwbok1NhbSmGjjySRCHtC8= -github.com/go-openapi/jsonreference v0.21.4/go.mod h1:rIENPTjDbLpzQmQWCj5kKj3ZlmEh+EFVbz3RTUh30/4= -github.com/go-openapi/loads v0.23.2 h1:rJXAcP7g1+lWyBHC7iTY+WAF0rprtM+pm8Jxv1uQJp4= -github.com/go-openapi/loads v0.23.2/go.mod h1:IEVw1GfRt/P2Pplkelxzj9BYFajiWOtY2nHZNj4UnWY= -github.com/go-openapi/runtime v0.29.2 h1:UmwSGWNmWQqKm1c2MGgXVpC2FTGwPDQeUsBMufc5Yj0= -github.com/go-openapi/runtime v0.29.2/go.mod h1:biq5kJXRJKBJxTDJXAa00DOTa/anflQPhT0/wmjuy+0= -github.com/go-openapi/spec v0.22.3 h1:qRSmj6Smz2rEBxMnLRBMeBWxbbOvuOoElvSvObIgwQc= -github.com/go-openapi/spec v0.22.3/go.mod h1:iIImLODL2loCh3Vnox8TY2YWYJZjMAKYyLH2Mu8lOZs= -github.com/go-openapi/strfmt v0.25.0 h1:7R0RX7mbKLa9EYCTHRcCuIPcaqlyQiWNPTXwClK0saQ= -github.com/go-openapi/strfmt v0.25.0/go.mod h1:nNXct7OzbwrMY9+5tLX4I21pzcmE6ccMGXl3jFdPfn8= -github.com/go-openapi/swag v0.25.4 h1:OyUPUFYDPDBMkqyxOTkqDYFnrhuhi9NR6QVUvIochMU= -github.com/go-openapi/swag v0.25.4/go.mod h1:zNfJ9WZABGHCFg2RnY0S4IOkAcVTzJ6z2Bi+Q4i6qFQ= -github.com/go-openapi/swag/cmdutils v0.25.4 h1:8rYhB5n6WawR192/BfUu2iVlxqVR9aRgGJP6WaBoW+4= -github.com/go-openapi/swag/cmdutils v0.25.4/go.mod h1:pdae/AFo6WxLl5L0rq87eRzVPm/XRHM3MoYgRMvG4A0= -github.com/go-openapi/swag/conv v0.25.4 h1:/Dd7p0LZXczgUcC/Ikm1+YqVzkEeCc9LnOWjfkpkfe4= -github.com/go-openapi/swag/conv v0.25.4/go.mod h1:3LXfie/lwoAv0NHoEuY1hjoFAYkvlqI/Bn5EQDD3PPU= -github.com/go-openapi/swag/fileutils v0.25.4 h1:2oI0XNW5y6UWZTC7vAxC8hmsK/tOkWXHJQH4lKjqw+Y= -github.com/go-openapi/swag/fileutils v0.25.4/go.mod h1:cdOT/PKbwcysVQ9Tpr0q20lQKH7MGhOEb6EwmHOirUk= -github.com/go-openapi/swag/jsonname v0.25.4 h1:bZH0+MsS03MbnwBXYhuTttMOqk+5KcQ9869Vye1bNHI= -github.com/go-openapi/swag/jsonname v0.25.4/go.mod h1:GPVEk9CWVhNvWhZgrnvRA6utbAltopbKwDu8mXNUMag= -github.com/go-openapi/swag/jsonutils v0.25.4 h1:VSchfbGhD4UTf4vCdR2F4TLBdLwHyUDTd1/q4i+jGZA= -github.com/go-openapi/swag/jsonutils v0.25.4/go.mod h1:7OYGXpvVFPn4PpaSdPHJBtF0iGnbEaTk8AvBkoWnaAY= -github.com/go-openapi/swag/jsonutils/fixtures_test v0.25.4 h1:IACsSvBhiNJwlDix7wq39SS2Fh7lUOCJRmx/4SN4sVo= -github.com/go-openapi/swag/jsonutils/fixtures_test v0.25.4/go.mod h1:Mt0Ost9l3cUzVv4OEZG+WSeoHwjWLnarzMePNDAOBiM= -github.com/go-openapi/swag/loading v0.25.4 h1:jN4MvLj0X6yhCDduRsxDDw1aHe+ZWoLjW+9ZQWIKn2s= -github.com/go-openapi/swag/loading v0.25.4/go.mod h1:rpUM1ZiyEP9+mNLIQUdMiD7dCETXvkkC30z53i+ftTE= -github.com/go-openapi/swag/mangling v0.25.4 h1:2b9kBJk9JvPgxr36V23FxJLdwBrpijI26Bx5JH4Hp48= -github.com/go-openapi/swag/mangling v0.25.4/go.mod h1:6dxwu6QyORHpIIApsdZgb6wBk/DPU15MdyYj/ikn0Hg= -github.com/go-openapi/swag/netutils v0.25.4 h1:Gqe6K71bGRb3ZQLusdI8p/y1KLgV4M/k+/HzVSqT8H0= -github.com/go-openapi/swag/netutils v0.25.4/go.mod h1:m2W8dtdaoX7oj9rEttLyTeEFFEBvnAx9qHd5nJEBzYg= -github.com/go-openapi/swag/stringutils v0.25.4 h1:O6dU1Rd8bej4HPA3/CLPciNBBDwZj9HiEpdVsb8B5A8= -github.com/go-openapi/swag/stringutils v0.25.4/go.mod h1:GTsRvhJW5xM5gkgiFe0fV3PUlFm0dr8vki6/VSRaZK0= -github.com/go-openapi/swag/typeutils v0.25.4 h1:1/fbZOUN472NTc39zpa+YGHn3jzHWhv42wAJSN91wRw= -github.com/go-openapi/swag/typeutils v0.25.4/go.mod h1:Ou7g//Wx8tTLS9vG0UmzfCsjZjKhpjxayRKTHXf2pTE= -github.com/go-openapi/swag/yamlutils v0.25.4 h1:6jdaeSItEUb7ioS9lFoCZ65Cne1/RZtPBZ9A56h92Sw= -github.com/go-openapi/swag/yamlutils v0.25.4/go.mod h1:MNzq1ulQu+yd8Kl7wPOut/YHAAU/H6hL91fF+E2RFwc= -github.com/go-openapi/testify/enable/yaml/v2 v2.0.2 h1:0+Y41Pz1NkbTHz8NngxTuAXxEodtNSI1WG1c/m5Akw4= -github.com/go-openapi/testify/enable/yaml/v2 v2.0.2/go.mod h1:kme83333GCtJQHXQ8UKX3IBZu6z8T5Dvy5+CW3NLUUg= -github.com/go-openapi/testify/v2 v2.0.2 h1:X999g3jeLcoY8qctY/c/Z8iBHTbwLz7R2WXd6Ub6wls= -github.com/go-openapi/testify/v2 v2.0.2/go.mod h1:HCPmvFFnheKK2BuwSA0TbbdxJ3I16pjwMkYkP4Ywn54= -github.com/go-openapi/validate v0.25.1 h1:sSACUI6Jcnbo5IWqbYHgjibrhhmt3vR6lCzKZnmAgBw= -github.com/go-openapi/validate v0.25.1/go.mod h1:RMVyVFYte0gbSTaZ0N4KmTn6u/kClvAFp+mAVfS/DQc= +github.com/go-openapi/analysis v0.25.0 h1:EnjAq1yO8wEO9HbPmY8vLPEIkdZuuFhCAKBPvCB7bCs= +github.com/go-openapi/analysis v0.25.0/go.mod h1:5WFTRE43WLkPG9r9OtlMfqkkvUTYLVVCIxLlEpyF8kE= +github.com/go-openapi/errors v0.22.7 h1:JLFBGC0Apwdzw3484MmBqspjPbwa2SHvpDm0u5aGhUA= +github.com/go-openapi/errors v0.22.7/go.mod h1://QW6SD9OsWtH6gHllUCddOXDL0tk0ZGNYHwsw4sW3w= +github.com/go-openapi/jsonpointer v0.22.5 h1:8on/0Yp4uTb9f4XvTrM2+1CPrV05QPZXu+rvu2o9jcA= +github.com/go-openapi/jsonpointer v0.22.5/go.mod h1:gyUR3sCvGSWchA2sUBJGluYMbe1zazrYWIkWPjjMUY0= +github.com/go-openapi/jsonreference v0.21.5 h1:6uCGVXU/aNF13AQNggxfysJ+5ZcU4nEAe+pJyVWRdiE= +github.com/go-openapi/jsonreference v0.21.5/go.mod h1:u25Bw85sX4E2jzFodh1FOKMTZLcfifd1Q+iKKOUxExw= +github.com/go-openapi/loads v0.23.3 h1:g5Xap1JfwKkUnZdn+S0L3SzBDpcTIYzZ5Qaag0YDkKQ= +github.com/go-openapi/loads v0.23.3/go.mod h1:NOH07zLajXo8y55hom0omlHWDVVvCwBM/S+csCK8LqA= +github.com/go-openapi/runtime v0.29.3 h1:h5twGaEqxtQg40ePiYm9vFFH1q06Czd7Ot6ufdK0w/Y= +github.com/go-openapi/runtime v0.29.3/go.mod h1:8A1W0/L5eyNJvKciqZtvIVQvYO66NlB7INMSZ9bw/oI= +github.com/go-openapi/spec v0.22.4 h1:4pxGjipMKu0FzFiu/DPwN3CTBRlVM2yLf/YTWorYfDQ= +github.com/go-openapi/spec v0.22.4/go.mod h1:WQ6Ai0VPWMZgMT4XySjlRIE6GP1bGQOtEThn3gcWLtQ= +github.com/go-openapi/strfmt v0.26.1 h1:7zGCHji7zSYDC2tCXIusoxYQz/48jAf2q+sF6wXTG+c= +github.com/go-openapi/strfmt v0.26.1/go.mod h1:Zslk5VZPOISLwmWTMBIS7oiVFem1o1EI6zULY8Uer7Y= +github.com/go-openapi/swag v0.25.5 h1:pNkwbUEeGwMtcgxDr+2GBPAk4kT+kJ+AaB+TMKAg+TU= +github.com/go-openapi/swag v0.25.5/go.mod h1:B3RT6l8q7X803JRxa2e59tHOiZlX1t8viplOcs9CwTA= +github.com/go-openapi/swag/cmdutils v0.25.5 h1:yh5hHrpgsw4NwM9KAEtaDTXILYzdXh/I8Whhx9hKj7c= +github.com/go-openapi/swag/cmdutils v0.25.5/go.mod h1:pdae/AFo6WxLl5L0rq87eRzVPm/XRHM3MoYgRMvG4A0= +github.com/go-openapi/swag/conv v0.25.5 h1:wAXBYEXJjoKwE5+vc9YHhpQOFj2JYBMF2DUi+tGu97g= +github.com/go-openapi/swag/conv v0.25.5/go.mod h1:CuJ1eWvh1c4ORKx7unQnFGyvBbNlRKbnRyAvDvzWA4k= +github.com/go-openapi/swag/fileutils v0.25.5 h1:B6JTdOcs2c0dBIs9HnkyTW+5gC+8NIhVBUwERkFhMWk= +github.com/go-openapi/swag/fileutils v0.25.5/go.mod h1:V3cT9UdMQIaH4WiTrUc9EPtVA4txS0TOmRURmhGF4kc= +github.com/go-openapi/swag/jsonname v0.25.5 h1:8p150i44rv/Drip4vWI3kGi9+4W9TdI3US3uUYSFhSo= +github.com/go-openapi/swag/jsonname v0.25.5/go.mod h1:jNqqikyiAK56uS7n8sLkdaNY/uq6+D2m2LANat09pKU= +github.com/go-openapi/swag/jsonutils v0.25.5 h1:XUZF8awQr75MXeC+/iaw5usY/iM7nXPDwdG3Jbl9vYo= +github.com/go-openapi/swag/jsonutils v0.25.5/go.mod h1:48FXUaz8YsDAA9s5AnaUvAmry1UcLcNVWUjY42XkrN4= +github.com/go-openapi/swag/jsonutils/fixtures_test v0.25.5 h1:SX6sE4FrGb4sEnnxbFL/25yZBb5Hcg1inLeErd86Y1U= +github.com/go-openapi/swag/jsonutils/fixtures_test v0.25.5/go.mod h1:/2KvOTrKWjVA5Xli3DZWdMCZDzz3uV/T7bXwrKWPquo= +github.com/go-openapi/swag/loading v0.25.5 h1:odQ/umlIZ1ZVRteI6ckSrvP6e2w9UTF5qgNdemJHjuU= +github.com/go-openapi/swag/loading v0.25.5/go.mod h1:I8A8RaaQ4DApxhPSWLNYWh9NvmX2YKMoB9nwvv6oW6g= +github.com/go-openapi/swag/mangling v0.25.5 h1:hyrnvbQRS7vKePQPHHDso+k6CGn5ZBs5232UqWZmJZw= +github.com/go-openapi/swag/mangling v0.25.5/go.mod h1:6hadXM/o312N/h98RwByLg088U61TPGiltQn71Iw0NY= +github.com/go-openapi/swag/netutils v0.25.5 h1:LZq2Xc2QI8+7838elRAaPCeqJnHODfSyOa7ZGfxDKlU= +github.com/go-openapi/swag/netutils v0.25.5/go.mod h1:lHbtmj4m57APG/8H7ZcMMSWzNqIQcu0RFiXrPUara14= +github.com/go-openapi/swag/stringutils v0.25.5 h1:NVkoDOA8YBgtAR/zvCx5rhJKtZF3IzXcDdwOsYzrB6M= +github.com/go-openapi/swag/stringutils v0.25.5/go.mod h1:PKK8EZdu4QJq8iezt17HM8RXnLAzY7gW0O1KKarrZII= +github.com/go-openapi/swag/typeutils v0.25.5 h1:EFJ+PCga2HfHGdo8s8VJXEVbeXRCYwzzr9u4rJk7L7E= +github.com/go-openapi/swag/typeutils v0.25.5/go.mod h1:itmFmScAYE1bSD8C4rS0W+0InZUBrB2xSPbWt6DLGuc= +github.com/go-openapi/swag/yamlutils v0.25.5 h1:kASCIS+oIeoc55j28T4o8KwlV2S4ZLPT6G0iq2SSbVQ= +github.com/go-openapi/swag/yamlutils v0.25.5/go.mod h1:Gek1/SjjfbYvM+Iq4QGwa/2lEXde9n2j4a3wI3pNuOQ= +github.com/go-openapi/testify/enable/yaml/v2 v2.4.1 h1:NZOrZmIb6PTv5LTFxr5/mKV/FjbUzGE7E6gLz7vFoOQ= +github.com/go-openapi/testify/enable/yaml/v2 v2.4.1/go.mod h1:r7dwsujEHawapMsxA69i+XMGZrQ5tRauhLAjV/sxg3Q= +github.com/go-openapi/testify/v2 v2.4.1 h1:zB34HDKj4tHwyUQHrUkpV0Q0iXQ6dUCOQtIqn8hE6Iw= +github.com/go-openapi/testify/v2 v2.4.1/go.mod h1:HCPmvFFnheKK2BuwSA0TbbdxJ3I16pjwMkYkP4Ywn54= +github.com/go-openapi/validate v0.25.2 h1:12NsfLAwGegqbGWr2CnvT65X/Q2USJipmJ9b7xDJZz0= +github.com/go-openapi/validate v0.25.2/go.mod h1:Pgl1LpPPGFnZ+ys4/hTlDiRYQdI1ocKypgE+8Q8BLfY= github.com/go-playground/assert/v2 v2.2.0 h1:JvknZsQTYeFEAhQwI4qEt9cyV5ONwRHC+lYKSsYSR8s= github.com/go-playground/assert/v2 v2.2.0/go.mod h1:VDjEfimB/XKnb+ZQfWdccd7VUvScMdVu0Titje2rxJ4= github.com/go-playground/locales v0.14.1 h1:EWaQ/wswjilfKLTECiXz7Rh+3BjFhfDFKv/oXslEjJA= github.com/go-playground/locales v0.14.1/go.mod h1:hxrqLVvrK65+Rwrd5Fc6F2O76J/NuW9t0sjnWqG1slY= github.com/go-playground/universal-translator v0.18.1 h1:Bcnm0ZwsGyWbCzImXv+pAJnYK9S473LQFuzCbDbfSFY= github.com/go-playground/universal-translator v0.18.1/go.mod h1:xekY+UJKNuX9WP91TpwSH2VMlDf28Uj24BCp08ZFTUY= -github.com/go-playground/validator/v10 v10.20.0 h1:K9ISHbSaI0lyB2eWMPJo+kOS/FBExVwjEviJTixqxL8= -github.com/go-playground/validator/v10 v10.20.0/go.mod h1:dbuPbCMFw/DrkbEynArYaCwl3amGuJotoKCe95atGMM= +github.com/go-playground/validator/v10 v10.30.1 h1:f3zDSN/zOma+w6+1Wswgd9fLkdwy06ntQJp0BBvFG0w= +github.com/go-playground/validator/v10 v10.30.1/go.mod h1:oSuBIQzuJxL//3MelwSLD5hc2Tu889bF0Idm9Dg26cM= github.com/go-resty/resty/v2 v2.17.1 h1:x3aMpHK1YM9e4va/TMDRlusDDoZiQ+ViDu/WpA6xTM4= github.com/go-resty/resty/v2 v2.17.1/go.mod h1:kCKZ3wWmwJaNc7S29BRtUhJwy7iqmn+2mLtQrOyQlVA= github.com/go-stack/stack v1.8.0/go.mod h1:v0f6uXyyMGvRgIKkXu+yp6POWl0qKG85gN/melR3HDY= @@ -250,15 +250,15 @@ github.com/go-viper/mapstructure/v2 v2.5.0 h1:vM5IJoUAy3d7zRSVtIwQgBj7BiWtMPfmPE github.com/go-viper/mapstructure/v2 v2.5.0/go.mod h1:oJDH3BJKyqBA2TXFhDsKDGDTlndYOZ6rGS0BRZIxGhM= github.com/go-zookeeper/zk v1.0.4 h1:DPzxraQx7OrPyXq2phlGlNSIyWEsAox0RJmjTseMV6I= github.com/go-zookeeper/zk v1.0.4/go.mod h1:nOB03cncLtlp4t+UAkGSV+9beXP/akpekBwL+UX1Qcw= -github.com/goccy/go-json v0.10.5 h1:Fq85nIqj+gXn/S5ahsiTlK3TmC85qgirsdTP/+DeaC4= -github.com/goccy/go-json v0.10.5/go.mod h1:oq7eo15ShAhp70Anwd5lgX2pLfOS3QCiwU/PULtXL6M= +github.com/goccy/go-json v0.10.6 h1:p8HrPJzOakx/mn/bQtjgNjdTcN+/S6FcG2CTtQOrHVU= +github.com/goccy/go-json v0.10.6/go.mod h1:oq7eo15ShAhp70Anwd5lgX2pLfOS3QCiwU/PULtXL6M= github.com/goccy/go-yaml v1.19.2 h1:PmFC1S6h8ljIz6gMRBopkjP1TVT7xuwrButHID66PoM= github.com/goccy/go-yaml v1.19.2/go.mod h1:XBurs7gK8ATbW4ZPGKgcbrY1Br56PdM69F7LkFRi1kA= github.com/gogo/protobuf v1.1.1/go.mod h1:r8qH/GZQm5c6nD/R0oafs1akxWv10x8SbQlK7atdtwQ= github.com/gogo/protobuf v1.3.2 h1:Ov1cvc58UF3b5XjBnZv7+opcTcQFZebYjWzi34vdm4Q= github.com/gogo/protobuf v1.3.2/go.mod h1:P1XiOD3dCwIKUDQYPy72D8LYyHL2YPYrpS2s69NZV8Q= -github.com/golang-jwt/jwt/v5 v5.3.0 h1:pv4AsKCKKZuqlgs5sUmn4x8UlGa0kEVt/puTpKx9vvo= -github.com/golang-jwt/jwt/v5 v5.3.0/go.mod h1:fxCRLWMO43lRc8nhHWY6LGqRcf+1gQWArsqaEUEa5bE= +github.com/golang-jwt/jwt/v5 v5.3.1 h1:kYf81DTWFe7t+1VvL7eS+jKFVWaUnK9cB1qbwn63YCY= +github.com/golang-jwt/jwt/v5 v5.3.1/go.mod h1:fxCRLWMO43lRc8nhHWY6LGqRcf+1gQWArsqaEUEa5bE= github.com/golang/protobuf v1.2.0/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= github.com/golang/protobuf v1.3.1/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= github.com/golang/protobuf v1.3.2/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= @@ -273,26 +273,26 @@ github.com/google/gnostic-models v0.7.1 h1:SisTfuFKJSKM5CPZkffwi6coztzzeYUhc3v4y github.com/google/gnostic-models v0.7.1/go.mod h1:whL5G0m6dmc5cPxKc5bdKdEN3UjI7OUGxBlw57miDrQ= github.com/google/go-cmp v0.3.1/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU= github.com/google/go-cmp v0.4.0/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= -github.com/google/go-cmp v0.5.2/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= +github.com/google/go-cmp v0.6.0/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/go-querystring v1.1.0 h1:AnCroh3fv4ZBgVIf1Iwtovgjaw/GiKJo8M8yD/fhyJ8= -github.com/google/go-querystring v1.1.0/go.mod h1:Kcdr2DB4koayq7X8pmAG4sNG59So17icRSOU623lUBU= +github.com/google/go-querystring v1.2.0 h1:yhqkPbu2/OH+V9BfpCVPZkNmUXhb2gBxJArfhIxNtP0= +github.com/google/go-querystring v1.2.0/go.mod h1:8IFJqpSRITyJ8QhQ13bmbeMBDfmeEJZD5A0egEOmkqU= 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-20260115054156-294ebfa9ad83 h1:z2ogiKUYzX5Is6zr/vP9vJGqPwcdqsWjOt+V8J7+bTc= -github.com/google/pprof v0.0.0-20260115054156-294ebfa9ad83/go.mod h1:MxpfABSjhmINe3F1It9d+8exIHFvUqtLIRCdOGNXqiI= +github.com/google/pprof v0.0.0-20260202012954-cb029daf43ef h1:xpF9fUHpoIrrjX24DURVKiwHcFpw19ndIs+FwTSMbno= +github.com/google/pprof v0.0.0-20260202012954-cb029daf43ef/go.mod h1:MxpfABSjhmINe3F1It9d+8exIHFvUqtLIRCdOGNXqiI= github.com/google/s2a-go v0.1.9 h1:LGD7gtMgezd8a/Xak7mEWL0PjoTQFvpRudN895yqKW0= github.com/google/s2a-go v0.1.9/go.mod h1:YA0Ei2ZQL3acow2O62kdp9UlnvMmU7kA6Eutn0dXayM= 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/googleapis/enterprise-certificate-proxy v0.3.7 h1:zrn2Ee/nWmHulBx5sAVrGgAa0f2/R35S4DJwfFaUPFQ= -github.com/googleapis/enterprise-certificate-proxy v0.3.7/go.mod h1:MkHOF77EYAE7qfSuSS9PU6g4Nt4e11cnsDUowfwewLA= -github.com/googleapis/gax-go/v2 v2.15.0 h1:SyjDc1mGgZU5LncH8gimWo9lW1DtIfPibOG81vgd/bo= -github.com/googleapis/gax-go/v2 v2.15.0/go.mod h1:zVVkkxAQHa1RQpg9z2AUCMnKhi0Qld9rcmyfL1OZhoc= -github.com/gophercloud/gophercloud/v2 v2.9.0 h1:Y9OMrwKF9EDERcHFSOTpf/6XGoAI0yOxmsLmQki4LPM= -github.com/gophercloud/gophercloud/v2 v2.9.0/go.mod h1:Ki/ILhYZr/5EPebrPL9Ej+tUg4lqx71/YH2JWVeU+Qk= +github.com/googleapis/enterprise-certificate-proxy v0.3.11 h1:vAe81Msw+8tKUxi2Dqh/NZMz7475yUvmRIkXr4oN2ao= +github.com/googleapis/enterprise-certificate-proxy v0.3.11/go.mod h1:RFV7MUdlb7AgEq2v7FmMCfeSMCllAzWxFgRdusoGks8= +github.com/googleapis/gax-go/v2 v2.16.0 h1:iHbQmKLLZrexmb0OSsNGTeSTS0HO4YvFOG8g5E4Zd0Y= +github.com/googleapis/gax-go/v2 v2.16.0/go.mod h1:o1vfQjjNZn4+dPnRdl/4ZD7S9414Y4xA+a/6Icj6l14= +github.com/gophercloud/gophercloud/v2 v2.10.0 h1:NRadC0aHNvy4iMoFXj5AFiPmut/Sj3hAPAo9B59VMGc= +github.com/gophercloud/gophercloud/v2 v2.10.0/go.mod h1:Ki/ILhYZr/5EPebrPL9Ej+tUg4lqx71/YH2JWVeU+Qk= github.com/gorilla/websocket v1.5.4-0.20250319132907-e064f32e3674 h1:JeSE6pjso5THxAzdVpqr6/geYxZytqFMBCOtn/ujyeo= github.com/gorilla/websocket v1.5.4-0.20250319132907-e064f32e3674/go.mod h1:r4w70xmWCQKmi1ONH4KIaBptdivuRPyosB9RmPlGEwA= github.com/grafana/regexp v0.0.0-20250905093917-f7b3be9d1853 h1:cLN4IBkmkYZNnk7EAJ0BHIethd+J6LqxFNw5mSiI2bM= @@ -340,8 +340,8 @@ github.com/hashicorp/go-uuid v1.0.0/go.mod h1:6SBZvOh/SIDV7/2o3Jml5SYk/TvGqwFJ/b github.com/hashicorp/go-uuid v1.0.1/go.mod h1:6SBZvOh/SIDV7/2o3Jml5SYk/TvGqwFJ/bN7x4byOro= github.com/hashicorp/go-uuid v1.0.3 h1:2gKiV6YVmrJ1i2CKKa9obLvRieoRGviZFL26PcT/Co8= github.com/hashicorp/go-uuid v1.0.3/go.mod h1:6SBZvOh/SIDV7/2o3Jml5SYk/TvGqwFJ/bN7x4byOro= -github.com/hashicorp/go-version v1.8.0 h1:KAkNb1HAiZd1ukkxDFGmokVZe1Xy9HG6NUp+bPle2i4= -github.com/hashicorp/go-version v1.8.0/go.mod h1:fltr4n8CU8Ke44wwGCBoEymUuxUHl09ZGVZPK5anwXA= +github.com/hashicorp/go-version v1.9.0 h1:CeOIz6k+LoN3qX9Z0tyQrPtiB1DFYRPfCIBtaXPSCnA= +github.com/hashicorp/go-version v1.9.0/go.mod h1:fltr4n8CU8Ke44wwGCBoEymUuxUHl09ZGVZPK5anwXA= github.com/hashicorp/golang-lru v0.5.0/go.mod h1:/m3WP610KZHVQ1SGc6re/UDhFvYD7pJ4Ao+sR/qLZy8= github.com/hashicorp/golang-lru v0.6.0 h1:uL2shRDx7RTrOrTCUZEGP/wJUFiUI8QT6E7z5o8jga4= github.com/hashicorp/golang-lru v0.6.0/go.mod h1:iADmTwqILo4mZ8BN3D2Q6+9jd8WM5uGBxy+E8yxSoD4= @@ -350,16 +350,16 @@ github.com/hashicorp/mdns v1.0.4/go.mod h1:mtBihi+LeNXGtG8L9dX59gAEa12BDtBQSp4v/ github.com/hashicorp/memberlist v0.5.0/go.mod h1:yvyXLpo0QaGE59Y7hDTsTzDD25JYBZ4mHgHUZ8lrOI0= github.com/hashicorp/memberlist v0.5.4 h1:40YY+3qq2tAUhZIMEK8kqusKZBBjdwJ3NUjvYkcxh74= github.com/hashicorp/memberlist v0.5.4/go.mod h1:OgN6xiIo6RlHUWk+ALjP9e32xWCoQrsOCmHrWCm2MWA= -github.com/hashicorp/nomad/api v0.0.0-20251216171439-1dee0671280e h1:wGl06iy/H90NSbWjfXWeRwk9SJOks0u4voIryeJFlSA= -github.com/hashicorp/nomad/api v0.0.0-20251216171439-1dee0671280e/go.mod h1:sldFTIgs+FsUeKU3LwVjviAIuksxD8TzDOn02MYwslE= +github.com/hashicorp/nomad/api v0.0.0-20260205205048-8315996478d1 h1:2T7Ay5FMAnZUBxSbrkjufY5YKiLPWij0dDPnbM/KYak= +github.com/hashicorp/nomad/api v0.0.0-20260205205048-8315996478d1/go.mod h1:JAmS1nGJ1KcTM+MHAkgyrL0GDbsnKiJsp75KyqO2wWc= github.com/hashicorp/serf v0.10.1 h1:Z1H2J60yRKvfDYAOZLd2MU0ND4AH/WDz7xYHDWQsIPY= github.com/hashicorp/serf v0.10.1/go.mod h1:yL2t6BqATOLGc5HF7qbFkTfXoPIY0WZdWHfEvMqbG+4= -github.com/hetznercloud/hcloud-go/v2 v2.32.0 h1:BRe+k7ESdYv3xQLBGdKUfk+XBFRJNGKzq70nJI24ciM= -github.com/hetznercloud/hcloud-go/v2 v2.32.0/go.mod h1:hAanyyfn9M0cMmZ68CXzPCF54KRb9EXd8eiE2FHKGIE= +github.com/hetznercloud/hcloud-go/v2 v2.36.0 h1:HlLL/aaVXUulqe+rsjoJmrxKhPi1MflL5O9iq5QEtvo= +github.com/hetznercloud/hcloud-go/v2 v2.36.0/go.mod h1:MnN/QJEa/RYNQiiVoJjNHPntM7Z1wlYPgJ2HA40/cDE= github.com/inconshreveable/mousetrap v1.1.0 h1:wN+x4NVGpMsO7ErUn/mUI3vEoE6Jt13X2s0bqwp9tc8= github.com/inconshreveable/mousetrap v1.1.0/go.mod h1:vpF70FUmC8bwa3OWnCshd2FqLfsEA9PFc4w1p2J65bw= -github.com/ionos-cloud/sdk-go/v6 v6.3.5 h1:6fHArdV1lf50iRhCkCP7wkvGwWzVwi+l9w1t5mwkOa8= -github.com/ionos-cloud/sdk-go/v6 v6.3.5/go.mod h1:nUGHP4kZHAZngCVr4v6C8nuargFrtvt7GrzH/hqn7c4= +github.com/ionos-cloud/sdk-go/v6 v6.3.6 h1:l/TtKgdQ1wUH3DDe2SfFD78AW+TJWdEbDpQhHkWd6CM= +github.com/ionos-cloud/sdk-go/v6 v6.3.6/go.mod h1:nUGHP4kZHAZngCVr4v6C8nuargFrtvt7GrzH/hqn7c4= github.com/jarcoal/httpmock v1.4.1 h1:0Ju+VCFuARfFlhVXFc2HxlcQkfB+Xq12/EotHko+x2A= github.com/jarcoal/httpmock v1.4.1/go.mod h1:ftW1xULwo+j0R0JJkJIIi7UKigZUXCLLanykgjwBXL0= github.com/jpillora/backoff v1.0.0 h1:uvFg412JmmHBHw7iwprIxkPMI+sGQ4kzOWsMeHnm2EA= @@ -373,12 +373,10 @@ github.com/keybase/go-keychain v0.0.1 h1:way+bWYa6lDppZoZcgMbYsvC7GxljxrskdNInRt github.com/keybase/go-keychain v0.0.1/go.mod h1:PdEILRW3i9D8JcdM+FmY6RwkHGnhHxXwkPPMeUgOK1k= 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.2 h1:iiPHWW0YrcFgpBYhsA6D1+fqHssJscY/Tm/y2Uqnapk= -github.com/klauspost/compress v1.18.2/go.mod h1:R0h/fSBs8DE4ENlcrlib3PsXS61voFxhIs2DeRhCvJ4= -github.com/klauspost/cpuid/v2 v2.0.9/go.mod h1:FInQzS24/EEf25PyTYn52gqo7WaD8xa0213Md/qVLRg= -github.com/klauspost/cpuid/v2 v2.2.10 h1:tBs3QSyvjDyFTq3uoc/9xFpCuOsJQFNPiAhYdw2skhE= -github.com/klauspost/cpuid/v2 v2.2.10/go.mod h1:hqwkgyIinND0mEev00jJYCxPNVRVXFQeu1XKlok6oO0= -github.com/knz/go-libedit v1.10.1/go.mod h1:MZTVkCWyz0oBc7JOWP3wNAzd002ZbM/5hgShxwh4x8M= +github.com/klauspost/compress v1.18.3 h1:9PJRvfbmTabkOX8moIpXPbMMbYN60bWImDDU7L+/6zw= +github.com/klauspost/compress v1.18.3/go.mod h1:R0h/fSBs8DE4ENlcrlib3PsXS61voFxhIs2DeRhCvJ4= +github.com/klauspost/cpuid/v2 v2.3.0 h1:S4CRMLnYUhGeDFDqkGriYKdfoFlDnMtqTiI/sFzhA9Y= +github.com/klauspost/cpuid/v2 v2.3.0/go.mod h1:hqwkgyIinND0mEev00jJYCxPNVRVXFQeu1XKlok6oO0= github.com/kolo/xmlrpc v0.0.0-20220921171641-a4b6fa1dd06b h1:udzkj9S/zlT5X367kqJis0QP7YMxobob6zhzq6Yre00= github.com/kolo/xmlrpc v0.0.0-20220921171641-a4b6fa1dd06b/go.mod h1:pcaDhQK0/NJZEvtCO0qQPPropqV0sJOJ6YW7X+9kRwM= github.com/konsorten/go-windows-terminal-sequences v1.0.1/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ= @@ -394,21 +392,20 @@ github.com/kylelemons/godebug v1.1.0 h1:RPNrshWIDI6G2gRW9EHilWtl7Z6Sb1BR0xunSBf0 github.com/kylelemons/godebug v1.1.0/go.mod h1:9/0rRGxNHcop5bhtWyNeEfOS8JIWk580+fNqagV/RAw= github.com/leodido/go-urn v1.4.0 h1:WT9HwE9SGECu3lg4d/dIA+jxlljEa1/ffXKmRjqdmIQ= github.com/leodido/go-urn v1.4.0/go.mod h1:bvxc+MVxLKB4z00jd1z+Dvzr47oO32F/QSNjSBOlFxI= -github.com/linode/linodego v1.63.0 h1:MdjizfXNJDVJU6ggoJmMO5O9h4KGPGivNX0fzrAnstk= -github.com/linode/linodego v1.63.0/go.mod h1:GoiwLVuLdBQcAebxAVKVL3mMYUgJZR/puOUSla04xBE= +github.com/linode/linodego v1.65.0 h1:SdsuGD8VSsPWeShXpE7ihl5vec+fD3MgwhnfYC/rj7k= +github.com/linode/linodego v1.65.0/go.mod h1:tOFiTErdjkbVnV+4S0+NmIE9dqqZUEM2HsJaGu8wMh8= github.com/mattn/go-colorable v0.0.9/go.mod h1:9vuHe8Xs5qXnSaW/c/ABM9alt+Vo+STaOChaDxuIBZU= github.com/mattn/go-colorable v0.1.4/go.mod h1:U0ppj6V5qS13XJ6of8GYAs25YV2eR4EVcfRqFIhoBtE= github.com/mattn/go-colorable v0.1.6/go.mod h1:u6P/XSegPjTcexA+o6vUJrdnUu04hMope9wVRipJSqc= github.com/mattn/go-colorable v0.1.9/go.mod h1:u6P/XSegPjTcexA+o6vUJrdnUu04hMope9wVRipJSqc= github.com/mattn/go-colorable v0.1.12/go.mod h1:u5H1YNBxpqRaxsYJYSkiCWKzEfiAb1Gb520KVy5xxl4= -github.com/mattn/go-colorable v0.1.13 h1:fFA4WZxdEF4tXPZVKMLwD8oUnCTTo08duU7wxecdEvA= -github.com/mattn/go-colorable v0.1.13/go.mod h1:7S9/ev0klgBDR4GtXTXX8a3vIGJpMovkB8vQcUbaXHg= +github.com/mattn/go-colorable v0.1.14 h1:9A9LHSqF/7dyVVX6g0U9cwm9pG3kP9gSzcuIPHPsaIE= +github.com/mattn/go-colorable v0.1.14/go.mod h1:6LmQG8QLFO4G5z1gPvYEzlUgJ2wF+stgPZH1UqBm1s8= github.com/mattn/go-isatty v0.0.3/go.mod h1:M+lRXTBqGeGNdLjl/ufCoiOlB5xdOkqRJdNxMWT7Zi4= github.com/mattn/go-isatty v0.0.8/go.mod h1:Iq45c/XA43vh69/j3iqttzPXn0bhXyGjM0Hdxcsrc5s= github.com/mattn/go-isatty v0.0.11/go.mod h1:PhnuNfih5lzO57/f3n+odYbM4JtupLOxQOAqxQCu2WE= github.com/mattn/go-isatty v0.0.12/go.mod h1:cbi8OIDigv2wuxKPP5vlRcQ1OAZbq2CE4Kysco4FUpU= github.com/mattn/go-isatty v0.0.14/go.mod h1:7GGIvUiUoEMVVmxf/4nioHXj79iQHKdU27kJ6hsGG94= -github.com/mattn/go-isatty v0.0.16/go.mod h1:kYGgaQfpe5nmfYZH+SKPsOc2e4SrIfOl2e/yFXSvRLM= github.com/mattn/go-isatty v0.0.20 h1:xfD0iDuEKnDkl03q4limB+vH+GxLEtL/jb4xVJSWWEY= github.com/mattn/go-isatty v0.0.20/go.mod h1:W+V8PltTTMOvKvAeJH7IuucS94S2C6jfK/D7dTCTo3Y= github.com/matttproud/golang_protobuf_extensions v1.0.1/go.mod h1:D8He9yQNgCq6Z5Ld7szi9bcBfOoFv/3dc6xSMkL2PC0= @@ -418,8 +415,8 @@ github.com/metalmatze/signal v0.0.0-20210307161603-1c9aa721a97a h1:0usWxe5SGXKQo github.com/metalmatze/signal v0.0.0-20210307161603-1c9aa721a97a/go.mod h1:3OETvrxfELvGsU2RoGGWercfeZ4bCL3+SOwzIWtJH/Q= github.com/miekg/dns v1.1.26/go.mod h1:bPDLeHnStXmXAq1m/Ch/hvfNHr14JKNPMBo3VZKjuso= github.com/miekg/dns v1.1.41/go.mod h1:p6aan82bvRIyn+zDIv9xYNUpwa73JcSh9BKwknJysuI= -github.com/miekg/dns v1.1.69 h1:Kb7Y/1Jo+SG+a2GtfoFUfDkG//csdRPwRLkCsxDG9Sc= -github.com/miekg/dns v1.1.69/go.mod h1:7OyjD9nEba5OkqQ/hB4fy3PIoxafSZJtducccIelz3g= +github.com/miekg/dns v1.1.72 h1:vhmr+TF2A3tuoGNkLDFK9zi36F2LS+hKTRW0Uf8kbzI= +github.com/miekg/dns v1.1.72/go.mod h1:+EuEPhdHOsfk6Wk5TT2CzssZdqkmFhf8r+aVyDEToIs= github.com/mitchellh/cli v1.1.0/go.mod h1:xcISNoH86gajksDmfB23e/pu+B+GeFRMYmoHXxx3xhI= github.com/mitchellh/go-homedir v1.1.0 h1:lukF9ziXFxDFPkA1vsr5zpc1XuPDn/wFntq5mG+4E0Y= github.com/mitchellh/go-homedir v1.1.0/go.mod h1:SfyaCUpYCn1Vlf4IUYiD9fPX4A5wJrkLzIz1N1q0pr0= @@ -432,8 +429,8 @@ github.com/moby/sys/atomicwriter v0.1.0 h1:kw5D/EqkBwsBFi0ss9v1VG3wIkVhzGvLklJ+w github.com/moby/sys/atomicwriter v0.1.0/go.mod h1:Ul8oqv2ZMNHOceF643P6FKPXeCmYtlQMvpizfsSoaWs= github.com/moby/sys/sequential v0.6.0 h1:qrx7XFUd/5DxtqcoH1h438hF5TmOvzC/lspjy7zgvCU= github.com/moby/sys/sequential v0.6.0/go.mod h1:uyv8EUTrca5PnDsdMGXhZe6CCe8U/UiTWd+lL+7b/Ko= -github.com/moby/term v0.5.0 h1:xt8Q1nalod/v7BqbG21f8mQPqH+xAaC9C3N3wfWbVP0= -github.com/moby/term v0.5.0/go.mod h1:8FzsFHVUBGZdbDsJw/ot+X+d5HLUbvklYLJ9uGfcI3Y= +github.com/moby/term v0.5.2 h1:6qk3FJAFDs6i/q3W/pQ97SX192qKfZgGjCQqfCJkgzQ= +github.com/moby/term v0.5.2/go.mod h1:d3djjFCrjnB+fl8NJux+EJzu0msscUP+f8it8hPkFLc= github.com/modern-go/concurrent v0.0.0-20180228061459-e0a39a4cb421/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q= github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd h1:TRLaZ9cD/w8PVh93nsPXa1VrQ6jlwL5oN8l14QlcNfg= github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q= @@ -442,8 +439,8 @@ github.com/modern-go/reflect2 v1.0.1/go.mod h1:bx2lNnkwVCuqBIxFjflWJWanXIb3Rllmb github.com/modern-go/reflect2 v1.0.2/go.mod h1:yWuevngMOJpCy52FWWMvUC8ws7m/LJsjYzDa0/r8luk= github.com/modern-go/reflect2 v1.0.3-0.20250322232337-35a7c28c31ee h1:W5t00kpgFdJifH4BDsTlE89Zl93FEloxaWZfGcifgq8= github.com/modern-go/reflect2 v1.0.3-0.20250322232337-35a7c28c31ee/go.mod h1:yWuevngMOJpCy52FWWMvUC8ws7m/LJsjYzDa0/r8luk= -github.com/morikuni/aec v1.0.0 h1:nP9CBfwrvYnBRgY6qfDQkygYDmYwOilePFkwzv4dU8A= -github.com/morikuni/aec v1.0.0/go.mod h1:BbKIizmSmc5MMPqRYbxO4ZU0S0+P200+tUnFx7PXmsc= +github.com/morikuni/aec v1.1.0 h1:vBBl0pUnvi/Je71dsRrhMBtreIqNMYErSAbEeb8jrXQ= +github.com/morikuni/aec v1.1.0/go.mod h1:xDRgiq/iw5l+zkao76YTKzKttOp2cwPEne25HDkJnBw= 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/mwitkow/go-conntrack v0.0.0-20161129095857-cc309e4a2223/go.mod h1:qRWi+5nqEBWmkhHvq77mSJWrCKwh8bxhgT7d/eI7P4U= @@ -451,8 +448,6 @@ github.com/mwitkow/go-conntrack v0.0.0-20190716064945-2f068394615f h1:KUppIJq7/+ github.com/mwitkow/go-conntrack v0.0.0-20190716064945-2f068394615f/go.mod h1:qRWi+5nqEBWmkhHvq77mSJWrCKwh8bxhgT7d/eI7P4U= github.com/oklog/run v1.2.0 h1:O8x3yXwah4A73hJdlrwo/2X6J62gE5qTMusH0dvz60E= github.com/oklog/run v1.2.0/go.mod h1:mgDbKRSwPhJfesJ4PntqFUbKQRZ50NgmZTSPlFA0YFk= -github.com/oklog/ulid v1.3.1 h1:EGfNDEx6MqHz8B3uNV6QAib1UR2Lm97sHi3ocA6ESJ4= -github.com/oklog/ulid v1.3.1/go.mod h1:CirwcVhetQ6Lv90oh/F+FBtV6XMibvdAFo93nm5qn4U= github.com/oklog/ulid/v2 v2.1.1 h1:suPZ4ARWLOJLegGFiZZ1dFAkqzhMjL3J1TzI+5wHz8s= github.com/oklog/ulid/v2 v2.1.1/go.mod h1:rcEKHmBBKfef9DhnvX7y1HZBYxjXb0cP5ExxNsTT1QQ= github.com/onsi/ginkgo/v2 v2.28.1 h1:S4hj+HbZp40fNKuLUQOYLDgZLwNUVn19N3Atb98NCyI= @@ -461,15 +456,16 @@ github.com/onsi/gomega v1.39.1 h1:1IJLAad4zjPn2PsnhH70V4DKRFlrCzGBNrNaru+Vf28= github.com/onsi/gomega v1.39.1/go.mod h1:hL6yVALoTOxeWudERyfppUcZXjMwIMLnuSfruD2lcfg= github.com/opencontainers/go-digest v1.0.0 h1:apOUWs51W5PlhuyGyz9FCeeBIOUDA/6nW8Oi/yOhh5U= github.com/opencontainers/go-digest v1.0.0/go.mod h1:0JzlMkj0TRzQZfJkVvzbP0HBR3IKzErnv2BNG4W4MAM= -github.com/opencontainers/image-spec v1.0.2 h1:9yCKha/T5XdGtO0q9Q9a6T5NUCsTn/DrBg0D7ufOcFM= -github.com/opencontainers/image-spec v1.0.2/go.mod h1:BtxoFyWECRxE4U/7sNtV5W15zMzWCbyJoFRP3s7yZA0= +github.com/opencontainers/image-spec v1.1.1 h1:y0fUlFfIZhPF1W537XOLg0/fcx6zcHCJwooC2xJA040= +github.com/opencontainers/image-spec v1.1.1/go.mod h1:qpqAh3Dmcf36wStyyWU+kCeDgrGnAve2nCC8+7h8Q0M= github.com/ovh/go-ovh v1.9.0 h1:6K8VoL3BYjVV3In9tPJUdT7qMx9h0GExN9EXx1r2kKE= github.com/ovh/go-ovh v1.9.0/go.mod h1:cTVDnl94z4tl8pP1uZ/8jlVxntjSIf09bNcQ5TJSC7c= github.com/pascaldekloe/goe v0.0.0-20180627143212-57f6aae5913c/go.mod h1:lzWF7FIEvWOWxwDKqyGYQf6ZUaNfKdP144TG7ZOy1lc= github.com/pascaldekloe/goe v0.1.0 h1:cBOtyMzM9HTpWjXfbbunk26uA6nG3a8n06Wieeh0MwY= github.com/pascaldekloe/goe v0.1.0/go.mod h1:lzWF7FIEvWOWxwDKqyGYQf6ZUaNfKdP144TG7ZOy1lc= -github.com/pelletier/go-toml/v2 v2.2.2 h1:aYUidT7k73Pcl9nb2gScu7NSrKCSHIDE89b3+6Wq+LM= -github.com/pelletier/go-toml/v2 v2.2.2/go.mod h1:1t835xjRzz80PqgE6HHgN2JOsmgYu/h4qDAS4n929Rs= +github.com/pborman/getopt v0.0.0-20170112200414-7148bc3a4c30/go.mod h1:85jBQOZwpVEaDAr341tbn15RS4fCAsIst0qp7i8ex1o= +github.com/pelletier/go-toml/v2 v2.2.4 h1:mye9XuhQ6gvn5h28+VilKrrPoQVanw5PMw/TB0t5Ec4= +github.com/pelletier/go-toml/v2 v2.2.4/go.mod h1:2gIqNv+qfxSVS7cM2xJQKtLSTLUE9V8t9Stt+h56mCY= github.com/pkg/browser v0.0.0-20240102092130-5ac0b6a4141c h1:+mdjkGKdHQG3305AYmdv1U2eRNDiU2ErMBj1gwrq8eQ= github.com/pkg/browser v0.0.0-20240102092130-5ac0b6a4141c/go.mod h1:7rwL4CYBLnjLxUqIJNnCWiEdr3bn6IUYi15bNlnbCCU= github.com/pkg/errors v0.8.0/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= @@ -485,22 +481,22 @@ github.com/posener/complete v1.1.1/go.mod h1:em0nMJCgc9GFtwrmVmEMR/ZL6WyhyjMBndr github.com/posener/complete v1.2.3/go.mod h1:WZIdtGGp+qx0sLrYKtIRAruyNpv6hFCicSgv7Sy7s/s= github.com/prometheus-community/prom-label-proxy v0.12.1 h1:vJ6tGz4NMge140Ua3T/zh3HO0CA3bmnCsfkWK/cujG0= github.com/prometheus-community/prom-label-proxy v0.12.1/go.mod h1:/tZNtOMcbPbE1VFcY8b48mPqT1bb2jVpXx2WdjjM8TY= -github.com/prometheus-operator/prometheus-operator v0.89.0 h1:2HA351OwWBa10H6TDhjeSdHOA7wiY71sEivg+z2cykk= -github.com/prometheus-operator/prometheus-operator v0.89.0/go.mod h1:GiMzmj3CFiZFCgSZwdI1vCLn3hPXlELwgPhwDV7BgBI= -github.com/prometheus-operator/prometheus-operator/pkg/apis/monitoring v0.89.0 h1:nZ9Ov2SbA8pWcyWKpf6AbQipG5Negg5CfDKWOEtnnwc= -github.com/prometheus-operator/prometheus-operator/pkg/apis/monitoring v0.89.0/go.mod h1:IJwk1oNs212afqGbNnE84GAB95OHtJR/BuI1rKESiYk= -github.com/prometheus-operator/prometheus-operator/pkg/client v0.89.0 h1:1vM3LYUbixaCObAhWj2JaDXVgq13laYGLVncKCQPjn4= -github.com/prometheus-operator/prometheus-operator/pkg/client v0.89.0/go.mod h1:SdM9A8pyN23e5KAPumIqCPjCG075srdLJCemqr3bV6w= -github.com/prometheus/alertmanager v0.31.0 h1:DQW02uIUNNiAa9AD9VA5xaFw5D+xrV+bocJc4gN9bEU= -github.com/prometheus/alertmanager v0.31.0/go.mod h1:zWPQwhbLt2ybee8rL921UONeQ59Oncash+m/hGP17tU= +github.com/prometheus-operator/prometheus-operator v0.90.1 h1:n/+FkLB6WpftBxJC8IEHrWXSA6uzNTocFmwU/ACkfeg= +github.com/prometheus-operator/prometheus-operator v0.90.1/go.mod h1:6zVIIBHX2EtF2rVb+GQY9v4Omdemo0z5Kfe9RMsMhss= +github.com/prometheus-operator/prometheus-operator/pkg/apis/monitoring v0.90.1 h1:URbjn501/IBFTzPtGXrYDXHi+ZcbP2W60o6JeTrY3vQ= +github.com/prometheus-operator/prometheus-operator/pkg/apis/monitoring v0.90.1/go.mod h1:Gfzi4500QCMnptFIQc8YdDi8YZ4QA0vs22LROWZ3+YU= +github.com/prometheus-operator/prometheus-operator/pkg/client v0.90.1 h1:14emoOxDK98By1T+lWp1TB3S+b4WAgLO1VU7SVnG+wU= +github.com/prometheus-operator/prometheus-operator/pkg/client v0.90.1/go.mod h1:0uAjHkx1IJGD8BqlDmz2rmxfPzan6KtYypSCRGff9lc= +github.com/prometheus/alertmanager v0.31.1 h1:eAmIC42lzbWslHkMt693T36qdxfyZULswiHr681YS3Q= +github.com/prometheus/alertmanager v0.31.1/go.mod h1:zWPQwhbLt2ybee8rL921UONeQ59Oncash+m/hGP17tU= github.com/prometheus/client_golang v0.9.1/go.mod h1:7SWBe2y4D6OKWSNQJUaRYU/AaXPKyh/dDVn+NZz0KFw= github.com/prometheus/client_golang v1.0.0/go.mod h1:db9x61etRT2tGnBNRi70OPL5FsnadC4Ky3P0J6CfImo= github.com/prometheus/client_golang v1.4.0/go.mod h1:e9GMxYsXl05ICDXkRhurwBS4Q3OK1iX/F2sw+iXX5zU= github.com/prometheus/client_golang v1.5.1/go.mod h1:e9GMxYsXl05ICDXkRhurwBS4Q3OK1iX/F2sw+iXX5zU= 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_golang/exp v0.0.0-20251212205219-7ba246a648ca h1:BOxmsLoL2ymn8lXJtorca7N/m+2vDQUDoEtPjf0iAxA= -github.com/prometheus/client_golang/exp v0.0.0-20251212205219-7ba246a648ca/go.mod h1:gndBHh3ZdjBozGcGrjUYjN3UJLRS3l2drALtu4lUt+k= +github.com/prometheus/client_golang/exp v0.0.0-20260108101519-fb0838f53562 h1:vwqZvuobg82U0gcG2eVrFH27806bUbNr32SvfRbvdsg= +github.com/prometheus/client_golang/exp v0.0.0-20260108101519-fb0838f53562/go.mod h1:PmAYDB13uBFBG9qE1qxZZgZWhg7Rg6SfKM5DMK7hjyI= github.com/prometheus/client_model v0.0.0-20180712105110-5c3871d89910/go.mod h1:MbSGuTsp3dbXC40dX6PRTWyKYBIrTGTE9sqQNg2J8bo= github.com/prometheus/client_model v0.0.0-20190129233127-fd36f4220a90/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= github.com/prometheus/client_model v0.2.0/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= @@ -517,16 +513,20 @@ github.com/prometheus/procfs v0.0.2/go.mod h1:TjEm7ze935MbeOT/UhFTIMYKhuLP4wbCsT github.com/prometheus/procfs v0.0.8/go.mod h1:7Qr8sr6344vo1JqZ6HhLceV9o3AJ1Ff+GxbHq6oeK9A= github.com/prometheus/procfs v0.20.1 h1:XwbrGOIplXW/AU3YhIhLODXMJYyC1isLFfYCsTEycfc= github.com/prometheus/procfs v0.20.1/go.mod h1:o9EMBZGRyvDrSPH1RqdxhojkuXstoe4UlK79eF5TGGo= -github.com/prometheus/prometheus v0.309.1 h1:jutK6eCYDpWdPTUbVbkcQsNCMO9CCkSwjQRMLds4jSo= -github.com/prometheus/prometheus v0.309.1/go.mod h1:d+dOGiVhuNDa4MaFXHVdnUBy/CzqlcNTooR8oM1wdTU= -github.com/prometheus/sigv4 v0.4.0 h1:s8oiq+S4ORkpjftnBvzObLrz5Hw49YwEhumNGBdfg4M= -github.com/prometheus/sigv4 v0.4.0/go.mod h1:D6dQeKEsDyUWzoNGjby5HgXshiOAbsz7vuApHTCmOxA= +github.com/prometheus/prometheus v0.310.0 h1:iS0Uul/dHjy8ifBnqo3YEOhRxlTOWantRoDWwmIowwA= +github.com/prometheus/prometheus v0.310.0/go.mod h1:rs6XoWKvgAStqxHxb2Twh1BR6rp7qw7fmUgW+gaXjbw= +github.com/prometheus/sigv4 v0.4.1 h1:EIc3j+8NBea9u1iV6O5ZAN8uvPq2xOIUPcqCTivHuXs= +github.com/prometheus/sigv4 v0.4.1/go.mod h1:eu+ZbRvsc5TPiHwqh77OWuCnWK73IdkETYY46P4dXOU= +github.com/quic-go/qpack v0.6.0 h1:g7W+BMYynC1LbYLSqRt8PBg5Tgwxn214ZZR34VIOjz8= +github.com/quic-go/qpack v0.6.0/go.mod h1:lUpLKChi8njB4ty2bFLX2x4gzDqXwUpaO1DP9qMDZII= +github.com/quic-go/quic-go v0.59.0 h1:OLJkp1Mlm/aS7dpKgTc6cnpynnD2Xg7C1pwL6vy/SAw= +github.com/quic-go/quic-go v0.59.0/go.mod h1:upnsH4Ju1YkqpLXC305eW3yDZ4NfnNbmQRCMWS58IKU= 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/russross/blackfriday/v2 v2.1.0/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM= github.com/ryanuber/columnize v0.0.0-20160712163229-9b3edd62028f/go.mod h1:sm1tb6uqfes/u+d4ooFouqFdy9/2g9QGwK3SQygK0Ts= -github.com/scaleway/scaleway-sdk-go v1.0.0-beta.35 h1:8xfn1RzeI9yoCUuEwDy08F+No6PcKZGEDOQ6hrRyLts= -github.com/scaleway/scaleway-sdk-go v1.0.0-beta.35/go.mod h1:47B1d/YXmSAxlJxUJxClzHR6b3T4M1WyCvwENPQNBWc= +github.com/scaleway/scaleway-sdk-go v1.0.0-beta.36 h1:ObX9hZmK+VmijreZO/8x9pQ8/P/ToHD/bdSb4Eg4tUo= +github.com/scaleway/scaleway-sdk-go v1.0.0-beta.36/go.mod h1:LEsDu4BubxK7/cWhtlQWfuxwL4rf/2UEpxXz1o1EMtM= github.com/sean-/seed v0.0.0-20170313163322-e2103e2c3529 h1:nn5Wsu0esKSJiIVhscUtVbo7ada43DJhG55ua/hjS5I= github.com/sean-/seed v0.0.0-20170313163322-e2103e2c3529/go.mod h1:DxrIzT+xaE7yg65j358z/aeFdxmN0P9QXhEzd20vsDc= github.com/shoenig/test v1.12.2 h1:ZVT8NeIUwGWpZcKaepPmFMoNQ3sVpxvqUh/MAqwFiJI= @@ -540,8 +540,8 @@ github.com/spf13/cobra v1.10.2/go.mod h1:7C1pvHqHw5A4vrJfjNwvOdzYu0Gml16OCs2GRiT github.com/spf13/pflag v1.0.9/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg= github.com/spf13/pflag v1.0.10 h1:4EBh2KAYBwaONj6b2Ye1GiHfwjqyROoF4RwYO+vPwFk= github.com/spf13/pflag v1.0.10/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg= -github.com/stackitcloud/stackit-sdk-go/core v0.20.1 h1:odiuhhRXmxvEvnVTeZSN9u98edvw2Cd3DcnkepncP3M= -github.com/stackitcloud/stackit-sdk-go/core v0.20.1/go.mod h1:fqto7M82ynGhEnpZU6VkQKYWYoFG5goC076JWXTUPRQ= +github.com/stackitcloud/stackit-sdk-go/core v0.21.1 h1:Y/PcAgM7DPYMNqum0MLv4n1mF9ieuevzcCIZYQfm3Ts= +github.com/stackitcloud/stackit-sdk-go/core v0.21.1/go.mod h1:osMglDby4csGZ5sIfhNyYq1bS1TxIdPY88+skE/kkmI= github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= github.com/stretchr/objx v0.1.1/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= github.com/stretchr/objx v0.4.0/go.mod h1:YvHI0jy2hoMjB+UWwv71VJQ9isScKT/TqJzVSSt89Yw= @@ -552,78 +552,80 @@ github.com/stretchr/testify v1.2.2/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXf github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI= github.com/stretchr/testify v1.4.0/go.mod h1:j7eGeouHqKxXV5pUuKE4zz7dFj8WfuZ+81PSLYec5m4= github.com/stretchr/testify v1.5.1/go.mod h1:5W2xD1RspED5o8YsWQXVCued0rvSQ+mT+I5cxcmMvtA= -github.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= github.com/stretchr/testify v1.7.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= github.com/stretchr/testify v1.7.2/go.mod h1:R6va5+xMeoiuVRoj+gSkQ7d3FALtqAAGI1FQKckRals= github.com/stretchr/testify v1.8.0/go.mod h1:yNjHg4UonilssWZ8iaSj1OCr/vHnekPRkoO+kdMU+MU= -github.com/stretchr/testify v1.8.1/go.mod h1:w2LPCIKwWwSfY2zedu0+kehJoqGctiVI29o6fzry7u4= github.com/stretchr/testify v1.8.4/go.mod h1:sz/lmYIOXD/1dqDmKjjqLyZ2RngseejIcXlSw2iwfAo= github.com/stretchr/testify v1.9.0/go.mod h1:r2ic/lqez/lEtzL7wO/rwa5dbSLXVDPFyf8C91i36aY= +github.com/stretchr/testify v1.10.0/go.mod h1:r2ic/lqez/lEtzL7wO/rwa5dbSLXVDPFyf8C91i36aY= 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/tv42/httpunix v0.0.0-20150427012821-b75d8614f926/go.mod h1:9ESjWnEqriFuLhtthL60Sar/7RFoluCcXsuvEwTV5KM= github.com/twitchyliquid64/golang-asm v0.15.1 h1:SU5vSMR7hnwNxj24w34ZyCi/FmDZTkS4MhqMhdFk5YI= github.com/twitchyliquid64/golang-asm v0.15.1/go.mod h1:a1lVb/DtPvCB8fslRZhAngC2+aY1QWCk3Cedj/Gdt08= -github.com/ugorji/go/codec v1.2.12 h1:9LC83zGrHhuUA9l16C9AHXAqEV/2wBQ4nkvumAE65EE= -github.com/ugorji/go/codec v1.2.12/go.mod h1:UNopzCgEMSXjBc6AOMqYvWC1ktqTAfzJZUZgYf6w6lg= +github.com/ugorji/go/codec v1.3.1 h1:waO7eEiFDwidsBN6agj1vJQ4AG7lh2yqXyOXqhgQuyY= +github.com/ugorji/go/codec v1.3.1/go.mod h1:pRBVtBSKl77K30Bv8R2P+cLSGaTtex6fsA2Wjqmfxj4= github.com/vultr/govultr/v2 v2.17.2 h1:gej/rwr91Puc/tgh+j33p/BLR16UrIPnSr+AIwYWZQs= github.com/vultr/govultr/v2 v2.17.2/go.mod h1:ZFOKGWmgjytfyjeyAdhQlSWwTjh2ig+X49cAp50dzXI= 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.mongodb.org/mongo-driver v1.17.6 h1:87JUG1wZfWsr6rIz3ZmpH90rL5tea7O3IHuSwHUpsss= -go.mongodb.org/mongo-driver v1.17.6/go.mod h1:Hy04i7O2kC4RS06ZrhPRqj/u4DTYkFDAAccj+rVKqgQ= +go.mongodb.org/mongo-driver/v2 v2.5.0 h1:yXUhImUjjAInNcpTcAlPHiT7bIXhshCTL3jVBkF3xaE= +go.mongodb.org/mongo-driver/v2 v2.5.0/go.mod h1:yOI9kBsufol30iFsl1slpdq1I0eHPzybRWdyYUs8K/0= 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/instrumentation/net/http/otelhttp v0.67.0 h1:OyrsyzuttWTSur2qN/Lm0m2a8yqyIjUVBZcxFPuXq2o= -go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.67.0/go.mod h1:C2NGBr+kAB4bk3xtMXfZ94gqFDtg/GkI7e9zqGh5Beg= -go.opentelemetry.io/otel v1.42.0 h1:lSQGzTgVR3+sgJDAU/7/ZMjN9Z+vUip7leaqBKy4sho= -go.opentelemetry.io/otel v1.42.0/go.mod h1:lJNsdRMxCUIWuMlVJWzecSMuNjE7dOYyWlqOXWkdqCc= -go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.42.0 h1:THuZiwpQZuHPul65w4WcwEnkX2QIuMT+UFoOrygtoJw= -go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.42.0/go.mod h1:J2pvYM5NGHofZ2/Ru6zw/TNWnEQp5crgyDeSrYpXkAw= -go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp v1.42.0 h1:uLXP+3mghfMf7XmV4PkGfFhFKuNWoCvvx5wP/wOXo0o= -go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp v1.42.0/go.mod h1:v0Tj04armyT59mnURNUJf7RCKcKzq+lgJs6QSjHjaTc= -go.opentelemetry.io/otel/exporters/prometheus v0.64.0 h1:g0LRDXMX/G1SEZtK8zl8Chm4K6GBwRkjPKE36LxiTYs= -go.opentelemetry.io/otel/exporters/prometheus v0.64.0/go.mod h1:UrgcjnarfdlBDP3GjDIJWe6HTprwSazNjwsI+Ru6hro= -go.opentelemetry.io/otel/metric v1.42.0 h1:2jXG+3oZLNXEPfNmnpxKDeZsFI5o4J+nz6xUlaFdF/4= -go.opentelemetry.io/otel/metric v1.42.0/go.mod h1:RlUN/7vTU7Ao/diDkEpQpnz3/92J9ko05BIwxYa2SSI= -go.opentelemetry.io/otel/sdk v1.42.0 h1:LyC8+jqk6UJwdrI/8VydAq/hvkFKNHZVIWuslJXYsDo= -go.opentelemetry.io/otel/sdk v1.42.0/go.mod h1:rGHCAxd9DAph0joO4W6OPwxjNTYWghRWmkHuGbayMts= -go.opentelemetry.io/otel/sdk/metric v1.42.0 h1:D/1QR46Clz6ajyZ3G8SgNlTJKBdGp84q9RKCAZ3YGuA= -go.opentelemetry.io/otel/sdk/metric v1.42.0/go.mod h1:Ua6AAlDKdZ7tdvaQKfSmnFTdHx37+J4ba8MwVCYM5hc= -go.opentelemetry.io/otel/trace v1.42.0 h1:OUCgIPt+mzOnaUTpOQcBiM/PLQ/Op7oq6g4LenLmOYY= -go.opentelemetry.io/otel/trace v1.42.0/go.mod h1:f3K9S+IFqnumBkKhRJMeaZeNk9epyhnCmQh/EysQCdc= -go.opentelemetry.io/proto/otlp v1.9.0 h1:l706jCMITVouPOqEnii2fIAuO3IVGBRPV5ICjceRb/A= -go.opentelemetry.io/proto/otlp v1.9.0/go.mod h1:xE+Cx5E/eEHw+ISFkwPLwCZefwVjY+pqKg1qcK03+/4= +go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.68.0 h1:CqXxU8VOmDefoh0+ztfGaymYbhdB/tT3zs79QaZTNGY= +go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.68.0/go.mod h1:BuhAPThV8PBHBvg8ZzZ/Ok3idOdhWIodywz2xEcRbJo= +go.opentelemetry.io/otel v1.43.0 h1:mYIM03dnh5zfN7HautFE4ieIig9amkNANT+xcVxAj9I= +go.opentelemetry.io/otel v1.43.0/go.mod h1:JuG+u74mvjvcm8vj8pI5XiHy1zDeoCS2LB1spIq7Ay0= +go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.43.0 h1:88Y4s2C8oTui1LGM6bTWkw0ICGcOLCAI5l6zsD1j20k= +go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.43.0/go.mod h1:Vl1/iaggsuRlrHf/hfPJPvVag77kKyvrLeD10kpMl+A= +go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp v1.43.0 h1:3iZJKlCZufyRzPzlQhUIWVmfltrXuGyfjREgGP3UUjc= +go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp v1.43.0/go.mod h1:/G+nUPfhq2e+qiXMGxMwumDrP5jtzU+mWN7/sjT2rak= +go.opentelemetry.io/otel/exporters/prometheus v0.65.0 h1:jOveH/b4lU9HT7y+Gfamf18BqlOuz2PWEvs8yM7Q6XE= +go.opentelemetry.io/otel/exporters/prometheus v0.65.0/go.mod h1:i1P8pcumauPtUI4YNopea1dhzEMuEqWP1xoUZDylLHo= +go.opentelemetry.io/otel/metric v1.43.0 h1:d7638QeInOnuwOONPp4JAOGfbCEpYb+K6DVWvdxGzgM= +go.opentelemetry.io/otel/metric v1.43.0/go.mod h1:RDnPtIxvqlgO8GRW18W6Z/4P462ldprJtfxHxyKd2PY= +go.opentelemetry.io/otel/sdk v1.43.0 h1:pi5mE86i5rTeLXqoF/hhiBtUNcrAGHLKQdhg4h4V9Dg= +go.opentelemetry.io/otel/sdk v1.43.0/go.mod h1:P+IkVU3iWukmiit/Yf9AWvpyRDlUeBaRg6Y+C58QHzg= +go.opentelemetry.io/otel/sdk/metric v1.43.0 h1:S88dyqXjJkuBNLeMcVPRFXpRw2fuwdvfCGLEo89fDkw= +go.opentelemetry.io/otel/sdk/metric v1.43.0/go.mod h1:C/RJtwSEJ5hzTiUz5pXF1kILHStzb9zFlIEe85bhj6A= +go.opentelemetry.io/otel/trace v1.43.0 h1:BkNrHpup+4k4w+ZZ86CZoHHEkohws8AY+WTX09nk+3A= +go.opentelemetry.io/otel/trace v1.43.0/go.mod h1:/QJhyVBUUswCphDVxq+8mld+AvhXZLhe+8WVFxiFff0= +go.opentelemetry.io/proto/otlp v1.10.0 h1:IQRWgT5srOCYfiWnpqUYz9CVmbO8bFmKcwYxpuCSL2g= +go.opentelemetry.io/proto/otlp v1.10.0/go.mod h1:/CV4QoCR/S9yaPj8utp3lvQPoqMtxXdzn7ozvvozVqk= go.uber.org/atomic v1.11.0 h1:ZvwS0R+56ePWxUNi+Atn9dWONBPp/AUETXlHW0DxSjE= go.uber.org/atomic v1.11.0/go.mod h1:LUxbIzbOniOlMKjJjyPfpl4v+PKK2cNJn91OQbhoJI0= go.uber.org/goleak v1.3.0 h1:2K3zAYmnTNqV73imy9J1T3WC+gmCePx2hEGkimedGto= go.uber.org/goleak v1.3.0/go.mod h1:CoHD4mav9JJNrW/WLlf7HGZPjdw8EucARQHekz1X6bE= +go.uber.org/mock v0.6.0 h1:hyF9dfmbgIX5EfOdasqLsWD6xqpNZlXblLB/Dbnwv3Y= +go.uber.org/mock v0.6.0/go.mod h1:KiVJ4BqZJaMj4svdfmHM0AUx4NJYO8ZNpPnZn1Z+BBU= go.uber.org/multierr v1.11.0 h1:blXXJkSxSSfBVBlC76pxqeO+LN3aDfLQo+309xJstO0= go.uber.org/multierr v1.11.0/go.mod h1:20+QtiLqy0Nd6FdQB9TLXag12DsQkrbs3htMFfDN80Y= go.uber.org/zap v1.27.1 h1:08RqriUEv8+ArZRYSTXy1LeBScaMpVSTBhCeaZYfMYc= go.uber.org/zap v1.27.1/go.mod h1:GB2qFLM7cTU87MWRP2mPIjqfIDnGu+VIO4V/SdhGo2E= -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/v2 v2.4.4 h1:tuyd0P+2Ont/d6e2rl3be67goVK4R6deVxCUX5vyPaQ= +go.yaml.in/yaml/v2 v2.4.4/go.mod h1:gMZqIpDtDqOfM0uNfy0SkpRhvUryYH0Z6wdMYcacYXQ= 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/arch v0.0.0-20210923205945-b76863e36670/go.mod h1:5om86z9Hs0C8fWVUuoMHwpExlXzs5Tkyp9hOrfG7pp8= -golang.org/x/arch v0.8.0 h1:3wRIsP3pM4yUptoR96otTUOXI367OS0+c9eeRi9doIc= -golang.org/x/arch v0.8.0/go.mod h1:FEVrYAQjsQXMVJ1nsMoVVXPZg6p2JE2mx8psSWTDQys= +go.yaml.in/yaml/v4 v4.0.0-rc.4 h1:UP4+v6fFrBIb1l934bDl//mmnoIZEDK0idg1+AIvX5U= +go.yaml.in/yaml/v4 v4.0.0-rc.4/go.mod h1:aZqd9kCMsGL7AuUv/m/PvWLdg5sjJsZ4oHDEnfPPfY0= +golang.org/x/arch v0.22.0 h1:c/Zle32i5ttqRXjdLyyHZESLD/bB90DCU1g9l/0YBDI= +golang.org/x/arch v0.22.0/go.mod h1:dNHoOeKiyja7GTvF9NJS1l3Z2yntpQNzgrjh1cU103A= golang.org/x/crypto v0.0.0-20180904163835-0709b304e793/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= golang.org/x/crypto v0.0.0-20190923035154-9ee001bba392/go.mod h1:/lpIB1dKB+9EgE3H3cr1v9wB50oz8l4C4h62xy7jSTY= 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/crypto v0.48.0 h1:/VRzVqiRSggnhY7gNRxPauEQ5Drw9haKdM0jqfcCFts= -golang.org/x/crypto v0.48.0/go.mod h1:r0kV5h3qnFPlQnBSrULhlsRfryS2pmewsg+XfMgkVos= -golang.org/x/exp v0.0.0-20260218203240-3dfff04db8fa h1:Zt3DZoOFFYkKhDT3v7Lm9FDMEV06GpzjG2jrqW+QTE0= -golang.org/x/exp v0.0.0-20260218203240-3dfff04db8fa/go.mod h1:K79w1Vqn7PoiZn+TkNpx3BUWUQksGO3JcVX6qIjytmA= +golang.org/x/crypto v0.49.0 h1:+Ng2ULVvLHnJ/ZFEq4KdcDd/cfjrrjjNSXNzxg0Y4U4= +golang.org/x/crypto v0.49.0/go.mod h1:ErX4dUh2UM+CFYiXZRTcMpEcN8b/1gxEuv3nODoYtCA= +golang.org/x/exp v0.0.0-20260312153236-7ab1446f8b90 h1:jiDhWWeC7jfWqR9c/uplMOqJ0sbNlNWv0UkzE0vX1MA= +golang.org/x/exp v0.0.0-20260312153236-7ab1446f8b90/go.mod h1:xE1HEv6b+1SCZ5/uscMRjUBKtIxworgEcEi+/n9NQDQ= 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/mod v0.33.0 h1:tHFzIWbBifEmbwtGz65eaWyGiGZatSrT9prnU8DbVL8= -golang.org/x/mod v0.33.0/go.mod h1:swjeQEj+6r7fODbD2cqrnje9PnziFuw4bmLbBZFrQ5w= +golang.org/x/mod v0.34.0 h1:xIHgNUUnW6sYkcM5Jleh05DvLOtwc6RitGHbDk4akRI= +golang.org/x/mod v0.34.0/go.mod h1:ykgH52iCZe79kzLLMhyCUzhMci+nQj+0XkbXpNYtVjY= golang.org/x/net v0.0.0-20181114220301-adae6a3d119a/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= golang.org/x/net v0.0.0-20190613194153-d28f0bde5980/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= @@ -633,18 +635,18 @@ golang.org/x/net v0.0.0-20200226121028-0de0cce0169b/go.mod h1:z5CRVTTTmAJ677TzLL golang.org/x/net v0.0.0-20201021035429-f5854403a974/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= golang.org/x/net v0.0.0-20210226172049-e18ecbb05110/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg= golang.org/x/net v0.0.0-20210410081132-afb366fc7cd1/go.mod h1:9tjilg8BloeKEkVJvy7fQ90B1CfIiPueXVOjqfkSzI8= -golang.org/x/net v0.51.0 h1:94R/GTO7mt3/4wIKpcR5gkGmRLOuE/2hNGeWq/GBIFo= -golang.org/x/net v0.51.0/go.mod h1:aamm+2QF5ogm02fjy5Bb7CQ0WMt1/WVM7FtyaTLlA9Y= -golang.org/x/oauth2 v0.35.0 h1:Mv2mzuHuZuY2+bkyWXIHMfhNdJAdwW3FuWeCPYN5GVQ= -golang.org/x/oauth2 v0.35.0/go.mod h1:lzm5WQJQwKZ3nwavOZ3IS5Aulzxi68dUSgRHujetwEA= +golang.org/x/net v0.52.0 h1:He/TN1l0e4mmR3QqHMT2Xab3Aj3L9qjbhRm78/6jrW0= +golang.org/x/net v0.52.0/go.mod h1:R1MAz7uMZxVMualyPXb+VaqGSa3LIaUqk0eEt3w36Sw= +golang.org/x/oauth2 v0.36.0 h1:peZ/1z27fi9hUOFCAZaHyrpWG5lwe0RJEEEeH0ThlIs= +golang.org/x/oauth2 v0.36.0/go.mod h1:YDBUJMTkDnJS+A4BP4eZBjCqtokkg1hODuPjwiGPO7Q= golang.org/x/sync v0.0.0-20181108010431-42b317875d0f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20181221193216-37e7f081c4d4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= 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/sync v0.0.0-20210220032951-036812b2e83c/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.19.0 h1:vV+1eWNmZ5geRlYjzm2adRgW2/mcpevXNg50YZtPCE4= -golang.org/x/sync v0.19.0/go.mod h1:9KTHXmSnoGruLpwFjVSX0lNNA75CykiMECbovNTZqGI= +golang.org/x/sync v0.20.0 h1:e0PTpb7pjO8GAtTs2dQ6jYa5BWYlMuX047Dco/pItO4= +golang.org/x/sync v0.20.0/go.mod h1:9xrNwdLfx4jkKbNva9FpL6vEN7evnE43NNNJQ2LF3+0= golang.org/x/sys v0.0.0-20180823144017-11551d06cbcc/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20180905080454-ebe1bf3edb33/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20181116152217-5ac8a444bdc5/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= @@ -666,47 +668,46 @@ golang.org/x/sys v0.0.0-20210630005230-0f9fa26af87c/go.mod h1:oPkhp1MJrh7nUepCBc golang.org/x/sys v0.0.0-20210927094055-39ccf1dd6fa6/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20220503163025-988cb79eb6c6/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20220728004956-3c1f35247d10/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20220811171246-fbc7d0a398ab/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.1.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.41.0 h1:Ivj+2Cp/ylzLiEU89QhWblYnOE9zerudt9Ftecq2C6k= -golang.org/x/sys v0.41.0/go.mod h1:OgkHotnGiDImocRcuBABYBEXf8A9a87e/uXjp9XT3ks= +golang.org/x/sys v0.42.0 h1:omrd2nAlyT5ESRdCLYdm3+fMfNFE/+Rf4bDIQImRJeo= +golang.org/x/sys v0.42.0/go.mod h1:4GL1E5IUh+htKOUEOaiffhrAeqysfVGipDYzABqnCmw= golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= -golang.org/x/term v0.40.0 h1:36e4zGLqU4yhjlmxEaagx2KuYbJq3EwY8K943ZsHcvg= -golang.org/x/term v0.40.0/go.mod h1:w2P8uVp06p2iyKKuvXIm7N/y0UCRt3UfJTfZ7oOpglM= +golang.org/x/term v0.41.0 h1:QCgPso/Q3RTJx2Th4bDLqML4W6iJiaXFq2/ftQF13YU= +golang.org/x/term v0.41.0/go.mod h1:3pfBgksrReYfZ5lvYM0kSO0LIkAl4Yl2bXOkKP7Ec2A= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.2/go.mod h1:bEr9sfX3Q8Zfm5fL9x+3itogRgK3+ptLWKqgva+5dAk= golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/text v0.3.6/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= -golang.org/x/text v0.34.0 h1:oL/Qq0Kdaqxa1KbNeMKwQq0reLCCaFtqu2eNuSeNHbk= -golang.org/x/text v0.34.0/go.mod h1:homfLqTYRFyVYemLBFl5GgL/DWEiH5wcsQ5gSh1yziA= -golang.org/x/time v0.14.0 h1:MRx4UaLrDotUKUdCIqzPC48t1Y9hANFKIRpNx+Te8PI= -golang.org/x/time v0.14.0/go.mod h1:eL/Oa2bBBK0TkX57Fyni+NgnyQQN4LitPmob2Hjnqw4= +golang.org/x/text v0.35.0 h1:JOVx6vVDFokkpaq1AEptVzLTpDe9KGpj5tR4/X+ybL8= +golang.org/x/text v0.35.0/go.mod h1:khi/HExzZJ2pGnjenulevKNX1W67CUy0AsXcNubPGCA= +golang.org/x/time v0.15.0 h1:bbrp8t3bGUeFOx08pvsMYRTCVSMk89u4tKbNOZbp88U= +golang.org/x/time v0.15.0/go.mod h1:Y4YMaQmXwGQZoFaVFk4YpCt4FLQMYKZe9oeV/f4MSno= golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20190907020128-2ca718005c18/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= 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.42.0 h1:uNgphsn75Tdz5Ji2q36v/nsFSfR/9BRFvqhGBaJGd5k= -golang.org/x/tools v0.42.0/go.mod h1:Ma6lCIwGZvHK6XtgbswSoWroEkhugApmsXyrUmBhfr0= +golang.org/x/tools v0.43.0 h1:12BdW9CeB3Z+J/I/wj34VMl8X+fEXBxVR90JeMX5E7s= +golang.org/x/tools v0.43.0/go.mod h1:uHkMso649BX2cZK6+RpuIPXS3ho2hZo4FVwfoy1vIk0= 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= gomodules.xyz/jsonpatch/v2 v2.5.0 h1:JELs8RLM12qJGXU4u/TO3V25KW8GreMKl9pdkk14RM0= gomodules.xyz/jsonpatch/v2 v2.5.0/go.mod h1:AH3dM2RI6uoBZxn3LVrfvJ3E0/9dG4cSrbuBJT4moAY= -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/api v0.257.0 h1:8Y0lzvHlZps53PEaw+G29SsQIkuKrumGWs9puiexNAA= -google.golang.org/api v0.257.0/go.mod h1:4eJrr+vbVaZSqs7vovFd1Jb/A6ml6iw2e6FBYf3GAO4= -google.golang.org/genproto v0.0.0-20250603155806-513f23925822 h1:rHWScKit0gvAPuOnu87KpaYtjK5zBMLcULh7gxkCXu4= -google.golang.org/genproto v0.0.0-20250603155806-513f23925822/go.mod h1:HubltRL7rMh0LfnQPkMH4NPDFEWp0jw3vixw7jEM53s= -google.golang.org/genproto/googleapis/api v0.0.0-20260226221140-a57be14db171 h1:tu/dtnW1o3wfaxCOjSLn5IRX4YDcJrtlpzYkhHhGaC4= -google.golang.org/genproto/googleapis/api v0.0.0-20260226221140-a57be14db171/go.mod h1:M5krXqk4GhBKvB596udGL3UyjL4I1+cTbK0orROM9ng= -google.golang.org/genproto/googleapis/rpc v0.0.0-20260226221140-a57be14db171 h1:ggcbiqK8WWh6l1dnltU4BgWGIGo+EVYxCaAPih/zQXQ= -google.golang.org/genproto/googleapis/rpc v0.0.0-20260226221140-a57be14db171/go.mod h1:4Hqkh8ycfw05ld/3BWL7rJOSfebL2Q+DVDeRgYgxUU8= -google.golang.org/grpc v1.79.3 h1:sybAEdRIEtvcD68Gx7dmnwjZKlyfuc61Dyo9pGXXkKE= -google.golang.org/grpc v1.79.3/go.mod h1:KmT0Kjez+0dde/v2j9vzwoAScgEPx/Bw1CYChhHLrHQ= +gonum.org/v1/gonum v0.17.0 h1:VbpOemQlsSMrYmn7T2OUvQ4dqxQXU+ouZFQsZOx50z4= +gonum.org/v1/gonum v0.17.0/go.mod h1:El3tOrEuMpv2UdMrbNlKEh9vd86bmQ6vqIcDwxEOc1E= +google.golang.org/api v0.265.0 h1:FZvfUdI8nfmuNrE34aOWFPmLC+qRBEiNm3JdivTvAAU= +google.golang.org/api v0.265.0/go.mod h1:uAvfEl3SLUj/7n6k+lJutcswVojHPp2Sp08jWCu8hLY= +google.golang.org/genproto v0.0.0-20251202230838-ff82c1b0f217 h1:GvESR9BIyHUahIb0NcTum6itIWtdoglGX+rnGxm2934= +google.golang.org/genproto v0.0.0-20251202230838-ff82c1b0f217/go.mod h1:yJ2HH4EHEDTd3JiLmhds6NkJ17ITVYOdV3m3VKOnws0= +google.golang.org/genproto/googleapis/api v0.0.0-20260406210006-6f92a3bedf2d h1:/aDRtSZJjyLQzm75d+a1wOJaqyKBMvIAfeQmoa3ORiI= +google.golang.org/genproto/googleapis/api v0.0.0-20260406210006-6f92a3bedf2d/go.mod h1:etfGUgejTiadZAUaEP14NP97xi1RGeawqkjDARA/UOs= +google.golang.org/genproto/googleapis/rpc v0.0.0-20260406210006-6f92a3bedf2d h1:wT2n40TBqFY6wiwazVK9/iTWbsQrgk5ZfCSVFLO9LQA= +google.golang.org/genproto/googleapis/rpc v0.0.0-20260406210006-6f92a3bedf2d/go.mod h1:4Hqkh8ycfw05ld/3BWL7rJOSfebL2Q+DVDeRgYgxUU8= +google.golang.org/grpc v1.80.0 h1:Xr6m2WmWZLETvUNvIUmeD5OAagMw3FiKmMlTdViWsHM= +google.golang.org/grpc v1.80.0/go.mod h1:ho/dLnxwi3EDJA4Zghp7k2Ec1+c2jqup0bFkw07bwF4= google.golang.org/protobuf v1.36.11 h1:fV6ZwhNocDyBLK0dj+fg8ektcVegBBuEolpbTQyBNVE= google.golang.org/protobuf v1.36.11/go.mod h1:HTf+CrKn2C3g5S8VImy6tdcUvCska2kB7j23XfzDpco= gopkg.in/alecthomas/kingpin.v2 v2.2.6/go.mod h1:FMv+mEhP44yOT+4EoQTLFTRgOQ1FBLkstjWtayDeSgw= @@ -714,12 +715,14 @@ gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8 gopkg.in/check.v1 v1.0.0-20190902080502-41f04d3bba15/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/dnaeon/go-vcr.v4 v4.0.6 h1:PiJkrakkmzc5s7EfBnZOnyiLwi7o7A9fwPzN0X2uwe0= +gopkg.in/dnaeon/go-vcr.v4 v4.0.6/go.mod h1:sbq5oMEcM4PXngbcNbHhzfCP9OdZodLhrbRYoyg09HY= 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/ini.v1 v1.67.0 h1:Dgnx+6+nfE+IfzjUEISNeydPJh9AXNNsWbGP9KzCsOA= -gopkg.in/ini.v1 v1.67.0/go.mod h1:pNLf8WUiyNEtQjuu5G5vTm06TEv9tsIgeAvK8hOrP4k= +gopkg.in/ini.v1 v1.67.1 h1:tVBILHy0R6e4wkYOn3XmiITt/hEVH4TFMYvAX2Ytz6k= +gopkg.in/ini.v1 v1.67.1/go.mod h1:x/cyOwCgZqOkJoDIJ3c1KNHMo10+nLGAhh+kn3Zizss= gopkg.in/yaml.v2 v2.2.1/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= gopkg.in/yaml.v2 v2.2.2/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= gopkg.in/yaml.v2 v2.2.4/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= @@ -731,31 +734,29 @@ gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA= gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= gotest.tools/v3 v3.5.2 h1:7koQfIKdy+I8UTetycgUqXWSDwpgv193Ka+qRsmBY8Q= gotest.tools/v3 v3.5.2/go.mod h1:LtdLGcnqToBH83WByAAi/wiwSFCArdFIUV/xxN4pcjA= -k8s.io/api v0.34.3 h1:D12sTP257/jSH2vHV2EDYrb16bS7ULlHpdNdNhEw2S4= -k8s.io/api v0.34.3/go.mod h1:PyVQBF886Q5RSQZOim7DybQjAbVs8g7gwJNhGtY5MBk= -k8s.io/apiextensions-apiserver v0.34.3 h1:p10fGlkDY09eWKOTeUSioxwLukJnm+KuDZdrW71y40g= -k8s.io/apiextensions-apiserver v0.34.3/go.mod h1:aujxvqGFRdb/cmXYfcRTeppN7S2XV/t7WMEc64zB5A0= -k8s.io/apimachinery v0.34.3 h1:/TB+SFEiQvN9HPldtlWOTp0hWbJ+fjU+wkxysf/aQnE= -k8s.io/apimachinery v0.34.3/go.mod h1:/GwIlEcWuTX9zKIg2mbw0LRFIsXwrfoVxn+ef0X13lw= -k8s.io/client-go v0.34.3 h1:wtYtpzy/OPNYf7WyNBTj3iUA0XaBHVqhv4Iv3tbrF5A= -k8s.io/client-go v0.34.3/go.mod h1:OxxeYagaP9Kdf78UrKLa3YZixMCfP6bgPwPwNBQBzpM= -k8s.io/component-base v0.34.3 h1:zsEgw6ELqK0XncCQomgO9DpUIzlrYuZYA0Cgo+JWpVk= -k8s.io/component-base v0.34.3/go.mod h1:5iIlD8wPfWE/xSHTRfbjuvUul2WZbI2nOUK65XL0E/c= -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-20250910181357-589584f1c912 h1:Y3gxNAuB0OBLImH611+UDZcmKS3g6CthxToOb37KgwE= -k8s.io/kube-openapi v0.0.0-20250910181357-589584f1c912/go.mod h1:kdmbQkyfwUagLfXIad1y2TdrjPFWp2Q89B3qkRwf/pQ= -k8s.io/utils v0.0.0-20260108192941-914a6e750570 h1:JT4W8lsdrGENg9W+YwwdLJxklIuKWdRm+BC+xt33FOY= -k8s.io/utils v0.0.0-20260108192941-914a6e750570/go.mod h1:xDxuJ0whA3d0I4mf/C4ppKHxXynQ+fxnkmQH0vTHnuk= -nullprogram.com/x/optparse v1.0.0/go.mod h1:KdyPE+Igbe0jQUrVfMqDMeJQIJZEuyV7pjYmp6pbG50= -rsc.io/pdf v0.1.1/go.mod h1:n8OzWcQ6Sp37PL01nO98y4iUCRdTGarVfzxY20ICaU4= -sigs.k8s.io/controller-runtime v0.22.5 h1:v3nfSUMowX/2WMp27J9slwGFyAt7IV0YwBxAkrUr0GE= -sigs.k8s.io/controller-runtime v0.22.5/go.mod h1:pc5SoYWnWI6I+cBHYYdZ7B6YHZVY5xNfll88JB+vniI= +k8s.io/api v0.35.4 h1:P7nFYKl5vo9AGUp1Z+Pmd3p2tA7bX2wbFWCvDeRv988= +k8s.io/api v0.35.4/go.mod h1:yl4lqySWOgYJJf9RERXKUwE9g2y+CkuwG+xmcOK8wXU= +k8s.io/apiextensions-apiserver v0.35.4 h1:HeP+Upp7ItdvnyGmub0yoix+2z5+ev4M5cE5TCgtOUU= +k8s.io/apiextensions-apiserver v0.35.4/go.mod h1:ogQlk+stIE8mnoRthSYCwlOS12fVqgWFiErMwPaXA7c= +k8s.io/apimachinery v0.35.4 h1:xtdom9RG7e+yDp71uoXoJDWEE2eOiHgeO4GdBzwWpds= +k8s.io/apimachinery v0.35.4/go.mod h1:NNi1taPOpep0jOj+oRha3mBJPqvi0hGdaV8TCqGQ+cc= +k8s.io/client-go v0.35.4 h1:DN6fyaGuzK64UvnKO5fOA6ymSjvfGAnCAHAR0C66kD8= +k8s.io/client-go v0.35.4/go.mod h1:2Pg9WpsS4NeOpoYTfHHfMxBG8zFMSAUi4O/qoiJC3nY= +k8s.io/component-base v0.35.4 h1:6n1tNJ87johN0Hif0Fs8K2GMthsaUwMqCebUDLYyv7U= +k8s.io/component-base v0.35.4/go.mod h1:qaDJgz5c1KYKla9occFmlJEfPpkuA55s90G509R+PeY= +k8s.io/klog/v2 v2.140.0 h1:Tf+J3AH7xnUzZyVVXhTgGhEKnFqye14aadWv7bzXdzc= +k8s.io/klog/v2 v2.140.0/go.mod h1:o+/RWfJ6PwpnFn7OyAG3QnO47BFsymfEfrz6XyYSSp0= +k8s.io/kube-openapi v0.0.0-20260317180543-43fb72c5454a h1:xCeOEAOoGYl2jnJoHkC3hkbPJgdATINPMAxaynU2Ovg= +k8s.io/kube-openapi v0.0.0-20260317180543-43fb72c5454a/go.mod h1:uGBT7iTA6c6MvqUvSXIaYZo9ukscABYi2btjhvgKGZ0= +k8s.io/utils v0.0.0-20260210185600-b8788abfbbc2 h1:AZYQSJemyQB5eRxqcPky+/7EdBj0xi3g0ZcxxJ7vbWU= +k8s.io/utils v0.0.0-20260210185600-b8788abfbbc2/go.mod h1:xDxuJ0whA3d0I4mf/C4ppKHxXynQ+fxnkmQH0vTHnuk= +sigs.k8s.io/controller-runtime v0.23.3 h1:VjB/vhoPoA9l1kEKZHBMnQF33tdCLQKJtydy4iqwZ80= +sigs.k8s.io/controller-runtime v0.23.3/go.mod h1:B6COOxKptp+YaUT5q4l6LqUJTRpizbgf9KSRNdQGns0= 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 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/v6 v6.3.2-0.20260122202528-d9cc6641c482 h1:2WOzJpHUBVrrkDjU4KBT8n5LDcj824eX0I5UKcgeRUs= -sigs.k8s.io/structured-merge-diff/v6 v6.3.2-0.20260122202528-d9cc6641c482/go.mod h1:M3W8sfWvn2HhQDIbGWj3S099YozAsymCo/wrT5ohRUE= +sigs.k8s.io/structured-merge-diff/v6 v6.3.2 h1:kwVWMx5yS1CrnFWA/2QHyRVJ8jM6dBA80uLmm0wJkk8= +sigs.k8s.io/structured-merge-diff/v6 v6.3.2/go.mod h1:M3W8sfWvn2HhQDIbGWj3S099YozAsymCo/wrT5ohRUE= 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/otelcollector/otel-allocator/internal/allocation/allocator_test.go b/otelcollector/otel-allocator/internal/allocation/allocator_test.go index c53943296..464fad523 100644 --- a/otelcollector/otel-allocator/internal/allocation/allocator_test.go +++ b/otelcollector/otel-allocator/internal/allocation/allocator_test.go @@ -186,3 +186,189 @@ func TestAllocationCollision(t *testing.T) { } }) } + +func TestGetTargetsForCollectorAndJobNonExistent(t *testing.T) { + RunForAllStrategies(t, func(t *testing.T, allocator Allocator) { + cols := MakeNCollectors(3, 0) + targets := MakeNNewTargetsWithEmptyCollectors(6, 0) + allocator.SetCollectors(cols) + allocator.SetTargets(targets) + + // Non-existent collector returns empty slice + result := allocator.GetTargetsForCollectorAndJob("non-existent-collector", "test-job-0") + assert.Empty(t, result) + + // Non-existent job returns empty slice + result = allocator.GetTargetsForCollectorAndJob("collector-0", "non-existent-job") + assert.Empty(t, result) + + // Both non-existent returns empty slice + result = allocator.GetTargetsForCollectorAndJob("no-collector", "no-job") + assert.Empty(t, result) + }) +} + +func TestSetEmptyTargets(t *testing.T) { + RunForAllStrategies(t, func(t *testing.T, allocator Allocator) { + cols := MakeNCollectors(3, 0) + allocator.SetCollectors(cols) + + // Set some targets first + targets := MakeNNewTargetsWithEmptyCollectors(5, 0) + allocator.SetTargets(targets) + assert.Len(t, allocator.TargetItems(), 5) + + // Set empty targets - should clear all + allocator.SetTargets([]*target.Item{}) + assert.Empty(t, allocator.TargetItems()) + + // Collectors should still be present + assert.Len(t, allocator.Collectors(), 3) + }) +} + +func TestSetEmptyCollectors(t *testing.T) { + RunForAllStrategies(t, func(t *testing.T, allocator Allocator) { + cols := MakeNCollectors(3, 0) + allocator.SetCollectors(cols) + targets := MakeNNewTargetsWithEmptyCollectors(6, 0) + allocator.SetTargets(targets) + + // All targets should be assigned + for _, item := range allocator.TargetItems() { + assert.NotEmpty(t, item.CollectorName) + } + + // Remove all collectors + allocator.SetCollectors(map[string]*Collector{}) + assert.Empty(t, allocator.Collectors()) + + // Targets should still exist but be unassigned + assert.Len(t, allocator.TargetItems(), 6) + for _, item := range allocator.TargetItems() { + assert.Empty(t, item.CollectorName) + } + }) +} + +func TestTargetUpdatePreservesCount(t *testing.T) { + RunForAllStrategies(t, func(t *testing.T, allocator Allocator) { + cols := MakeNCollectors(3, 0) + allocator.SetCollectors(cols) + targets := MakeNNewTargetsWithEmptyCollectors(10, 0) + allocator.SetTargets(targets) + + // Update with same targets - counts should not change + allocator.SetTargets(targets) + + totalAssigned := 0 + for _, col := range allocator.Collectors() { + totalAssigned += col.NumTargets + } + assert.Equal(t, 10, totalAssigned) + }) +} + +func TestNewAllocatorInvalidStrategy(t *testing.T) { + _, err := New("invalid-strategy", logger) + assert.Error(t, err) + assert.Contains(t, err.Error(), "unregistered strategy") +} + +func TestGetRegisteredAllocatorNames(t *testing.T) { + names := GetRegisteredAllocatorNames() + assert.GreaterOrEqual(t, len(names), 3) + assert.Contains(t, names, "consistent-hashing") + assert.Contains(t, names, "least-weighted") + assert.Contains(t, names, "per-node") +} + +func TestNewCollector(t *testing.T) { + col := NewCollector("my-collector", "node-1") + assert.Equal(t, "my-collector", col.Name) + assert.Equal(t, "node-1", col.NodeName) + assert.Equal(t, 0, col.NumTargets) + assert.NotNil(t, col.TargetsPerJob) + assert.Equal(t, "my-collector", col.Hash()) + assert.Equal(t, "my-collector", col.String()) +} + +func TestWithFilterOption(t *testing.T) { + RunForAllStrategies(t, func(t *testing.T, allocator Allocator) { + filterCalled := false + mockFilter := &mockFilterImpl{ + applyFunc: func(_ []*target.Item) []*target.Item { + filterCalled = true + // drop all targets + return []*target.Item{} + }, + } + allocator.SetFilter(mockFilter) + + cols := MakeNCollectors(3, 0) + allocator.SetCollectors(cols) + targets := MakeNNewTargetsWithEmptyCollectors(5, 0) + allocator.SetTargets(targets) + + assert.True(t, filterCalled) + assert.Empty(t, allocator.TargetItems()) + }) +} + +type mockFilterImpl struct { + applyFunc func([]*target.Item) []*target.Item +} + +func (m *mockFilterImpl) Apply(targets []*target.Item) []*target.Item { + return m.applyFunc(targets) +} + +func TestRepeatedSetCollectorsIdempotent(t *testing.T) { + RunForAllStrategies(t, func(t *testing.T, allocator Allocator) { + cols := MakeNCollectors(3, 0) + targets := MakeNNewTargetsWithEmptyCollectors(9, 0) + + allocator.SetCollectors(cols) + allocator.SetTargets(targets) + + firstSnapshot := make(map[string]string) + for hash, item := range allocator.TargetItems() { + firstSnapshot[hash.String()] = item.CollectorName + } + + // Set the same collectors again - assignments should not change + allocator.SetCollectors(cols) + + for hash, item := range allocator.TargetItems() { + assert.Equal(t, firstSnapshot[hash.String()], item.CollectorName, + "target %s assignment changed after idempotent SetCollectors", hash) + } + }) +} + +func TestMultiJobAllocation(t *testing.T) { + RunForAllStrategies(t, func(t *testing.T, allocator Allocator) { + cols := MakeNCollectors(3, 0) + allocator.SetCollectors(cols) + + job1Targets := MakeNTargetsForJob(3, "job-alpha", 0) + job2Targets := MakeNTargetsForJob(3, "job-beta", 100) + allTargets := append(job1Targets, job2Targets...) + + allocator.SetTargets(allTargets) + assert.Len(t, allocator.TargetItems(), 6) + + // All targets should be tracked (per-node may leave some unassigned + // since MakeNTargetsForJob doesn't add node labels) + assignedCount := 0 + for _, item := range allocator.TargetItems() { + if item.CollectorName != "" { + assignedCount++ + } + } + // For least-weighted and consistent-hashing, all should be assigned + // For per-node, none will be assigned due to missing node labels + assert.True(t, assignedCount == 0 || assignedCount == 6, + "expected all targets assigned or none, got %d/6", assignedCount) + }) +} diff --git a/otelcollector/otel-allocator/internal/allocation/strategy_test.go b/otelcollector/otel-allocator/internal/allocation/strategy_test.go index 048141927..a44f4bf23 100644 --- a/otelcollector/otel-allocator/internal/allocation/strategy_test.go +++ b/otelcollector/otel-allocator/internal/allocation/strategy_test.go @@ -5,9 +5,10 @@ package allocation import ( "fmt" - "reflect" "testing" + "github.com/stretchr/testify/assert" + "github.com/open-telemetry/opentelemetry-operator/cmd/otel-allocator/internal/diff" ) @@ -117,9 +118,8 @@ func TestCollectorDiff(t *testing.T) { } for _, tt := range tests { t.Run(tt.name, func(t *testing.T) { - if got := diff.Maps(tt.args.current, tt.args.new); !reflect.DeepEqual(got, tt.want) { - t.Errorf("DiffMaps() = %v, want %v", got, tt.want) - } + got := diff.Maps(tt.args.current, tt.args.new) + assert.Equal(t, tt.want, got) }) } } diff --git a/otelcollector/otel-allocator/internal/config/config.go b/otelcollector/otel-allocator/internal/config/config.go index 723c47322..cb4bc9bf2 100644 --- a/otelcollector/otel-allocator/internal/config/config.go +++ b/otelcollector/otel-allocator/internal/config/config.go @@ -78,7 +78,6 @@ type PrometheusCRConfig struct { Enabled bool `yaml:"enabled,omitempty"` AllowNamespaces []string `yaml:"allow_namespaces,omitempty"` DenyNamespaces []string `yaml:"deny_namespaces,omitempty"` - SecretsAccessNamespaces []string `yaml:"secrets_access_namespaces,omitempty"` PodMonitorSelector *metav1.LabelSelector `yaml:"pod_monitor_selector,omitempty"` PodMonitorNamespaceSelector *metav1.LabelSelector `yaml:"pod_monitor_namespace_selector,omitempty"` ServiceMonitorSelector *metav1.LabelSelector `yaml:"service_monitor_selector,omitempty"` @@ -442,16 +441,6 @@ func (c HTTPSServerConfig) NewTLSConfig(logger logr.Logger) (*tls.Config, *certw return tlsConfig, certWatcher, nil } -// GetSecretsAllowList converts SecretsAccessNamespaces into a map suitable for -// NewMetadataInformerFactory. An empty/nil slice results in an empty map (watch nothing). -func (c PrometheusCRConfig) GetSecretsAllowList() map[string]struct{} { - secretsAllowList := make(map[string]struct{}) - for _, ns := range c.SecretsAccessNamespaces { - secretsAllowList[ns] = struct{}{} - } - return secretsAllowList -} - // GetAllowDenyLists returns the allow and deny lists as maps. If the allow list is empty, it defaults to all namespaces. // If the deny list is empty, it defaults to an empty map. func (c PrometheusCRConfig) GetAllowDenyLists() (allowList, denyList map[string]struct{}) { diff --git a/otelcollector/otel-allocator/internal/config/config_test.go b/otelcollector/otel-allocator/internal/config/config_test.go index 2e6f50c47..4a21cb80b 100644 --- a/otelcollector/otel-allocator/internal/config/config_test.go +++ b/otelcollector/otel-allocator/internal/config/config_test.go @@ -75,6 +75,7 @@ func TestLoadFromFile(t *testing.T) { MetricNameValidationScheme: model.UTF8Validation, MetricNameEscapingScheme: model.AllowUTF8, ScrapeNativeHistograms: ptr.Bool(false), + ExtraScrapeMetrics: ptr.Bool(false), }, Runtime: promconfig.DefaultRuntimeConfig, OTLPConfig: promconfig.DefaultOTLPConfig, @@ -91,6 +92,7 @@ func TestLoadFromFile(t *testing.T) { AlwaysScrapeClassicHistograms: ptr.Bool(false), ConvertClassicHistogramsToNHCB: ptr.Bool(false), ScrapeNativeHistograms: ptr.Bool(false), + ExtraScrapeMetrics: ptr.Bool(false), MetricsPath: "/metrics", Scheme: "http", HTTPClientConfig: commonconfig.HTTPClientConfig{ @@ -164,6 +166,7 @@ func TestLoadFromFile(t *testing.T) { EvaluationInterval: model.Duration(60 * time.Second), MetricNameValidationScheme: model.UTF8Validation, ScrapeNativeHistograms: ptr.Bool(false), + ExtraScrapeMetrics: ptr.Bool(false), }, Runtime: promconfig.DefaultRuntimeConfig, OTLPConfig: promconfig.DefaultOTLPConfig, @@ -180,6 +183,7 @@ func TestLoadFromFile(t *testing.T) { AlwaysScrapeClassicHistograms: ptr.Bool(false), ConvertClassicHistogramsToNHCB: ptr.Bool(false), ScrapeNativeHistograms: ptr.Bool(false), + ExtraScrapeMetrics: ptr.Bool(false), MetricsPath: "/metrics", Scheme: "http", HTTPClientConfig: commonconfig.HTTPClientConfig{ @@ -265,6 +269,7 @@ func TestLoadFromFile(t *testing.T) { MetricNameValidationScheme: model.UTF8Validation, MetricNameEscapingScheme: model.AllowUTF8, ScrapeNativeHistograms: ptr.Bool(false), + ExtraScrapeMetrics: ptr.Bool(false), }, Runtime: promconfig.DefaultRuntimeConfig, OTLPConfig: promconfig.DefaultOTLPConfig, @@ -281,6 +286,7 @@ func TestLoadFromFile(t *testing.T) { AlwaysScrapeClassicHistograms: ptr.Bool(false), ConvertClassicHistogramsToNHCB: ptr.Bool(false), ScrapeNativeHistograms: ptr.Bool(false), + ExtraScrapeMetrics: ptr.Bool(false), MetricsPath: "/metrics", Scheme: "http", HTTPClientConfig: commonconfig.HTTPClientConfig{ @@ -352,6 +358,7 @@ func TestLoadFromFile(t *testing.T) { ScrapeInterval: model.Duration(60 * time.Second), ScrapeTimeout: model.Duration(10 * time.Second), ScrapeNativeHistograms: ptr.Bool(false), + ExtraScrapeMetrics: ptr.Bool(false), EvaluationInterval: model.Duration(60 * time.Second), MetricNameValidationScheme: model.UTF8Validation, MetricNameEscapingScheme: model.AllowUTF8, @@ -371,6 +378,7 @@ func TestLoadFromFile(t *testing.T) { AlwaysScrapeClassicHistograms: ptr.Bool(false), ConvertClassicHistogramsToNHCB: ptr.Bool(false), ScrapeNativeHistograms: ptr.Bool(false), + ExtraScrapeMetrics: ptr.Bool(false), MetricsPath: "/metrics", Scheme: "http", HTTPClientConfig: commonconfig.HTTPClientConfig{ @@ -466,6 +474,7 @@ func TestLoadFromFile(t *testing.T) { ScrapeInterval: model.Duration(60 * time.Second), ScrapeTimeout: model.Duration(10 * time.Second), ScrapeNativeHistograms: ptr.Bool(false), + ExtraScrapeMetrics: ptr.Bool(false), EvaluationInterval: model.Duration(60 * time.Second), MetricNameValidationScheme: model.UTF8Validation, MetricNameEscapingScheme: model.AllowUTF8, @@ -485,6 +494,7 @@ func TestLoadFromFile(t *testing.T) { AlwaysScrapeClassicHistograms: ptr.Bool(false), ConvertClassicHistogramsToNHCB: ptr.Bool(false), ScrapeNativeHistograms: ptr.Bool(false), + ExtraScrapeMetrics: ptr.Bool(false), MetricsPath: "/metrics", Scheme: "http", HTTPClientConfig: commonconfig.HTTPClientConfig{ @@ -579,6 +589,7 @@ func TestLoadFromFile(t *testing.T) { GlobalConfig: promconfig.GlobalConfig{ ScrapeInterval: model.Duration(60 * time.Second), ScrapeNativeHistograms: ptr.Bool(false), + ExtraScrapeMetrics: ptr.Bool(false), ScrapeTimeout: model.Duration(10 * time.Second), EvaluationInterval: model.Duration(60 * time.Second), MetricNameValidationScheme: model.UTF8Validation, @@ -599,6 +610,7 @@ func TestLoadFromFile(t *testing.T) { AlwaysScrapeClassicHistograms: ptr.Bool(false), ConvertClassicHistogramsToNHCB: ptr.Bool(false), ScrapeNativeHistograms: ptr.Bool(false), + ExtraScrapeMetrics: ptr.Bool(false), MetricsPath: "/metrics", Scheme: "http", HTTPClientConfig: commonconfig.HTTPClientConfig{ diff --git a/otelcollector/otel-allocator/internal/diff/diff.go b/otelcollector/otel-allocator/internal/diff/diff.go index f11bcde17..d83b58378 100644 --- a/otelcollector/otel-allocator/internal/diff/diff.go +++ b/otelcollector/otel-allocator/internal/diff/diff.go @@ -29,10 +29,10 @@ func (c Changes[K, T]) Removals() map[K]T { // Maps generates Changes for two maps with the same type signature by checking for any removals and then checking for // additions. // TODO: This doesn't need to create maps, it can return slices only. This function doesn't need to insert the values. -func Maps[K comparable, T Hasher[K]](current, new map[K]T) Changes[K, T] { +func Maps[K comparable, T Hasher[K]](current, m map[K]T) Changes[K, T] { additions := map[K]T{} removals := map[K]T{} - for key, newValue := range new { + for key, newValue := range m { if currentValue, found := current[key]; !found { additions[key] = newValue } else if currentValue.Hash() != newValue.Hash() { @@ -41,7 +41,7 @@ func Maps[K comparable, T Hasher[K]](current, new map[K]T) Changes[K, T] { } } for key, value := range current { - if _, found := new[key]; !found { + if _, found := m[key]; !found { removals[key] = value } } diff --git a/otelcollector/otel-allocator/internal/diff/diff_test.go b/otelcollector/otel-allocator/internal/diff/diff_test.go index 3ba70122a..e92d9c89a 100644 --- a/otelcollector/otel-allocator/internal/diff/diff_test.go +++ b/otelcollector/otel-allocator/internal/diff/diff_test.go @@ -4,8 +4,9 @@ package diff import ( - "reflect" "testing" + + "github.com/stretchr/testify/assert" ) type HasherString string @@ -86,12 +87,152 @@ func TestDiffMaps(t *testing.T) { }, }, }, + { + name: "both empty maps", + args: args{ + current: map[string]Hasher[string]{}, + new: map[string]Hasher[string]{}, + }, + want: Changes[string, Hasher[string]]{ + additions: map[string]Hasher[string]{}, + removals: map[string]Hasher[string]{}, + }, + }, + { + name: "empty current, non-empty new", + args: args{ + current: map[string]Hasher[string]{}, + new: map[string]Hasher[string]{ + "a": HasherString("1"), + "b": HasherString("2"), + }, + }, + want: Changes[string, Hasher[string]]{ + additions: map[string]Hasher[string]{ + "a": HasherString("1"), + "b": HasherString("2"), + }, + removals: map[string]Hasher[string]{}, + }, + }, + { + name: "non-empty current, empty new", + args: args{ + current: map[string]Hasher[string]{ + "a": HasherString("1"), + "b": HasherString("2"), + }, + new: map[string]Hasher[string]{}, + }, + want: Changes[string, Hasher[string]]{ + additions: map[string]Hasher[string]{}, + removals: map[string]Hasher[string]{ + "a": HasherString("1"), + "b": HasherString("2"), + }, + }, + }, + { + name: "identical maps", + args: args{ + current: map[string]Hasher[string]{ + "a": HasherString("1"), + "b": HasherString("2"), + "c": HasherString("3"), + }, + new: map[string]Hasher[string]{ + "a": HasherString("1"), + "b": HasherString("2"), + "c": HasherString("3"), + }, + }, + want: Changes[string, Hasher[string]]{ + additions: map[string]Hasher[string]{}, + removals: map[string]Hasher[string]{}, + }, + }, + { + name: "same key different hash", + args: args{ + current: map[string]Hasher[string]{ + "k": HasherString("hash-v1"), + }, + new: map[string]Hasher[string]{ + "k": HasherString("hash-v2"), + }, + }, + want: Changes[string, Hasher[string]]{ + additions: map[string]Hasher[string]{ + "k": HasherString("hash-v2"), + }, + removals: map[string]Hasher[string]{ + "k": HasherString("hash-v1"), + }, + }, + }, + { + name: "complete swap of all entries", + args: args{ + current: map[string]Hasher[string]{ + "a": HasherString("1"), + "b": HasherString("2"), + }, + new: map[string]Hasher[string]{ + "c": HasherString("3"), + "d": HasherString("4"), + }, + }, + want: Changes[string, Hasher[string]]{ + additions: map[string]Hasher[string]{ + "c": HasherString("3"), + "d": HasherString("4"), + }, + removals: map[string]Hasher[string]{ + "a": HasherString("1"), + "b": HasherString("2"), + }, + }, + }, } for _, tt := range tests { t.Run(tt.name, func(t *testing.T) { - if got := Maps(tt.args.current, tt.args.new); !reflect.DeepEqual(got, tt.want) { - t.Errorf("DiffMaps() = %v, want %v", got, tt.want) - } + got := Maps(tt.args.current, tt.args.new) + assert.Equal(t, tt.want, got) }) } } + +func TestNewChanges(t *testing.T) { + additions := map[string]Hasher[string]{"a": HasherString("1")} + removals := map[string]Hasher[string]{"b": HasherString("2")} + c := NewChanges(additions, removals) + assert.Equal(t, additions, c.Additions()) + assert.Equal(t, removals, c.Removals()) +} + +func TestNewChangesNil(t *testing.T) { + c := NewChanges[string, Hasher[string]](nil, nil) + assert.Nil(t, c.Additions()) + assert.Nil(t, c.Removals()) +} + +// HasherInt tests that the generic diff works with a non-string key type. +type HasherInt int + +func (h HasherInt) Hash() int { + return int(h) +} + +func TestDiffMapsIntKey(t *testing.T) { + current := map[int]Hasher[int]{ + 1: HasherInt(10), + 2: HasherInt(20), + } + updated := map[int]Hasher[int]{ + 2: HasherInt(20), + 3: HasherInt(30), + } + got := Maps(current, updated) + assert.Equal(t, map[int]Hasher[int]{3: HasherInt(30)}, got.Additions()) + assert.Equal(t, map[int]Hasher[int]{1: HasherInt(10)}, got.Removals()) +} diff --git a/otelcollector/otel-allocator/internal/prehook/relabel_test.go b/otelcollector/otel-allocator/internal/prehook/relabel_test.go index e702a4550..e5eac4f25 100644 --- a/otelcollector/otel-allocator/internal/prehook/relabel_test.go +++ b/otelcollector/otel-allocator/internal/prehook/relabel_test.go @@ -483,3 +483,205 @@ func PopulateLabels(lb *labels.Builder, cfg *config.ScrapeConfig) (res, orig lab } return res, preRelabelLabels, nil } + +func TestNewPrehookValid(t *testing.T) { + hook := New("relabel-config", logger) + assert.NotNil(t, hook) +} + +func TestNewPrehookInvalid(t *testing.T) { + hook := New("nonexistent-filter", logger) + assert.Nil(t, hook) +} + +func TestNewPrehookEmpty(t *testing.T) { + hook := New("", logger) + assert.Nil(t, hook) +} + +func TestApplyNilTargets(t *testing.T) { + hook := New("relabel-config", logger) + assert.NotNil(t, hook) + + // Empty relabel config - should pass targets through + hook.SetConfig(map[string][]*relabel.Config{}) + result := hook.Apply(nil) + assert.Nil(t, result) +} + +func TestApplyEmptyTargets(t *testing.T) { + hook := New("relabel-config", logger) + assert.NotNil(t, hook) + + hook.SetConfig(map[string][]*relabel.Config{ + "job1": { + { + SourceLabels: model.LabelNames{"i"}, + Regex: relabel.MustNewRegexp("(.*)"), + Separator: ";", + Action: "keep", + Replacement: "$1", + NameValidationScheme: model.UTF8Validation, + }, + }, + }) + result := hook.Apply([]*target.Item{}) + assert.Empty(t, result) +} + +func TestApplyAllDropped(t *testing.T) { + hook := New("relabel-config", logger) + assert.NotNil(t, hook) + + // Create targets with "i" label + targets := make([]*target.Item, 5) + for i := range 5 { + ls := labels.New( + labels.Label{Name: "i", Value: strconv.Itoa(i)}, + labels.Label{Name: model.AddressLabel, Value: "addr"}, + labels.Label{Name: model.JobLabel, Value: "job1"}, + labels.Label{Name: model.ScrapeIntervalLabel, Value: "10s"}, + labels.Label{Name: model.ScrapeTimeoutLabel, Value: "10s"}, + labels.Label{Name: model.SchemeLabel, Value: "http"}, + labels.Label{Name: model.MetricsPathLabel, Value: "/metrics"}, + labels.Label{Name: model.InstanceLabel, Value: "addr"}, + ) + targets[i] = target.NewItem("job1", fmt.Sprintf("url-%d", i), ls, "") + } + + // Drop all targets + hook.SetConfig(map[string][]*relabel.Config{ + "job1": { + { + SourceLabels: model.LabelNames{"i"}, + Regex: relabel.MustNewRegexp("(.*)"), + Separator: ";", + Action: "drop", + Replacement: "$1", + NameValidationScheme: model.UTF8Validation, + }, + }, + }) + result := hook.Apply(targets) + assert.Empty(t, result) +} + +func TestApplyAllKept(t *testing.T) { + hook := New("relabel-config", logger) + assert.NotNil(t, hook) + + targets := make([]*target.Item, 3) + for i := range 3 { + ls := labels.New( + labels.Label{Name: "app", Value: "myapp"}, + labels.Label{Name: model.AddressLabel, Value: "addr"}, + labels.Label{Name: model.JobLabel, Value: "job1"}, + labels.Label{Name: model.ScrapeIntervalLabel, Value: "10s"}, + labels.Label{Name: model.ScrapeTimeoutLabel, Value: "10s"}, + labels.Label{Name: model.SchemeLabel, Value: "http"}, + labels.Label{Name: model.MetricsPathLabel, Value: "/metrics"}, + labels.Label{Name: model.InstanceLabel, Value: "addr"}, + ) + targets[i] = target.NewItem("job1", fmt.Sprintf("url-%d", i), ls, "") + } + + // Keep all targets matching "myapp" + hook.SetConfig(map[string][]*relabel.Config{ + "job1": { + { + SourceLabels: model.LabelNames{"app"}, + Regex: relabel.MustNewRegexp("myapp"), + Separator: ";", + Action: "keep", + Replacement: "$1", + NameValidationScheme: model.UTF8Validation, + }, + }, + }) + result := hook.Apply(targets) + assert.Len(t, result, 3) +} + +func TestGetConfigReturnsCopy(t *testing.T) { + hook := New("relabel-config", logger) + assert.NotNil(t, hook) + + cfg := map[string][]*relabel.Config{ + "job1": { + { + SourceLabels: model.LabelNames{"i"}, + Regex: relabel.MustNewRegexp("(.*)"), + Separator: ";", + Action: "keep", + Replacement: "$1", + NameValidationScheme: model.UTF8Validation, + }, + }, + } + hook.SetConfig(cfg) + + retrieved := hook.GetConfig() + assert.NotNil(t, retrieved) + assert.Contains(t, retrieved, "job1") + + // Modifying the retrieved config should not affect the hook's internal state + delete(retrieved, "job1") + retrievedAgain := hook.GetConfig() + assert.Contains(t, retrievedAgain, "job1") +} + +func TestApplyMultipleJobsIndependent(t *testing.T) { + hook := New("relabel-config", logger) + assert.NotNil(t, hook) + + mkTarget := func(job, urlSuffix, labelVal string) *target.Item { + ls := labels.New( + labels.Label{Name: "env", Value: labelVal}, + labels.Label{Name: model.AddressLabel, Value: "addr"}, + labels.Label{Name: model.JobLabel, Value: job}, + labels.Label{Name: model.ScrapeIntervalLabel, Value: "10s"}, + labels.Label{Name: model.ScrapeTimeoutLabel, Value: "10s"}, + labels.Label{Name: model.SchemeLabel, Value: "http"}, + labels.Label{Name: model.MetricsPathLabel, Value: "/metrics"}, + labels.Label{Name: model.InstanceLabel, Value: "addr"}, + ) + return target.NewItem(job, "url-"+urlSuffix, ls, "") + } + + targets := []*target.Item{ + mkTarget("job-keep", "1", "prod"), + mkTarget("job-keep", "2", "prod"), + mkTarget("job-drop", "3", "staging"), + mkTarget("job-drop", "4", "staging"), + } + + hook.SetConfig(map[string][]*relabel.Config{ + "job-keep": { + { + SourceLabels: model.LabelNames{"env"}, + Regex: relabel.MustNewRegexp("prod"), + Separator: ";", + Action: "keep", + Replacement: "$1", + NameValidationScheme: model.UTF8Validation, + }, + }, + "job-drop": { + { + SourceLabels: model.LabelNames{"env"}, + Regex: relabel.MustNewRegexp("(.*)"), + Separator: ";", + Action: "drop", + Replacement: "$1", + NameValidationScheme: model.UTF8Validation, + }, + }, + }) + + result := hook.Apply(targets) + // job-keep targets should remain, job-drop targets should be removed + assert.Len(t, result, 2) + for _, item := range result { + assert.Equal(t, "job-keep", item.JobName) + } +} diff --git a/otelcollector/otel-allocator/internal/server/server_test.go b/otelcollector/otel-allocator/internal/server/server_test.go index dd7fe13f8..6b7de119b 100644 --- a/otelcollector/otel-allocator/internal/server/server_test.go +++ b/otelcollector/otel-allocator/internal/server/server_test.go @@ -42,8 +42,7 @@ var ( func TestServer_LivenessProbeHandler(t *testing.T) { leastWeighted, _ := allocation.New("least-weighted", logger) - listenAddr := ":8080" - s, err := NewServer(logger, leastWeighted, listenAddr) + s, err := NewServer(logger, leastWeighted, "") require.NoError(t, err) request := httptest.NewRequestWithContext(t.Context(), http.MethodGet, "/livez", http.NoBody) w := httptest.NewRecorder() @@ -149,8 +148,7 @@ func TestServer_TargetsHandler(t *testing.T) { } for _, tt := range tests { t.Run(tt.name, func(t *testing.T) { - listenAddr := ":8080" - s, err := NewServer(logger, tt.args.allocator, listenAddr) + s, err := NewServer(logger, tt.args.allocator, "") require.NoError(t, err) tt.args.allocator.SetCollectors(map[string]*allocation.Collector{"test-collector": {Name: "test-collector"}}) @@ -490,8 +488,7 @@ func TestServer_ScrapeConfigsHandler(t *testing.T) { } for _, tc := range tests { t.Run(tc.description, func(t *testing.T) { - listenAddr := ":8080" - s, err := NewServer(logger, nil, listenAddr, tc.serverOptions...) + s, err := NewServer(logger, nil, "", tc.serverOptions...) require.NoError(t, err) assert.NoError(t, s.UpdateScrapeConfigResponse(tc.scrapeConfigs)) @@ -582,9 +579,8 @@ func TestServer_JobHandler(t *testing.T) { } for _, tc := range tests { t.Run(tc.description, func(t *testing.T) { - listenAddr := ":8080" a := &mockAllocator{targetItems: tc.targetItems} - s, err := NewServer(logger, a, listenAddr) + s, err := NewServer(logger, a, "") require.NoError(t, err) request := httptest.NewRequestWithContext(t.Context(), http.MethodGet, "/jobs", http.NoBody) w := httptest.NewRecorder() @@ -645,9 +641,8 @@ func TestServer_JobsHandler_HTML(t *testing.T) { } for _, tc := range tests { t.Run(tc.description, func(t *testing.T) { - listenAddr := ":8080" a := &mockAllocator{targetItems: tc.targetItems} - s, err := NewServer(logger, a, listenAddr) + s, err := NewServer(logger, a, "") require.NoError(t, err) a.SetCollectors(map[string]*allocation.Collector{ "test-collector": {Name: "test-collector"}, @@ -716,8 +711,7 @@ func TestServer_JobHandler_HTML(t *testing.T) { } for _, tt := range tests { t.Run(tt.name, func(t *testing.T) { - listenAddr := ":8080" - s, err := NewServer(logger, tt.args.allocator, listenAddr) + s, err := NewServer(logger, tt.args.allocator, "") require.NoError(t, err) tt.args.allocator.SetCollectors(map[string]*allocation.Collector{ "test-collector": {Name: "test-collector"}, @@ -775,8 +769,7 @@ func TestServer_IndexHandler(t *testing.T) { } for _, tc := range tests { t.Run(tc.description, func(t *testing.T) { - listenAddr := ":8080" - s, err := NewServer(logger, tc.allocator, listenAddr) + s, err := NewServer(logger, tc.allocator, "") require.NoError(t, err) tc.allocator.SetCollectors(map[string]*allocation.Collector{ "test-collector1": {Name: "test-collector1"}, @@ -834,8 +827,7 @@ func TestServer_TargetsHTMLHandler(t *testing.T) { } for _, tc := range tests { t.Run(tc.description, func(t *testing.T) { - listenAddr := ":8080" - s, err := NewServer(logger, tc.allocator, listenAddr) + s, err := NewServer(logger, tc.allocator, "") require.NoError(t, err) tc.allocator.SetCollectors(map[string]*allocation.Collector{ "test-collector1": {Name: "test-collector1"}, @@ -922,8 +914,7 @@ func TestServer_CollectorHandler(t *testing.T) { } for _, tc := range tests { t.Run(tc.description, func(t *testing.T) { - listenAddr := ":8080" - s, err := NewServer(logger, tc.allocator, listenAddr) + s, err := NewServer(logger, tc.allocator, "") require.NoError(t, err) tc.allocator.SetCollectors(map[string]*allocation.Collector{ "test-collector": {Name: "test-collector"}, @@ -989,8 +980,7 @@ func TestServer_TargetHTMLHandler(t *testing.T) { } for _, tc := range tests { t.Run(tc.description, func(t *testing.T) { - listenAddr := ":8080" - s, err := NewServer(logger, tc.allocator, listenAddr) + s, err := NewServer(logger, tc.allocator, "") require.NoError(t, err) tc.allocator.SetCollectors(map[string]*allocation.Collector{ "test-collector": {Name: "test-collector"}, @@ -1061,8 +1051,7 @@ func TestServer_Readiness(t *testing.T) { } for _, tc := range tests { t.Run(tc.description, func(t *testing.T) { - listenAddr := ":8080" - s, err := NewServer(logger, nil, listenAddr) + s, err := NewServer(logger, nil, "") require.NoError(t, err) if tc.scrapeConfigs != nil { assert.NoError(t, s.UpdateScrapeConfigResponse(tc.scrapeConfigs)) @@ -1103,8 +1092,7 @@ func TestServer_ScrapeConfigResponse(t *testing.T) { } for _, tc := range tests { t.Run(tc.description, func(t *testing.T) { - listenAddr := ":8080" - s, err := NewServer(logger, nil, listenAddr) + s, err := NewServer(logger, nil, "") require.NoError(t, err) allocCfg := allocatorconfig.CreateDefaultConfig() @@ -1140,3 +1128,217 @@ func TestServer_ScrapeConfigResponse(t *testing.T) { func newLink(jobName string) linkJSON { return linkJSON{Link: fmt.Sprintf("/jobs/%s/targets", url.QueryEscape(jobName))} } + +func TestServer_TargetsHandlerNoCollectorID(t *testing.T) { + leastWeighted, _ := allocation.New("least-weighted", logger) + s, err := NewServer(logger, leastWeighted, "") + require.NoError(t, err) + + leastWeighted.SetCollectors(map[string]*allocation.Collector{ + "test-collector": {Name: "test-collector"}, + }) + leastWeighted.SetTargets([]*target.Item{baseTargetItem}) + + // Without collector_id, should return by-collector map + request := httptest.NewRequestWithContext(t.Context(), http.MethodGet, "/jobs/test-job/targets", http.NoBody) + w := httptest.NewRecorder() + + s.server.Handler.ServeHTTP(w, request) + result := w.Result() + + assert.Equal(t, http.StatusOK, result.StatusCode) + bodyBytes, err := io.ReadAll(result.Body) + require.NoError(t, err) + + var resp map[string]collectorJSON + err = json.Unmarshal(bodyBytes, &resp) + assert.NoError(t, err) +} + +func TestServer_TargetsHandlerURLEncodedJob(t *testing.T) { + leastWeighted, _ := allocation.New("least-weighted", logger) + jobName := "serviceMonitor/ns/app/0" + encodedJob := url.QueryEscape(jobName) + targetWithSlash := target.NewItem(jobName, "test-url", baseLabelSet, "test-collector") + + s, err := NewServer(logger, leastWeighted, "") + require.NoError(t, err) + + leastWeighted.SetCollectors(map[string]*allocation.Collector{"test-collector": {Name: "test-collector"}}) + leastWeighted.SetTargets([]*target.Item{targetWithSlash}) + + request := httptest.NewRequestWithContext(t.Context(), http.MethodGet, + fmt.Sprintf("/jobs/%s/targets?collector_id=test-collector", encodedJob), http.NoBody) + w := httptest.NewRecorder() + + s.server.Handler.ServeHTTP(w, request) + result := w.Result() + + assert.Equal(t, http.StatusOK, result.StatusCode) + bodyBytes, err := io.ReadAll(result.Body) + require.NoError(t, err) + + var items []*targetJSON + err = json.Unmarshal(bodyBytes, &items) + assert.NoError(t, err) + assert.Len(t, items, 1) +} + +func TestServer_ReadinessNotReady(t *testing.T) { + s, err := NewServer(logger, nil, "") + require.NoError(t, err) + + // Don't set any scrape config - server should be not ready + request := httptest.NewRequestWithContext(t.Context(), http.MethodGet, "/readyz", http.NoBody) + w := httptest.NewRecorder() + + s.server.Handler.ServeHTTP(w, request) + result := w.Result() + + assert.Equal(t, http.StatusServiceUnavailable, result.StatusCode) +} + +func TestServer_TargetHTMLHandlerNotFound(t *testing.T) { + allocator, _ := allocation.New("consistent-hashing", logger) + s, err := NewServer(logger, allocator, "") + require.NoError(t, err) + + allocator.SetCollectors(map[string]*allocation.Collector{ + "test-collector": {Name: "test-collector"}, + }) + allocator.SetTargets([]*target.Item{baseTargetItem}) + + // Request a target hash that doesn't exist + request := httptest.NewRequestWithContext(t.Context(), http.MethodGet, "/debug/target", http.NoBody) + request.URL.RawQuery = "target_hash=999999999" + w := httptest.NewRecorder() + + s.server.Handler.ServeHTTP(w, request) + result := w.Result() + + assert.Equal(t, http.StatusNotFound, result.StatusCode) +} + +func TestServer_TargetHTMLHandlerInvalidHash(t *testing.T) { + allocator, _ := allocation.New("consistent-hashing", logger) + s, err := NewServer(logger, allocator, "") + require.NoError(t, err) + + request := httptest.NewRequestWithContext(t.Context(), http.MethodGet, "/debug/target", http.NoBody) + request.URL.RawQuery = "target_hash=not-a-number" + w := httptest.NewRecorder() + + s.server.Handler.ServeHTTP(w, request) + result := w.Result() + + assert.Equal(t, http.StatusBadRequest, result.StatusCode) +} + +func TestServer_TargetHTMLHandlerMissingHash(t *testing.T) { + allocator, _ := allocation.New("consistent-hashing", logger) + s, err := NewServer(logger, allocator, "") + require.NoError(t, err) + + // No target_hash query param at all + request := httptest.NewRequestWithContext(t.Context(), http.MethodGet, "/debug/target", http.NoBody) + w := httptest.NewRecorder() + + s.server.Handler.ServeHTTP(w, request) + result := w.Result() + + assert.Equal(t, http.StatusBadRequest, result.StatusCode) +} + +func TestServer_CollectorHandlerNotFound(t *testing.T) { + allocator, _ := allocation.New("consistent-hashing", logger) + s, err := NewServer(logger, allocator, "") + require.NoError(t, err) + + allocator.SetCollectors(map[string]*allocation.Collector{ + "test-collector": {Name: "test-collector"}, + }) + + // Request a collector that doesn't exist + request := httptest.NewRequestWithContext(t.Context(), http.MethodGet, "/debug/collector", http.NoBody) + request.URL.RawQuery = "collector_id=nonexistent" + w := httptest.NewRecorder() + + s.server.Handler.ServeHTTP(w, request) + result := w.Result() + + assert.Equal(t, http.StatusNotFound, result.StatusCode) +} + +func TestServer_CollectorHandlerMissingID(t *testing.T) { + allocator, _ := allocation.New("consistent-hashing", logger) + s, err := NewServer(logger, allocator, "") + require.NoError(t, err) + + // No collector_id query param + request := httptest.NewRequestWithContext(t.Context(), http.MethodGet, "/debug/collector", http.NoBody) + w := httptest.NewRecorder() + + s.server.Handler.ServeHTTP(w, request) + result := w.Result() + + assert.Equal(t, http.StatusBadRequest, result.StatusCode) +} + +func TestServer_JobHTMLHandlerMissingJobID(t *testing.T) { + allocator, _ := allocation.New("consistent-hashing", logger) + s, err := NewServer(logger, allocator, "") + require.NoError(t, err) + + // No job_id query param + request := httptest.NewRequestWithContext(t.Context(), http.MethodGet, "/debug/job", http.NoBody) + request.Header.Set("Accept", "text/html") + w := httptest.NewRecorder() + + s.server.Handler.ServeHTTP(w, request) + result := w.Result() + + assert.Equal(t, http.StatusBadRequest, result.StatusCode) +} + +func TestServer_MetricsEndpoint(t *testing.T) { + allocator, _ := allocation.New("consistent-hashing", logger) + s, err := NewServer(logger, allocator, "") + require.NoError(t, err) + + request := httptest.NewRequestWithContext(t.Context(), http.MethodGet, "/metrics", http.NoBody) + w := httptest.NewRecorder() + + s.server.Handler.ServeHTTP(w, request) + result := w.Result() + + assert.Equal(t, http.StatusOK, result.StatusCode) + bodyBytes, err := io.ReadAll(result.Body) + require.NoError(t, err) + assert.Contains(t, string(bodyBytes), "go_goroutines") +} + +func TestServer_EmptyTargetReturnsEmptyList(t *testing.T) { + leastWeighted, _ := allocation.New("least-weighted", logger) + s, err := NewServer(logger, leastWeighted, "") + require.NoError(t, err) + + leastWeighted.SetCollectors(map[string]*allocation.Collector{ + "test-collector": {Name: "test-collector"}, + }) + + // Request targets for a job that has no targets + request := httptest.NewRequestWithContext(t.Context(), http.MethodGet, "/jobs/nonexistent/targets?collector_id=test-collector", http.NoBody) + w := httptest.NewRecorder() + + s.server.Handler.ServeHTTP(w, request) + result := w.Result() + + assert.Equal(t, http.StatusOK, result.StatusCode) + bodyBytes, err := io.ReadAll(result.Body) + require.NoError(t, err) + + var items []*targetJSON + err = json.Unmarshal(bodyBytes, &items) + require.NoError(t, err) + assert.Empty(t, items) +} diff --git a/otelcollector/otel-allocator/internal/target/discovery_test.go b/otelcollector/otel-allocator/internal/target/discovery_test.go index 880e8426c..f0001e14b 100644 --- a/otelcollector/otel-allocator/internal/target/discovery_test.go +++ b/otelcollector/otel-allocator/internal/target/discovery_test.go @@ -433,12 +433,10 @@ func TestDiscoveryTargetHashing(t *testing.T) { // Verify that all targets have different hashes targetHashes := make(map[ItemHash]bool) - for _, target := range gotTargets { - hash := target.Hash() - if _, exists := targetHashes[hash]; exists { - t.Errorf("Duplicate hash %d found for target %s (%s)", hash, target.TargetURL, target.JobName) - } - targetHashes[hash] = true + for _, tgt := range gotTargets { + h := tgt.Hash() + assert.False(t, targetHashes[h], "Duplicate hash %d found for target %s (%s)", h, tgt.TargetURL, tgt.JobName) + targetHashes[h] = true } assert.Equal(t, len(gotTargets), len(targetHashes), "Number of unique hashes should match number of targets") }) diff --git a/otelcollector/otel-allocator/internal/target/target_test.go b/otelcollector/otel-allocator/internal/target/target_test.go index a5fd5b725..f5f966543 100644 --- a/otelcollector/otel-allocator/internal/target/target_test.go +++ b/otelcollector/otel-allocator/internal/target/target_test.go @@ -6,6 +6,7 @@ package target import ( "testing" + "github.com/prometheus/prometheus/model/labels" "github.com/stretchr/testify/assert" ) @@ -25,6 +26,11 @@ func TestItemHash_String(t *testing.T) { h: 1, want: "1", }, + { + name: "large value", + h: 18446744073709551615, + want: "18446744073709551615", + }, } for _, tt := range tests { t.Run(tt.name, func(t *testing.T) { @@ -32,3 +38,224 @@ func TestItemHash_String(t *testing.T) { }) } } + +func TestNewItem(t *testing.T) { + ls := labels.New(labels.Label{Name: "app", Value: "test"}) + item := NewItem("job-1", "http://localhost:8080/metrics", ls, "collector-0") + + assert.Equal(t, "job-1", item.JobName) + assert.Equal(t, "http://localhost:8080/metrics", item.TargetURL) + assert.Equal(t, "collector-0", item.CollectorName) + assert.Equal(t, ls, item.Labels) +} + +func TestNewItemWithHash(t *testing.T) { + ls := labels.New(labels.Label{Name: "app", Value: "test"}) + precomputedHash := ItemHash(42) + item := NewItem("job-1", "http://localhost:8080", ls, "", WithHash(precomputedHash)) + + assert.Equal(t, precomputedHash, item.Hash()) +} + +func TestItemHashStability(t *testing.T) { + ls := labels.New( + labels.Label{Name: "app", Value: "frontend"}, + labels.Label{Name: "env", Value: "prod"}, + ) + item1 := NewItem("my-job", "http://10.0.0.1:8080", ls, "") + item2 := NewItem("my-job", "http://10.0.0.1:8080", ls, "") + + // Same inputs must produce the same hash + assert.Equal(t, item1.Hash(), item2.Hash()) + + // Hash must be non-zero for real items + assert.NotZero(t, item1.Hash()) +} + +func TestItemHashDifferentJobs(t *testing.T) { + ls := labels.New(labels.Label{Name: "app", Value: "test"}) + item1 := NewItem("job-a", "http://10.0.0.1:8080", ls, "") + item2 := NewItem("job-b", "http://10.0.0.1:8080", ls, "") + + // Different job names should produce different hashes + assert.NotEqual(t, item1.Hash(), item2.Hash()) +} + +func TestItemHashDifferentLabels(t *testing.T) { + ls1 := labels.New(labels.Label{Name: "version", Value: "v1"}) + ls2 := labels.New(labels.Label{Name: "version", Value: "v2"}) + item1 := NewItem("job", "http://10.0.0.1:8080", ls1, "") + item2 := NewItem("job", "http://10.0.0.1:8080", ls2, "") + + assert.NotEqual(t, item1.Hash(), item2.Hash()) +} + +func TestItemHashCollectorNameNotAffectHash(t *testing.T) { + ls := labels.New(labels.Label{Name: "app", Value: "test"}) + item1 := NewItem("job", "http://10.0.0.1:8080", ls, "collector-0") + item2 := NewItem("job", "http://10.0.0.1:8080", ls, "collector-1") + + // Collector name is not part of the hash + assert.Equal(t, item1.Hash(), item2.Hash()) +} + +func TestGetNodeName(t *testing.T) { + tests := []struct { + name string + labels labels.Labels + expected string + }{ + { + name: "pod node name label", + labels: labels.New( + labels.Label{Name: "__meta_kubernetes_pod_node_name", Value: "node-1"}, + ), + expected: "node-1", + }, + { + name: "kubernetes node name label", + labels: labels.New( + labels.Label{Name: "__meta_kubernetes_node_name", Value: "node-2"}, + ), + expected: "node-2", + }, + { + name: "endpoint node name label", + labels: labels.New( + labels.Label{Name: "__meta_kubernetes_endpoint_node_name", Value: "node-3"}, + ), + expected: "node-3", + }, + { + name: "endpointslice target kind Node", + labels: labels.New( + labels.Label{Name: "__meta_kubernetes_endpointslice_address_target_kind", Value: "Node"}, + labels.Label{Name: "__meta_kubernetes_endpointslice_address_target_name", Value: "node-4"}, + ), + expected: "node-4", + }, + { + name: "endpointslice target kind Pod (not Node)", + labels: labels.New( + labels.Label{Name: "__meta_kubernetes_endpointslice_address_target_kind", Value: "Pod"}, + labels.Label{Name: "__meta_kubernetes_endpointslice_address_target_name", Value: "pod-1"}, + ), + expected: "", + }, + { + name: "no node labels", + labels: labels.New(labels.Label{Name: "app", Value: "test"}), + expected: "", + }, + { + name: "empty labels", + labels: labels.EmptyLabels(), + expected: "", + }, + { + name: "pod node name takes priority", + labels: labels.New( + labels.Label{Name: "__meta_kubernetes_pod_node_name", Value: "node-primary"}, + labels.Label{Name: "__meta_kubernetes_node_name", Value: "node-secondary"}, + ), + expected: "node-primary", + }, + } + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + item := NewItem("job", "http://10.0.0.1:8080", tt.labels, "") + assert.Equal(t, tt.expected, item.GetNodeName()) + }) + } +} + +func TestGetEndpointSliceName(t *testing.T) { + tests := []struct { + name string + labels labels.Labels + expected string + }{ + { + name: "has endpointslice name", + labels: labels.New( + labels.Label{Name: "__meta_kubernetes_endpointslice_name", Value: "my-svc-abc12"}, + ), + expected: "my-svc-abc12", + }, + { + name: "no endpointslice name", + labels: labels.New(labels.Label{Name: "app", Value: "test"}), + expected: "", + }, + { + name: "empty labels", + labels: labels.EmptyLabels(), + expected: "", + }, + } + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + item := NewItem("job", "http://10.0.0.1:8080", tt.labels, "") + assert.Equal(t, tt.expected, item.GetEndpointSliceName()) + }) + } +} + +func TestLabelsHashWithJobName(t *testing.T) { + ls := labels.New( + labels.Label{Name: "app", Value: "test"}, + labels.Label{Name: "env", Value: "prod"}, + ) + + hash1 := LabelsHashWithJobName(ls, "job-a") + hash2 := LabelsHashWithJobName(ls, "job-a") + hash3 := LabelsHashWithJobName(ls, "job-b") + + // Same inputs produce the same hash + assert.Equal(t, hash1, hash2) + // Different job names produce different hashes + assert.NotEqual(t, hash1, hash3) + // Hash is non-zero + assert.NotZero(t, hash1) +} + +func TestHashFromBuilder(t *testing.T) { + ls := labels.New( + labels.Label{Name: "app", Value: "test"}, + labels.Label{Name: "__meta_kubernetes_namespace", Value: "default"}, + ) + builder := labels.NewBuilder(ls) + hash := HashFromBuilder(builder, "my-job") + + // Meta labels are skipped, so the hash should only consider "app=test" + lsNoMeta := labels.New(labels.Label{Name: "app", Value: "test"}) + builderNoMeta := labels.NewBuilder(lsNoMeta) + hashNoMeta := HashFromBuilder(builderNoMeta, "my-job") + + assert.Equal(t, hash, hashNoMeta, "meta labels should be skipped in hash computation") + assert.NotZero(t, hash) +} + +func TestHashFromBuilderDifferentJobs(t *testing.T) { + ls := labels.New(labels.Label{Name: "app", Value: "test"}) + builder1 := labels.NewBuilder(ls) + builder2 := labels.NewBuilder(ls) + + hash1 := HashFromBuilder(builder1, "job-1") + hash2 := HashFromBuilder(builder2, "job-2") + + assert.NotEqual(t, hash1, hash2) +} + +func TestItemHashCaching(t *testing.T) { + ls := labels.New(labels.Label{Name: "app", Value: "test"}) + item := NewItem("job", "url", ls, "") + + // First call computes the hash + h1 := item.Hash() + // Second call should return the cached value + h2 := item.Hash() + + assert.Equal(t, h1, h2) + assert.NotZero(t, h1) +} diff --git a/otelcollector/otel-allocator/internal/watcher/promOperator.go b/otelcollector/otel-allocator/internal/watcher/promOperator.go index 00f63028e..4550e3882 100644 --- a/otelcollector/otel-allocator/internal/watcher/promOperator.go +++ b/otelcollector/otel-allocator/internal/watcher/promOperator.go @@ -11,17 +11,15 @@ import ( "os" "time" - promMonitoring "github.com/prometheus-operator/prometheus-operator/pkg/apis/monitoring" - "k8s.io/client-go/metadata" - "github.com/blang/semver/v4" "github.com/go-logr/logr" + promMonitoring "github.com/prometheus-operator/prometheus-operator/pkg/apis/monitoring" monitoringv1 "github.com/prometheus-operator/prometheus-operator/pkg/apis/monitoring/v1" promv1alpha1 "github.com/prometheus-operator/prometheus-operator/pkg/apis/monitoring/v1alpha1" "github.com/prometheus-operator/prometheus-operator/pkg/assets" monitoringclient "github.com/prometheus-operator/prometheus-operator/pkg/client/versioned" "github.com/prometheus-operator/prometheus-operator/pkg/informers" - "github.com/prometheus-operator/prometheus-operator/pkg/k8sutil" + k8sutil "github.com/prometheus-operator/prometheus-operator/pkg/k8s" "github.com/prometheus-operator/prometheus-operator/pkg/listwatch" "github.com/prometheus-operator/prometheus-operator/pkg/operator" "github.com/prometheus-operator/prometheus-operator/pkg/prometheus" @@ -34,6 +32,7 @@ import ( "k8s.io/apimachinery/pkg/runtime/schema" "k8s.io/client-go/discovery" "k8s.io/client-go/kubernetes" + "k8s.io/client-go/metadata" "k8s.io/client-go/rest" "k8s.io/client-go/tools/cache" "k8s.io/client-go/util/retry" @@ -61,15 +60,14 @@ func NewPrometheusCRWatcher( if err != nil { return nil, err } - allowList, denyList := cfg.PrometheusCR.GetAllowDenyLists() monitoringInformerFactory := informers.NewMonitoringInformerFactories(allowList, denyList, monitoringclient, allocatorconfig.DefaultResyncTime, nil) - // Scope the metadata informer factory to specific namespaces for secrets access. - // This avoids requiring cluster-wide secrets list/watch RBAC. - // If SecretsAccessNamespaces is not configured, no namespaces are watched for secrets. - secretsAllowList := cfg.PrometheusCR.GetSecretsAllowList() + // Scope the metadata informer factory to the collector namespace only. + // This is used for the secrets informer so that it only needs namespace-scoped RBAC + // (a Role in kube-system) rather than cluster-wide secrets list/watch access. + secretsAllowList := map[string]struct{}{cfg.CollectorNamespace: {}} metaDataInformerFactory := informers.NewMetadataInformerFactory(secretsAllowList, denyList, mdClient, allocatorconfig.DefaultResyncTime, nil) monitoringInformers, err := getInformers(monitoringInformerFactory, cfg.ClusterConfig, promLogger, metaDataInformerFactory) diff --git a/otelcollector/otel-allocator/internal/watcher/promOperator_test.go b/otelcollector/otel-allocator/internal/watcher/promOperator_test.go index 52cc3c690..8e278236d 100644 --- a/otelcollector/otel-allocator/internal/watcher/promOperator_test.go +++ b/otelcollector/otel-allocator/internal/watcher/promOperator_test.go @@ -27,7 +27,6 @@ import ( monitoringv1 "github.com/prometheus-operator/prometheus-operator/pkg/apis/monitoring/v1" promv1alpha1 "github.com/prometheus-operator/prometheus-operator/pkg/apis/monitoring/v1alpha1" "github.com/prometheus-operator/prometheus-operator/pkg/assets" - fakemonitoringclient "github.com/prometheus-operator/prometheus-operator/pkg/client/versioned/fake" "github.com/prometheus-operator/prometheus-operator/pkg/informers" "github.com/prometheus-operator/prometheus-operator/pkg/operator" "github.com/prometheus-operator/prometheus-operator/pkg/prometheus" @@ -42,6 +41,9 @@ import ( "github.com/stretchr/testify/require" v1 "k8s.io/api/core/v1" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" + "k8s.io/apimachinery/pkg/runtime" + "k8s.io/apimachinery/pkg/runtime/schema" + "k8s.io/apimachinery/pkg/util/sets" fakediscovery "k8s.io/client-go/discovery/fake" "k8s.io/client-go/kubernetes/fake" metadatafake "k8s.io/client-go/metadata/fake" @@ -57,6 +59,53 @@ import ( // requiring at least one 100ms poll tick, so 1s gives comfortable headroom. const watchSyncDuration = time.Second +// fakeInformLister wraps a SharedIndexInformer to satisfy the informers.InformLister interface. +type fakeInformLister struct { + informer cache.SharedIndexInformer + gr schema.GroupResource +} + +func (f *fakeInformLister) Informer() cache.SharedIndexInformer { return f.informer } +func (f *fakeInformLister) Lister() cache.GenericLister { + return cache.NewGenericLister(f.informer.GetIndexer(), f.gr) +} + +// fakeFactoriesForNamespaces implements informers.FactoriesForNamespaces using FakeControllerSource. +type fakeFactoriesForNamespaces struct { + sources map[schema.GroupVersionResource]*fcache.FakeControllerSource + exemplars map[schema.GroupVersionResource]runtime.Object + namespaces sets.Set[string] +} + +func (f *fakeFactoriesForNamespaces) Namespaces() sets.Set[string] { return f.namespaces } + +func (f *fakeFactoriesForNamespaces) ForResource(_ string, resource schema.GroupVersionResource) (informers.InformLister, error) { + source, ok := f.sources[resource] + if !ok { + source = fcache.NewFakeControllerSource() + f.sources[resource] = source + } + exemplar := f.exemplars[resource] + inf := cache.NewSharedIndexInformer(source, exemplar, 1*time.Second, + cache.Indexers{cache.NamespaceIndex: cache.MetaNamespaceIndexFunc}) + return &fakeInformLister{ + informer: inf, + gr: resource.GroupResource(), + }, nil +} + +// testWatcher bundles a PrometheusCRWatcher with fake sources for use in tests. +// Tests access only the fields they need. +type testWatcher struct { + *PrometheusCRWatcher + NamespaceSource *fcache.FakeControllerSource + ServiceMonitorSource *fcache.FakeControllerSource + PodMonitorSource *fcache.FakeControllerSource + ProbeSource *fcache.FakeControllerSource + ScrapeConfigSource *fcache.FakeControllerSource + MetadataClient *metadatafake.FakeMetadataClient +} + func TestLoadConfig(t *testing.T) { namespace := "test" portName := "web" @@ -139,6 +188,7 @@ func TestLoadConfig(t *testing.T) { MetricNameValidationScheme: model.UTF8Validation, MetricNameEscapingScheme: model.AllowUTF8, ScrapeNativeHistograms: ptr.To(false), + ExtraScrapeMetrics: ptr.To(false), }, { JobName: "podMonitor/test/simple/0", @@ -166,6 +216,7 @@ func TestLoadConfig(t *testing.T) { MetricNameValidationScheme: model.UTF8Validation, MetricNameEscapingScheme: model.AllowUTF8, ScrapeNativeHistograms: ptr.To(false), + ExtraScrapeMetrics: ptr.To(false), }, }, }, @@ -255,6 +306,7 @@ func TestLoadConfig(t *testing.T) { MetricNameValidationScheme: model.UTF8Validation, MetricNameEscapingScheme: model.AllowUTF8, ScrapeNativeHistograms: ptr.To(false), + ExtraScrapeMetrics: ptr.To(false), }, }, }, @@ -334,6 +386,7 @@ func TestLoadConfig(t *testing.T) { MetricNameValidationScheme: model.UTF8Validation, MetricNameEscapingScheme: model.AllowUTF8, ScrapeNativeHistograms: ptr.To(false), + ExtraScrapeMetrics: ptr.To(false), }, }, }, @@ -428,6 +481,7 @@ func TestLoadConfig(t *testing.T) { MetricNameValidationScheme: model.UTF8Validation, MetricNameEscapingScheme: model.AllowUTF8, ScrapeNativeHistograms: ptr.To(false), + ExtraScrapeMetrics: ptr.To(false), }, { JobName: "podMonitor/test/valid-pm/0", @@ -455,6 +509,7 @@ func TestLoadConfig(t *testing.T) { MetricNameValidationScheme: model.UTF8Validation, MetricNameEscapingScheme: model.AllowUTF8, ScrapeNativeHistograms: ptr.To(false), + ExtraScrapeMetrics: ptr.To(false), }, }, }, @@ -549,6 +604,7 @@ func TestLoadConfig(t *testing.T) { MetricNameValidationScheme: model.UTF8Validation, MetricNameEscapingScheme: model.AllowUTF8, ScrapeNativeHistograms: ptr.To(false), + ExtraScrapeMetrics: ptr.To(false), }, { JobName: "podMonitor/test/valid-pm/0", @@ -576,6 +632,7 @@ func TestLoadConfig(t *testing.T) { MetricNameValidationScheme: model.UTF8Validation, MetricNameEscapingScheme: model.AllowUTF8, ScrapeNativeHistograms: ptr.To(false), + ExtraScrapeMetrics: ptr.To(false), }, }, }, @@ -652,6 +709,7 @@ func TestLoadConfig(t *testing.T) { MetricNameValidationScheme: model.UTF8Validation, MetricNameEscapingScheme: model.AllowUTF8, ScrapeNativeHistograms: ptr.To(false), + ExtraScrapeMetrics: ptr.To(false), }, }, }, @@ -728,6 +786,7 @@ func TestLoadConfig(t *testing.T) { MetricNameValidationScheme: model.UTF8Validation, MetricNameEscapingScheme: model.AllowUTF8, ScrapeNativeHistograms: ptr.To(false), + ExtraScrapeMetrics: ptr.To(false), }, }, }, @@ -797,6 +856,7 @@ func TestLoadConfig(t *testing.T) { MetricNameValidationScheme: model.UTF8Validation, MetricNameEscapingScheme: model.AllowUTF8, ScrapeNativeHistograms: ptr.To(false), + ExtraScrapeMetrics: ptr.To(false), }, }, }, @@ -868,6 +928,7 @@ func TestLoadConfig(t *testing.T) { MetricNameValidationScheme: model.UTF8Validation, MetricNameEscapingScheme: model.AllowUTF8, ScrapeNativeHistograms: ptr.To(false), + ExtraScrapeMetrics: ptr.To(false), }, }, }, @@ -943,6 +1004,7 @@ func TestLoadConfig(t *testing.T) { MetricNameValidationScheme: model.UTF8Validation, MetricNameEscapingScheme: model.AllowUTF8, ScrapeNativeHistograms: ptr.To(false), + ExtraScrapeMetrics: ptr.To(false), }, }, }, @@ -1018,6 +1080,7 @@ func TestLoadConfig(t *testing.T) { MetricNameValidationScheme: model.UTF8Validation, MetricNameEscapingScheme: model.AllowUTF8, ScrapeNativeHistograms: ptr.To(false), + ExtraScrapeMetrics: ptr.To(false), }, }, }, @@ -1085,6 +1148,7 @@ func TestLoadConfig(t *testing.T) { MetricNameValidationScheme: model.UTF8Validation, MetricNameEscapingScheme: model.AllowUTF8, ScrapeNativeHistograms: ptr.To(false), + ExtraScrapeMetrics: ptr.To(false), }, }, }, @@ -1093,25 +1157,37 @@ func TestLoadConfig(t *testing.T) { for _, tt := range tests { t.Run(tt.name, func(t *testing.T) { synctest.Test(t, func(t *testing.T) { - w, _, _ := getTestPrometheusCRWatcher(t, namespace, tt.serviceMonitors, tt.podMonitors, tt.probes, tt.scrapeConfigs, tt.cfg) + tw := newTestWatcher(t, tt.cfg) + for _, sm := range tt.serviceMonitors { + tw.ServiceMonitorSource.Add(sm) + } + for _, pm := range tt.podMonitors { + tw.PodMonitorSource.Add(pm) + } + for _, prb := range tt.probes { + tw.ProbeSource.Add(prb) + } + for _, sc := range tt.scrapeConfigs { + tw.ScrapeConfigSource.Add(sc) + } // Start namespace informers in order to populate cache. - go w.nsInformer.Run(w.stopChannel) + go tw.nsInformer.Run(tw.stopChannel) synctest.Wait() - for _, informer := range w.informers { + for _, informer := range tw.informers { // Start informers in order to populate cache. - informer.Start(w.stopChannel) + informer.Start(tw.stopChannel) } synctest.Wait() - got, err := w.LoadConfig(context.Background()) + got, err := tw.LoadConfig(context.Background()) assert.NoError(t, err) sanitizeScrapeConfigsForTest(got.ScrapeConfigs) assert.Equal(t, tt.want.ScrapeConfigs, got.ScrapeConfigs) - close(w.stopChannel) + close(tw.stopChannel) synctest.Wait() }) }) @@ -1192,6 +1268,7 @@ func TestNamespaceLabelUpdate(t *testing.T) { MetricNameValidationScheme: model.UTF8Validation, MetricNameEscapingScheme: model.AllowUTF8, ScrapeNativeHistograms: ptr.To(false), + ExtraScrapeMetrics: ptr.To(false), }, }, } @@ -1201,28 +1278,31 @@ func TestNamespaceLabelUpdate(t *testing.T) { } synctest.Test(t, func(t *testing.T) { - w, source, _ := getTestPrometheusCRWatcher(t, namespace, nil, podMonitors, nil, nil, cfg) + tw := newTestWatcher(t, cfg) + for _, pm := range podMonitors { + tw.PodMonitorSource.Add(pm) + } events := make(chan Event, 1) eventInterval := 5 * time.Millisecond - defer w.Close() - w.eventInterval = eventInterval + defer tw.Close() + tw.eventInterval = eventInterval go func() { - watchErr := w.Watch(events, make(chan error)) + watchErr := tw.Watch(events, make(chan error)) require.NoError(t, watchErr) }() // Advance time past the informer sync polling period to let Watch complete setup. time.Sleep(watchSyncDuration) synctest.Wait() - got, err := w.LoadConfig(context.Background()) + got, err := tw.LoadConfig(context.Background()) assert.NoError(t, err) sanitizeScrapeConfigsForTest(got.ScrapeConfigs) assert.Equal(t, want_before.ScrapeConfigs, got.ScrapeConfigs) - source.Modify(&v1.Namespace{ObjectMeta: metav1.ObjectMeta{ + tw.NamespaceSource.Modify(&v1.Namespace{ObjectMeta: metav1.ObjectMeta{ Name: "labellednamespace", Labels: map[string]string{ "label2": "label2", @@ -1232,7 +1312,7 @@ func TestNamespaceLabelUpdate(t *testing.T) { time.Sleep(eventInterval) synctest.Wait() - got, err = w.LoadConfig(context.Background()) + got, err = tw.LoadConfig(context.Background()) assert.NoError(t, err) sanitizeScrapeConfigsForTest(got.ScrapeConfigs) @@ -1290,8 +1370,9 @@ func TestSecretInformerUpdatesStore(t *testing.T) { } synctest.Test(t, func(t *testing.T) { - w, _, mdClient := getTestPrometheusCRWatcher(t, namespace, []*monitoringv1.ServiceMonitor{sm}, nil, nil, nil, cfg) - defer w.Close() + tw := newTestWatcher(t, cfg) + tw.ServiceMonitorSource.Add(sm) + defer tw.Close() // Add initial secret to the metadata client's tracker so the informer can watch it secretGVR := v1.SchemeGroupVersion.WithResource(string(v1.ResourceSecrets)) @@ -1306,17 +1387,17 @@ func TestSecretInformerUpdatesStore(t *testing.T) { ResourceVersion: "1", }, } - err := mdClient.Tracker().Add(initialSecretMeta) + err := tw.MetadataClient.Tracker().Add(initialSecretMeta) require.NoError(t, err) events := make(chan Event, 1) errors := make(chan error, 1) eventInterval := 5 * time.Millisecond - w.eventInterval = eventInterval + tw.eventInterval = eventInterval // Start Watch in a goroutine - this registers the secret informer event handlers go func() { - watchErr := w.Watch(events, errors) + watchErr := tw.Watch(events, errors) require.NoError(t, watchErr) }() @@ -1326,7 +1407,7 @@ func TestSecretInformerUpdatesStore(t *testing.T) { <-events // Initial config should reflect the original secret values. - got, err := w.LoadConfig(context.Background()) + got, err := tw.LoadConfig(context.Background()) require.NoError(t, err) require.NotEmpty(t, got.ScrapeConfigs) @@ -1354,7 +1435,7 @@ func TestSecretInformerUpdatesStore(t *testing.T) { "password": []byte("newpassword"), }, } - _, err = w.k8sClient.CoreV1().Secrets(namespace).Update(context.Background(), updatedSecret, metav1.UpdateOptions{}) + _, err = tw.k8sClient.CoreV1().Secrets(namespace).Update(context.Background(), updatedSecret, metav1.UpdateOptions{}) require.NoError(t, err) // Update the metadata client's tracker to trigger the informer's UpdateFunc @@ -1369,7 +1450,7 @@ func TestSecretInformerUpdatesStore(t *testing.T) { ResourceVersion: "2", }, } - err = mdClient.Tracker().Update(secretGVR, updatedSecretMeta, namespace) + err = tw.MetadataClient.Tracker().Update(secretGVR, updatedSecretMeta, namespace) require.NoError(t, err) // Wait for the informer event to be processed @@ -1377,7 +1458,7 @@ func TestSecretInformerUpdatesStore(t *testing.T) { time.Sleep(eventInterval) synctest.Wait() - got, err = w.LoadConfig(context.Background()) + got, err = tw.LoadConfig(context.Background()) require.NoError(t, err) smSC = nil @@ -1415,19 +1496,18 @@ func TestRateLimit(t *testing.T) { eventInterval := 500 * time.Millisecond cfg := allocatorconfig.Config{} - w, _, _ := getTestPrometheusCRWatcher(t, namespace, nil, nil, nil, nil, cfg) - defer w.Close() - w.eventInterval = eventInterval + tw := newTestWatcher(t, cfg) + defer tw.Close() + tw.eventInterval = eventInterval go func() { - watchErr := w.Watch(events, make(chan error)) + watchErr := tw.Watch(events, make(chan error)) require.NoError(t, watchErr) }() time.Sleep(watchSyncDuration) synctest.Wait() - _, err := w.kubeMonitoringClient.MonitoringV1().ServiceMonitors("test").Create(context.Background(), serviceMonitor, metav1.CreateOptions{}) - require.NoError(t, err) + tw.ServiceMonitorSource.Add(serviceMonitor) synctest.Wait() time.Sleep(eventInterval) synctest.Wait() @@ -1435,15 +1515,13 @@ func TestRateLimit(t *testing.T) { // Send two updates and verify that the elapsed time is at least eventInterval startTime := time.Now() - _, err = w.kubeMonitoringClient.MonitoringV1().ServiceMonitors("test").Update(context.Background(), serviceMonitor, metav1.UpdateOptions{}) - require.NoError(t, err) + tw.ServiceMonitorSource.Modify(serviceMonitor) synctest.Wait() time.Sleep(eventInterval) synctest.Wait() <-events - _, err = w.kubeMonitoringClient.MonitoringV1().ServiceMonitors("test").Update(context.Background(), serviceMonitor, metav1.UpdateOptions{}) - require.NoError(t, err) + tw.ServiceMonitorSource.Modify(serviceMonitor) synctest.Wait() time.Sleep(eventInterval) synctest.Wait() @@ -1523,21 +1601,24 @@ func TestDefaultDurations(t *testing.T) { for _, tt := range tests { t.Run(tt.name, func(t *testing.T) { synctest.Test(t, func(t *testing.T) { - w, _, _ := getTestPrometheusCRWatcher(t, namespace, tt.serviceMonitors, nil, nil, nil, tt.cfg) - defer w.Close() + tw := newTestWatcher(t, tt.cfg) + for _, sm := range tt.serviceMonitors { + tw.ServiceMonitorSource.Add(sm) + } + defer tw.Close() events := make(chan Event, 1) eventInterval := 5 * time.Millisecond - w.eventInterval = eventInterval + tw.eventInterval = eventInterval go func() { - watchErr := w.Watch(events, make(chan error)) + watchErr := tw.Watch(events, make(chan error)) require.NoError(t, watchErr) }() time.Sleep(watchSyncDuration) synctest.Wait() - got, err := w.LoadConfig(context.Background()) + got, err := tw.LoadConfig(context.Background()) assert.NoError(t, err) assert.NotEmpty(t, got.ScrapeConfigs) @@ -1551,53 +1632,13 @@ func TestDefaultDurations(t *testing.T) { } } -// getTestPrometheusCRWatcher creates a test instance of PrometheusCRWatcher with fake clients -// and test secrets. Returns the watcher, namespace source, and metadata client for secret updates. -func getTestPrometheusCRWatcher( - t *testing.T, - namespace string, - svcMonitors []*monitoringv1.ServiceMonitor, - podMonitors []*monitoringv1.PodMonitor, - probes []*monitoringv1.Probe, - scrapeConfigs []*promv1alpha1.ScrapeConfig, - cfg allocatorconfig.Config, -) (*PrometheusCRWatcher, *fcache.FakeControllerSource, *metadatafake.FakeMetadataClient) { - mClient := fakemonitoringclient.NewSimpleClientset() - for _, sm := range svcMonitors { - if sm != nil { - _, err := mClient.MonitoringV1().ServiceMonitors(sm.Namespace).Create(context.Background(), sm, metav1.CreateOptions{}) - if err != nil { - t.Fatal(t, err) - } - } - } - for _, pm := range podMonitors { - if pm != nil { - _, err := mClient.MonitoringV1().PodMonitors(pm.Namespace).Create(context.Background(), pm, metav1.CreateOptions{}) - if err != nil { - t.Fatal(t, err) - } - } - } - for _, prb := range probes { - if prb != nil { - _, err := mClient.MonitoringV1().Probes(prb.Namespace).Create(context.Background(), prb, metav1.CreateOptions{}) - if err != nil { - t.Fatal(t, err) - } - } - } - - for _, scc := range scrapeConfigs { - if scc != nil { - _, err := mClient.MonitoringV1alpha1().ScrapeConfigs(scc.Namespace).Create(context.Background(), scc, metav1.CreateOptions{}) - if err != nil { - t.Fatal(t, err) - } - } - } +// newTestWatcher creates a testWatcher with fake sources for the given config. +// Callers add resources to the returned sources (e.g. tw.ServiceMonitorSource.Add) +// before starting informers. +func newTestWatcher(t *testing.T, cfg allocatorconfig.Config) *testWatcher { + t.Helper() - k8sClient := fake.NewSimpleClientset() + k8sClient := fake.NewClientset() _, err := k8sClient.CoreV1().Secrets("test").Create(context.Background(), &v1.Secret{ ObjectMeta: metav1.ObjectMeta{ Name: "basic-auth", @@ -1605,9 +1646,7 @@ func getTestPrometheusCRWatcher( }, Data: map[string][]byte{"username": []byte("admin"), "password": []byte("password")}, }, metav1.CreateOptions{}) - if err != nil { - t.Fatal(t, err) - } + require.NoError(t, err) _, err = k8sClient.CoreV1().Secrets("test").Create(context.Background(), &v1.Secret{ ObjectMeta: metav1.ObjectMeta{ Name: "bearer", @@ -1615,28 +1654,82 @@ func getTestPrometheusCRWatcher( }, Data: map[string][]byte{"token": []byte("bearer-token")}, }, metav1.CreateOptions{}) - if err != nil { - t.Fatal(t, err) + require.NoError(t, err) + + // newSource creates a FakeControllerSource and registers cleanup. + newSource := func() *fcache.FakeControllerSource { + s := fcache.NewFakeControllerSource() + t.Cleanup(func() { s.Broadcaster.Shutdown() }) + return s } - factory := informers.NewMonitoringInformerFactories(map[string]struct{}{v1.NamespaceAll: {}}, map[string]struct{}{}, mClient, 1*time.Second, nil) + smSource := newSource() + pmSource := newSource() + probeSource := newSource() + scSource := newSource() + nsSource := newSource() + + // Build fake factories backed by the sources. + type gvrInfo struct { + gvr schema.GroupVersionResource + source *fcache.FakeControllerSource + exemplar runtime.Object + } + resources := []gvrInfo{ + {monitoringv1.SchemeGroupVersion.WithResource(monitoringv1.ServiceMonitorName), smSource, &monitoringv1.ServiceMonitor{}}, + {monitoringv1.SchemeGroupVersion.WithResource(monitoringv1.PodMonitorName), pmSource, &monitoringv1.PodMonitor{}}, + {monitoringv1.SchemeGroupVersion.WithResource(monitoringv1.ProbeName), probeSource, &monitoringv1.Probe{}}, + {promv1alpha1.SchemeGroupVersion.WithResource(promv1alpha1.ScrapeConfigName), scSource, &promv1alpha1.ScrapeConfig{}}, + } + + sources := make(map[schema.GroupVersionResource]*fcache.FakeControllerSource, len(resources)) + exemplars := make(map[schema.GroupVersionResource]runtime.Object, len(resources)) + for _, r := range resources { + sources[r.gvr] = r.source + exemplars[r.gvr] = r.exemplar + } - // Create fake metadata client for secret informer - scheme := metadatafake.NewTestScheme() - _ = metav1.AddMetaToScheme(scheme) - mdClient := metadatafake.NewSimpleMetadataClient(scheme) + fakeFactory := &fakeFactoriesForNamespaces{ + sources: sources, + exemplars: exemplars, + namespaces: sets.New[string](v1.NamespaceAll), + } + + // Create fake metadata client for secret informer. + mdScheme := metadatafake.NewTestScheme() + _ = metav1.AddMetaToScheme(mdScheme) + mdClient := metadatafake.NewSimpleMetadataClient(mdScheme) metadataFactory := informers.NewMetadataInformerFactory(map[string]struct{}{v1.NamespaceAll: {}}, map[string]struct{}{}, mdClient, 1*time.Second, nil) - informers, err := getTestInformers(factory, metadataFactory) - if err != nil { - t.Fatal(t, err) + // Build informers via a for-range loop over name→GVR. + informerDefs := map[string]schema.GroupVersionResource{ + monitoringv1.ServiceMonitorName: monitoringv1.SchemeGroupVersion.WithResource(monitoringv1.ServiceMonitorName), + monitoringv1.PodMonitorName: monitoringv1.SchemeGroupVersion.WithResource(monitoringv1.PodMonitorName), + monitoringv1.ProbeName: monitoringv1.SchemeGroupVersion.WithResource(monitoringv1.ProbeName), + promv1alpha1.ScrapeConfigName: promv1alpha1.SchemeGroupVersion.WithResource(promv1alpha1.ScrapeConfigName), + } + informersMap := make(map[string]*informers.ForResource, len(informerDefs)+1) + for name, gvr := range informerDefs { + inf, infErr := informers.NewInformersForResource(fakeFactory, gvr) + require.NoError(t, infErr) + informersMap[name] = inf + } + // Secret informer from metadata factory. + secretInformer, err := informers.NewInformersForResourceWithTransform( + metadataFactory, + v1.SchemeGroupVersion.WithResource(string(v1.ResourceSecrets)), + informers.PartialObjectMetadataStrip(operator.SecretGVK()), + ) + require.NoError(t, err) + if secretInformer != nil { + informersMap[string(v1.ResourceSecrets)] = secretInformer } serviceDiscoveryRole := monitoringv1.ServiceDiscoveryRole("EndpointSlice") prom := &monitoringv1.Prometheus{ ObjectMeta: metav1.ObjectMeta{ - Namespace: namespace, + Namespace: "test", }, Spec: monitoringv1.PrometheusSpec{ CommonPrometheusFields: monitoringv1.CommonPrometheusFields{ @@ -1659,19 +1752,15 @@ func getTestPrometheusCRWatcher( promOperatorLogger := slog.New(slog.NewTextHandler(os.Stderr, &slog.HandlerOptions{Level: slog.LevelWarn})) generator, err := prometheus.NewConfigGenerator(promOperatorLogger, prom, prometheus.WithEndpointSliceSupport(), prometheus.WithInlineTLSConfig()) - if err != nil { - t.Fatal(t, err) - } + require.NoError(t, err) store := assets.NewStoreBuilder(k8sClient.CoreV1(), k8sClient.CoreV1()) promRegisterer := prometheusgoclient.NewRegistry() operatorMetrics := operator.NewMetrics(promRegisterer) eventRecorder := operator.NewFakeRecorder(10, prom) - source := fcache.NewFakeControllerSource() - t.Cleanup(func() { source.Broadcaster.Shutdown() }) - source.Add(&v1.Namespace{ObjectMeta: metav1.ObjectMeta{Name: "test"}}) - source.Add(&v1.Namespace{ObjectMeta: metav1.ObjectMeta{ + nsSource.Add(&v1.Namespace{ObjectMeta: metav1.ObjectMeta{Name: "test"}}) + nsSource.Add(&v1.Namespace{ObjectMeta: metav1.ObjectMeta{ Name: "labellednamespace", Labels: map[string]string{ "label1": "label1", @@ -1679,27 +1768,34 @@ func getTestPrometheusCRWatcher( }}) // create the shared informer and resync every 1s - nsMonInf := cache.NewSharedInformer(source, &v1.Namespace{}, 1*time.Second).(cache.SharedIndexInformer) + nsMonInf := cache.NewSharedInformer(nsSource, &v1.Namespace{}, 1*time.Second).(cache.SharedIndexInformer) resourceSelector, err := prometheus.NewResourceSelector(promOperatorLogger, prom, store, nsMonInf, operatorMetrics, eventRecorder) require.NoError(t, err) - return &PrometheusCRWatcher{ - logger: slog.Default(), - kubeMonitoringClient: mClient, - k8sClient: k8sClient, - informers: informers, - nsInformer: nsMonInf, - stopChannel: make(chan struct{}), - configGenerator: generator, - podMonitorNamespaceSelector: cfg.PrometheusCR.PodMonitorNamespaceSelector, - serviceMonitorNamespaceSelector: cfg.PrometheusCR.ServiceMonitorNamespaceSelector, - probeNamespaceSelector: cfg.PrometheusCR.ProbeNamespaceSelector, - scrapeConfigNamespaceSelector: cfg.PrometheusCR.ScrapeConfigNamespaceSelector, - resourceSelector: resourceSelector, - store: store, - prometheusCR: prom, - }, source, mdClient + return &testWatcher{ + PrometheusCRWatcher: &PrometheusCRWatcher{ + logger: slog.Default(), + k8sClient: k8sClient, + informers: informersMap, + nsInformer: nsMonInf, + stopChannel: make(chan struct{}), + configGenerator: generator, + podMonitorNamespaceSelector: cfg.PrometheusCR.PodMonitorNamespaceSelector, + serviceMonitorNamespaceSelector: cfg.PrometheusCR.ServiceMonitorNamespaceSelector, + probeNamespaceSelector: cfg.PrometheusCR.ProbeNamespaceSelector, + scrapeConfigNamespaceSelector: cfg.PrometheusCR.ScrapeConfigNamespaceSelector, + resourceSelector: resourceSelector, + store: store, + prometheusCR: prom, + }, + NamespaceSource: nsSource, + ServiceMonitorSource: smSource, + PodMonitorSource: pmSource, + ProbeSource: probeSource, + ScrapeConfigSource: scSource, + MetadataClient: mdClient, + } } // Remove relable configs fields from scrape configs for testing, @@ -1711,56 +1807,6 @@ func sanitizeScrapeConfigsForTest(scs []*promconfig.ScrapeConfig) { } } -// getTestInformers creates informers for testing without CRD availability checks. -func getTestInformers(factory, metadataFactory informers.FactoriesForNamespaces) (map[string]*informers.ForResource, error) { - informersMap := make(map[string]*informers.ForResource) - - // Create ServiceMonitor informers - serviceMonitorInformers, err := informers.NewInformersForResource(factory, monitoringv1.SchemeGroupVersion.WithResource(monitoringv1.ServiceMonitorName)) - if err != nil { - return nil, err - } - informersMap[monitoringv1.ServiceMonitorName] = serviceMonitorInformers - - // Create PodMonitor informers - podMonitorInformers, err := informers.NewInformersForResource(factory, monitoringv1.SchemeGroupVersion.WithResource(monitoringv1.PodMonitorName)) - if err != nil { - return nil, err - } - informersMap[monitoringv1.PodMonitorName] = podMonitorInformers - - // Create Probe informers - probeInformers, err := informers.NewInformersForResource(factory, monitoringv1.SchemeGroupVersion.WithResource(monitoringv1.ProbeName)) - if err != nil { - return nil, err - } - informersMap[monitoringv1.ProbeName] = probeInformers - - // Create ScrapeConfig informers - scrapeConfigInformers, err := informers.NewInformersForResource(factory, promv1alpha1.SchemeGroupVersion.WithResource(promv1alpha1.ScrapeConfigName)) - if err != nil { - return nil, err - } - informersMap[promv1alpha1.ScrapeConfigName] = scrapeConfigInformers - - // Secret informer - mirrors production code in getInformers - if metadataFactory != nil { - secretInformer, err := informers.NewInformersForResourceWithTransform( - metadataFactory, - v1.SchemeGroupVersion.WithResource(string(v1.ResourceSecrets)), - informers.PartialObjectMetadataStrip(operator.SecretGVK()), - ) - if err != nil { - return nil, err - } - if secretInformer != nil { - informersMap[string(v1.ResourceSecrets)] = secretInformer - } - } - - return informersMap, nil -} - // TestCRDAvailabilityChecks tests the CRDs' availability. func TestCRDAvailabilityChecks(t *testing.T) { tests := []struct { @@ -1789,7 +1835,7 @@ func TestCRDAvailabilityChecks(t *testing.T) { t.Run(tt.name, func(t *testing.T) { // Create fake discovery client fakeDiscovery := &fakediscovery.FakeDiscovery{ - Fake: &fake.NewSimpleClientset().Fake, + Fake: &fake.NewClientset().Fake, } // Set up resources diff --git a/otelcollector/prom-config-validator-builder/go.mod b/otelcollector/prom-config-validator-builder/go.mod index cf9088b29..78796a5f5 100644 --- a/otelcollector/prom-config-validator-builder/go.mod +++ b/otelcollector/prom-config-validator-builder/go.mod @@ -3,23 +3,23 @@ module github.com/microsoft/prometheus-collector/otelcollector/prom-config-valid go 1.25.0 require ( - github.com/open-telemetry/opentelemetry-collector-contrib/exporter/prometheusexporter v0.148.0 - github.com/open-telemetry/opentelemetry-collector-contrib/processor/filterprocessor v0.148.0 - github.com/open-telemetry/opentelemetry-collector-contrib/processor/resourceprocessor v0.148.0 - github.com/open-telemetry/opentelemetry-collector-contrib/receiver/prometheusreceiver v0.148.0 + github.com/open-telemetry/opentelemetry-collector-contrib/exporter/prometheusexporter v0.149.0 + github.com/open-telemetry/opentelemetry-collector-contrib/processor/filterprocessor v0.149.0 + github.com/open-telemetry/opentelemetry-collector-contrib/processor/resourceprocessor v0.149.0 + github.com/open-telemetry/opentelemetry-collector-contrib/receiver/prometheusreceiver v0.149.0 github.com/prometheus-collector/shared v0.0.0-00010101000000-000000000000 - go.opentelemetry.io/collector/component v1.54.0 - go.opentelemetry.io/collector/confmap v1.54.0 - go.opentelemetry.io/collector/confmap/provider/envprovider v1.54.0 - go.opentelemetry.io/collector/confmap/provider/fileprovider v1.54.0 - go.opentelemetry.io/collector/exporter v1.54.0 - go.opentelemetry.io/collector/exporter/otlpexporter v0.148.0 - go.opentelemetry.io/collector/extension v1.54.0 - go.opentelemetry.io/collector/otelcol v0.148.0 - go.opentelemetry.io/collector/processor v1.54.0 - go.opentelemetry.io/collector/processor/batchprocessor v0.148.0 - go.opentelemetry.io/collector/receiver v1.54.0 - go.opentelemetry.io/collector/service v0.148.0 + go.opentelemetry.io/collector/component v1.55.0 + go.opentelemetry.io/collector/confmap v1.55.0 + go.opentelemetry.io/collector/confmap/provider/envprovider v1.55.0 + go.opentelemetry.io/collector/confmap/provider/fileprovider v1.55.0 + go.opentelemetry.io/collector/exporter v1.55.0 + go.opentelemetry.io/collector/exporter/otlpexporter v0.149.0 + go.opentelemetry.io/collector/extension v1.55.0 + go.opentelemetry.io/collector/otelcol v0.149.0 + go.opentelemetry.io/collector/processor v1.55.0 + go.opentelemetry.io/collector/processor/batchprocessor v0.149.0 + go.opentelemetry.io/collector/receiver v1.55.0 + go.opentelemetry.io/collector/service v0.149.0 gopkg.in/yaml.v2 v2.4.0 ) @@ -37,7 +37,7 @@ require ( github.com/Microsoft/go-winio v0.6.2 // indirect github.com/alecthomas/participle/v2 v2.1.4 // indirect github.com/alecthomas/units v0.0.0-20240927000941-0f3dac36c52b // indirect - github.com/antchfx/xmlquery v1.5.0 // indirect + github.com/antchfx/xmlquery v1.5.1 // indirect github.com/antchfx/xpath v1.3.6 // indirect github.com/armon/go-metrics v0.4.1 // indirect github.com/aws/aws-sdk-go-v2 v1.41.1 // indirect @@ -62,7 +62,7 @@ require ( github.com/basgys/goxml2json v1.1.1-0.20231018121955-e66ee54ceaad // indirect github.com/bboreham/go-loser v0.0.0-20230920113527-fcc2c21820a3 // indirect github.com/beorn7/perks v1.0.1 // indirect - github.com/buger/jsonparser v1.1.1 // indirect + github.com/buger/jsonparser v1.1.2 // indirect github.com/cenkalti/backoff/v5 v5.0.3 // indirect github.com/cespare/xxhash/v2 v2.3.0 // indirect github.com/cncf/xds/go v0.0.0-20251210132809-ee656c7534f5 // indirect @@ -77,7 +77,7 @@ require ( github.com/docker/go-connections v0.6.0 // indirect github.com/docker/go-units v0.5.0 // indirect github.com/ebitengine/purego v0.10.0 // indirect - github.com/edsrzf/mmap-go v1.2.0 // indirect + github.com/edsrzf/mmap-go v1.2.1-0.20241212181136-fad1cd13edbd // indirect github.com/elastic/go-grok v0.3.1 // indirect github.com/elastic/lunes v0.2.0 // indirect github.com/emicklei/go-restful/v3 v3.12.2 // indirect @@ -120,7 +120,7 @@ require ( github.com/go-viper/mapstructure/v2 v2.5.0 // indirect github.com/go-zookeeper/zk v1.0.4 // indirect github.com/gobwas/glob v0.2.3 // indirect - github.com/goccy/go-json v0.10.5 // indirect + github.com/goccy/go-json v0.10.6 // indirect github.com/goccy/go-yaml v1.19.2 // indirect github.com/gogo/protobuf v1.3.2 // indirect github.com/golang-jwt/jwt/v5 v5.3.1 // indirect @@ -160,11 +160,11 @@ require ( github.com/jpillora/backoff v1.0.0 // indirect github.com/json-iterator/go v1.1.12 // indirect github.com/julienschmidt/httprouter v1.3.0 // indirect - github.com/klauspost/compress v1.18.4 // indirect + github.com/klauspost/compress v1.18.5 // indirect github.com/klauspost/cpuid/v2 v2.3.0 // indirect github.com/knadh/koanf/maps v0.1.2 // indirect github.com/knadh/koanf/providers/confmap v1.0.0 // indirect - github.com/knadh/koanf/v2 v2.3.3 // indirect + github.com/knadh/koanf/v2 v2.3.4 // indirect github.com/kolo/xmlrpc v0.0.0-20220921171641-a4b6fa1dd06b // indirect github.com/kylelemons/godebug v1.1.0 // indirect github.com/linode/linodego v1.65.0 // indirect @@ -187,14 +187,14 @@ require ( github.com/mwitkow/go-conntrack v0.0.0-20190716064945-2f068394615f // indirect github.com/oklog/ulid v1.3.1 // indirect github.com/oklog/ulid/v2 v2.1.1 // indirect - github.com/open-telemetry/opentelemetry-collector-contrib/internal/coreinternal v0.148.0 // indirect - github.com/open-telemetry/opentelemetry-collector-contrib/internal/exp/metrics v0.148.0 // indirect - github.com/open-telemetry/opentelemetry-collector-contrib/internal/filter v0.148.0 // indirect - github.com/open-telemetry/opentelemetry-collector-contrib/pkg/ottl v0.148.0 // indirect - github.com/open-telemetry/opentelemetry-collector-contrib/pkg/pdatautil v0.148.0 // indirect - github.com/open-telemetry/opentelemetry-collector-contrib/pkg/resourcetotelemetry v0.148.0 // indirect - github.com/open-telemetry/opentelemetry-collector-contrib/pkg/translator/prometheus v0.148.0 // indirect - github.com/open-telemetry/opentelemetry-collector-contrib/processor/deltatocumulativeprocessor v0.148.0 // indirect + github.com/open-telemetry/opentelemetry-collector-contrib/internal/coreinternal v0.149.0 // indirect + github.com/open-telemetry/opentelemetry-collector-contrib/internal/exp/metrics v0.149.0 // indirect + github.com/open-telemetry/opentelemetry-collector-contrib/internal/filter v0.149.0 // indirect + github.com/open-telemetry/opentelemetry-collector-contrib/pkg/ottl v0.149.0 // indirect + github.com/open-telemetry/opentelemetry-collector-contrib/pkg/pdatautil v0.149.0 // indirect + github.com/open-telemetry/opentelemetry-collector-contrib/pkg/resourcetotelemetry v0.149.0 // indirect + github.com/open-telemetry/opentelemetry-collector-contrib/pkg/translator/prometheus v0.149.0 // indirect + github.com/open-telemetry/opentelemetry-collector-contrib/processor/deltatocumulativeprocessor v0.149.0 // indirect github.com/opencontainers/go-digest v1.0.0 // indirect github.com/opencontainers/image-spec v1.1.1 // indirect github.com/ovh/go-ovh v1.9.0 // indirect @@ -239,57 +239,57 @@ require ( github.com/zeebo/xxh3 v1.1.0 // indirect go.mongodb.org/mongo-driver v1.17.6 // indirect go.opentelemetry.io/auto/sdk v1.2.1 // indirect - go.opentelemetry.io/collector v0.148.0 // indirect - go.opentelemetry.io/collector/client v1.54.0 // indirect - go.opentelemetry.io/collector/component/componentstatus v0.148.0 // indirect - go.opentelemetry.io/collector/component/componenttest v0.148.0 // indirect - go.opentelemetry.io/collector/config/configauth v1.54.0 // indirect - go.opentelemetry.io/collector/config/configcompression v1.54.0 // indirect - go.opentelemetry.io/collector/config/configgrpc v0.148.0 // indirect - go.opentelemetry.io/collector/config/confighttp v0.148.0 // indirect - go.opentelemetry.io/collector/config/configmiddleware v1.54.0 // indirect - go.opentelemetry.io/collector/config/confignet v1.54.0 // indirect - go.opentelemetry.io/collector/config/configopaque v1.54.0 // indirect - go.opentelemetry.io/collector/config/configoptional v1.54.0 // indirect - go.opentelemetry.io/collector/config/configretry v1.54.0 // indirect - go.opentelemetry.io/collector/config/configtelemetry v0.148.0 // indirect - go.opentelemetry.io/collector/config/configtls v1.54.0 // indirect - go.opentelemetry.io/collector/confmap/xconfmap v0.148.0 // indirect - go.opentelemetry.io/collector/connector v0.148.0 // indirect - go.opentelemetry.io/collector/connector/connectortest v0.148.0 // indirect - go.opentelemetry.io/collector/connector/xconnector v0.148.0 // indirect - go.opentelemetry.io/collector/consumer v1.54.0 // indirect - go.opentelemetry.io/collector/consumer/consumererror v0.148.0 // indirect - go.opentelemetry.io/collector/consumer/consumererror/xconsumererror v0.148.0 // indirect - go.opentelemetry.io/collector/consumer/consumertest v0.148.0 // indirect - go.opentelemetry.io/collector/consumer/xconsumer v0.148.0 // indirect - go.opentelemetry.io/collector/exporter/exporterhelper v0.148.0 // indirect - go.opentelemetry.io/collector/exporter/exporterhelper/xexporterhelper v0.148.0 // indirect - go.opentelemetry.io/collector/exporter/exportertest v0.148.0 // indirect - go.opentelemetry.io/collector/exporter/xexporter v0.148.0 // indirect - go.opentelemetry.io/collector/extension/extensionauth v1.54.0 // indirect - go.opentelemetry.io/collector/extension/extensioncapabilities v0.148.0 // indirect - go.opentelemetry.io/collector/extension/extensionmiddleware v0.148.0 // indirect - go.opentelemetry.io/collector/extension/extensiontest v0.148.0 // indirect - go.opentelemetry.io/collector/extension/xextension v0.148.0 // indirect - go.opentelemetry.io/collector/featuregate v1.54.0 // indirect - go.opentelemetry.io/collector/internal/componentalias v0.148.0 // indirect - go.opentelemetry.io/collector/internal/fanoutconsumer v0.148.0 // indirect - go.opentelemetry.io/collector/internal/telemetry v0.148.0 // indirect - go.opentelemetry.io/collector/pdata v1.54.0 // indirect - go.opentelemetry.io/collector/pdata/pprofile v0.148.0 // indirect - go.opentelemetry.io/collector/pdata/testdata v0.148.0 // indirect - go.opentelemetry.io/collector/pdata/xpdata v0.148.0 // indirect - go.opentelemetry.io/collector/pipeline v1.54.0 // indirect - go.opentelemetry.io/collector/pipeline/xpipeline v0.148.0 // indirect - go.opentelemetry.io/collector/processor/processorhelper v0.148.0 // indirect - go.opentelemetry.io/collector/processor/processorhelper/xprocessorhelper v0.148.0 // indirect - go.opentelemetry.io/collector/processor/processortest v0.148.0 // indirect - go.opentelemetry.io/collector/processor/xprocessor v0.148.0 // indirect - go.opentelemetry.io/collector/receiver/receiverhelper v0.148.0 // indirect - go.opentelemetry.io/collector/receiver/receivertest v0.148.0 // indirect - go.opentelemetry.io/collector/receiver/xreceiver v0.148.0 // indirect - go.opentelemetry.io/collector/service/hostcapabilities v0.148.0 // indirect + go.opentelemetry.io/collector v0.149.0 // indirect + go.opentelemetry.io/collector/client v1.55.0 // indirect + go.opentelemetry.io/collector/component/componentstatus v0.149.0 // indirect + go.opentelemetry.io/collector/component/componenttest v0.149.0 // indirect + go.opentelemetry.io/collector/config/configauth v1.55.0 // indirect + go.opentelemetry.io/collector/config/configcompression v1.55.0 // indirect + go.opentelemetry.io/collector/config/configgrpc v0.149.0 // indirect + go.opentelemetry.io/collector/config/confighttp v0.149.0 // indirect + go.opentelemetry.io/collector/config/configmiddleware v1.55.0 // indirect + go.opentelemetry.io/collector/config/confignet v1.55.0 // indirect + go.opentelemetry.io/collector/config/configopaque v1.55.0 // indirect + go.opentelemetry.io/collector/config/configoptional v1.55.0 // indirect + go.opentelemetry.io/collector/config/configretry v1.55.0 // indirect + go.opentelemetry.io/collector/config/configtelemetry v0.149.0 // indirect + go.opentelemetry.io/collector/config/configtls v1.55.0 // indirect + go.opentelemetry.io/collector/confmap/xconfmap v0.149.0 // indirect + go.opentelemetry.io/collector/connector v0.149.0 // indirect + go.opentelemetry.io/collector/connector/connectortest v0.149.0 // indirect + go.opentelemetry.io/collector/connector/xconnector v0.149.0 // indirect + go.opentelemetry.io/collector/consumer v1.55.0 // indirect + go.opentelemetry.io/collector/consumer/consumererror v0.149.0 // indirect + go.opentelemetry.io/collector/consumer/consumererror/xconsumererror v0.149.0 // indirect + go.opentelemetry.io/collector/consumer/consumertest v0.149.0 // indirect + go.opentelemetry.io/collector/consumer/xconsumer v0.149.0 // indirect + go.opentelemetry.io/collector/exporter/exporterhelper v0.149.0 // indirect + go.opentelemetry.io/collector/exporter/exporterhelper/xexporterhelper v0.149.0 // indirect + go.opentelemetry.io/collector/exporter/exportertest v0.149.0 // indirect + go.opentelemetry.io/collector/exporter/xexporter v0.149.0 // indirect + go.opentelemetry.io/collector/extension/extensionauth v1.55.0 // indirect + go.opentelemetry.io/collector/extension/extensioncapabilities v0.149.0 // indirect + go.opentelemetry.io/collector/extension/extensionmiddleware v0.149.0 // indirect + go.opentelemetry.io/collector/extension/extensiontest v0.149.0 // indirect + go.opentelemetry.io/collector/extension/xextension v0.149.0 // indirect + go.opentelemetry.io/collector/featuregate v1.55.0 // indirect + go.opentelemetry.io/collector/internal/componentalias v0.149.0 // indirect + go.opentelemetry.io/collector/internal/fanoutconsumer v0.149.0 // indirect + go.opentelemetry.io/collector/internal/telemetry v0.149.0 // indirect + go.opentelemetry.io/collector/pdata v1.55.0 // indirect + go.opentelemetry.io/collector/pdata/pprofile v0.149.0 // indirect + go.opentelemetry.io/collector/pdata/testdata v0.149.0 // indirect + go.opentelemetry.io/collector/pdata/xpdata v0.149.0 // indirect + go.opentelemetry.io/collector/pipeline v1.55.0 // indirect + go.opentelemetry.io/collector/pipeline/xpipeline v0.149.0 // indirect + go.opentelemetry.io/collector/processor/processorhelper v0.149.0 // indirect + go.opentelemetry.io/collector/processor/processorhelper/xprocessorhelper v0.149.0 // indirect + go.opentelemetry.io/collector/processor/processortest v0.149.0 // indirect + go.opentelemetry.io/collector/processor/xprocessor v0.149.0 // indirect + go.opentelemetry.io/collector/receiver/receiverhelper v0.149.0 // indirect + go.opentelemetry.io/collector/receiver/receivertest v0.149.0 // indirect + go.opentelemetry.io/collector/receiver/xreceiver v0.149.0 // indirect + go.opentelemetry.io/collector/service/hostcapabilities v0.149.0 // indirect go.opentelemetry.io/contrib/bridges/otelzap v0.17.0 // indirect go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.67.0 // indirect go.opentelemetry.io/contrib/instrumentation/net/http/httptrace/otelhttptrace v0.65.0 // indirect @@ -323,22 +323,22 @@ require ( go.yaml.in/yaml/v2 v2.4.3 // indirect go.yaml.in/yaml/v3 v3.0.4 // indirect go.yaml.in/yaml/v4 v4.0.0-rc.4 // indirect - golang.org/x/crypto v0.48.0 // indirect + golang.org/x/crypto v0.49.0 // indirect golang.org/x/exp v0.0.0-20260218203240-3dfff04db8fa // indirect - golang.org/x/mod v0.33.0 // indirect - golang.org/x/net v0.51.0 // indirect + golang.org/x/mod v0.34.0 // indirect + golang.org/x/net v0.52.0 // indirect golang.org/x/oauth2 v0.35.0 // indirect - golang.org/x/sync v0.19.0 // indirect + golang.org/x/sync v0.20.0 // indirect golang.org/x/sys v0.42.0 // indirect - golang.org/x/term v0.40.0 // indirect - golang.org/x/text v0.34.0 // indirect + golang.org/x/term v0.41.0 // indirect + golang.org/x/text v0.35.0 // indirect golang.org/x/time v0.14.0 // indirect - golang.org/x/tools v0.42.0 // indirect + golang.org/x/tools v0.43.0 // indirect gonum.org/v1/gonum v0.17.0 // indirect google.golang.org/api v0.265.0 // indirect google.golang.org/genproto/googleapis/api v0.0.0-20260226221140-a57be14db171 // indirect google.golang.org/genproto/googleapis/rpc v0.0.0-20260226221140-a57be14db171 // indirect - google.golang.org/grpc v1.79.2 // indirect + google.golang.org/grpc v1.79.3 // indirect google.golang.org/protobuf v1.36.11 // indirect gopkg.in/evanphx/json-patch.v4 v4.13.0 // indirect gopkg.in/inf.v0 v0.9.1 // indirect diff --git a/otelcollector/prom-config-validator-builder/go.sum b/otelcollector/prom-config-validator-builder/go.sum index 3e44bbb67..734195783 100644 --- a/otelcollector/prom-config-validator-builder/go.sum +++ b/otelcollector/prom-config-validator-builder/go.sum @@ -47,9 +47,8 @@ github.com/alecthomas/units v0.0.0-20151022065526-2efee857e7cf/go.mod h1:ybxpYRF github.com/alecthomas/units v0.0.0-20190717042225-c3de453c63f4/go.mod h1:ybxpYRFXyAe+OPACYpWeL0wqObRcbAqCMya13uyzqw0= github.com/alecthomas/units v0.0.0-20240927000941-0f3dac36c52b h1:mimo19zliBX/vSQ6PWWSL9lK8qwHozUj03+zLoEB8O0= github.com/alecthomas/units v0.0.0-20240927000941-0f3dac36c52b/go.mod h1:fvzegU4vN3H1qMT+8wDmzjAcDONcgo2/SZ/TyfdUOFs= -github.com/antchfx/xmlquery v1.5.0 h1:uAi+mO40ZWfyU6mlUBxRVvL6uBNZ6LMU4M3+mQIBV4c= -github.com/antchfx/xmlquery v1.5.0/go.mod h1:lJfWRXzYMK1ss32zm1GQV3gMIW/HFey3xDZmkP1SuNc= -github.com/antchfx/xpath v1.3.5/go.mod h1:i54GszH55fYfBmoZXapTHN8T8tkcHfRgLyVwwqzXNcs= +github.com/antchfx/xmlquery v1.5.1 h1:T9I4Ns1EXiWHy0IqKupGhnfTQtJwlGrpXtauYOoNv78= +github.com/antchfx/xmlquery v1.5.1/go.mod h1:bVqnl7TaDXSReKINrhZz+2E/PbCu2tUahb+wZ7WZNT8= github.com/antchfx/xpath v1.3.6 h1:s0y+ElRRtTQdfHP609qFu0+c6bglDv20pqOViQjjdPI= github.com/antchfx/xpath v1.3.6/go.mod h1:i54GszH55fYfBmoZXapTHN8T8tkcHfRgLyVwwqzXNcs= github.com/armon/circbuf v0.0.0-20150827004946-bbbad097214e/go.mod h1:3U/XgcO3hCbHZ8TKRvWD2dDTCfh9M9ya+I9JpbB7O8o= @@ -107,8 +106,8 @@ github.com/beorn7/perks v1.0.1/go.mod h1:G2ZrVWU2WbWT9wwq4/hrbKbnv/1ERSJQ0ibhJ6r github.com/bgentry/speakeasy v0.1.0/go.mod h1:+zsyZBPWlz7T6j88CTgSN5bM796AkVf0kBD4zp0CCIs= github.com/bitly/go-simplejson v0.5.1 h1:xgwPbetQScXt1gh9BmoJ6j9JMr3TElvuIyjR8pgdoow= github.com/bitly/go-simplejson v0.5.1/go.mod h1:YOPVLzCfwK14b4Sff3oP1AmGhI9T9Vsg84etUnlyp+Q= -github.com/buger/jsonparser v1.1.1 h1:2PnMjfWD7wBILjqQbt530v576A/cAbQvEW9gGIpYMUs= -github.com/buger/jsonparser v1.1.1/go.mod h1:6RYKKt7H4d4+iWqouImQ9R2FZql3VbhNgx27UK13J/0= +github.com/buger/jsonparser v1.1.2 h1:frqHqw7otoVbk5M8LlE/L7HTnIq2v9RX6EJ48i9AxJk= +github.com/buger/jsonparser v1.1.2/go.mod h1:6RYKKt7H4d4+iWqouImQ9R2FZql3VbhNgx27UK13J/0= github.com/cenkalti/backoff/v4 v4.3.0 h1:MyRJ/UdXutAwSAT+s3wNd7MfTIcy71VQueUuFK343L8= github.com/cenkalti/backoff/v4 v4.3.0/go.mod h1:Y3VNntkOUPxTVeUxJ/G5vcM//AlwfmyYozVcomhLiZE= github.com/cenkalti/backoff/v5 v5.0.3 h1:ZN+IMa753KfX5hd8vVaMixjnqRZ3y8CuJKRKj1xcsSM= @@ -159,8 +158,8 @@ github.com/docker/go-units v0.5.0 h1:69rxXcBk27SvSaaxTtLh/8llcHD8vYHT7WSdRZ/jvr4 github.com/docker/go-units v0.5.0/go.mod h1:fgPhTUdO+D/Jk86RDLlptpiXQzgHJF7gydDDbaIK4Dk= github.com/ebitengine/purego v0.10.0 h1:QIw4xfpWT6GWTzaW5XEKy3HXoqrJGx1ijYHzTF0/ISU= github.com/ebitengine/purego v0.10.0/go.mod h1:iIjxzd6CiRiOG0UyXP+V1+jWqUXVjPKLAI0mRfJZTmQ= -github.com/edsrzf/mmap-go v1.2.0 h1:hXLYlkbaPzt1SaQk+anYwKSRNhufIDCchSPkUD6dD84= -github.com/edsrzf/mmap-go v1.2.0/go.mod h1:19H/e8pUPLicwkyNgOykDXkJ9F0MHE+Z52B8EIth78Q= +github.com/edsrzf/mmap-go v1.2.1-0.20241212181136-fad1cd13edbd h1:I4PrRZuNMeDP3VbFrak4QsqwO5tWkQf0tqrrr1L2DsU= +github.com/edsrzf/mmap-go v1.2.1-0.20241212181136-fad1cd13edbd/go.mod h1:19H/e8pUPLicwkyNgOykDXkJ9F0MHE+Z52B8EIth78Q= github.com/elastic/go-grok v0.3.1 h1:WEhUxe2KrwycMnlvMimJXvzRa7DoByJB4PVUIE1ZD/U= github.com/elastic/go-grok v0.3.1/go.mod h1:n38ls8ZgOboZRgKcjMY8eFeZFMmcL9n2lP0iHhIDk64= github.com/elastic/lunes v0.2.0 h1:WI3bsdOTuaYXVe2DS1KbqA7u7FOHN4o8qJw80ZyZoQs= @@ -265,8 +264,8 @@ github.com/gobwas/glob v0.2.3/go.mod h1:d3Ez4x06l9bZtSvzIay5+Yzi0fmZzPgnTbPcKjJA github.com/gobwas/httphead v0.1.0/go.mod h1:O/RXo79gxV8G+RqlR/otEwx4Q36zl9rqC5u12GKvMCM= github.com/gobwas/pool v0.2.1/go.mod h1:q8bcK0KcYlCgd9e7WYLm9LpyS+YeLd8JVDW6WezmKEw= github.com/gobwas/ws v1.2.1/go.mod h1:hRKAFb8wOxFROYNsT1bqfWnhX+b5MFeJM9r2ZSwg/KY= -github.com/goccy/go-json v0.10.5 h1:Fq85nIqj+gXn/S5ahsiTlK3TmC85qgirsdTP/+DeaC4= -github.com/goccy/go-json v0.10.5/go.mod h1:oq7eo15ShAhp70Anwd5lgX2pLfOS3QCiwU/PULtXL6M= +github.com/goccy/go-json v0.10.6 h1:p8HrPJzOakx/mn/bQtjgNjdTcN+/S6FcG2CTtQOrHVU= +github.com/goccy/go-json v0.10.6/go.mod h1:oq7eo15ShAhp70Anwd5lgX2pLfOS3QCiwU/PULtXL6M= github.com/goccy/go-yaml v1.19.2 h1:PmFC1S6h8ljIz6gMRBopkjP1TVT7xuwrButHID66PoM= github.com/goccy/go-yaml v1.19.2/go.mod h1:XBurs7gK8ATbW4ZPGKgcbrY1Br56PdM69F7LkFRi1kA= github.com/gogo/protobuf v1.1.1/go.mod h1:r8qH/GZQm5c6nD/R0oafs1akxWv10x8SbQlK7atdtwQ= @@ -404,16 +403,16 @@ github.com/keybase/go-keychain v0.0.1 h1:way+bWYa6lDppZoZcgMbYsvC7GxljxrskdNInRt github.com/keybase/go-keychain v0.0.1/go.mod h1:PdEILRW3i9D8JcdM+FmY6RwkHGnhHxXwkPPMeUgOK1k= 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.4 h1:RPhnKRAQ4Fh8zU2FY/6ZFDwTVTxgJ/EMydqSTzE9a2c= -github.com/klauspost/compress v1.18.4/go.mod h1:R0h/fSBs8DE4ENlcrlib3PsXS61voFxhIs2DeRhCvJ4= +github.com/klauspost/compress v1.18.5 h1:/h1gH5Ce+VWNLSWqPzOVn6XBO+vJbCNGvjoaGBFW2IE= +github.com/klauspost/compress v1.18.5/go.mod h1:cwPg85FWrGar70rWktvGQj8/hthj3wpl0PGDogxkrSQ= github.com/klauspost/cpuid/v2 v2.3.0 h1:S4CRMLnYUhGeDFDqkGriYKdfoFlDnMtqTiI/sFzhA9Y= github.com/klauspost/cpuid/v2 v2.3.0/go.mod h1:hqwkgyIinND0mEev00jJYCxPNVRVXFQeu1XKlok6oO0= github.com/knadh/koanf/maps v0.1.2 h1:RBfmAW5CnZT+PJ1CVc1QSJKf4Xu9kxfQgYVQSu8hpbo= github.com/knadh/koanf/maps v0.1.2/go.mod h1:npD/QZY3V6ghQDdcQzl1W4ICNVTkohC8E73eI2xW4yI= github.com/knadh/koanf/providers/confmap v1.0.0 h1:mHKLJTE7iXEys6deO5p6olAiZdG5zwp8Aebir+/EaRE= github.com/knadh/koanf/providers/confmap v1.0.0/go.mod h1:txHYHiI2hAtF0/0sCmcuol4IDcuQbKTybiB1nOcUo1A= -github.com/knadh/koanf/v2 v2.3.3 h1:jLJC8XCRfLC7n4F+ZKKdBsbq1bfXTpuFhf4L7t94D94= -github.com/knadh/koanf/v2 v2.3.3/go.mod h1:gRb40VRAbd4iJMYYD5IxZ6hfuopFcXBpc9bbQpZwo28= +github.com/knadh/koanf/v2 v2.3.4 h1:fnynNSDlujWE+v83hAp8wKr/cdoxHLO0629SN+U8Urc= +github.com/knadh/koanf/v2 v2.3.4/go.mod h1:gRb40VRAbd4iJMYYD5IxZ6hfuopFcXBpc9bbQpZwo28= github.com/kolo/xmlrpc v0.0.0-20220921171641-a4b6fa1dd06b h1:udzkj9S/zlT5X367kqJis0QP7YMxobob6zhzq6Yre00= github.com/kolo/xmlrpc v0.0.0-20220921171641-a4b6fa1dd06b/go.mod h1:pcaDhQK0/NJZEvtCO0qQPPropqV0sJOJ6YW7X+9kRwM= github.com/konsorten/go-windows-terminal-sequences v1.0.1/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ= @@ -513,38 +512,38 @@ github.com/onsi/ginkgo/v2 v2.27.2 h1:LzwLj0b89qtIy6SSASkzlNvX6WktqurSHwkk2ipF/Ns github.com/onsi/ginkgo/v2 v2.27.2/go.mod h1:ArE1D/XhNXBXCBkKOLkbsb2c81dQHCRcF5zwn/ykDRo= github.com/onsi/gomega v1.38.2 h1:eZCjf2xjZAqe+LeWvKb5weQ+NcPwX84kqJ0cZNxok2A= github.com/onsi/gomega v1.38.2/go.mod h1:W2MJcYxRGV63b418Ai34Ud0hEdTVXq9NW9+Sx6uXf3k= -github.com/open-telemetry/opentelemetry-collector-contrib/exporter/prometheusexporter v0.148.0 h1:O/YDgVDrnuHFLRWP8NnZYltVBHDzPtnO+wg3WuLO12o= -github.com/open-telemetry/opentelemetry-collector-contrib/exporter/prometheusexporter v0.148.0/go.mod h1:p/ePRqR9XoIZekYliEuFG2Me7dCvQczuEmBjQMZ69wI= -github.com/open-telemetry/opentelemetry-collector-contrib/exporter/prometheusremotewriteexporter v0.148.0 h1:wPh+YmUnpewoHZULN/te4+woOs7OZMozYy4QKAXy7No= -github.com/open-telemetry/opentelemetry-collector-contrib/exporter/prometheusremotewriteexporter v0.148.0/go.mod h1:G7Ql+f10bXdx5v9bWomLd1LnSMiKkjZKofKBCLi04Ac= -github.com/open-telemetry/opentelemetry-collector-contrib/internal/common v0.148.0 h1:XfnWquAk1ZhCuUNFIg4MKKOXiTfJrSulU8yKPxArFSM= -github.com/open-telemetry/opentelemetry-collector-contrib/internal/common v0.148.0/go.mod h1:uq/XRz2qvgDqO03Z90K/pqV8+h20uauP3E2XseKIIDE= -github.com/open-telemetry/opentelemetry-collector-contrib/internal/coreinternal v0.148.0 h1:pbsTNnV4+4q27bIftrITw/EuJbI5z94RF5bwcRrMZJY= -github.com/open-telemetry/opentelemetry-collector-contrib/internal/coreinternal v0.148.0/go.mod h1:Nk8pkfQ5BxhCCODJvBIsC8b8VWXg35OxwRSUT6R+fUE= -github.com/open-telemetry/opentelemetry-collector-contrib/internal/exp/metrics v0.148.0 h1:CiTjQE/Hh5xK2t56ogrDK4nl0+tJPNmASCs4zEYZ/xU= -github.com/open-telemetry/opentelemetry-collector-contrib/internal/exp/metrics v0.148.0/go.mod h1:WUFkzTiOpt7EYyL67gv1GOf3RD8qKWGtin3lY9LYzW4= -github.com/open-telemetry/opentelemetry-collector-contrib/internal/filter v0.148.0 h1:05de/VW7LjTS5ysK0lhyxGrp3whAJQRgZBzp26XZ+jw= -github.com/open-telemetry/opentelemetry-collector-contrib/internal/filter v0.148.0/go.mod h1:siHbiFjy0I2SujB8YgE40aDCloVMOhzf1oWZuBDIWU0= -github.com/open-telemetry/opentelemetry-collector-contrib/pkg/golden v0.148.0 h1:YwgrFMV91ZwDGxQr5cexsBYDnJyWcgOBFlMdTmP1jto= -github.com/open-telemetry/opentelemetry-collector-contrib/pkg/golden v0.148.0/go.mod h1:dvvRvNbHkeSZwG8TCpqIpKGwoS6XwN4zu/QSeWJryOE= -github.com/open-telemetry/opentelemetry-collector-contrib/pkg/ottl v0.148.0 h1:a2TH+o0srWj/aXc+jXz+Wu8I4Ve/dh97VV0vuDcMbEk= -github.com/open-telemetry/opentelemetry-collector-contrib/pkg/ottl v0.148.0/go.mod h1:kNIffaZJyeGAs4hRhOj2aFhyfQUZ7WkjsvKumomYI9k= -github.com/open-telemetry/opentelemetry-collector-contrib/pkg/pdatatest v0.148.0 h1:i12duJOl5VCb9mbb8FfZCaP2CjeXbNsbg82JjSe7sy8= -github.com/open-telemetry/opentelemetry-collector-contrib/pkg/pdatatest v0.148.0/go.mod h1:jyw+QvkmCrF/oYy31O2ndb5KZZK4l+iR89msnV3LN/k= -github.com/open-telemetry/opentelemetry-collector-contrib/pkg/pdatautil v0.148.0 h1:1TLg6YrS3Au6F7xw3ws2Njbwj13IMqPplvGFi+18fWs= -github.com/open-telemetry/opentelemetry-collector-contrib/pkg/pdatautil v0.148.0/go.mod h1:P8hZEDIQk4REgUWyLhSVRHwTxK6KkifKfg36BmmQ/DI= -github.com/open-telemetry/opentelemetry-collector-contrib/pkg/resourcetotelemetry v0.148.0 h1:kU1mAWAnilMTNl3oTWtpTUSJ4wfnwsmnwLDgmfRCcKE= -github.com/open-telemetry/opentelemetry-collector-contrib/pkg/resourcetotelemetry v0.148.0/go.mod h1:6NEvP8esqtJQ86p2TX5fpB6/m3SdrHfrz6RbwKekLm4= -github.com/open-telemetry/opentelemetry-collector-contrib/pkg/translator/prometheus v0.148.0 h1:avKwssJ9H+qNe0Oh99SBCNqQ/A5V2mvMAPW2OoKQTA0= -github.com/open-telemetry/opentelemetry-collector-contrib/pkg/translator/prometheus v0.148.0/go.mod h1:bomnDhYEZ9H6QsL7jBwpCuWlAOXa5AJMNdMTY3e1HnA= -github.com/open-telemetry/opentelemetry-collector-contrib/pkg/translator/prometheusremotewrite v0.148.0 h1:iXZN0mWjLYs/6OV7I0pLuokxwymmsMekELzngUs5fOI= -github.com/open-telemetry/opentelemetry-collector-contrib/pkg/translator/prometheusremotewrite v0.148.0/go.mod h1:Eq1/BjDueB0AprWzp++sLvcnj+kcO74Z6vk1YXNhySg= -github.com/open-telemetry/opentelemetry-collector-contrib/processor/deltatocumulativeprocessor v0.148.0 h1:xgD/kNGp/wWY+bwY599Pc01OamYN17phRiTP934bM5Y= -github.com/open-telemetry/opentelemetry-collector-contrib/processor/deltatocumulativeprocessor v0.148.0/go.mod h1:ZK7wvaefla9lB3bAW0rNKt7IzRPcTRQoOFqr4sZy/XM= -github.com/open-telemetry/opentelemetry-collector-contrib/processor/filterprocessor v0.148.0 h1:QcPqTs/5PFhxehiNSHAGNasCmQOC7hHksnF0tMJ6Dz4= -github.com/open-telemetry/opentelemetry-collector-contrib/processor/filterprocessor v0.148.0/go.mod h1:goFQF15qVJW8XklQEnWTDCS5lloJg4VTsphlNvOuwXw= -github.com/open-telemetry/opentelemetry-collector-contrib/processor/resourceprocessor v0.148.0 h1:Ctr19EUwKQlpalwtlW2LO5+JuYngczXxMIRc5Grv5eo= -github.com/open-telemetry/opentelemetry-collector-contrib/processor/resourceprocessor v0.148.0/go.mod h1:NyKoX9vvpmQIWkURfLb45drpO07MwhlprYTFlJlE82E= +github.com/open-telemetry/opentelemetry-collector-contrib/exporter/prometheusexporter v0.149.0 h1:kkoCt+UaQ9rJ9zmOdWXQOGOF95lFA8Pxt8nTi9UNxPU= +github.com/open-telemetry/opentelemetry-collector-contrib/exporter/prometheusexporter v0.149.0/go.mod h1:l+7IxABnuD5R0xBlb4dOCVlbpVL4WsLrpXEY9dksDYs= +github.com/open-telemetry/opentelemetry-collector-contrib/exporter/prometheusremotewriteexporter v0.149.0 h1:rTIL0dk9Fb9cGSgZm7tpUnPi6FIjMKUFIY6ckWoFr94= +github.com/open-telemetry/opentelemetry-collector-contrib/exporter/prometheusremotewriteexporter v0.149.0/go.mod h1:1hS+tu/oEaterSkgc8vpiyO4lAdccOyBNOckPXc7Q5Y= +github.com/open-telemetry/opentelemetry-collector-contrib/internal/common v0.149.0 h1:190VB4TTET+Wl6ptrsTdY/vmnCtTftemWUUJqkCBKxc= +github.com/open-telemetry/opentelemetry-collector-contrib/internal/common v0.149.0/go.mod h1:WhkSst4tY+c4WPaZAbF7EwbxHVm22EuxrII83Qf7tgI= +github.com/open-telemetry/opentelemetry-collector-contrib/internal/coreinternal v0.149.0 h1:7tjwxaak0p0e86aqdYJ+rn/8z6277lS2/kwxfDWXVQQ= +github.com/open-telemetry/opentelemetry-collector-contrib/internal/coreinternal v0.149.0/go.mod h1:Y4n54xT8NfHlelDDcpxla7pwI6h8wqqc0gWU5RSteE4= +github.com/open-telemetry/opentelemetry-collector-contrib/internal/exp/metrics v0.149.0 h1:Zovdium/2408dqJzSxA5XebZBxGBnDkfrai1HKT5Omc= +github.com/open-telemetry/opentelemetry-collector-contrib/internal/exp/metrics v0.149.0/go.mod h1:ughjuka9JQd81X6we9PmdvaiIjeOWtKK04BladDtzZc= +github.com/open-telemetry/opentelemetry-collector-contrib/internal/filter v0.149.0 h1:KpeSGXIld5Rqx4gdUc+Tc/B751C2u2GM6Q0pQUKJWbo= +github.com/open-telemetry/opentelemetry-collector-contrib/internal/filter v0.149.0/go.mod h1:4brSxqI1ifPRBql0e4pA3uBRZFgZbJdQRck3bRw8MJ4= +github.com/open-telemetry/opentelemetry-collector-contrib/pkg/golden v0.149.0 h1:EuXIJolnTL+oBFzF0almZEkHiV4thwnSjEcr3L5nNu0= +github.com/open-telemetry/opentelemetry-collector-contrib/pkg/golden v0.149.0/go.mod h1:VKgoaDIUxOoTiskp7HK7ESS+CgsgoNKD2PgzF0wRXvQ= +github.com/open-telemetry/opentelemetry-collector-contrib/pkg/ottl v0.149.0 h1:M2aT3Bvkn4rmi74Jbz5JxaDFedwYDowD8IHGDRBE36U= +github.com/open-telemetry/opentelemetry-collector-contrib/pkg/ottl v0.149.0/go.mod h1:1TZ3dpFUw3hFouqKIDynZqMsZYbTyUTrAHwBGoVbVik= +github.com/open-telemetry/opentelemetry-collector-contrib/pkg/pdatatest v0.149.0 h1:2VC/s/j8LFVE9+CvoNhjAPtKHgDAOgRb/JXkRdrPUnI= +github.com/open-telemetry/opentelemetry-collector-contrib/pkg/pdatatest v0.149.0/go.mod h1:sycQ9JOpSQY+iTiDOVcQL84TgYUIj7fF3z5Yc6nOwnc= +github.com/open-telemetry/opentelemetry-collector-contrib/pkg/pdatautil v0.149.0 h1:OZKthV+cLQO5MCFhBQme3AveZ5vorqaFwb0Qn8jvSQQ= +github.com/open-telemetry/opentelemetry-collector-contrib/pkg/pdatautil v0.149.0/go.mod h1:eB74l+/1nW5tofwCjD5TKRqHFYnBSWo0j0xWD8BHYuE= +github.com/open-telemetry/opentelemetry-collector-contrib/pkg/resourcetotelemetry v0.149.0 h1:1Uwf77CT2yfx+c/1nqn+994g53FiRDBRA0ENOz/0VEU= +github.com/open-telemetry/opentelemetry-collector-contrib/pkg/resourcetotelemetry v0.149.0/go.mod h1:rJ4DYBZls/oC3ITroSLYJd7Fng9WFNs5CfTTy7F0gw4= +github.com/open-telemetry/opentelemetry-collector-contrib/pkg/translator/prometheus v0.149.0 h1:vWkV4CPudpCVDduqRtHY63Vpj8sEqT4jXiRrsKepv0k= +github.com/open-telemetry/opentelemetry-collector-contrib/pkg/translator/prometheus v0.149.0/go.mod h1:bWxyNmmVVA0YoxyyJxCUuVjxIYeAs6U5c2lBzT3argY= +github.com/open-telemetry/opentelemetry-collector-contrib/pkg/translator/prometheusremotewrite v0.149.0 h1:dwm+5Hwl2KJNeb4O9Sku9D0xyGFtgxxmIBrbMfAgVyM= +github.com/open-telemetry/opentelemetry-collector-contrib/pkg/translator/prometheusremotewrite v0.149.0/go.mod h1:aKE14o1E9mEsVRIglDSYomXR0rjIhOK5TE5kMFllCzY= +github.com/open-telemetry/opentelemetry-collector-contrib/processor/deltatocumulativeprocessor v0.149.0 h1:4QJFwu4guYeLNnlHLYWJQx8Dps6ii1rwjE9B9dekYdY= +github.com/open-telemetry/opentelemetry-collector-contrib/processor/deltatocumulativeprocessor v0.149.0/go.mod h1:K/+3geevCDJiJew7MuQU481B9JNlc7eLEFv4t59WGRM= +github.com/open-telemetry/opentelemetry-collector-contrib/processor/filterprocessor v0.149.0 h1:Cn2ipf2ClUWS7ujfgNJzf1P7v4oPQQp8OfSuQEOLKQw= +github.com/open-telemetry/opentelemetry-collector-contrib/processor/filterprocessor v0.149.0/go.mod h1:cnHVn4tZWaSenOdq32m/yPgKBWvQXAg3sy5qXqtr82k= +github.com/open-telemetry/opentelemetry-collector-contrib/processor/resourceprocessor v0.149.0 h1:4xhzQTA7iCti16CvKMgCzmjsMXG1+GPg3euu+ZAf5CE= +github.com/open-telemetry/opentelemetry-collector-contrib/processor/resourceprocessor v0.149.0/go.mod h1:3zRzERG9mKrsiVFw6Uh6uJ/IsDwvlG4N8d+Z+u4z9Do= github.com/opencontainers/go-digest v1.0.0 h1:apOUWs51W5PlhuyGyz9FCeeBIOUDA/6nW8Oi/yOhh5U= github.com/opencontainers/go-digest v1.0.0/go.mod h1:0JzlMkj0TRzQZfJkVvzbP0HBR3IKzErnv2BNG4W4MAM= github.com/opencontainers/image-spec v1.1.1 h1:y0fUlFfIZhPF1W537XOLg0/fcx6zcHCJwooC2xJA040= @@ -700,142 +699,142 @@ go.mongodb.org/mongo-driver v1.17.6 h1:87JUG1wZfWsr6rIz3ZmpH90rL5tea7O3IHuSwHUps go.mongodb.org/mongo-driver v1.17.6/go.mod h1:Hy04i7O2kC4RS06ZrhPRqj/u4DTYkFDAAccj+rVKqgQ= go.opentelemetry.io/auto/sdk v1.2.1 h1:jXsnJ4Lmnqd11kwkBV2LgLoFMZKizbCi5fNZ/ipaZ64= go.opentelemetry.io/auto/sdk v1.2.1/go.mod h1:KRTj+aOaElaLi+wW1kO/DZRXwkF4C5xPbEe3ZiIhN7Y= -go.opentelemetry.io/collector v0.148.0 h1:v/MudgCZ7n0LfOxtMIJjYdA8R073vjUllhhsaBtiTro= -go.opentelemetry.io/collector v0.148.0/go.mod h1:EoAnQknwq/wemQGw89xl6+IITdNwenPWl0ARNhgWwPA= -go.opentelemetry.io/collector/client v1.54.0 h1:JDpDdc67n2LGVcDzMKN7fSsmmB7333g6d38LshTuXR0= -go.opentelemetry.io/collector/client v1.54.0/go.mod h1:4ODFLlgYmMEA+GNy96Qsn6Gi2PwFQFNUScvv5vVTyfE= -go.opentelemetry.io/collector/component v1.54.0 h1:LvtX0Tzz18n44OrUFVk77N1FNsejfWJqztB28hrmDM8= -go.opentelemetry.io/collector/component v1.54.0/go.mod h1:yUMBYsySY/sDcXm8kOzEoZxt+JLdala6hxzSW0npOxY= -go.opentelemetry.io/collector/component/componentstatus v0.148.0 h1:sCGRaXNQolHFhPjrNJEwQ1WZOf96iL99tzm9GxuZsvg= -go.opentelemetry.io/collector/component/componentstatus v0.148.0/go.mod h1:yqg3SpGQc22W3wGICdnb+2kZVW9daBr3+LrGUCHkKfc= -go.opentelemetry.io/collector/component/componenttest v0.148.0 h1:tBXJWmy2X6KD8S0QU2YZa2zYBqP+IycSM4iOtwDD2pA= -go.opentelemetry.io/collector/component/componenttest v0.148.0/go.mod h1:1c1+6mZOmI0raoya5vA/X0F+fawEjNS6tCEs5xLATtA= -go.opentelemetry.io/collector/config/configauth v1.54.0 h1:qJ3JdalSJmKWa59kkJoD/nElPlxWvyGf3xZAVnp1TrI= -go.opentelemetry.io/collector/config/configauth v1.54.0/go.mod h1:vyp8mZJ793H82GV4eVuuoL+sG6n32SQgG/6jGGfOf+o= -go.opentelemetry.io/collector/config/configcompression v1.54.0 h1:YDnrdNSEXqam0OQWRAE+arMsvm/fxQb3oNhgcWhAZ5k= -go.opentelemetry.io/collector/config/configcompression v1.54.0/go.mod h1:SEcE2uFLHHPc/Vi8WCkW5MhOMUwaT321HBdZ3P8x8D0= -go.opentelemetry.io/collector/config/configgrpc v0.148.0 h1:UxGCpYGw55RVsNkhesRF4im6TJvB9ImaJenpwEgOWco= -go.opentelemetry.io/collector/config/configgrpc v0.148.0/go.mod h1:wdDhkiKYPLEfU/8dcHQaJWQiY0nbI/Z75q0YBEQ3f3Q= -go.opentelemetry.io/collector/config/confighttp v0.148.0 h1:1OYlN1pK0IlJrZTLiNxQNPD90AnrEjJ72HXd77w5Xqs= -go.opentelemetry.io/collector/config/confighttp v0.148.0/go.mod h1:bXmmkVH3L4E2XZwKOQuy/5EbOzhX97e0iuv9iMlFbXQ= -go.opentelemetry.io/collector/config/configmiddleware v1.54.0 h1:FPMNDPumiZ7FhfzRggn5PR0AnPZQOVB7VWua11VGAUU= -go.opentelemetry.io/collector/config/configmiddleware v1.54.0/go.mod h1:6PYzhcC5402GuSjIs6Q14O2HjH2ZE+A60wWdQuI7ZhY= -go.opentelemetry.io/collector/config/confignet v1.54.0 h1:Led1uZQkFDSRIaO9GyZjvpIfuMBAADou7MvhtZkV/Pc= -go.opentelemetry.io/collector/config/confignet v1.54.0/go.mod h1:okpHzgIUQW9ga1P9PXzUsggmG1woR1rYsfZGDWKAC6c= -go.opentelemetry.io/collector/config/configopaque v1.54.0 h1:DsVlBIk3RDbRz48GxkrKFN5uNet8EaGXU39C6VsUjZQ= -go.opentelemetry.io/collector/config/configopaque v1.54.0/go.mod h1:beDuR48blgodzbJkUgMFu9vg0qxjU04tcBtb/rVEP/A= -go.opentelemetry.io/collector/config/configoptional v1.54.0 h1:W6MHMrVEbjw/5boxN+VXGZmMBi62IF/lf41vhuNGebU= -go.opentelemetry.io/collector/config/configoptional v1.54.0/go.mod h1:c8cFSCUN/A6U00janThFC64ZpyKV1viq/chPOoaqe3I= -go.opentelemetry.io/collector/config/configretry v1.54.0 h1:v0G/FxIkkcZzaM/1JrHN5sWBoUWWvb3c+UEgvo5iFs4= -go.opentelemetry.io/collector/config/configretry v1.54.0/go.mod h1:1BoQ5SvJT751bqP/5g0VTPLkNgMtvifAr2QqMCVOv2o= -go.opentelemetry.io/collector/config/configtelemetry v0.148.0 h1:TZPiz6T6AOvEHmKzU0cPF+CcRbJVR0c3DCqP8Orylx8= -go.opentelemetry.io/collector/config/configtelemetry v0.148.0/go.mod h1:vLUthxDJbDk0ZE9MXPvmSslNESDdGblIXWoDMov3UOE= -go.opentelemetry.io/collector/config/configtls v1.54.0 h1:Xt5oEs+q7Y6l7mdFYqSrqr0lwJilGcg9EBlCBd/jiBw= -go.opentelemetry.io/collector/config/configtls v1.54.0/go.mod h1:ikruZqHoIlR+MaqUgDKotQiuN64uAdlH6zxsTjSKjSM= -go.opentelemetry.io/collector/confmap v1.54.0 h1:RUoxQ4uAYHTI57GfHh61D00tTQsXm9T88ozrAiicByc= -go.opentelemetry.io/collector/confmap v1.54.0/go.mod h1:mQxG8bk0IWIt9gbWMvzE+cRkOuCuzbzkNGBq2YJ4wNM= -go.opentelemetry.io/collector/confmap/provider/envprovider v1.54.0 h1:oFzvQvVf6w/H6niYNkp/I3FJpjD3bG7Phw8pad/mO60= -go.opentelemetry.io/collector/confmap/provider/envprovider v1.54.0/go.mod h1:NxRpjioeOYqRaqg83REYYUAIaraZapbhWsvIrDVhQ8k= -go.opentelemetry.io/collector/confmap/provider/fileprovider v1.54.0 h1:oypNOydhUDKyg2GBhchpwofKQbgnGrLmXkldrXD8T3Q= -go.opentelemetry.io/collector/confmap/provider/fileprovider v1.54.0/go.mod h1:x2HycFHWpfplIjjMERFOO9byCLLMCnuoxZ87TYwvPF4= -go.opentelemetry.io/collector/confmap/xconfmap v0.148.0 h1:UW8MX5VlKJf67x4Et7J9kPwP9Rv4VSmJ+UUpgRcb//c= -go.opentelemetry.io/collector/confmap/xconfmap v0.148.0/go.mod h1:4qTMr3V0uSXXac9wVs/UD5fIqRKw5yIl58+Vjsc6RHM= -go.opentelemetry.io/collector/connector v0.148.0 h1:nJOvqm57ab4xRDxF0C+PQdptOF/x6NU9MAaqQJqOq7A= -go.opentelemetry.io/collector/connector v0.148.0/go.mod h1:Evipn8SpEed4NSynwcef3s/VihyutpAzv9aFh2KvtJA= -go.opentelemetry.io/collector/connector/connectortest v0.148.0 h1:LPrjLF9UbGOtZkG/PfA2Lh94Aouxf0FeqtL4TLvKXvY= -go.opentelemetry.io/collector/connector/connectortest v0.148.0/go.mod h1:y9S8I7FLfb8+nyqugOFiExv/ZlGi/BIcINUEdowX4eQ= -go.opentelemetry.io/collector/connector/xconnector v0.148.0 h1:O6GOSkFezdCovPWIlcx0ZkymLGBlmMIoBrRzMLUV8ho= -go.opentelemetry.io/collector/connector/xconnector v0.148.0/go.mod h1:FMtp0iuWWmv2wY30QQyMbetNLn0MJfFgVXZDAViUwKs= -go.opentelemetry.io/collector/consumer v1.54.0 h1:RGGtUN+GbkV1px3T6XdUHmgJ+ldJ1hAHdesFzW/wgL0= -go.opentelemetry.io/collector/consumer v1.54.0/go.mod h1:1PC6XINTL9DdT1bwvfMdHE72EB4RWU/WcPemUrhqKN8= -go.opentelemetry.io/collector/consumer/consumererror v0.148.0 h1:lKVkNWBeRXG41lHBf5KzA9oErRZifx6qTd9erAFfEkE= -go.opentelemetry.io/collector/consumer/consumererror v0.148.0/go.mod h1:N/UppmtknIdzpEiy3xirH1EiBEBOqKqD77NCyNi2Rbc= -go.opentelemetry.io/collector/consumer/consumererror/xconsumererror v0.148.0 h1:61RfzjtvnATQEahTN/Enwz0QFEBK9M9eNcxHh5Etzm0= -go.opentelemetry.io/collector/consumer/consumererror/xconsumererror v0.148.0/go.mod h1:vJSXpbjZelXtXdV3AjdGC2WjoVQkNLpzxy+5MUl3Xd8= -go.opentelemetry.io/collector/consumer/consumertest v0.148.0 h1:ms0HtWMj17tI1Yds0hSuUI5QYpNEqd11AAhwIoUY2HE= -go.opentelemetry.io/collector/consumer/consumertest v0.148.0/go.mod h1:wScw/OzKkf/ZzJn4ToI30OoI1kJiY16WNrcFToXSzK0= -go.opentelemetry.io/collector/consumer/xconsumer v0.148.0 h1:m3b9rY7CLD5Pcge6sSKHIT3OlcPN6xqYsdtVs9oJ528= -go.opentelemetry.io/collector/consumer/xconsumer v0.148.0/go.mod h1:bG+Wz6xmIBl/gHzq1sqvksWXqTLuTX17Wo//zIsdZpw= -go.opentelemetry.io/collector/exporter v1.54.0 h1:SSkEc9VGCf4OJaf+spj4euZ/FcswzOwLm8zR9an5Fxc= -go.opentelemetry.io/collector/exporter v1.54.0/go.mod h1:thsNaoV7xRq91sXkKsyFXHj0l2c/ZDM88Mdwe2/QP40= -go.opentelemetry.io/collector/exporter/exporterhelper v0.148.0 h1:mZXGdleKMaEF0jSOcCoOVRWwt3AcgSTAnIZmAqdDYNs= -go.opentelemetry.io/collector/exporter/exporterhelper v0.148.0/go.mod h1:+EZCJ6vlgQiozHvUoeEJHnIaV6Ez7HHOLdNWNpo+CUc= -go.opentelemetry.io/collector/exporter/exporterhelper/xexporterhelper v0.148.0 h1:LpTc/OsKXy/MBIdpCJ0VC9BCJreH5JUE8DIaNRlw488= -go.opentelemetry.io/collector/exporter/exporterhelper/xexporterhelper v0.148.0/go.mod h1:bc03Yf1kCAG4LwkztlOR9NXKBZ6dMfnJLV6SL77zAzQ= -go.opentelemetry.io/collector/exporter/exportertest v0.148.0 h1:joLVWwfWDk7idnikGPeOWOa7nJG1pG1+jGvuuOOB1/E= -go.opentelemetry.io/collector/exporter/exportertest v0.148.0/go.mod h1:R202E9bjYU4R+2jiDt+aiZSwsIZI3slL6M8y1MeuqkM= -go.opentelemetry.io/collector/exporter/otlpexporter v0.148.0 h1:oBcYpuuRdK0gZNXO/zCQViSZTn/JH/Z9j/tuqpmd+q4= -go.opentelemetry.io/collector/exporter/otlpexporter v0.148.0/go.mod h1:Eavhwd/38JzeDeiDRsO8WFY2+FPmw0pSJt8k1tMz2d0= -go.opentelemetry.io/collector/exporter/xexporter v0.148.0 h1:QKMwwrUe4snzB9B97NaBtf9qFEeIjx4/oBSwv8EZbJc= -go.opentelemetry.io/collector/exporter/xexporter v0.148.0/go.mod h1:rZ60Z9Ny4H+IX5dsn+RiJEJQRNEXAEYZ6XFwE2EWxGU= -go.opentelemetry.io/collector/extension v1.54.0 h1:nF+pPfXWcWXjauX0+E1gsWUlUdAe2+26VKIb9hKZJAk= -go.opentelemetry.io/collector/extension v1.54.0/go.mod h1:hqjEnkrjjxLXjzyDnLsOJnWMLWkfEjbqm8CHj1ud5pY= -go.opentelemetry.io/collector/extension/extensionauth v1.54.0 h1:IglgKxygOcGCCCB31bBxOYwtB8h1oQ2MXVGWKV0k1C0= -go.opentelemetry.io/collector/extension/extensionauth v1.54.0/go.mod h1:5SXF5D0r+uhrHU50xCXAnJ1HNmSDDuXamD+fZdcYRLs= -go.opentelemetry.io/collector/extension/extensionauth/extensionauthtest v0.148.0 h1:k2Hk5VhnWkn5C79tkZ554KAydyf0awfaW6Ku/bttS6s= -go.opentelemetry.io/collector/extension/extensionauth/extensionauthtest v0.148.0/go.mod h1:LhiPIqE7pIDo0+Njo9gPtrAbpnx4tjzqVCP8C0UFBvQ= -go.opentelemetry.io/collector/extension/extensioncapabilities v0.148.0 h1:nhIKJyE5YDy0KkI1mrULLBxMwLsq/EyeXQJJZDSRXHI= -go.opentelemetry.io/collector/extension/extensioncapabilities v0.148.0/go.mod h1:WQEEnK/GdM4n5EwEUL5PYimT4JFYgGzUrT7yAe8yaxI= -go.opentelemetry.io/collector/extension/extensionmiddleware v0.148.0 h1:GdlmwwQ1IxExKL27Ou5YRCs91Z8QYzlENUOBax252bc= -go.opentelemetry.io/collector/extension/extensionmiddleware v0.148.0/go.mod h1:ySiHSkCzMcgphWdZiGYIPrFgaEGO2tPY3D0MipGsYpo= -go.opentelemetry.io/collector/extension/extensionmiddleware/extensionmiddlewaretest v0.148.0 h1:SgNl5DswPxs+gDH5Ojg8xyorogbxTqXoayLGZkvdB/A= -go.opentelemetry.io/collector/extension/extensionmiddleware/extensionmiddlewaretest v0.148.0/go.mod h1:WMKYe+WIhgCnXAmOtn69yY7tTZZqgSkx+lh1Y5tk3OI= -go.opentelemetry.io/collector/extension/extensiontest v0.148.0 h1:ZBrYWe+7oQQVqChXrq4PL1P/Febuo6un2/g7oQP9zfQ= -go.opentelemetry.io/collector/extension/extensiontest v0.148.0/go.mod h1:wLxKb/SkoqbStm6zv+9MAhzhySI49oGw2aszPaw9No4= -go.opentelemetry.io/collector/extension/xextension v0.148.0 h1:LoSXaI3jd7fhQbPdIDpXy0HC2j4ftsG7LlVrUrghtwA= -go.opentelemetry.io/collector/extension/xextension v0.148.0/go.mod h1:dlMQsSTo8Jgd+u8/ssdg0oIItQptkUIfX4zO9xy+hiE= -go.opentelemetry.io/collector/extension/zpagesextension v0.148.0 h1:s2M8HLykiRB7Ub5qyTsYoeJ5hR9MdsG9FJR9wricyVM= -go.opentelemetry.io/collector/extension/zpagesextension v0.148.0/go.mod h1:+x2vb3TFNtE32qCv6ScG//RpAYdAZYE6ok4Ua++DWkU= -go.opentelemetry.io/collector/featuregate v1.54.0 h1:ufo5Hy4Co9pcHVg24hyanm8qFG3TkkYbVyQXPVAbwDc= -go.opentelemetry.io/collector/featuregate v1.54.0/go.mod h1:PS7zY/zaCb28EqciePVwRHVhc3oKortTFXsi3I6ee4g= -go.opentelemetry.io/collector/internal/componentalias v0.148.0 h1:Y6MftNIZSzOr47TTj6A2z2UR3IwbeG46sAQshicGtDg= -go.opentelemetry.io/collector/internal/componentalias v0.148.0/go.mod h1:uwKzfehzwRgHxdHgFXYSBHNBeWSSqsqQYGWr5fk08G0= -go.opentelemetry.io/collector/internal/fanoutconsumer v0.148.0 h1:Vy5HOsm6IODqbg7ZHaGizcs0mXXU7yZYFTH9Be0u4mM= -go.opentelemetry.io/collector/internal/fanoutconsumer v0.148.0/go.mod h1:0wG5wD4+XPIrrS69j1DnUvCbfAvnhMqcrxPvQkWzdpo= -go.opentelemetry.io/collector/internal/telemetry v0.148.0 h1:7U/be+11agYLb67lzoRzsCBoDpaGy8vDFhgI1gGYcco= -go.opentelemetry.io/collector/internal/telemetry v0.148.0/go.mod h1:pvflQkIAaj5UwURlkaB8BNTaYw6OjmXTbiWQ75PnYqc= -go.opentelemetry.io/collector/internal/testutil v0.148.0 h1:3Z9hperte3vSmbBTYeNndoEUICICrNz8hzx+v0FYXBQ= -go.opentelemetry.io/collector/internal/testutil v0.148.0/go.mod h1:Jkjs6rkqs973LqgZ0Fe3zrokQRKULYXPIf4HuqStiEE= -go.opentelemetry.io/collector/otelcol v0.148.0 h1:MFhR9u5SMJG3WcT+ON0aV8CV7lIuBWo0o7DQM1TXWtE= -go.opentelemetry.io/collector/otelcol v0.148.0/go.mod h1:ocDXLyaKKJOPyb7A5Mr0VuIJWgqUtiL6qpispV/xVv8= -go.opentelemetry.io/collector/pdata v1.54.0 h1:3LharKb792cQ3VrUGxd3IcpWwfu3ST+GSTU382jVz1s= -go.opentelemetry.io/collector/pdata v1.54.0/go.mod h1:+MqC3VVOv/EX9YVFUo+mI4F0YmwJ+fXBYwjmu+mRiZ8= -go.opentelemetry.io/collector/pdata/pprofile v0.148.0 h1:MgrNZmqwhZGfiYwcKKtM/iXgTZqqvG5dUphriRXMZHU= -go.opentelemetry.io/collector/pdata/pprofile v0.148.0/go.mod h1:MTTMnZPqWX1S/rBDatU0W19udlycBkWuzVV5qnemHdc= -go.opentelemetry.io/collector/pdata/testdata v0.148.0 h1:yzakPuFgoKK8WcrlhyYHLMLA/kLScQKGsXkIgwieAQ8= -go.opentelemetry.io/collector/pdata/testdata v0.148.0/go.mod h1:2rFvxm8qwd3nlO90FtJw6ZGAjt+bLndxmQuJaMO9kfQ= -go.opentelemetry.io/collector/pdata/xpdata v0.148.0 h1:pTXz872QDl5oHByjlIEkQhIFvv0oeX/5cKNWsUg9KeY= -go.opentelemetry.io/collector/pdata/xpdata v0.148.0/go.mod h1:4iL8wugmu589aQNx0dFVT3Ecui/d3TEvVgMlAu8S//0= -go.opentelemetry.io/collector/pipeline v1.54.0 h1:jYlCkdFLITVBdeB+IGS07zXWywEgvT3Ky46vdKKT+Ks= -go.opentelemetry.io/collector/pipeline v1.54.0/go.mod h1:RD90NG3Jbk965Xaqym3JyHkuol4uZJjQVUkD9ddXJIs= -go.opentelemetry.io/collector/pipeline/xpipeline v0.148.0 h1:WTgUC/QXYxhWEwPQ0ezOMbkh4p4DzsRdCxdYLBqNz+U= -go.opentelemetry.io/collector/pipeline/xpipeline v0.148.0/go.mod h1:ECXG1qs+H1pUnK0Wu0MUlAbsUlzJOKhV9z4wqep6KWQ= -go.opentelemetry.io/collector/processor v1.54.0 h1:zmHBFiEFmU9ZYuHhVP3lHIkbfy+ueapzGpTdXVMcWBg= -go.opentelemetry.io/collector/processor v1.54.0/go.mod h1:L0lA6DZ0VbrtQBg44cmYfSpRlgm4zxW1I6QfBnRizPw= -go.opentelemetry.io/collector/processor/batchprocessor v0.148.0 h1:RN/NU7giTuTCeWsbFmtk27rBprzJv4xfj4KDYzROEyc= -go.opentelemetry.io/collector/processor/batchprocessor v0.148.0/go.mod h1:i79zRqG29xhLEX0rpOLo7dqdEAIiVZPcV4l3eRsLCJM= -go.opentelemetry.io/collector/processor/processorhelper v0.148.0 h1:qbX7EJ7QJAP47PIdo9Jzxj39VP5Nke48uwP52HYs/O0= -go.opentelemetry.io/collector/processor/processorhelper v0.148.0/go.mod h1:ZuNKoLZ3jMZQ+hsA6XFz3GmH6l23eLsYSgHB0qdAf/U= -go.opentelemetry.io/collector/processor/processorhelper/xprocessorhelper v0.148.0 h1:8KTlVM8PGGuLwOTMhfeAaH2ok+aEccdbPe5Z2JPf/xw= -go.opentelemetry.io/collector/processor/processorhelper/xprocessorhelper v0.148.0/go.mod h1:xojdMQqttMu9kh6xi/oG81gnslB3rSHSMZkKfhmiB8c= -go.opentelemetry.io/collector/processor/processortest v0.148.0 h1:p0k59frZxy/Z4fXe82i5eOJv/UyOH75XhI8nFD1ZWCE= -go.opentelemetry.io/collector/processor/processortest v0.148.0/go.mod h1:E2Li2gnkUXgvApvGyEtn3Eq5KyzV05ljfbFRsZ7sTC4= -go.opentelemetry.io/collector/processor/xprocessor v0.148.0 h1:v7Qv6k2b2cvgGWuTO5KN5QYDLl1r5sznt7Le4Fhpa4c= -go.opentelemetry.io/collector/processor/xprocessor v0.148.0/go.mod h1:r7ADpSX2nf0rZR9STxh956Qw1740QOWMXLnEM/ZiaF8= -go.opentelemetry.io/collector/receiver v1.54.0 h1:2e9o+eihZ/nJnzVj5JAcJ+VQ653HcZRiT127qBZRqa8= -go.opentelemetry.io/collector/receiver v1.54.0/go.mod h1:xFZnvYTBjdi9iS/d/UUXzss4h311mLsZliQFQXk4o/k= -go.opentelemetry.io/collector/receiver/receiverhelper v0.148.0 h1:B1JOFfdv1dj4WhxSSt3KL1+BOV7Zkf27KisTWdhiFLs= -go.opentelemetry.io/collector/receiver/receiverhelper v0.148.0/go.mod h1:jBJbrMZ1dUn/gKr9vEDmU+MPsrz9RhRFWooG72qhUkU= -go.opentelemetry.io/collector/receiver/receivertest v0.148.0 h1:Fu+B4jCqgZVZmhsKBz3tcgimFryR6TRAK2D5VGLD2Xc= -go.opentelemetry.io/collector/receiver/receivertest v0.148.0/go.mod h1:K8dMDMEggEg6jB688VOHutivOGEEZ20FJGe4jV9RtWU= -go.opentelemetry.io/collector/receiver/xreceiver v0.148.0 h1:u66Zi3udD9RMRiNOsZzsVcUjRwqJEK+5LV76Ry9l3K0= -go.opentelemetry.io/collector/receiver/xreceiver v0.148.0/go.mod h1:jyHxf8SOfH48ZXb32IS3vPbVYDinsLlZYQddyrveqMg= -go.opentelemetry.io/collector/service v0.148.0 h1:GsAx4nkGTB21QRK9hOTFmLcATN/mugLWsb3iQwt91nY= -go.opentelemetry.io/collector/service v0.148.0/go.mod h1:f7oBS9IdX0nLRtyPOIgPj0Q1HCqbxepgWJfEpyVNAfE= -go.opentelemetry.io/collector/service/hostcapabilities v0.148.0 h1:BHQV7Fa1y8fQ87V1ieXNpP4+7UGOAj66xWryXSSj27I= -go.opentelemetry.io/collector/service/hostcapabilities v0.148.0/go.mod h1:UwHkux+xSVl7k5PEl+qYi8VSONv538rgZeHhfYqBwmE= -go.opentelemetry.io/collector/service/telemetry/telemetrytest v0.148.0 h1:0KKY0VHy8y+6LRkW/jE7a2G96tK7rfpl/6hKCt3mHD4= -go.opentelemetry.io/collector/service/telemetry/telemetrytest v0.148.0/go.mod h1:uhEy3Ez2aJjGpAIYuy1C0NFO5yr86EJlJGoKFucXQFE= +go.opentelemetry.io/collector v0.149.0 h1:q+BSroKuC7GRMY2sWLqQXPABH8BRNRmMTnAeYZU0qp0= +go.opentelemetry.io/collector v0.149.0/go.mod h1:r9/O/S4jQOv6dCjOIkQn63tyfZ2LfwfdB4OF3nwHL9o= +go.opentelemetry.io/collector/client v1.55.0 h1:79dOP+9U5ZyOd+7IP1FvIYpq00IZ5YeXs2mqykpTqgI= +go.opentelemetry.io/collector/client v1.55.0/go.mod h1:Jp/VewJg5A0y9Gk7P0CAPEBFzo5Pb2h5JxgylMSSpfM= +go.opentelemetry.io/collector/component v1.55.0 h1:45nb42/UqPDhRdS8FgGRDybRsWSuvS+r6WC2VTVqIRw= +go.opentelemetry.io/collector/component v1.55.0/go.mod h1:7EpGxVpqFkZ2HidyiE9MLvh4cuKU7ye6i5OtxxiYKps= +go.opentelemetry.io/collector/component/componentstatus v0.149.0 h1:6UM+yHoMtZmyu1Sz8Gy9B27eBtURR5sFinWf2LRdE7Y= +go.opentelemetry.io/collector/component/componentstatus v0.149.0/go.mod h1:6jTQab606D+ICobKO/q4UrPy6hwvU3ZY+LcJnPrurds= +go.opentelemetry.io/collector/component/componenttest v0.149.0 h1:7SSYIiLpe84LGfYAp7RCkzYuYLuYVSZVn/K/qsJZgHY= +go.opentelemetry.io/collector/component/componenttest v0.149.0/go.mod h1:8xPU3XMsI+J4vfy87YG1bsCVTeedligKWgBcPEZ0yzw= +go.opentelemetry.io/collector/config/configauth v1.55.0 h1:JiWouGwxYipdjWl57G7SU+JKjOrq/oXx/p/S+Q3zfO0= +go.opentelemetry.io/collector/config/configauth v1.55.0/go.mod h1:D/7mu0EPk1SJi8wAkG301gb1lVpAWUn7Ij/OwLP87q8= +go.opentelemetry.io/collector/config/configcompression v1.55.0 h1:KZjHgXQG0FKer+0Dt3ET0tPQicgq21vvswBqVwLwmLw= +go.opentelemetry.io/collector/config/configcompression v1.55.0/go.mod h1:SEcE2uFLHHPc/Vi8WCkW5MhOMUwaT321HBdZ3P8x8D0= +go.opentelemetry.io/collector/config/configgrpc v0.149.0 h1:9+kcCLu6v/3MeCF1mVHwOINZWNIUdObBSrOLxWddKeI= +go.opentelemetry.io/collector/config/configgrpc v0.149.0/go.mod h1:rSUcnR6vjccieTERpNeob78fERO59/Y7OHqrrKK40BM= +go.opentelemetry.io/collector/config/confighttp v0.149.0 h1:2R1UQUjMALz5nMuegvnS2jfeX0j7yiHqd7fV3GFK6C0= +go.opentelemetry.io/collector/config/confighttp v0.149.0/go.mod h1:BlP61qzl9O8vGM82WsVw3P2sWaqyoellSj5xxQ0X9ik= +go.opentelemetry.io/collector/config/configmiddleware v1.55.0 h1:p8NFQXy59VgGWZUcVX2pI5wHWKyEm16UMSHQPTtoZ8s= +go.opentelemetry.io/collector/config/configmiddleware v1.55.0/go.mod h1:6ZNFlGQUTEet5NUORDPpTzNwWsQAdiuLprNXSn8fOa0= +go.opentelemetry.io/collector/config/confignet v1.55.0 h1:eb1o6zpoCwR6yfdtwpZqGdvkE0kd7HAV/+N6DFG2Jis= +go.opentelemetry.io/collector/config/confignet v1.55.0/go.mod h1:okpHzgIUQW9ga1P9PXzUsggmG1woR1rYsfZGDWKAC6c= +go.opentelemetry.io/collector/config/configopaque v1.55.0 h1:j8I6lotzrJX29X1YhKUQTuJs/9HWgFV3Ckbe/tZZzhI= +go.opentelemetry.io/collector/config/configopaque v1.55.0/go.mod h1:xEWgIwWn8J3cn5E6DybThH0Cdu3Be8IVEItWkbWU2Xc= +go.opentelemetry.io/collector/config/configoptional v1.55.0 h1:Ii6eukF4hdPAJSwsNLevkEP3auJj0+N5tOghtmb3nfo= +go.opentelemetry.io/collector/config/configoptional v1.55.0/go.mod h1:4SJTjAl+6IGnyofeczFPbT/BxaBh1RW97hZlAcgSrVc= +go.opentelemetry.io/collector/config/configretry v1.55.0 h1:Fu5NUqH6AFMW6C95EOkQT0dAQJyq5cdzuO/QP80i3mI= +go.opentelemetry.io/collector/config/configretry v1.55.0/go.mod h1:1BoQ5SvJT751bqP/5g0VTPLkNgMtvifAr2QqMCVOv2o= +go.opentelemetry.io/collector/config/configtelemetry v0.149.0 h1:GiMgR+xwZRXG7ns8PbQb5jcXiwGdCwvy2y8tUQwRzGc= +go.opentelemetry.io/collector/config/configtelemetry v0.149.0/go.mod h1:vLUthxDJbDk0ZE9MXPvmSslNESDdGblIXWoDMov3UOE= +go.opentelemetry.io/collector/config/configtls v1.55.0 h1:cpXaocVvU/sHj9Xn8xVM6E1Zh9gSyEQuwn49yHMymI8= +go.opentelemetry.io/collector/config/configtls v1.55.0/go.mod h1:JjWg/y/tge3SeQlGkk7s4ga6IhIuFupV1iJY1yx2Dug= +go.opentelemetry.io/collector/confmap v1.55.0 h1:pBJbjWfIT3q8cy+eVcHCCYXx984NxOjaGTHqIWsXC1A= +go.opentelemetry.io/collector/confmap v1.55.0/go.mod h1:rSKNE5ztWU6fS0pT8rwACn573r4jJc4QzJyoQzZIVtE= +go.opentelemetry.io/collector/confmap/provider/envprovider v1.55.0 h1:0+xwTNHTzFrvX9j7648Cs3OMIyi3x/mdTZ+T61oQqTc= +go.opentelemetry.io/collector/confmap/provider/envprovider v1.55.0/go.mod h1:JdSr6jYZCvHXCr4lvms4knRtiTbMgprkrQxHk67BR8w= +go.opentelemetry.io/collector/confmap/provider/fileprovider v1.55.0 h1:zSSMElAWM5buXLcbLB+XFXjTDCc9AByo9gkSE+DH+MI= +go.opentelemetry.io/collector/confmap/provider/fileprovider v1.55.0/go.mod h1:FoujmivK7VAABBO61KRCUHpOnDXG/2ayMAe4wWM0m50= +go.opentelemetry.io/collector/confmap/xconfmap v0.149.0 h1:D/WzrxKOKedRztoY/MiAj9z8W0/2unpTCbANFCwvuuY= +go.opentelemetry.io/collector/confmap/xconfmap v0.149.0/go.mod h1:lJ1nHIQbH6L5wnj5vTWGr7RWi5Kib2KX5stAxar13Jo= +go.opentelemetry.io/collector/connector v0.149.0 h1:WbxMi0Eu8DHpjcCXZ7e988r8AHrvq37iUca5g99nO5M= +go.opentelemetry.io/collector/connector v0.149.0/go.mod h1:93UEgyk9AVINT0M2x2Mdj+MuirxkVlsH4lIcGg3e+wY= +go.opentelemetry.io/collector/connector/connectortest v0.149.0 h1:Uo6tnKhtdGe1v7DjJawCaawhXZu8Feos4FCo5hqlspI= +go.opentelemetry.io/collector/connector/connectortest v0.149.0/go.mod h1:93oVnmP4DBekh+73st+wFLVXWtnl2iUh3Tblhixm8Io= +go.opentelemetry.io/collector/connector/xconnector v0.149.0 h1:hDlXFlbwk/Bt1zuHg8RsYXxJPflO2CT19ViToUCsev4= +go.opentelemetry.io/collector/connector/xconnector v0.149.0/go.mod h1:1+/p4QxwYXwjGeLfbsvy6nE9ZuJ1xvUSdGZNDt7CgFg= +go.opentelemetry.io/collector/consumer v1.55.0 h1:7Per8P4J0nlBrFVSXb+nwZ+egiel1BRtggZngyykGsM= +go.opentelemetry.io/collector/consumer v1.55.0/go.mod h1:Qrn5fDp/HpDmUp+l2RGKsdKyOPlgGlaZPKvw/z9FfEc= +go.opentelemetry.io/collector/consumer/consumererror v0.149.0 h1:lXJv8UySfvnISJnCbkxf9ghYRQoWcXC78PxGurdnhKY= +go.opentelemetry.io/collector/consumer/consumererror v0.149.0/go.mod h1:8mZKwHejnZpD0+hjg6T2ZYPzs/Ib8512DMFnx4yaknY= +go.opentelemetry.io/collector/consumer/consumererror/xconsumererror v0.149.0 h1:igOwSP5ytu2WKKl8pSzzQPWt97IY/MWA2pZ6TRlLhv8= +go.opentelemetry.io/collector/consumer/consumererror/xconsumererror v0.149.0/go.mod h1:2Ni6IZUmiqXMP8z25ka2TjedglJgXZOTkgUUmn2pzD4= +go.opentelemetry.io/collector/consumer/consumertest v0.149.0 h1:IxOkDInfuUM8mT+rMNGtdUuuDlV9X2VS4WAQ/dZSYqg= +go.opentelemetry.io/collector/consumer/consumertest v0.149.0/go.mod h1:ZMvFzch5IRjYBvj6WPc30HRy19smS0WFBXaOu16Wac0= +go.opentelemetry.io/collector/consumer/xconsumer v0.149.0 h1:2z0wRTDsWqPdcC8xp9HJIAJej+07g4/yJrS0xkJJ4hA= +go.opentelemetry.io/collector/consumer/xconsumer v0.149.0/go.mod h1:AG9w3bk38dq3Rk7C2JGf3jw4ldxR063ujYBm3eiMJ7k= +go.opentelemetry.io/collector/exporter v1.55.0 h1:1pExfXXKDPbwY4Be6cHd8LQOIpP7pt7ed4SOiYruxks= +go.opentelemetry.io/collector/exporter v1.55.0/go.mod h1:Hp85myjvKjC+rLeMdVpatzYCglAv4V0MaFN8HXHfnaQ= +go.opentelemetry.io/collector/exporter/exporterhelper v0.149.0 h1:y5eKO5aFBWYv/cSL2QnLxJ8k57STn9r+g1gdTVw9Z6Q= +go.opentelemetry.io/collector/exporter/exporterhelper v0.149.0/go.mod h1:mR78r/JKfxu0x87YGplZsbYG6PBUyTr5bKgluc1qqNQ= +go.opentelemetry.io/collector/exporter/exporterhelper/xexporterhelper v0.149.0 h1:oV8Yc9zgCEA2S13u0mqOdWYaPq/6VVg4dNgY7XW3p/A= +go.opentelemetry.io/collector/exporter/exporterhelper/xexporterhelper v0.149.0/go.mod h1:nyLVBRGcwOOk9+uYpDA/+Gt3b3V7Mfu3HPvI8E2esk8= +go.opentelemetry.io/collector/exporter/exportertest v0.149.0 h1:bmBvcffsXbDoWIEq2nSiY36+n0s2/Qd70ps5N5xObWA= +go.opentelemetry.io/collector/exporter/exportertest v0.149.0/go.mod h1:4PrrXXNfTdkWxGT5fNiJ/70g8eRDLlQgh64UwhcjUzU= +go.opentelemetry.io/collector/exporter/otlpexporter v0.149.0 h1:8ARBKbaxKz/pXagsHTCGCjvMzSdf5n0bVJGzC1ksilk= +go.opentelemetry.io/collector/exporter/otlpexporter v0.149.0/go.mod h1:f0qnHmSPbCj6l/jNEyE0FMs4BtEpzY7s6Z0wEItVMBQ= +go.opentelemetry.io/collector/exporter/xexporter v0.149.0 h1:4uR3VnSxUVeV8igM7H3YkfKoQtndW8ZshWPjpGQIFUA= +go.opentelemetry.io/collector/exporter/xexporter v0.149.0/go.mod h1:My5S6QPUDggCdQ4tNbUHb7/GAk5t5CoTDY1wvCqUnTs= +go.opentelemetry.io/collector/extension v1.55.0 h1:B+1lH6sBHJPq0AX+WAtHsteqbeHQuRhHFtnjSDwSjKs= +go.opentelemetry.io/collector/extension v1.55.0/go.mod h1:2Diht9BMbFleBReevFQfnzrNpQgka3402VfLZIFyIzA= +go.opentelemetry.io/collector/extension/extensionauth v1.55.0 h1:ybszqQ+5Y+7uNkygCSVRUBHuXyYO/d/uoM1hXdDiy2s= +go.opentelemetry.io/collector/extension/extensionauth v1.55.0/go.mod h1:JSV7nc25cGtVfmVIaXywAGUU4MrZdb9R4rDdcZsddWU= +go.opentelemetry.io/collector/extension/extensionauth/extensionauthtest v0.149.0 h1:VFhyA7deUrUDbsOhCGscAouMZpapqeRjPSfp0HOgVow= +go.opentelemetry.io/collector/extension/extensionauth/extensionauthtest v0.149.0/go.mod h1:k8vS5ZzLWZIoNSuCe1rWONW2PK0ukGfIvqWLYyp+B18= +go.opentelemetry.io/collector/extension/extensioncapabilities v0.149.0 h1:XPaeWYYiosexWmxeMbEajKzyM9HaDTogj6UCBzbLcEo= +go.opentelemetry.io/collector/extension/extensioncapabilities v0.149.0/go.mod h1:9PjCfJZQRJbgewN1OlUtyQDQMUwPzN1sQnhp+d23S0c= +go.opentelemetry.io/collector/extension/extensionmiddleware v0.149.0 h1:HTyFY8jDxmd4cTzuIYIFze3fY1Bf3PM7+SXeyrx+fXk= +go.opentelemetry.io/collector/extension/extensionmiddleware v0.149.0/go.mod h1:WZ4uS1t4i39oeMhW7i5D9X9A7arYYS2q4PQBrZ5aF4U= +go.opentelemetry.io/collector/extension/extensionmiddleware/extensionmiddlewaretest v0.149.0 h1:fQioFG2Td8qVKIf5TLpTBnQ3C4VTYwyTvVEfB5qLEOE= +go.opentelemetry.io/collector/extension/extensionmiddleware/extensionmiddlewaretest v0.149.0/go.mod h1:aL1hkkYG66512S0xRnYs4XmlAmMaOYWty86HSH/Jd4I= +go.opentelemetry.io/collector/extension/extensiontest v0.149.0 h1:EvKYy2L2COLvmbiu033i9/uao+OLzINhV/aI3PT1E0k= +go.opentelemetry.io/collector/extension/extensiontest v0.149.0/go.mod h1:23mLGyEuu4j0ihcs0J+YtpVO2nD5Ak8Li0r/I07DlkQ= +go.opentelemetry.io/collector/extension/xextension v0.149.0 h1:4LCwC++YmLz+JrglBLL1JerpMo+O6ENIBG3lGA6VSN0= +go.opentelemetry.io/collector/extension/xextension v0.149.0/go.mod h1:iC2BD2whYV8ZcJTtRYEMlz0ezu5Q03/x/Hb5RGj5Pe0= +go.opentelemetry.io/collector/extension/zpagesextension v0.149.0 h1:w0w02vuT/vhLMO8hXKeb+NZcGINLEkaQTsbom4pac30= +go.opentelemetry.io/collector/extension/zpagesextension v0.149.0/go.mod h1:Np5Vdgameb0S65S7CZcXx1QXkfGb8sU/AkX9JgNnJT8= +go.opentelemetry.io/collector/featuregate v1.55.0 h1:s/bE8135+8GZpVlQ9qLXQjvprE9KNOGsLhNkqm+EDEU= +go.opentelemetry.io/collector/featuregate v1.55.0/go.mod h1:PS7zY/zaCb28EqciePVwRHVhc3oKortTFXsi3I6ee4g= +go.opentelemetry.io/collector/internal/componentalias v0.149.0 h1:0cH1hCy4vujhnAc6z4baLM0mauFZPfyqF9HtQF6YvGo= +go.opentelemetry.io/collector/internal/componentalias v0.149.0/go.mod h1:8oIpxyFLZECp6O7zFDTGeWw72CQ67C8wb6FqAL9wvCo= +go.opentelemetry.io/collector/internal/fanoutconsumer v0.149.0 h1:Eq3pjYKiXxZkmti4vmgh/jWBJ6tfwd+fDfcKcA/sHk8= +go.opentelemetry.io/collector/internal/fanoutconsumer v0.149.0/go.mod h1:Bl84aBXh5UWHWjJ/FYxXkroup1lBNpzgbdZfFOvz0cY= +go.opentelemetry.io/collector/internal/telemetry v0.149.0 h1:AlvNOgcu6/O/FZMQK7UkN3xkWGvKmj1jroX864YfXCM= +go.opentelemetry.io/collector/internal/telemetry v0.149.0/go.mod h1:y9yEZ8zgC4Ax84flfTVPZNQWxySP7mx47lb9ZbM31cs= +go.opentelemetry.io/collector/internal/testutil v0.149.0 h1:OWfUPO3NFKSaJtz/SBZph/2ENHbr/VbzzlBadKUhm8o= +go.opentelemetry.io/collector/internal/testutil v0.149.0/go.mod h1:Jkjs6rkqs973LqgZ0Fe3zrokQRKULYXPIf4HuqStiEE= +go.opentelemetry.io/collector/otelcol v0.149.0 h1:/sECMEcje2R4vSUSiZoKn7Ul/nbvk6WkKCMLqoJHvi8= +go.opentelemetry.io/collector/otelcol v0.149.0/go.mod h1:f+LKU3H4BYniQtrp65n8zt7ZJk7B4WAuajGyibcf4KY= +go.opentelemetry.io/collector/pdata v1.55.0 h1:WBgye8bo8koUyV9Vmp/r2Q3lgDezdsgfKDQAaM1oT2I= +go.opentelemetry.io/collector/pdata v1.55.0/go.mod h1:6jPrbM4tuliCPACDznjFtxnnHisfKfzwrBVoeuESYuk= +go.opentelemetry.io/collector/pdata/pprofile v0.149.0 h1:4/uI7wsgMnmBZm6Z/VNY6sWnaFN09+Nk3jr7XEmTtOk= +go.opentelemetry.io/collector/pdata/pprofile v0.149.0/go.mod h1:4uprs5wMp4MI1/bcP5mYERfobFxBn+QoeNFQBUSVk/U= +go.opentelemetry.io/collector/pdata/testdata v0.149.0 h1:Y9WCJpr9fvpCGmvh6wK0i+QtOn0OyGXnoOkLfq7xtok= +go.opentelemetry.io/collector/pdata/testdata v0.149.0/go.mod h1:5BscHKM7cy9lzPMpnaIFaTOMI8SI02AsEF4rH3aRJBg= +go.opentelemetry.io/collector/pdata/xpdata v0.149.0 h1:crfGmh5LsOAVc1ImdnPIUTMmHbOGYmWXgOyWSDnAKyw= +go.opentelemetry.io/collector/pdata/xpdata v0.149.0/go.mod h1:YgOtcDn7E/4dHw0/Yy/PvSa3GLqMKKAIikzBPM+ML2g= +go.opentelemetry.io/collector/pipeline v1.55.0 h1:jxFicLy3QYWQaQZp2f+wdCfHpOYb3mKNTqHR1KIut+U= +go.opentelemetry.io/collector/pipeline v1.55.0/go.mod h1:RD90NG3Jbk965Xaqym3JyHkuol4uZJjQVUkD9ddXJIs= +go.opentelemetry.io/collector/pipeline/xpipeline v0.149.0 h1:T30l3eiGqQe68PHXh2tnDL6VT5niZCQFKqbJ6/fVToE= +go.opentelemetry.io/collector/pipeline/xpipeline v0.149.0/go.mod h1:7KQ4/TT7mte7O5toMJk2IbqBUVgvGYpp3uU3g2CA6/o= +go.opentelemetry.io/collector/processor v1.55.0 h1:d4bCnvtAVTjy1/3JOj3ud6eEZCMsaz2C9lVStB1FM/8= +go.opentelemetry.io/collector/processor v1.55.0/go.mod h1:ruMOb0N76S+H8rhzkLoIzALAMCe7XI9qFONDWsR5IOA= +go.opentelemetry.io/collector/processor/batchprocessor v0.149.0 h1:Zl6EM6UQWd6LrjhkNr3sIFMiI8OpOAembbEbmiMxBMU= +go.opentelemetry.io/collector/processor/batchprocessor v0.149.0/go.mod h1:v7DSE83r+nwf+gtx5CYgiFErQbcJlFrK0D/wM8p41Gw= +go.opentelemetry.io/collector/processor/processorhelper v0.149.0 h1:T5HpundGbSHj96CpJfD1ZHBRlodPJWXoCIijA9Ozi2g= +go.opentelemetry.io/collector/processor/processorhelper v0.149.0/go.mod h1:Pi0qpQXlfgFfJPKbj8baxBFt2qht6JyVtUerUQNCMts= +go.opentelemetry.io/collector/processor/processorhelper/xprocessorhelper v0.149.0 h1:mtKK0uM0W36KypM8PFSCVyDkXJ60XLF8lSTYtjRIj6E= +go.opentelemetry.io/collector/processor/processorhelper/xprocessorhelper v0.149.0/go.mod h1:fNrp4nyyxv7ZRJIzWHgDXLirj5Krze1GUWbB9Eo3/pE= +go.opentelemetry.io/collector/processor/processortest v0.149.0 h1:J73vvUuqyG2Ojnc2CQd6yNqI/wqoWuZuNo/JQH7WTsU= +go.opentelemetry.io/collector/processor/processortest v0.149.0/go.mod h1:z7YKrOnM/y6h7ovZ3JKpCLqzRlE+xoeAhf9PU76EGtg= +go.opentelemetry.io/collector/processor/xprocessor v0.149.0 h1:hmQS3HfO9VqSVsf5h1qIwg5DRYzP1WHxg32tBkHW2Es= +go.opentelemetry.io/collector/processor/xprocessor v0.149.0/go.mod h1:kMEqqiVkTFedwNmFRg2wjA9A+CE44+CrM1wHb5Vfu0k= +go.opentelemetry.io/collector/receiver v1.55.0 h1:7GVQOPleD60LzxvkqHaChlbWw5nJvw6i2fV6UBL+7EQ= +go.opentelemetry.io/collector/receiver v1.55.0/go.mod h1:Sdx1R+nh6p9lQSZJk8KfQK4nzLI4zNrceIk7a8WpSQg= +go.opentelemetry.io/collector/receiver/receiverhelper v0.149.0 h1:cuRWQ5alfQUwtQosjbOvy2+eKjKaVBaZat0r5S3dC0A= +go.opentelemetry.io/collector/receiver/receiverhelper v0.149.0/go.mod h1:LpSzl7PfuN7LVmwdj6FwPKuwYwiNwUqtMDHU1uroNQU= +go.opentelemetry.io/collector/receiver/receivertest v0.149.0 h1:S33+mAxh7QTxY2o0fTFKEN/ULgcuw36hUVQDyIlSpTc= +go.opentelemetry.io/collector/receiver/receivertest v0.149.0/go.mod h1:w+W/7Dd64jHeCsQcJZBB6oSz3gasvKz5KP1yKzaN8V8= +go.opentelemetry.io/collector/receiver/xreceiver v0.149.0 h1:EpJ5zqTrJwQT1QsX+JHRcDfTA1Mzf0gAOPGihkxtn7E= +go.opentelemetry.io/collector/receiver/xreceiver v0.149.0/go.mod h1:hoUUGXcIr7ZuDdkqzLGfy5P7Njsc/YQ8riWX70Ukf6E= +go.opentelemetry.io/collector/service v0.149.0 h1:wYdGBC+dUs1oBpjx7hKMlN75UKc2CBJsDSbvZYu4ZvI= +go.opentelemetry.io/collector/service v0.149.0/go.mod h1:hJUZUh0LDy53geG7RA1ym/GLVeWpiMGp6gX+sXh6Z88= +go.opentelemetry.io/collector/service/hostcapabilities v0.149.0 h1:vLw9GIbpZUvRI1M2mHJMGZCsy7ijNOKTL81rTByzu7k= +go.opentelemetry.io/collector/service/hostcapabilities v0.149.0/go.mod h1:tMD3mdx4BTljhfvScmSdewN89NUgj/eoKXCUDkD0F1Y= +go.opentelemetry.io/collector/service/telemetry/telemetrytest v0.149.0 h1:Ao4axvnPWwQ07vK+67VL8veAz5eNH9v530H+B7Jsw70= +go.opentelemetry.io/collector/service/telemetry/telemetrytest v0.149.0/go.mod h1:+scbyWSHHiabLiZLLRpM80P0uhAR+NkwIhL9OGv5LZ4= go.opentelemetry.io/contrib/bridges/otelzap v0.17.0 h1:oCltVHJcblcth2z9B9dRTeZIZTe2Sf9Ad9h8bcc+s8M= go.opentelemetry.io/contrib/bridges/otelzap v0.17.0/go.mod h1:G/VE1A/hRn6mEWdfC8rMvSdQVGM64KUPi4XilLkwcQw= go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.67.0 h1:yI1/OhfEPy7J9eoa6Sj051C7n5dvpj0QX8g4sRchg04= @@ -925,8 +924,8 @@ golang.org/x/crypto v0.13.0/go.mod h1:y6Z2r+Rw4iayiXXAIxJIDAJ1zMW4yaTpebo8fPOliY golang.org/x/crypto v0.19.0/go.mod h1:Iy9bg/ha4yyC70EfRS8jz+B6ybOBKMaSxLj6P6oBDfU= golang.org/x/crypto v0.23.0/go.mod h1:CKFgDieR+mRhux2Lsu27y0fO304Db0wZe70UKqHu0v8= golang.org/x/crypto v0.31.0/go.mod h1:kDsLvtWBEx7MV9tJOj9bnXsPbxwJQ6csT/x4KIN4Ssk= -golang.org/x/crypto v0.48.0 h1:/VRzVqiRSggnhY7gNRxPauEQ5Drw9haKdM0jqfcCFts= -golang.org/x/crypto v0.48.0/go.mod h1:r0kV5h3qnFPlQnBSrULhlsRfryS2pmewsg+XfMgkVos= +golang.org/x/crypto v0.49.0 h1:+Ng2ULVvLHnJ/ZFEq4KdcDd/cfjrrjjNSXNzxg0Y4U4= +golang.org/x/crypto v0.49.0/go.mod h1:ErX4dUh2UM+CFYiXZRTcMpEcN8b/1gxEuv3nODoYtCA= golang.org/x/exp v0.0.0-20260218203240-3dfff04db8fa h1:Zt3DZoOFFYkKhDT3v7Lm9FDMEV06GpzjG2jrqW+QTE0= golang.org/x/exp v0.0.0-20260218203240-3dfff04db8fa/go.mod h1:K79w1Vqn7PoiZn+TkNpx3BUWUQksGO3JcVX6qIjytmA= golang.org/x/mod v0.2.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= @@ -936,8 +935,8 @@ golang.org/x/mod v0.8.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs= golang.org/x/mod v0.12.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs= golang.org/x/mod v0.15.0/go.mod h1:hTbmBsO62+eylJbnUtE2MGJUyE7QWk4xUqPFrRgJ+7c= golang.org/x/mod v0.17.0/go.mod h1:hTbmBsO62+eylJbnUtE2MGJUyE7QWk4xUqPFrRgJ+7c= -golang.org/x/mod v0.33.0 h1:tHFzIWbBifEmbwtGz65eaWyGiGZatSrT9prnU8DbVL8= -golang.org/x/mod v0.33.0/go.mod h1:swjeQEj+6r7fODbD2cqrnje9PnziFuw4bmLbBZFrQ5w= +golang.org/x/mod v0.34.0 h1:xIHgNUUnW6sYkcM5Jleh05DvLOtwc6RitGHbDk4akRI= +golang.org/x/mod v0.34.0/go.mod h1:ykgH52iCZe79kzLLMhyCUzhMci+nQj+0XkbXpNYtVjY= golang.org/x/net v0.0.0-20181114220301-adae6a3d119a/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= golang.org/x/net v0.0.0-20190613194153-d28f0bde5980/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= @@ -955,8 +954,8 @@ golang.org/x/net v0.15.0/go.mod h1:idbUs1IY1+zTqbi8yxTbhexhEEk5ur9LInksu6HrEpk= golang.org/x/net v0.21.0/go.mod h1:bIjVDfnllIU7BJ2DNgfnXvpSvtn8VRwhlsaeUTyUS44= golang.org/x/net v0.25.0/go.mod h1:JkAGAh7GEvH74S6FOH42FLoXpXbE/aqXSrIQjXgsiwM= golang.org/x/net v0.33.0/go.mod h1:HXLR5J+9DxmrqMwG9qjGCxZ+zKXxBru04zlTvWlWuN4= -golang.org/x/net v0.51.0 h1:94R/GTO7mt3/4wIKpcR5gkGmRLOuE/2hNGeWq/GBIFo= -golang.org/x/net v0.51.0/go.mod h1:aamm+2QF5ogm02fjy5Bb7CQ0WMt1/WVM7FtyaTLlA9Y= +golang.org/x/net v0.52.0 h1:He/TN1l0e4mmR3QqHMT2Xab3Aj3L9qjbhRm78/6jrW0= +golang.org/x/net v0.52.0/go.mod h1:R1MAz7uMZxVMualyPXb+VaqGSa3LIaUqk0eEt3w36Sw= golang.org/x/oauth2 v0.35.0 h1:Mv2mzuHuZuY2+bkyWXIHMfhNdJAdwW3FuWeCPYN5GVQ= golang.org/x/oauth2 v0.35.0/go.mod h1:lzm5WQJQwKZ3nwavOZ3IS5Aulzxi68dUSgRHujetwEA= golang.org/x/sync v0.0.0-20181108010431-42b317875d0f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= @@ -971,8 +970,8 @@ golang.org/x/sync v0.3.0/go.mod h1:FU7BRWz2tNW+3quACPkgCx/L+uEAv1htQ0V83Z9Rj+Y= golang.org/x/sync v0.6.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk= golang.org/x/sync v0.7.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk= golang.org/x/sync v0.10.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk= -golang.org/x/sync v0.19.0 h1:vV+1eWNmZ5geRlYjzm2adRgW2/mcpevXNg50YZtPCE4= -golang.org/x/sync v0.19.0/go.mod h1:9KTHXmSnoGruLpwFjVSX0lNNA75CykiMECbovNTZqGI= +golang.org/x/sync v0.20.0 h1:e0PTpb7pjO8GAtTs2dQ6jYa5BWYlMuX047Dco/pItO4= +golang.org/x/sync v0.20.0/go.mod h1:9xrNwdLfx4jkKbNva9FpL6vEN7evnE43NNNJQ2LF3+0= golang.org/x/sys v0.0.0-20180823144017-11551d06cbcc/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20180905080454-ebe1bf3edb33/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20181116152217-5ac8a444bdc5/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= @@ -1021,8 +1020,8 @@ golang.org/x/term v0.12.0/go.mod h1:owVbMEjm3cBLCHdkQu9b1opXd4ETQWc3BhuQGKgXgvU= golang.org/x/term v0.17.0/go.mod h1:lLRBjIVuehSbZlaOtGMbcMncT+aqLLLmKrsjNrUguwk= golang.org/x/term v0.20.0/go.mod h1:8UkIAJTvZgivsXaD6/pH6U9ecQzZ45awqEOzuCvwpFY= golang.org/x/term v0.27.0/go.mod h1:iMsnZpn0cago0GOrHO2+Y7u7JPn5AylBrcoWkElMTSM= -golang.org/x/term v0.40.0 h1:36e4zGLqU4yhjlmxEaagx2KuYbJq3EwY8K943ZsHcvg= -golang.org/x/term v0.40.0/go.mod h1:w2P8uVp06p2iyKKuvXIm7N/y0UCRt3UfJTfZ7oOpglM= +golang.org/x/term v0.41.0 h1:QCgPso/Q3RTJx2Th4bDLqML4W6iJiaXFq2/ftQF13YU= +golang.org/x/term v0.41.0/go.mod h1:3pfBgksrReYfZ5lvYM0kSO0LIkAl4Yl2bXOkKP7Ec2A= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.2/go.mod h1:bEr9sfX3Q8Zfm5fL9x+3itogRgK3+ptLWKqgva+5dAk= golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= @@ -1035,8 +1034,8 @@ golang.org/x/text v0.13.0/go.mod h1:TvPlkZtksWOMsz7fbANvkp4WM8x/WCo/om8BMLbz+aE= golang.org/x/text v0.14.0/go.mod h1:18ZOQIKpY8NJVqYksKHtTdi31H5itFRjB5/qKTNYzSU= golang.org/x/text v0.15.0/go.mod h1:18ZOQIKpY8NJVqYksKHtTdi31H5itFRjB5/qKTNYzSU= golang.org/x/text v0.21.0/go.mod h1:4IBbMaMmOPCJ8SecivzSH54+73PCFmPWxNTLm+vZkEQ= -golang.org/x/text v0.34.0 h1:oL/Qq0Kdaqxa1KbNeMKwQq0reLCCaFtqu2eNuSeNHbk= -golang.org/x/text v0.34.0/go.mod h1:homfLqTYRFyVYemLBFl5GgL/DWEiH5wcsQ5gSh1yziA= +golang.org/x/text v0.35.0 h1:JOVx6vVDFokkpaq1AEptVzLTpDe9KGpj5tR4/X+ybL8= +golang.org/x/text v0.35.0/go.mod h1:khi/HExzZJ2pGnjenulevKNX1W67CUy0AsXcNubPGCA= golang.org/x/time v0.14.0 h1:MRx4UaLrDotUKUdCIqzPC48t1Y9hANFKIRpNx+Te8PI= golang.org/x/time v0.14.0/go.mod h1:eL/Oa2bBBK0TkX57Fyni+NgnyQQN4LitPmob2Hjnqw4= golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= @@ -1048,8 +1047,8 @@ golang.org/x/tools v0.1.12/go.mod h1:hNGJHUnrk76NpqgfD5Aqm5Crs+Hm0VOH/i9J2+nxYbc golang.org/x/tools v0.6.0/go.mod h1:Xwgl3UAJ/d3gWutnCtw505GrjyAbvKui8lOU390QaIU= golang.org/x/tools v0.13.0/go.mod h1:HvlwmtVNQAhOuCjW7xxvovg8wbNq7LwfXh/k7wXUl58= golang.org/x/tools v0.21.1-0.20240508182429-e35e4ccd0d2d/go.mod h1:aiJjzUbINMkxbQROHiO6hDPo2LHcIPhhQsa9DLh0yGk= -golang.org/x/tools v0.42.0 h1:uNgphsn75Tdz5Ji2q36v/nsFSfR/9BRFvqhGBaJGd5k= -golang.org/x/tools v0.42.0/go.mod h1:Ma6lCIwGZvHK6XtgbswSoWroEkhugApmsXyrUmBhfr0= +golang.org/x/tools v0.43.0 h1:12BdW9CeB3Z+J/I/wj34VMl8X+fEXBxVR90JeMX5E7s= +golang.org/x/tools v0.43.0/go.mod h1:uHkMso649BX2cZK6+RpuIPXS3ho2hZo4FVwfoy1vIk0= golang.org/x/tools/godoc v0.1.0-deprecated h1:o+aZ1BOj6Hsx/GBdJO/s815sqftjSnrZZwyYTHODvtk= golang.org/x/tools/godoc v0.1.0-deprecated/go.mod h1:qM63CriJ961IHWmnWa9CjZnBndniPt4a3CK0PVB9bIg= golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= @@ -1066,8 +1065,8 @@ google.golang.org/genproto/googleapis/api v0.0.0-20260226221140-a57be14db171 h1: google.golang.org/genproto/googleapis/api v0.0.0-20260226221140-a57be14db171/go.mod h1:M5krXqk4GhBKvB596udGL3UyjL4I1+cTbK0orROM9ng= google.golang.org/genproto/googleapis/rpc v0.0.0-20260226221140-a57be14db171 h1:ggcbiqK8WWh6l1dnltU4BgWGIGo+EVYxCaAPih/zQXQ= google.golang.org/genproto/googleapis/rpc v0.0.0-20260226221140-a57be14db171/go.mod h1:4Hqkh8ycfw05ld/3BWL7rJOSfebL2Q+DVDeRgYgxUU8= -google.golang.org/grpc v1.79.2 h1:fRMD94s2tITpyJGtBBn7MkMseNpOZU8ZxgC3MMBaXRU= -google.golang.org/grpc v1.79.2/go.mod h1:KmT0Kjez+0dde/v2j9vzwoAScgEPx/Bw1CYChhHLrHQ= +google.golang.org/grpc v1.79.3 h1:sybAEdRIEtvcD68Gx7dmnwjZKlyfuc61Dyo9pGXXkKE= +google.golang.org/grpc v1.79.3/go.mod h1:KmT0Kjez+0dde/v2j9vzwoAScgEPx/Bw1CYChhHLrHQ= google.golang.org/protobuf v1.36.11 h1:fV6ZwhNocDyBLK0dj+fg8ektcVegBBuEolpbTQyBNVE= google.golang.org/protobuf v1.36.11/go.mod h1:HTf+CrKn2C3g5S8VImy6tdcUvCska2kB7j23XfzDpco= gopkg.in/alecthomas/kingpin.v2 v2.2.6/go.mod h1:FMv+mEhP44yOT+4EoQTLFTRgOQ1FBLkstjWtayDeSgw= diff --git a/otelcollector/prometheusreceiver/config.go b/otelcollector/prometheusreceiver/config.go index 9ca283a59..e74562910 100644 --- a/otelcollector/prometheusreceiver/config.go +++ b/otelcollector/prometheusreceiver/config.go @@ -30,17 +30,12 @@ type Config struct { PrometheusConfig *PromConfig `mapstructure:"config"` TrimMetricSuffixes bool `mapstructure:"trim_metric_suffixes"` - // ReportExtraScrapeMetrics - enables reporting of additional metrics for Prometheus client like scrape_body_size_bytes - // - // Deprecated: use the feature gate "receiver.prometheusreceiver.EnableReportExtraScrapeMetrics" instead. - ReportExtraScrapeMetrics bool `mapstructure:"report_extra_scrape_metrics"` - TargetAllocator configoptional.Optional[targetallocator.Config] `mapstructure:"target_allocator"` // APIServer has the settings to enable the receiver to host the Prometheus API // server in agent mode. This allows the user to call the endpoint to get // the config, service discovery, and targets for debugging purposes. - APIServer configoptional.Optional[apiserver.Config] `mapstructure:"api_server"` + APIServer *apiserver.Config `mapstructure:"api_server"` // For testing only. ignoreMetadata bool @@ -53,10 +48,8 @@ func (cfg *Config) Validate() error { return errors.New("no Prometheus scrape_configs or target_allocator set") } - if cfg.APIServer.HasValue() { - if err := cfg.APIServer.Validate(); err != nil { - return fmt.Errorf("invalid API server configuration settings: %w", err) - } + if err := cfg.APIServer.Validate(); err != nil { + return fmt.Errorf("invalid API server configuration settings: %w", err) } return nil @@ -232,4 +225,3 @@ func checkTLSConfig(tlsConfig commonconfig.TLSConfig) error { return nil } - diff --git a/otelcollector/prometheusreceiver/config.schema.yaml b/otelcollector/prometheusreceiver/config.schema.yaml index 6e5c492ea..7e5025069 100644 --- a/otelcollector/prometheusreceiver/config.schema.yaml +++ b/otelcollector/prometheusreceiver/config.schema.yaml @@ -1,11 +1,4 @@ $defs: - api_server: - type: object - properties: - enabled: - type: boolean - server_config: - $ref: go.opentelemetry.io/collector/config/confighttp.server_config prom_config: description: PromConfig is a redeclaration of promconfig.Config because we need custom unmarshaling as prometheus "config" uses `yaml` tags. x-customType: github.com/prometheus/prometheus/config.config @@ -14,13 +7,11 @@ type: object properties: api_server: description: APIServer has the settings to enable the receiver to host the Prometheus API server in agent mode. This allows the user to call the endpoint to get the config, service discovery, and targets for debugging purposes. - $ref: api_server + x-optional: true + $ref: ./internal/apiserver.config config: x-pointer: true $ref: prom_config - report_extra_scrape_metrics: - description: 'ReportExtraScrapeMetrics - enables reporting of additional metrics for Prometheus client like scrape_body_size_bytes Deprecated: use the feature gate "receiver.prometheusreceiver.EnableReportExtraScrapeMetrics" instead.' - type: boolean target_allocator: x-optional: true $ref: ./internal/targetallocator.config diff --git a/otelcollector/prometheusreceiver/config_test.go b/otelcollector/prometheusreceiver/config_test.go index 0783ddfee..57e51679a 100644 --- a/otelcollector/prometheusreceiver/config_test.go +++ b/otelcollector/prometheusreceiver/config_test.go @@ -53,7 +53,6 @@ func TestLoadConfig(t *testing.T) { assert.Equal(t, "demo", r1.PrometheusConfig.ScrapeConfigs[0].JobName) assert.Equal(t, 5*time.Second, time.Duration(r1.PrometheusConfig.ScrapeConfigs[0].ScrapeInterval)) assert.True(t, r1.TrimMetricSuffixes) - assert.True(t, r1.ReportExtraScrapeMetrics) ta := r1.TargetAllocator.Get() assert.Equal(t, "http://my-targetallocator-service", ta.Endpoint) @@ -379,34 +378,35 @@ func TestLoadPrometheusAPIServerExtensionConfig(t *testing.T) { r0 := cfg.(*Config) assert.NotNil(t, r0.PrometheusConfig) - assert.True(t, r0.APIServer.HasValue()) - assert.NotNil(t, r0.APIServer.Get()) - assert.Equal(t, "localhost:9090", r0.APIServer.Get().ServerConfig.NetAddr.Endpoint) + require.NotNil(t, r0.APIServer) + assert.True(t, r0.APIServer.IsEnabled()) + assert.Equal(t, "localhost:9090", r0.APIServer.ServerConfig.NetAddr.Endpoint) - sub, err = cm.Sub(component.NewIDWithName(metadata.Type, "withAPIDisabled").String()) + sub, err = cm.Sub(component.NewIDWithName(metadata.Type, "withoutAPI").String()) require.NoError(t, err) cfg = factory.CreateDefaultConfig() require.NoError(t, sub.Unmarshal(cfg)) require.NoError(t, xconfmap.Validate(cfg)) r1 := cfg.(*Config) - assert.False(t, r1.APIServer.HasValue()) + assert.NotNil(t, r1.PrometheusConfig) + assert.False(t, r1.APIServer.IsEnabled()) - sub, err = cm.Sub(component.NewIDWithName(metadata.Type, "withoutAPI").String()) + sub, err = cm.Sub(component.NewIDWithName(metadata.Type, "withAPIUsingDefaults").String()) require.NoError(t, err) cfg = factory.CreateDefaultConfig() require.NoError(t, sub.Unmarshal(cfg)) require.NoError(t, xconfmap.Validate(cfg)) r2 := cfg.(*Config) - assert.NotNil(t, r2.PrometheusConfig) - assert.False(t, r2.APIServer.HasValue()) + require.NotNil(t, r2.APIServer) + assert.True(t, r2.APIServer.IsEnabled()) + assert.Equal(t, "127.0.0.1:9090", r2.APIServer.ServerConfig.NetAddr.Endpoint) sub, err = cm.Sub(component.NewIDWithName(metadata.Type, "withInvalidAPIConfig").String()) require.NoError(t, err) cfg = factory.CreateDefaultConfig() - require.NoError(t, sub.Unmarshal(cfg)) - require.Error(t, xconfmap.Validate(cfg)) + require.Error(t, sub.Unmarshal(cfg)) } func TestReloadPromConfigSecretHandling(t *testing.T) { diff --git a/otelcollector/prometheusreceiver/documentation.md b/otelcollector/prometheusreceiver/documentation.md index 4f9273b03..2ef78ec8b 100644 --- a/otelcollector/prometheusreceiver/documentation.md +++ b/otelcollector/prometheusreceiver/documentation.md @@ -10,8 +10,7 @@ This component has the following feature gates: | ------------ | ----- | ----------- | ------------ | ---------- | --------- | | `receiver.prometheusreceiver.EnableCreatedTimestampZeroIngestion` | alpha | Enables the Prometheus created-timestamps-zero-injection feature. Created timestamps are injected as 0-valued samples when appropriate. This is disabled by default due to worse CPU performance with higher metric volumes. | v0.113.0 | N/A | [Link](https://github.com/open-telemetry/opentelemetry-collector-contrib/issues/40355) | | `receiver.prometheusreceiver.EnableNativeHistograms` | stable | Converts scraped Prometheus native histograms into OpenTelemetry exponential histograms. You still need to configure 'scrape_native_histograms: true' in your Prometheus scrape config to actually scrape native histograms. For mixed histograms (both classic and native), only the native histogram buckets are used. | v0.142.0 | v0.145.0 | [Link](https://github.com/open-telemetry/opentelemetry-collector-contrib/pull/34473) | -| `receiver.prometheusreceiver.EnableReportExtraScrapeMetrics` | deprecated | Enables reporting of extra Prometheus scrape metrics. This gate is deprecated, use the `extra_scrape_metrics` Prometheus scrape configuration instead. | v0.143.0 | v0.148.0 | [Link](https://github.com/open-telemetry/opentelemetry-collector-contrib/issues/44181) | -| `receiver.prometheusreceiver.RemoveReportExtraScrapeMetricsConfig` | stable | This gate is always enabled and cannot be turned off. The 'report_extra_scrape_metrics' configuration option is always ignored. The extra scrape metrics are controlled by the EnableReportExtraScrapeMetrics feature gate, unless otherwise specified in the Prometheus scrape configuration. | v0.143.0 | v0.148.0 | [Link](https://github.com/open-telemetry/opentelemetry-collector-contrib/issues/44181) | +| `receiver.prometheusreceiver.IgnoreScopeInfoMetric` | alpha | When enabled, the `otel_scope_info` metric is ignored for scope attribute extraction. | v0.148.0 | N/A | [Link](https://github.com/open-telemetry/opentelemetry-collector-contrib/issues/41502) | | `receiver.prometheusreceiver.RemoveStartTimeAdjustment` | stable | When enabled, the Prometheus receiver will leave the start time unset. Use the metric_start_time processor instead if you need this functionality. | v0.121.0 | v0.142.0 | [Link](https://github.com/open-telemetry/opentelemetry-collector-contrib/pull/36364) | | `receiver.prometheusreceiver.UseCreatedMetric` | deprecated | When enabled, the Prometheus receiver will retrieve the start time for Summary, Histogram and Sum metrics from _created metric. | v0.89.0 | v0.141.0 | [Link](https://github.com/open-telemetry/opentelemetry-collector-contrib/issues/21909) | diff --git a/otelcollector/prometheusreceiver/factory.go b/otelcollector/prometheusreceiver/factory.go index 1108c311c..75b4ed38a 100644 --- a/otelcollector/prometheusreceiver/factory.go +++ b/otelcollector/prometheusreceiver/factory.go @@ -9,7 +9,6 @@ import ( promconfig "github.com/prometheus/prometheus/config" _ "github.com/prometheus/prometheus/plugins" // init() of this package registers service discovery impl. "go.opentelemetry.io/collector/component" - "go.opentelemetry.io/collector/config/configoptional" "go.opentelemetry.io/collector/consumer" "go.opentelemetry.io/collector/receiver" "go.uber.org/zap" @@ -27,11 +26,12 @@ func NewFactory() receiver.Factory { } func createDefaultConfig() component.Config { + apiCfg := apiserver.DefaultConfig() return &Config{ PrometheusConfig: &PromConfig{ GlobalConfig: promconfig.DefaultGlobalConfig, }, - APIServer: configoptional.Default(apiserver.DefaultConfig()), + APIServer: &apiCfg, } } diff --git a/otelcollector/prometheusreceiver/factory_test.go b/otelcollector/prometheusreceiver/factory_test.go index baa4224ca..f5cbf31db 100644 --- a/otelcollector/prometheusreceiver/factory_test.go +++ b/otelcollector/prometheusreceiver/factory_test.go @@ -11,7 +11,8 @@ import ( "github.com/stretchr/testify/require" "go.opentelemetry.io/collector/component" "go.opentelemetry.io/collector/component/componenttest" - "go.opentelemetry.io/collector/config/configoptional" + "go.opentelemetry.io/collector/config/confighttp" + "go.opentelemetry.io/collector/config/confignet" "go.opentelemetry.io/collector/confmap/confmaptest" "go.opentelemetry.io/collector/consumer/consumertest" "go.opentelemetry.io/collector/receiver/receivertest" @@ -51,10 +52,16 @@ func TestFactoryCanParseServiceDiscoveryConfigs(t *testing.T) { func TestMultipleCreateWithAPIServer(t *testing.T) { factory := NewFactory() cfg := factory.CreateDefaultConfig().(*Config) - apiCfg := apiserver.DefaultConfig() - apiCfg.ServerConfig.NetAddr.Transport = "tcp" - apiCfg.ServerConfig.NetAddr.Endpoint = "localhost:9090" - cfg.APIServer = configoptional.Some(apiCfg) + apiEnabled := true + cfg.APIServer = &apiserver.Config{ + Enabled: &apiEnabled, + ServerConfig: confighttp.ServerConfig{ + NetAddr: confignet.AddrConfig{ + Transport: "tcp", + Endpoint: "localhost:9090", + }, + }, + } set := receivertest.NewNopSettings(metadata.Type) firstRcvr, err := factory.CreateMetrics(t.Context(), set, cfg, consumertest.NewNop()) require.NoError(t, err) diff --git a/otelcollector/prometheusreceiver/go.mod b/otelcollector/prometheusreceiver/go.mod index 1548dca05..1b2e1a2e0 100644 --- a/otelcollector/prometheusreceiver/go.mod +++ b/otelcollector/prometheusreceiver/go.mod @@ -9,45 +9,46 @@ require ( github.com/gogo/protobuf v1.3.2 github.com/golang/snappy v1.0.0 github.com/grafana/regexp v0.0.0-20250905093917-f7b3be9d1853 - github.com/mwitkow/go-conntrack v0.0.0-20190716064945-2f068394615f - github.com/open-telemetry/opentelemetry-collector-contrib/exporter/prometheusremotewriteexporter v0.148.0 - github.com/open-telemetry/opentelemetry-collector-contrib/internal/coreinternal v0.148.0 - github.com/open-telemetry/opentelemetry-collector-contrib/pkg/pdatatest v0.148.0 - github.com/open-telemetry/opentelemetry-collector-contrib/pkg/translator/prometheus v0.148.0 + github.com/open-telemetry/opentelemetry-collector-contrib/exporter/prometheusremotewriteexporter v0.149.0 + github.com/open-telemetry/opentelemetry-collector-contrib/internal/common v0.149.0 + github.com/open-telemetry/opentelemetry-collector-contrib/internal/coreinternal v0.149.0 + github.com/open-telemetry/opentelemetry-collector-contrib/pkg/pdatatest v0.149.0 + github.com/open-telemetry/opentelemetry-collector-contrib/pkg/pdatautil v0.149.0 + github.com/open-telemetry/opentelemetry-collector-contrib/pkg/translator/prometheus v0.149.0 github.com/prometheus/client_golang v1.23.2 github.com/prometheus/common v0.67.5 github.com/prometheus/exporter-toolkit v0.15.1 github.com/prometheus/prometheus v0.310.0 github.com/stretchr/testify v1.11.1 - go.opentelemetry.io/collector/component v1.54.0 - go.opentelemetry.io/collector/component/componentstatus v0.148.0 - go.opentelemetry.io/collector/component/componenttest v0.148.0 - go.opentelemetry.io/collector/config/confighttp v0.148.0 - go.opentelemetry.io/collector/config/confignet v1.54.0 - go.opentelemetry.io/collector/config/configopaque v1.54.0 - go.opentelemetry.io/collector/config/configoptional v1.54.0 - go.opentelemetry.io/collector/config/configtls v1.54.0 - go.opentelemetry.io/collector/confmap v1.54.0 - go.opentelemetry.io/collector/confmap/provider/fileprovider v1.54.0 - go.opentelemetry.io/collector/confmap/xconfmap v0.148.0 - go.opentelemetry.io/collector/consumer v1.54.0 - go.opentelemetry.io/collector/consumer/consumertest v0.148.0 - go.opentelemetry.io/collector/exporter v1.54.0 - go.opentelemetry.io/collector/featuregate v1.54.0 - go.opentelemetry.io/collector/otelcol v0.148.0 - go.opentelemetry.io/collector/pdata v1.54.0 - go.opentelemetry.io/collector/processor v1.54.0 - go.opentelemetry.io/collector/processor/batchprocessor v0.148.0 - go.opentelemetry.io/collector/receiver v1.54.0 - go.opentelemetry.io/collector/receiver/receiverhelper v0.148.0 - go.opentelemetry.io/collector/receiver/receivertest v0.148.0 - go.opentelemetry.io/collector/service v0.148.0 + go.opentelemetry.io/collector/component v1.55.0 + go.opentelemetry.io/collector/component/componentstatus v0.149.0 + go.opentelemetry.io/collector/component/componenttest v0.149.0 + go.opentelemetry.io/collector/config/confighttp v0.149.0 + go.opentelemetry.io/collector/config/confignet v1.55.0 + go.opentelemetry.io/collector/config/configopaque v1.55.0 + go.opentelemetry.io/collector/config/configoptional v1.55.0 + go.opentelemetry.io/collector/config/configtls v1.55.0 + go.opentelemetry.io/collector/confmap v1.55.0 + go.opentelemetry.io/collector/confmap/provider/fileprovider v1.55.0 + go.opentelemetry.io/collector/confmap/xconfmap v0.149.0 + go.opentelemetry.io/collector/consumer v1.55.0 + go.opentelemetry.io/collector/consumer/consumertest v0.149.0 + go.opentelemetry.io/collector/exporter v1.55.0 + go.opentelemetry.io/collector/featuregate v1.55.0 + go.opentelemetry.io/collector/otelcol v0.149.0 + go.opentelemetry.io/collector/pdata v1.55.0 + go.opentelemetry.io/collector/processor v1.55.0 + go.opentelemetry.io/collector/processor/batchprocessor v0.149.0 + go.opentelemetry.io/collector/receiver v1.55.0 + go.opentelemetry.io/collector/receiver/receiverhelper v0.149.0 + go.opentelemetry.io/collector/receiver/receivertest v0.149.0 + go.opentelemetry.io/collector/service v0.149.0 go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.67.0 go.opentelemetry.io/otel v1.42.0 go.uber.org/goleak v1.3.0 go.uber.org/zap v1.27.1 go.uber.org/zap/exp v0.3.0 - golang.org/x/net v0.51.0 + golang.org/x/net v0.52.0 ) require ( @@ -88,7 +89,7 @@ require ( github.com/basgys/goxml2json v1.1.1-0.20231018121955-e66ee54ceaad // indirect github.com/bboreham/go-loser v0.0.0-20230920113527-fcc2c21820a3 // indirect github.com/beorn7/perks v1.0.1 // indirect - github.com/buger/jsonparser v1.1.1 // indirect + github.com/buger/jsonparser v1.1.2 // indirect github.com/cenkalti/backoff/v4 v4.3.0 // indirect github.com/cespare/xxhash/v2 v2.3.0 // indirect github.com/cncf/xds/go v0.0.0-20251210132809-ee656c7534f5 // indirect @@ -106,7 +107,7 @@ require ( github.com/docker/go-connections v0.6.0 // indirect github.com/docker/go-units v0.5.0 // indirect github.com/ebitengine/purego v0.10.0 // indirect - github.com/edsrzf/mmap-go v1.2.0 // indirect + github.com/edsrzf/mmap-go v1.2.1-0.20241212181136-fad1cd13edbd // indirect github.com/emicklei/go-restful/v3 v3.12.2 // indirect github.com/envoyproxy/go-control-plane/envoy v1.36.0 // indirect github.com/envoyproxy/protoc-gen-validate v1.3.0 // indirect @@ -178,10 +179,10 @@ require ( github.com/jpillora/backoff v1.0.0 // indirect github.com/json-iterator/go v1.1.12 // indirect github.com/julienschmidt/httprouter v1.3.0 // indirect - github.com/klauspost/compress v1.18.4 // indirect + github.com/klauspost/compress v1.18.5 // indirect github.com/knadh/koanf/maps v0.1.2 // indirect github.com/knadh/koanf/providers/confmap v1.0.0 // indirect - github.com/knadh/koanf/v2 v2.3.3 // indirect + github.com/knadh/koanf/v2 v2.3.4 // indirect github.com/kolo/xmlrpc v0.0.0-20220921171641-a4b6fa1dd06b // indirect github.com/kylelemons/godebug v1.1.0 // indirect github.com/linode/linodego v1.65.0 // indirect @@ -207,14 +208,14 @@ require ( github.com/modern-go/reflect2 v1.0.3-0.20250322232337-35a7c28c31ee // indirect github.com/morikuni/aec v1.1.0 // indirect github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822 // indirect + github.com/mwitkow/go-conntrack v0.0.0-20190716064945-2f068394615f // indirect github.com/oklog/ulid v1.3.1 // indirect github.com/oklog/ulid/v2 v2.1.1 // indirect - github.com/open-telemetry/opentelemetry-collector-contrib/internal/exp/metrics v0.148.0 // indirect - github.com/open-telemetry/opentelemetry-collector-contrib/pkg/golden v0.148.0 // indirect - github.com/open-telemetry/opentelemetry-collector-contrib/pkg/pdatautil v0.148.0 // indirect - github.com/open-telemetry/opentelemetry-collector-contrib/pkg/resourcetotelemetry v0.148.0 // indirect - github.com/open-telemetry/opentelemetry-collector-contrib/pkg/translator/prometheusremotewrite v0.148.0 // indirect - github.com/open-telemetry/opentelemetry-collector-contrib/processor/deltatocumulativeprocessor v0.148.0 // indirect + github.com/open-telemetry/opentelemetry-collector-contrib/internal/exp/metrics v0.149.0 // indirect + github.com/open-telemetry/opentelemetry-collector-contrib/pkg/golden v0.149.0 // indirect + github.com/open-telemetry/opentelemetry-collector-contrib/pkg/resourcetotelemetry v0.149.0 // indirect + github.com/open-telemetry/opentelemetry-collector-contrib/pkg/translator/prometheusremotewrite v0.149.0 // indirect + github.com/open-telemetry/opentelemetry-collector-contrib/processor/deltatocumulativeprocessor v0.149.0 // indirect github.com/opencontainers/go-digest v1.0.0 // indirect github.com/opencontainers/image-spec v1.1.1 // indirect github.com/ovh/go-ovh v1.9.0 // indirect @@ -258,38 +259,38 @@ require ( github.com/yusufpapurcu/wmi v1.2.4 // indirect go.mongodb.org/mongo-driver v1.17.6 // indirect go.opentelemetry.io/auto/sdk v1.2.1 // indirect - go.opentelemetry.io/collector/client v1.54.0 // indirect - go.opentelemetry.io/collector/config/configauth v1.54.0 // indirect - go.opentelemetry.io/collector/config/configcompression v1.54.0 // indirect - go.opentelemetry.io/collector/config/configmiddleware v1.54.0 // indirect - go.opentelemetry.io/collector/config/configretry v1.54.0 // indirect - go.opentelemetry.io/collector/config/configtelemetry v0.148.0 // indirect - go.opentelemetry.io/collector/connector v0.148.0 // indirect - go.opentelemetry.io/collector/connector/connectortest v0.148.0 // indirect - go.opentelemetry.io/collector/connector/xconnector v0.148.0 // indirect - go.opentelemetry.io/collector/consumer/consumererror v0.148.0 // indirect - go.opentelemetry.io/collector/consumer/xconsumer v0.148.0 // indirect - go.opentelemetry.io/collector/exporter/exporterhelper v0.148.0 // indirect - go.opentelemetry.io/collector/exporter/exportertest v0.148.0 // indirect - go.opentelemetry.io/collector/exporter/xexporter v0.148.0 // indirect - go.opentelemetry.io/collector/extension v1.54.0 // indirect - go.opentelemetry.io/collector/extension/extensionauth v1.54.0 // indirect - go.opentelemetry.io/collector/extension/extensioncapabilities v0.148.0 // indirect - go.opentelemetry.io/collector/extension/extensionmiddleware v0.148.0 // indirect - go.opentelemetry.io/collector/extension/extensiontest v0.148.0 // indirect - go.opentelemetry.io/collector/extension/xextension v0.148.0 // indirect - go.opentelemetry.io/collector/internal/componentalias v0.148.0 // indirect - go.opentelemetry.io/collector/internal/fanoutconsumer v0.148.0 // indirect - go.opentelemetry.io/collector/internal/telemetry v0.148.0 // indirect - go.opentelemetry.io/collector/pdata/pprofile v0.148.0 // indirect - go.opentelemetry.io/collector/pdata/testdata v0.148.0 // indirect - go.opentelemetry.io/collector/pdata/xpdata v0.148.0 // indirect - go.opentelemetry.io/collector/pipeline v1.54.0 // indirect - go.opentelemetry.io/collector/pipeline/xpipeline v0.148.0 // indirect - go.opentelemetry.io/collector/processor/processortest v0.148.0 // indirect - go.opentelemetry.io/collector/processor/xprocessor v0.148.0 // indirect - go.opentelemetry.io/collector/receiver/xreceiver v0.148.0 // indirect - go.opentelemetry.io/collector/service/hostcapabilities v0.148.0 // indirect + go.opentelemetry.io/collector/client v1.55.0 // indirect + go.opentelemetry.io/collector/config/configauth v1.55.0 // indirect + go.opentelemetry.io/collector/config/configcompression v1.55.0 // indirect + go.opentelemetry.io/collector/config/configmiddleware v1.55.0 // indirect + go.opentelemetry.io/collector/config/configretry v1.55.0 // indirect + go.opentelemetry.io/collector/config/configtelemetry v0.149.0 // indirect + go.opentelemetry.io/collector/connector v0.149.0 // indirect + go.opentelemetry.io/collector/connector/connectortest v0.149.0 // indirect + go.opentelemetry.io/collector/connector/xconnector v0.149.0 // indirect + go.opentelemetry.io/collector/consumer/consumererror v0.149.0 // indirect + go.opentelemetry.io/collector/consumer/xconsumer v0.149.0 // indirect + go.opentelemetry.io/collector/exporter/exporterhelper v0.149.0 // indirect + go.opentelemetry.io/collector/exporter/exportertest v0.149.0 // indirect + go.opentelemetry.io/collector/exporter/xexporter v0.149.0 // indirect + go.opentelemetry.io/collector/extension v1.55.0 // indirect + go.opentelemetry.io/collector/extension/extensionauth v1.55.0 // indirect + go.opentelemetry.io/collector/extension/extensioncapabilities v0.149.0 // indirect + go.opentelemetry.io/collector/extension/extensionmiddleware v0.149.0 // indirect + go.opentelemetry.io/collector/extension/extensiontest v0.149.0 // indirect + go.opentelemetry.io/collector/extension/xextension v0.149.0 // indirect + go.opentelemetry.io/collector/internal/componentalias v0.149.0 // indirect + go.opentelemetry.io/collector/internal/fanoutconsumer v0.149.0 // indirect + go.opentelemetry.io/collector/internal/telemetry v0.149.0 // indirect + go.opentelemetry.io/collector/pdata/pprofile v0.149.0 // indirect + go.opentelemetry.io/collector/pdata/testdata v0.149.0 // indirect + go.opentelemetry.io/collector/pdata/xpdata v0.149.0 // indirect + go.opentelemetry.io/collector/pipeline v1.55.0 // indirect + go.opentelemetry.io/collector/pipeline/xpipeline v0.149.0 // indirect + go.opentelemetry.io/collector/processor/processortest v0.149.0 // indirect + go.opentelemetry.io/collector/processor/xprocessor v0.149.0 // indirect + go.opentelemetry.io/collector/receiver/xreceiver v0.149.0 // indirect + go.opentelemetry.io/collector/service/hostcapabilities v0.149.0 // indirect go.opentelemetry.io/contrib/instrumentation/net/http/httptrace/otelhttptrace v0.65.0 // indirect go.opentelemetry.io/contrib/otelconf v0.22.0 // indirect go.opentelemetry.io/otel/exporters/otlp/otlplog/otlploggrpc v0.18.0 // indirect @@ -315,21 +316,21 @@ require ( go.yaml.in/yaml/v2 v2.4.3 // indirect go.yaml.in/yaml/v3 v3.0.4 // indirect go.yaml.in/yaml/v4 v4.0.0-rc.4 // indirect - golang.org/x/crypto v0.48.0 // indirect + golang.org/x/crypto v0.49.0 // indirect golang.org/x/exp v0.0.0-20260218203240-3dfff04db8fa // indirect - golang.org/x/mod v0.33.0 // indirect + golang.org/x/mod v0.34.0 // indirect golang.org/x/oauth2 v0.35.0 // indirect - golang.org/x/sync v0.19.0 // indirect + golang.org/x/sync v0.20.0 // indirect golang.org/x/sys v0.42.0 // indirect - golang.org/x/term v0.40.0 // indirect - golang.org/x/text v0.34.0 // indirect + golang.org/x/term v0.41.0 // indirect + golang.org/x/text v0.35.0 // indirect golang.org/x/time v0.14.0 // indirect - golang.org/x/tools v0.42.0 // indirect + golang.org/x/tools v0.43.0 // indirect gonum.org/v1/gonum v0.17.0 // indirect google.golang.org/api v0.265.0 // indirect google.golang.org/genproto/googleapis/api v0.0.0-20260226221140-a57be14db171 // indirect google.golang.org/genproto/googleapis/rpc v0.0.0-20260226221140-a57be14db171 // indirect - google.golang.org/grpc v1.79.2 // indirect + google.golang.org/grpc v1.79.3 // indirect google.golang.org/protobuf v1.36.11 // indirect gopkg.in/evanphx/json-patch.v4 v4.13.0 // indirect gopkg.in/inf.v0 v0.9.1 // indirect diff --git a/otelcollector/prometheusreceiver/go.sum b/otelcollector/prometheusreceiver/go.sum index 0a6ee23b3..6c4a854b7 100644 --- a/otelcollector/prometheusreceiver/go.sum +++ b/otelcollector/prometheusreceiver/go.sum @@ -98,8 +98,8 @@ github.com/beorn7/perks v1.0.1/go.mod h1:G2ZrVWU2WbWT9wwq4/hrbKbnv/1ERSJQ0ibhJ6r github.com/bgentry/speakeasy v0.1.0/go.mod h1:+zsyZBPWlz7T6j88CTgSN5bM796AkVf0kBD4zp0CCIs= github.com/bitly/go-simplejson v0.5.1 h1:xgwPbetQScXt1gh9BmoJ6j9JMr3TElvuIyjR8pgdoow= github.com/bitly/go-simplejson v0.5.1/go.mod h1:YOPVLzCfwK14b4Sff3oP1AmGhI9T9Vsg84etUnlyp+Q= -github.com/buger/jsonparser v1.1.1 h1:2PnMjfWD7wBILjqQbt530v576A/cAbQvEW9gGIpYMUs= -github.com/buger/jsonparser v1.1.1/go.mod h1:6RYKKt7H4d4+iWqouImQ9R2FZql3VbhNgx27UK13J/0= +github.com/buger/jsonparser v1.1.2 h1:frqHqw7otoVbk5M8LlE/L7HTnIq2v9RX6EJ48i9AxJk= +github.com/buger/jsonparser v1.1.2/go.mod h1:6RYKKt7H4d4+iWqouImQ9R2FZql3VbhNgx27UK13J/0= github.com/cenkalti/backoff/v4 v4.3.0 h1:MyRJ/UdXutAwSAT+s3wNd7MfTIcy71VQueUuFK343L8= github.com/cenkalti/backoff/v4 v4.3.0/go.mod h1:Y3VNntkOUPxTVeUxJ/G5vcM//AlwfmyYozVcomhLiZE= github.com/cenkalti/backoff/v5 v5.0.3 h1:ZN+IMa753KfX5hd8vVaMixjnqRZ3y8CuJKRKj1xcsSM= @@ -152,8 +152,8 @@ github.com/docker/go-units v0.5.0 h1:69rxXcBk27SvSaaxTtLh/8llcHD8vYHT7WSdRZ/jvr4 github.com/docker/go-units v0.5.0/go.mod h1:fgPhTUdO+D/Jk86RDLlptpiXQzgHJF7gydDDbaIK4Dk= github.com/ebitengine/purego v0.10.0 h1:QIw4xfpWT6GWTzaW5XEKy3HXoqrJGx1ijYHzTF0/ISU= github.com/ebitengine/purego v0.10.0/go.mod h1:iIjxzd6CiRiOG0UyXP+V1+jWqUXVjPKLAI0mRfJZTmQ= -github.com/edsrzf/mmap-go v1.2.0 h1:hXLYlkbaPzt1SaQk+anYwKSRNhufIDCchSPkUD6dD84= -github.com/edsrzf/mmap-go v1.2.0/go.mod h1:19H/e8pUPLicwkyNgOykDXkJ9F0MHE+Z52B8EIth78Q= +github.com/edsrzf/mmap-go v1.2.1-0.20241212181136-fad1cd13edbd h1:I4PrRZuNMeDP3VbFrak4QsqwO5tWkQf0tqrrr1L2DsU= +github.com/edsrzf/mmap-go v1.2.1-0.20241212181136-fad1cd13edbd/go.mod h1:19H/e8pUPLicwkyNgOykDXkJ9F0MHE+Z52B8EIth78Q= github.com/emicklei/go-restful/v3 v3.12.2 h1:DhwDP0vY3k8ZzE0RunuJy8GhNpPL6zqLkDf9B/a0/xU= github.com/emicklei/go-restful/v3 v3.12.2/go.mod h1:6n3XBCmQQb25CM2LCACGz8ukIrRry+4bhvbpWn3mrbc= github.com/envoyproxy/go-control-plane/envoy v1.36.0 h1:yg/JjO5E7ubRyKX3m07GF3reDNEnfOboJ0QySbH736g= @@ -382,14 +382,14 @@ github.com/keybase/go-keychain v0.0.1 h1:way+bWYa6lDppZoZcgMbYsvC7GxljxrskdNInRt github.com/keybase/go-keychain v0.0.1/go.mod h1:PdEILRW3i9D8JcdM+FmY6RwkHGnhHxXwkPPMeUgOK1k= 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.4 h1:RPhnKRAQ4Fh8zU2FY/6ZFDwTVTxgJ/EMydqSTzE9a2c= -github.com/klauspost/compress v1.18.4/go.mod h1:R0h/fSBs8DE4ENlcrlib3PsXS61voFxhIs2DeRhCvJ4= +github.com/klauspost/compress v1.18.5 h1:/h1gH5Ce+VWNLSWqPzOVn6XBO+vJbCNGvjoaGBFW2IE= +github.com/klauspost/compress v1.18.5/go.mod h1:cwPg85FWrGar70rWktvGQj8/hthj3wpl0PGDogxkrSQ= github.com/knadh/koanf/maps v0.1.2 h1:RBfmAW5CnZT+PJ1CVc1QSJKf4Xu9kxfQgYVQSu8hpbo= github.com/knadh/koanf/maps v0.1.2/go.mod h1:npD/QZY3V6ghQDdcQzl1W4ICNVTkohC8E73eI2xW4yI= github.com/knadh/koanf/providers/confmap v1.0.0 h1:mHKLJTE7iXEys6deO5p6olAiZdG5zwp8Aebir+/EaRE= github.com/knadh/koanf/providers/confmap v1.0.0/go.mod h1:txHYHiI2hAtF0/0sCmcuol4IDcuQbKTybiB1nOcUo1A= -github.com/knadh/koanf/v2 v2.3.3 h1:jLJC8XCRfLC7n4F+ZKKdBsbq1bfXTpuFhf4L7t94D94= -github.com/knadh/koanf/v2 v2.3.3/go.mod h1:gRb40VRAbd4iJMYYD5IxZ6hfuopFcXBpc9bbQpZwo28= +github.com/knadh/koanf/v2 v2.3.4 h1:fnynNSDlujWE+v83hAp8wKr/cdoxHLO0629SN+U8Urc= +github.com/knadh/koanf/v2 v2.3.4/go.mod h1:gRb40VRAbd4iJMYYD5IxZ6hfuopFcXBpc9bbQpZwo28= github.com/kolo/xmlrpc v0.0.0-20220921171641-a4b6fa1dd06b h1:udzkj9S/zlT5X367kqJis0QP7YMxobob6zhzq6Yre00= github.com/kolo/xmlrpc v0.0.0-20220921171641-a4b6fa1dd06b/go.mod h1:pcaDhQK0/NJZEvtCO0qQPPropqV0sJOJ6YW7X+9kRwM= github.com/konsorten/go-windows-terminal-sequences v1.0.1/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ= @@ -485,28 +485,28 @@ github.com/onsi/ginkgo/v2 v2.27.2 h1:LzwLj0b89qtIy6SSASkzlNvX6WktqurSHwkk2ipF/Ns github.com/onsi/ginkgo/v2 v2.27.2/go.mod h1:ArE1D/XhNXBXCBkKOLkbsb2c81dQHCRcF5zwn/ykDRo= github.com/onsi/gomega v1.38.2 h1:eZCjf2xjZAqe+LeWvKb5weQ+NcPwX84kqJ0cZNxok2A= github.com/onsi/gomega v1.38.2/go.mod h1:W2MJcYxRGV63b418Ai34Ud0hEdTVXq9NW9+Sx6uXf3k= -github.com/open-telemetry/opentelemetry-collector-contrib/exporter/prometheusremotewriteexporter v0.148.0 h1:wPh+YmUnpewoHZULN/te4+woOs7OZMozYy4QKAXy7No= -github.com/open-telemetry/opentelemetry-collector-contrib/exporter/prometheusremotewriteexporter v0.148.0/go.mod h1:G7Ql+f10bXdx5v9bWomLd1LnSMiKkjZKofKBCLi04Ac= -github.com/open-telemetry/opentelemetry-collector-contrib/internal/common v0.148.0 h1:XfnWquAk1ZhCuUNFIg4MKKOXiTfJrSulU8yKPxArFSM= -github.com/open-telemetry/opentelemetry-collector-contrib/internal/common v0.148.0/go.mod h1:uq/XRz2qvgDqO03Z90K/pqV8+h20uauP3E2XseKIIDE= -github.com/open-telemetry/opentelemetry-collector-contrib/internal/coreinternal v0.148.0 h1:pbsTNnV4+4q27bIftrITw/EuJbI5z94RF5bwcRrMZJY= -github.com/open-telemetry/opentelemetry-collector-contrib/internal/coreinternal v0.148.0/go.mod h1:Nk8pkfQ5BxhCCODJvBIsC8b8VWXg35OxwRSUT6R+fUE= -github.com/open-telemetry/opentelemetry-collector-contrib/internal/exp/metrics v0.148.0 h1:CiTjQE/Hh5xK2t56ogrDK4nl0+tJPNmASCs4zEYZ/xU= -github.com/open-telemetry/opentelemetry-collector-contrib/internal/exp/metrics v0.148.0/go.mod h1:WUFkzTiOpt7EYyL67gv1GOf3RD8qKWGtin3lY9LYzW4= -github.com/open-telemetry/opentelemetry-collector-contrib/pkg/golden v0.148.0 h1:YwgrFMV91ZwDGxQr5cexsBYDnJyWcgOBFlMdTmP1jto= -github.com/open-telemetry/opentelemetry-collector-contrib/pkg/golden v0.148.0/go.mod h1:dvvRvNbHkeSZwG8TCpqIpKGwoS6XwN4zu/QSeWJryOE= -github.com/open-telemetry/opentelemetry-collector-contrib/pkg/pdatatest v0.148.0 h1:i12duJOl5VCb9mbb8FfZCaP2CjeXbNsbg82JjSe7sy8= -github.com/open-telemetry/opentelemetry-collector-contrib/pkg/pdatatest v0.148.0/go.mod h1:jyw+QvkmCrF/oYy31O2ndb5KZZK4l+iR89msnV3LN/k= -github.com/open-telemetry/opentelemetry-collector-contrib/pkg/pdatautil v0.148.0 h1:1TLg6YrS3Au6F7xw3ws2Njbwj13IMqPplvGFi+18fWs= -github.com/open-telemetry/opentelemetry-collector-contrib/pkg/pdatautil v0.148.0/go.mod h1:P8hZEDIQk4REgUWyLhSVRHwTxK6KkifKfg36BmmQ/DI= -github.com/open-telemetry/opentelemetry-collector-contrib/pkg/resourcetotelemetry v0.148.0 h1:kU1mAWAnilMTNl3oTWtpTUSJ4wfnwsmnwLDgmfRCcKE= -github.com/open-telemetry/opentelemetry-collector-contrib/pkg/resourcetotelemetry v0.148.0/go.mod h1:6NEvP8esqtJQ86p2TX5fpB6/m3SdrHfrz6RbwKekLm4= -github.com/open-telemetry/opentelemetry-collector-contrib/pkg/translator/prometheus v0.148.0 h1:avKwssJ9H+qNe0Oh99SBCNqQ/A5V2mvMAPW2OoKQTA0= -github.com/open-telemetry/opentelemetry-collector-contrib/pkg/translator/prometheus v0.148.0/go.mod h1:bomnDhYEZ9H6QsL7jBwpCuWlAOXa5AJMNdMTY3e1HnA= -github.com/open-telemetry/opentelemetry-collector-contrib/pkg/translator/prometheusremotewrite v0.148.0 h1:iXZN0mWjLYs/6OV7I0pLuokxwymmsMekELzngUs5fOI= -github.com/open-telemetry/opentelemetry-collector-contrib/pkg/translator/prometheusremotewrite v0.148.0/go.mod h1:Eq1/BjDueB0AprWzp++sLvcnj+kcO74Z6vk1YXNhySg= -github.com/open-telemetry/opentelemetry-collector-contrib/processor/deltatocumulativeprocessor v0.148.0 h1:xgD/kNGp/wWY+bwY599Pc01OamYN17phRiTP934bM5Y= -github.com/open-telemetry/opentelemetry-collector-contrib/processor/deltatocumulativeprocessor v0.148.0/go.mod h1:ZK7wvaefla9lB3bAW0rNKt7IzRPcTRQoOFqr4sZy/XM= +github.com/open-telemetry/opentelemetry-collector-contrib/exporter/prometheusremotewriteexporter v0.149.0 h1:rTIL0dk9Fb9cGSgZm7tpUnPi6FIjMKUFIY6ckWoFr94= +github.com/open-telemetry/opentelemetry-collector-contrib/exporter/prometheusremotewriteexporter v0.149.0/go.mod h1:1hS+tu/oEaterSkgc8vpiyO4lAdccOyBNOckPXc7Q5Y= +github.com/open-telemetry/opentelemetry-collector-contrib/internal/common v0.149.0 h1:190VB4TTET+Wl6ptrsTdY/vmnCtTftemWUUJqkCBKxc= +github.com/open-telemetry/opentelemetry-collector-contrib/internal/common v0.149.0/go.mod h1:WhkSst4tY+c4WPaZAbF7EwbxHVm22EuxrII83Qf7tgI= +github.com/open-telemetry/opentelemetry-collector-contrib/internal/coreinternal v0.149.0 h1:7tjwxaak0p0e86aqdYJ+rn/8z6277lS2/kwxfDWXVQQ= +github.com/open-telemetry/opentelemetry-collector-contrib/internal/coreinternal v0.149.0/go.mod h1:Y4n54xT8NfHlelDDcpxla7pwI6h8wqqc0gWU5RSteE4= +github.com/open-telemetry/opentelemetry-collector-contrib/internal/exp/metrics v0.149.0 h1:Zovdium/2408dqJzSxA5XebZBxGBnDkfrai1HKT5Omc= +github.com/open-telemetry/opentelemetry-collector-contrib/internal/exp/metrics v0.149.0/go.mod h1:ughjuka9JQd81X6we9PmdvaiIjeOWtKK04BladDtzZc= +github.com/open-telemetry/opentelemetry-collector-contrib/pkg/golden v0.149.0 h1:EuXIJolnTL+oBFzF0almZEkHiV4thwnSjEcr3L5nNu0= +github.com/open-telemetry/opentelemetry-collector-contrib/pkg/golden v0.149.0/go.mod h1:VKgoaDIUxOoTiskp7HK7ESS+CgsgoNKD2PgzF0wRXvQ= +github.com/open-telemetry/opentelemetry-collector-contrib/pkg/pdatatest v0.149.0 h1:2VC/s/j8LFVE9+CvoNhjAPtKHgDAOgRb/JXkRdrPUnI= +github.com/open-telemetry/opentelemetry-collector-contrib/pkg/pdatatest v0.149.0/go.mod h1:sycQ9JOpSQY+iTiDOVcQL84TgYUIj7fF3z5Yc6nOwnc= +github.com/open-telemetry/opentelemetry-collector-contrib/pkg/pdatautil v0.149.0 h1:OZKthV+cLQO5MCFhBQme3AveZ5vorqaFwb0Qn8jvSQQ= +github.com/open-telemetry/opentelemetry-collector-contrib/pkg/pdatautil v0.149.0/go.mod h1:eB74l+/1nW5tofwCjD5TKRqHFYnBSWo0j0xWD8BHYuE= +github.com/open-telemetry/opentelemetry-collector-contrib/pkg/resourcetotelemetry v0.149.0 h1:1Uwf77CT2yfx+c/1nqn+994g53FiRDBRA0ENOz/0VEU= +github.com/open-telemetry/opentelemetry-collector-contrib/pkg/resourcetotelemetry v0.149.0/go.mod h1:rJ4DYBZls/oC3ITroSLYJd7Fng9WFNs5CfTTy7F0gw4= +github.com/open-telemetry/opentelemetry-collector-contrib/pkg/translator/prometheus v0.149.0 h1:vWkV4CPudpCVDduqRtHY63Vpj8sEqT4jXiRrsKepv0k= +github.com/open-telemetry/opentelemetry-collector-contrib/pkg/translator/prometheus v0.149.0/go.mod h1:bWxyNmmVVA0YoxyyJxCUuVjxIYeAs6U5c2lBzT3argY= +github.com/open-telemetry/opentelemetry-collector-contrib/pkg/translator/prometheusremotewrite v0.149.0 h1:dwm+5Hwl2KJNeb4O9Sku9D0xyGFtgxxmIBrbMfAgVyM= +github.com/open-telemetry/opentelemetry-collector-contrib/pkg/translator/prometheusremotewrite v0.149.0/go.mod h1:aKE14o1E9mEsVRIglDSYomXR0rjIhOK5TE5kMFllCzY= +github.com/open-telemetry/opentelemetry-collector-contrib/processor/deltatocumulativeprocessor v0.149.0 h1:4QJFwu4guYeLNnlHLYWJQx8Dps6ii1rwjE9B9dekYdY= +github.com/open-telemetry/opentelemetry-collector-contrib/processor/deltatocumulativeprocessor v0.149.0/go.mod h1:K/+3geevCDJiJew7MuQU481B9JNlc7eLEFv4t59WGRM= github.com/opencontainers/go-digest v1.0.0 h1:apOUWs51W5PlhuyGyz9FCeeBIOUDA/6nW8Oi/yOhh5U= github.com/opencontainers/go-digest v1.0.0/go.mod h1:0JzlMkj0TRzQZfJkVvzbP0HBR3IKzErnv2BNG4W4MAM= github.com/opencontainers/image-spec v1.1.1 h1:y0fUlFfIZhPF1W537XOLg0/fcx6zcHCJwooC2xJA040= @@ -654,126 +654,126 @@ go.mongodb.org/mongo-driver v1.17.6 h1:87JUG1wZfWsr6rIz3ZmpH90rL5tea7O3IHuSwHUps go.mongodb.org/mongo-driver v1.17.6/go.mod h1:Hy04i7O2kC4RS06ZrhPRqj/u4DTYkFDAAccj+rVKqgQ= go.opentelemetry.io/auto/sdk v1.2.1 h1:jXsnJ4Lmnqd11kwkBV2LgLoFMZKizbCi5fNZ/ipaZ64= go.opentelemetry.io/auto/sdk v1.2.1/go.mod h1:KRTj+aOaElaLi+wW1kO/DZRXwkF4C5xPbEe3ZiIhN7Y= -go.opentelemetry.io/collector/client v1.54.0 h1:JDpDdc67n2LGVcDzMKN7fSsmmB7333g6d38LshTuXR0= -go.opentelemetry.io/collector/client v1.54.0/go.mod h1:4ODFLlgYmMEA+GNy96Qsn6Gi2PwFQFNUScvv5vVTyfE= -go.opentelemetry.io/collector/component v1.54.0 h1:LvtX0Tzz18n44OrUFVk77N1FNsejfWJqztB28hrmDM8= -go.opentelemetry.io/collector/component v1.54.0/go.mod h1:yUMBYsySY/sDcXm8kOzEoZxt+JLdala6hxzSW0npOxY= -go.opentelemetry.io/collector/component/componentstatus v0.148.0 h1:sCGRaXNQolHFhPjrNJEwQ1WZOf96iL99tzm9GxuZsvg= -go.opentelemetry.io/collector/component/componentstatus v0.148.0/go.mod h1:yqg3SpGQc22W3wGICdnb+2kZVW9daBr3+LrGUCHkKfc= -go.opentelemetry.io/collector/component/componenttest v0.148.0 h1:tBXJWmy2X6KD8S0QU2YZa2zYBqP+IycSM4iOtwDD2pA= -go.opentelemetry.io/collector/component/componenttest v0.148.0/go.mod h1:1c1+6mZOmI0raoya5vA/X0F+fawEjNS6tCEs5xLATtA= -go.opentelemetry.io/collector/config/configauth v1.54.0 h1:qJ3JdalSJmKWa59kkJoD/nElPlxWvyGf3xZAVnp1TrI= -go.opentelemetry.io/collector/config/configauth v1.54.0/go.mod h1:vyp8mZJ793H82GV4eVuuoL+sG6n32SQgG/6jGGfOf+o= -go.opentelemetry.io/collector/config/configcompression v1.54.0 h1:YDnrdNSEXqam0OQWRAE+arMsvm/fxQb3oNhgcWhAZ5k= -go.opentelemetry.io/collector/config/configcompression v1.54.0/go.mod h1:SEcE2uFLHHPc/Vi8WCkW5MhOMUwaT321HBdZ3P8x8D0= -go.opentelemetry.io/collector/config/confighttp v0.148.0 h1:1OYlN1pK0IlJrZTLiNxQNPD90AnrEjJ72HXd77w5Xqs= -go.opentelemetry.io/collector/config/confighttp v0.148.0/go.mod h1:bXmmkVH3L4E2XZwKOQuy/5EbOzhX97e0iuv9iMlFbXQ= -go.opentelemetry.io/collector/config/configmiddleware v1.54.0 h1:FPMNDPumiZ7FhfzRggn5PR0AnPZQOVB7VWua11VGAUU= -go.opentelemetry.io/collector/config/configmiddleware v1.54.0/go.mod h1:6PYzhcC5402GuSjIs6Q14O2HjH2ZE+A60wWdQuI7ZhY= -go.opentelemetry.io/collector/config/confignet v1.54.0 h1:Led1uZQkFDSRIaO9GyZjvpIfuMBAADou7MvhtZkV/Pc= -go.opentelemetry.io/collector/config/confignet v1.54.0/go.mod h1:okpHzgIUQW9ga1P9PXzUsggmG1woR1rYsfZGDWKAC6c= -go.opentelemetry.io/collector/config/configopaque v1.54.0 h1:DsVlBIk3RDbRz48GxkrKFN5uNet8EaGXU39C6VsUjZQ= -go.opentelemetry.io/collector/config/configopaque v1.54.0/go.mod h1:beDuR48blgodzbJkUgMFu9vg0qxjU04tcBtb/rVEP/A= -go.opentelemetry.io/collector/config/configoptional v1.54.0 h1:W6MHMrVEbjw/5boxN+VXGZmMBi62IF/lf41vhuNGebU= -go.opentelemetry.io/collector/config/configoptional v1.54.0/go.mod h1:c8cFSCUN/A6U00janThFC64ZpyKV1viq/chPOoaqe3I= -go.opentelemetry.io/collector/config/configretry v1.54.0 h1:v0G/FxIkkcZzaM/1JrHN5sWBoUWWvb3c+UEgvo5iFs4= -go.opentelemetry.io/collector/config/configretry v1.54.0/go.mod h1:1BoQ5SvJT751bqP/5g0VTPLkNgMtvifAr2QqMCVOv2o= -go.opentelemetry.io/collector/config/configtelemetry v0.148.0 h1:TZPiz6T6AOvEHmKzU0cPF+CcRbJVR0c3DCqP8Orylx8= -go.opentelemetry.io/collector/config/configtelemetry v0.148.0/go.mod h1:vLUthxDJbDk0ZE9MXPvmSslNESDdGblIXWoDMov3UOE= -go.opentelemetry.io/collector/config/configtls v1.54.0 h1:Xt5oEs+q7Y6l7mdFYqSrqr0lwJilGcg9EBlCBd/jiBw= -go.opentelemetry.io/collector/config/configtls v1.54.0/go.mod h1:ikruZqHoIlR+MaqUgDKotQiuN64uAdlH6zxsTjSKjSM= -go.opentelemetry.io/collector/confmap v1.54.0 h1:RUoxQ4uAYHTI57GfHh61D00tTQsXm9T88ozrAiicByc= -go.opentelemetry.io/collector/confmap v1.54.0/go.mod h1:mQxG8bk0IWIt9gbWMvzE+cRkOuCuzbzkNGBq2YJ4wNM= -go.opentelemetry.io/collector/confmap/provider/fileprovider v1.54.0 h1:oypNOydhUDKyg2GBhchpwofKQbgnGrLmXkldrXD8T3Q= -go.opentelemetry.io/collector/confmap/provider/fileprovider v1.54.0/go.mod h1:x2HycFHWpfplIjjMERFOO9byCLLMCnuoxZ87TYwvPF4= -go.opentelemetry.io/collector/confmap/xconfmap v0.148.0 h1:UW8MX5VlKJf67x4Et7J9kPwP9Rv4VSmJ+UUpgRcb//c= -go.opentelemetry.io/collector/confmap/xconfmap v0.148.0/go.mod h1:4qTMr3V0uSXXac9wVs/UD5fIqRKw5yIl58+Vjsc6RHM= -go.opentelemetry.io/collector/connector v0.148.0 h1:nJOvqm57ab4xRDxF0C+PQdptOF/x6NU9MAaqQJqOq7A= -go.opentelemetry.io/collector/connector v0.148.0/go.mod h1:Evipn8SpEed4NSynwcef3s/VihyutpAzv9aFh2KvtJA= -go.opentelemetry.io/collector/connector/connectortest v0.148.0 h1:LPrjLF9UbGOtZkG/PfA2Lh94Aouxf0FeqtL4TLvKXvY= -go.opentelemetry.io/collector/connector/connectortest v0.148.0/go.mod h1:y9S8I7FLfb8+nyqugOFiExv/ZlGi/BIcINUEdowX4eQ= -go.opentelemetry.io/collector/connector/xconnector v0.148.0 h1:O6GOSkFezdCovPWIlcx0ZkymLGBlmMIoBrRzMLUV8ho= -go.opentelemetry.io/collector/connector/xconnector v0.148.0/go.mod h1:FMtp0iuWWmv2wY30QQyMbetNLn0MJfFgVXZDAViUwKs= -go.opentelemetry.io/collector/consumer v1.54.0 h1:RGGtUN+GbkV1px3T6XdUHmgJ+ldJ1hAHdesFzW/wgL0= -go.opentelemetry.io/collector/consumer v1.54.0/go.mod h1:1PC6XINTL9DdT1bwvfMdHE72EB4RWU/WcPemUrhqKN8= -go.opentelemetry.io/collector/consumer/consumererror v0.148.0 h1:lKVkNWBeRXG41lHBf5KzA9oErRZifx6qTd9erAFfEkE= -go.opentelemetry.io/collector/consumer/consumererror v0.148.0/go.mod h1:N/UppmtknIdzpEiy3xirH1EiBEBOqKqD77NCyNi2Rbc= -go.opentelemetry.io/collector/consumer/consumertest v0.148.0 h1:ms0HtWMj17tI1Yds0hSuUI5QYpNEqd11AAhwIoUY2HE= -go.opentelemetry.io/collector/consumer/consumertest v0.148.0/go.mod h1:wScw/OzKkf/ZzJn4ToI30OoI1kJiY16WNrcFToXSzK0= -go.opentelemetry.io/collector/consumer/xconsumer v0.148.0 h1:m3b9rY7CLD5Pcge6sSKHIT3OlcPN6xqYsdtVs9oJ528= -go.opentelemetry.io/collector/consumer/xconsumer v0.148.0/go.mod h1:bG+Wz6xmIBl/gHzq1sqvksWXqTLuTX17Wo//zIsdZpw= -go.opentelemetry.io/collector/exporter v1.54.0 h1:SSkEc9VGCf4OJaf+spj4euZ/FcswzOwLm8zR9an5Fxc= -go.opentelemetry.io/collector/exporter v1.54.0/go.mod h1:thsNaoV7xRq91sXkKsyFXHj0l2c/ZDM88Mdwe2/QP40= -go.opentelemetry.io/collector/exporter/exporterhelper v0.148.0 h1:mZXGdleKMaEF0jSOcCoOVRWwt3AcgSTAnIZmAqdDYNs= -go.opentelemetry.io/collector/exporter/exporterhelper v0.148.0/go.mod h1:+EZCJ6vlgQiozHvUoeEJHnIaV6Ez7HHOLdNWNpo+CUc= -go.opentelemetry.io/collector/exporter/exportertest v0.148.0 h1:joLVWwfWDk7idnikGPeOWOa7nJG1pG1+jGvuuOOB1/E= -go.opentelemetry.io/collector/exporter/exportertest v0.148.0/go.mod h1:R202E9bjYU4R+2jiDt+aiZSwsIZI3slL6M8y1MeuqkM= -go.opentelemetry.io/collector/exporter/xexporter v0.148.0 h1:QKMwwrUe4snzB9B97NaBtf9qFEeIjx4/oBSwv8EZbJc= -go.opentelemetry.io/collector/exporter/xexporter v0.148.0/go.mod h1:rZ60Z9Ny4H+IX5dsn+RiJEJQRNEXAEYZ6XFwE2EWxGU= -go.opentelemetry.io/collector/extension v1.54.0 h1:nF+pPfXWcWXjauX0+E1gsWUlUdAe2+26VKIb9hKZJAk= -go.opentelemetry.io/collector/extension v1.54.0/go.mod h1:hqjEnkrjjxLXjzyDnLsOJnWMLWkfEjbqm8CHj1ud5pY= -go.opentelemetry.io/collector/extension/extensionauth v1.54.0 h1:IglgKxygOcGCCCB31bBxOYwtB8h1oQ2MXVGWKV0k1C0= -go.opentelemetry.io/collector/extension/extensionauth v1.54.0/go.mod h1:5SXF5D0r+uhrHU50xCXAnJ1HNmSDDuXamD+fZdcYRLs= -go.opentelemetry.io/collector/extension/extensionauth/extensionauthtest v0.148.0 h1:k2Hk5VhnWkn5C79tkZ554KAydyf0awfaW6Ku/bttS6s= -go.opentelemetry.io/collector/extension/extensionauth/extensionauthtest v0.148.0/go.mod h1:LhiPIqE7pIDo0+Njo9gPtrAbpnx4tjzqVCP8C0UFBvQ= -go.opentelemetry.io/collector/extension/extensioncapabilities v0.148.0 h1:nhIKJyE5YDy0KkI1mrULLBxMwLsq/EyeXQJJZDSRXHI= -go.opentelemetry.io/collector/extension/extensioncapabilities v0.148.0/go.mod h1:WQEEnK/GdM4n5EwEUL5PYimT4JFYgGzUrT7yAe8yaxI= -go.opentelemetry.io/collector/extension/extensionmiddleware v0.148.0 h1:GdlmwwQ1IxExKL27Ou5YRCs91Z8QYzlENUOBax252bc= -go.opentelemetry.io/collector/extension/extensionmiddleware v0.148.0/go.mod h1:ySiHSkCzMcgphWdZiGYIPrFgaEGO2tPY3D0MipGsYpo= -go.opentelemetry.io/collector/extension/extensionmiddleware/extensionmiddlewaretest v0.148.0 h1:SgNl5DswPxs+gDH5Ojg8xyorogbxTqXoayLGZkvdB/A= -go.opentelemetry.io/collector/extension/extensionmiddleware/extensionmiddlewaretest v0.148.0/go.mod h1:WMKYe+WIhgCnXAmOtn69yY7tTZZqgSkx+lh1Y5tk3OI= -go.opentelemetry.io/collector/extension/extensiontest v0.148.0 h1:ZBrYWe+7oQQVqChXrq4PL1P/Febuo6un2/g7oQP9zfQ= -go.opentelemetry.io/collector/extension/extensiontest v0.148.0/go.mod h1:wLxKb/SkoqbStm6zv+9MAhzhySI49oGw2aszPaw9No4= -go.opentelemetry.io/collector/extension/xextension v0.148.0 h1:LoSXaI3jd7fhQbPdIDpXy0HC2j4ftsG7LlVrUrghtwA= -go.opentelemetry.io/collector/extension/xextension v0.148.0/go.mod h1:dlMQsSTo8Jgd+u8/ssdg0oIItQptkUIfX4zO9xy+hiE= -go.opentelemetry.io/collector/extension/zpagesextension v0.148.0 h1:s2M8HLykiRB7Ub5qyTsYoeJ5hR9MdsG9FJR9wricyVM= -go.opentelemetry.io/collector/extension/zpagesextension v0.148.0/go.mod h1:+x2vb3TFNtE32qCv6ScG//RpAYdAZYE6ok4Ua++DWkU= -go.opentelemetry.io/collector/featuregate v1.54.0 h1:ufo5Hy4Co9pcHVg24hyanm8qFG3TkkYbVyQXPVAbwDc= -go.opentelemetry.io/collector/featuregate v1.54.0/go.mod h1:PS7zY/zaCb28EqciePVwRHVhc3oKortTFXsi3I6ee4g= -go.opentelemetry.io/collector/internal/componentalias v0.148.0 h1:Y6MftNIZSzOr47TTj6A2z2UR3IwbeG46sAQshicGtDg= -go.opentelemetry.io/collector/internal/componentalias v0.148.0/go.mod h1:uwKzfehzwRgHxdHgFXYSBHNBeWSSqsqQYGWr5fk08G0= -go.opentelemetry.io/collector/internal/fanoutconsumer v0.148.0 h1:Vy5HOsm6IODqbg7ZHaGizcs0mXXU7yZYFTH9Be0u4mM= -go.opentelemetry.io/collector/internal/fanoutconsumer v0.148.0/go.mod h1:0wG5wD4+XPIrrS69j1DnUvCbfAvnhMqcrxPvQkWzdpo= -go.opentelemetry.io/collector/internal/telemetry v0.148.0 h1:7U/be+11agYLb67lzoRzsCBoDpaGy8vDFhgI1gGYcco= -go.opentelemetry.io/collector/internal/telemetry v0.148.0/go.mod h1:pvflQkIAaj5UwURlkaB8BNTaYw6OjmXTbiWQ75PnYqc= -go.opentelemetry.io/collector/internal/testutil v0.148.0 h1:3Z9hperte3vSmbBTYeNndoEUICICrNz8hzx+v0FYXBQ= -go.opentelemetry.io/collector/internal/testutil v0.148.0/go.mod h1:Jkjs6rkqs973LqgZ0Fe3zrokQRKULYXPIf4HuqStiEE= -go.opentelemetry.io/collector/otelcol v0.148.0 h1:MFhR9u5SMJG3WcT+ON0aV8CV7lIuBWo0o7DQM1TXWtE= -go.opentelemetry.io/collector/otelcol v0.148.0/go.mod h1:ocDXLyaKKJOPyb7A5Mr0VuIJWgqUtiL6qpispV/xVv8= -go.opentelemetry.io/collector/pdata v1.54.0 h1:3LharKb792cQ3VrUGxd3IcpWwfu3ST+GSTU382jVz1s= -go.opentelemetry.io/collector/pdata v1.54.0/go.mod h1:+MqC3VVOv/EX9YVFUo+mI4F0YmwJ+fXBYwjmu+mRiZ8= -go.opentelemetry.io/collector/pdata/pprofile v0.148.0 h1:MgrNZmqwhZGfiYwcKKtM/iXgTZqqvG5dUphriRXMZHU= -go.opentelemetry.io/collector/pdata/pprofile v0.148.0/go.mod h1:MTTMnZPqWX1S/rBDatU0W19udlycBkWuzVV5qnemHdc= -go.opentelemetry.io/collector/pdata/testdata v0.148.0 h1:yzakPuFgoKK8WcrlhyYHLMLA/kLScQKGsXkIgwieAQ8= -go.opentelemetry.io/collector/pdata/testdata v0.148.0/go.mod h1:2rFvxm8qwd3nlO90FtJw6ZGAjt+bLndxmQuJaMO9kfQ= -go.opentelemetry.io/collector/pdata/xpdata v0.148.0 h1:pTXz872QDl5oHByjlIEkQhIFvv0oeX/5cKNWsUg9KeY= -go.opentelemetry.io/collector/pdata/xpdata v0.148.0/go.mod h1:4iL8wugmu589aQNx0dFVT3Ecui/d3TEvVgMlAu8S//0= -go.opentelemetry.io/collector/pipeline v1.54.0 h1:jYlCkdFLITVBdeB+IGS07zXWywEgvT3Ky46vdKKT+Ks= -go.opentelemetry.io/collector/pipeline v1.54.0/go.mod h1:RD90NG3Jbk965Xaqym3JyHkuol4uZJjQVUkD9ddXJIs= -go.opentelemetry.io/collector/pipeline/xpipeline v0.148.0 h1:WTgUC/QXYxhWEwPQ0ezOMbkh4p4DzsRdCxdYLBqNz+U= -go.opentelemetry.io/collector/pipeline/xpipeline v0.148.0/go.mod h1:ECXG1qs+H1pUnK0Wu0MUlAbsUlzJOKhV9z4wqep6KWQ= -go.opentelemetry.io/collector/processor v1.54.0 h1:zmHBFiEFmU9ZYuHhVP3lHIkbfy+ueapzGpTdXVMcWBg= -go.opentelemetry.io/collector/processor v1.54.0/go.mod h1:L0lA6DZ0VbrtQBg44cmYfSpRlgm4zxW1I6QfBnRizPw= -go.opentelemetry.io/collector/processor/batchprocessor v0.148.0 h1:RN/NU7giTuTCeWsbFmtk27rBprzJv4xfj4KDYzROEyc= -go.opentelemetry.io/collector/processor/batchprocessor v0.148.0/go.mod h1:i79zRqG29xhLEX0rpOLo7dqdEAIiVZPcV4l3eRsLCJM= -go.opentelemetry.io/collector/processor/processortest v0.148.0 h1:p0k59frZxy/Z4fXe82i5eOJv/UyOH75XhI8nFD1ZWCE= -go.opentelemetry.io/collector/processor/processortest v0.148.0/go.mod h1:E2Li2gnkUXgvApvGyEtn3Eq5KyzV05ljfbFRsZ7sTC4= -go.opentelemetry.io/collector/processor/xprocessor v0.148.0 h1:v7Qv6k2b2cvgGWuTO5KN5QYDLl1r5sznt7Le4Fhpa4c= -go.opentelemetry.io/collector/processor/xprocessor v0.148.0/go.mod h1:r7ADpSX2nf0rZR9STxh956Qw1740QOWMXLnEM/ZiaF8= -go.opentelemetry.io/collector/receiver v1.54.0 h1:2e9o+eihZ/nJnzVj5JAcJ+VQ653HcZRiT127qBZRqa8= -go.opentelemetry.io/collector/receiver v1.54.0/go.mod h1:xFZnvYTBjdi9iS/d/UUXzss4h311mLsZliQFQXk4o/k= -go.opentelemetry.io/collector/receiver/receiverhelper v0.148.0 h1:B1JOFfdv1dj4WhxSSt3KL1+BOV7Zkf27KisTWdhiFLs= -go.opentelemetry.io/collector/receiver/receiverhelper v0.148.0/go.mod h1:jBJbrMZ1dUn/gKr9vEDmU+MPsrz9RhRFWooG72qhUkU= -go.opentelemetry.io/collector/receiver/receivertest v0.148.0 h1:Fu+B4jCqgZVZmhsKBz3tcgimFryR6TRAK2D5VGLD2Xc= -go.opentelemetry.io/collector/receiver/receivertest v0.148.0/go.mod h1:K8dMDMEggEg6jB688VOHutivOGEEZ20FJGe4jV9RtWU= -go.opentelemetry.io/collector/receiver/xreceiver v0.148.0 h1:u66Zi3udD9RMRiNOsZzsVcUjRwqJEK+5LV76Ry9l3K0= -go.opentelemetry.io/collector/receiver/xreceiver v0.148.0/go.mod h1:jyHxf8SOfH48ZXb32IS3vPbVYDinsLlZYQddyrveqMg= -go.opentelemetry.io/collector/service v0.148.0 h1:GsAx4nkGTB21QRK9hOTFmLcATN/mugLWsb3iQwt91nY= -go.opentelemetry.io/collector/service v0.148.0/go.mod h1:f7oBS9IdX0nLRtyPOIgPj0Q1HCqbxepgWJfEpyVNAfE= -go.opentelemetry.io/collector/service/hostcapabilities v0.148.0 h1:BHQV7Fa1y8fQ87V1ieXNpP4+7UGOAj66xWryXSSj27I= -go.opentelemetry.io/collector/service/hostcapabilities v0.148.0/go.mod h1:UwHkux+xSVl7k5PEl+qYi8VSONv538rgZeHhfYqBwmE= -go.opentelemetry.io/collector/service/telemetry/telemetrytest v0.148.0 h1:0KKY0VHy8y+6LRkW/jE7a2G96tK7rfpl/6hKCt3mHD4= -go.opentelemetry.io/collector/service/telemetry/telemetrytest v0.148.0/go.mod h1:uhEy3Ez2aJjGpAIYuy1C0NFO5yr86EJlJGoKFucXQFE= +go.opentelemetry.io/collector/client v1.55.0 h1:79dOP+9U5ZyOd+7IP1FvIYpq00IZ5YeXs2mqykpTqgI= +go.opentelemetry.io/collector/client v1.55.0/go.mod h1:Jp/VewJg5A0y9Gk7P0CAPEBFzo5Pb2h5JxgylMSSpfM= +go.opentelemetry.io/collector/component v1.55.0 h1:45nb42/UqPDhRdS8FgGRDybRsWSuvS+r6WC2VTVqIRw= +go.opentelemetry.io/collector/component v1.55.0/go.mod h1:7EpGxVpqFkZ2HidyiE9MLvh4cuKU7ye6i5OtxxiYKps= +go.opentelemetry.io/collector/component/componentstatus v0.149.0 h1:6UM+yHoMtZmyu1Sz8Gy9B27eBtURR5sFinWf2LRdE7Y= +go.opentelemetry.io/collector/component/componentstatus v0.149.0/go.mod h1:6jTQab606D+ICobKO/q4UrPy6hwvU3ZY+LcJnPrurds= +go.opentelemetry.io/collector/component/componenttest v0.149.0 h1:7SSYIiLpe84LGfYAp7RCkzYuYLuYVSZVn/K/qsJZgHY= +go.opentelemetry.io/collector/component/componenttest v0.149.0/go.mod h1:8xPU3XMsI+J4vfy87YG1bsCVTeedligKWgBcPEZ0yzw= +go.opentelemetry.io/collector/config/configauth v1.55.0 h1:JiWouGwxYipdjWl57G7SU+JKjOrq/oXx/p/S+Q3zfO0= +go.opentelemetry.io/collector/config/configauth v1.55.0/go.mod h1:D/7mu0EPk1SJi8wAkG301gb1lVpAWUn7Ij/OwLP87q8= +go.opentelemetry.io/collector/config/configcompression v1.55.0 h1:KZjHgXQG0FKer+0Dt3ET0tPQicgq21vvswBqVwLwmLw= +go.opentelemetry.io/collector/config/configcompression v1.55.0/go.mod h1:SEcE2uFLHHPc/Vi8WCkW5MhOMUwaT321HBdZ3P8x8D0= +go.opentelemetry.io/collector/config/confighttp v0.149.0 h1:2R1UQUjMALz5nMuegvnS2jfeX0j7yiHqd7fV3GFK6C0= +go.opentelemetry.io/collector/config/confighttp v0.149.0/go.mod h1:BlP61qzl9O8vGM82WsVw3P2sWaqyoellSj5xxQ0X9ik= +go.opentelemetry.io/collector/config/configmiddleware v1.55.0 h1:p8NFQXy59VgGWZUcVX2pI5wHWKyEm16UMSHQPTtoZ8s= +go.opentelemetry.io/collector/config/configmiddleware v1.55.0/go.mod h1:6ZNFlGQUTEet5NUORDPpTzNwWsQAdiuLprNXSn8fOa0= +go.opentelemetry.io/collector/config/confignet v1.55.0 h1:eb1o6zpoCwR6yfdtwpZqGdvkE0kd7HAV/+N6DFG2Jis= +go.opentelemetry.io/collector/config/confignet v1.55.0/go.mod h1:okpHzgIUQW9ga1P9PXzUsggmG1woR1rYsfZGDWKAC6c= +go.opentelemetry.io/collector/config/configopaque v1.55.0 h1:j8I6lotzrJX29X1YhKUQTuJs/9HWgFV3Ckbe/tZZzhI= +go.opentelemetry.io/collector/config/configopaque v1.55.0/go.mod h1:xEWgIwWn8J3cn5E6DybThH0Cdu3Be8IVEItWkbWU2Xc= +go.opentelemetry.io/collector/config/configoptional v1.55.0 h1:Ii6eukF4hdPAJSwsNLevkEP3auJj0+N5tOghtmb3nfo= +go.opentelemetry.io/collector/config/configoptional v1.55.0/go.mod h1:4SJTjAl+6IGnyofeczFPbT/BxaBh1RW97hZlAcgSrVc= +go.opentelemetry.io/collector/config/configretry v1.55.0 h1:Fu5NUqH6AFMW6C95EOkQT0dAQJyq5cdzuO/QP80i3mI= +go.opentelemetry.io/collector/config/configretry v1.55.0/go.mod h1:1BoQ5SvJT751bqP/5g0VTPLkNgMtvifAr2QqMCVOv2o= +go.opentelemetry.io/collector/config/configtelemetry v0.149.0 h1:GiMgR+xwZRXG7ns8PbQb5jcXiwGdCwvy2y8tUQwRzGc= +go.opentelemetry.io/collector/config/configtelemetry v0.149.0/go.mod h1:vLUthxDJbDk0ZE9MXPvmSslNESDdGblIXWoDMov3UOE= +go.opentelemetry.io/collector/config/configtls v1.55.0 h1:cpXaocVvU/sHj9Xn8xVM6E1Zh9gSyEQuwn49yHMymI8= +go.opentelemetry.io/collector/config/configtls v1.55.0/go.mod h1:JjWg/y/tge3SeQlGkk7s4ga6IhIuFupV1iJY1yx2Dug= +go.opentelemetry.io/collector/confmap v1.55.0 h1:pBJbjWfIT3q8cy+eVcHCCYXx984NxOjaGTHqIWsXC1A= +go.opentelemetry.io/collector/confmap v1.55.0/go.mod h1:rSKNE5ztWU6fS0pT8rwACn573r4jJc4QzJyoQzZIVtE= +go.opentelemetry.io/collector/confmap/provider/fileprovider v1.55.0 h1:zSSMElAWM5buXLcbLB+XFXjTDCc9AByo9gkSE+DH+MI= +go.opentelemetry.io/collector/confmap/provider/fileprovider v1.55.0/go.mod h1:FoujmivK7VAABBO61KRCUHpOnDXG/2ayMAe4wWM0m50= +go.opentelemetry.io/collector/confmap/xconfmap v0.149.0 h1:D/WzrxKOKedRztoY/MiAj9z8W0/2unpTCbANFCwvuuY= +go.opentelemetry.io/collector/confmap/xconfmap v0.149.0/go.mod h1:lJ1nHIQbH6L5wnj5vTWGr7RWi5Kib2KX5stAxar13Jo= +go.opentelemetry.io/collector/connector v0.149.0 h1:WbxMi0Eu8DHpjcCXZ7e988r8AHrvq37iUca5g99nO5M= +go.opentelemetry.io/collector/connector v0.149.0/go.mod h1:93UEgyk9AVINT0M2x2Mdj+MuirxkVlsH4lIcGg3e+wY= +go.opentelemetry.io/collector/connector/connectortest v0.149.0 h1:Uo6tnKhtdGe1v7DjJawCaawhXZu8Feos4FCo5hqlspI= +go.opentelemetry.io/collector/connector/connectortest v0.149.0/go.mod h1:93oVnmP4DBekh+73st+wFLVXWtnl2iUh3Tblhixm8Io= +go.opentelemetry.io/collector/connector/xconnector v0.149.0 h1:hDlXFlbwk/Bt1zuHg8RsYXxJPflO2CT19ViToUCsev4= +go.opentelemetry.io/collector/connector/xconnector v0.149.0/go.mod h1:1+/p4QxwYXwjGeLfbsvy6nE9ZuJ1xvUSdGZNDt7CgFg= +go.opentelemetry.io/collector/consumer v1.55.0 h1:7Per8P4J0nlBrFVSXb+nwZ+egiel1BRtggZngyykGsM= +go.opentelemetry.io/collector/consumer v1.55.0/go.mod h1:Qrn5fDp/HpDmUp+l2RGKsdKyOPlgGlaZPKvw/z9FfEc= +go.opentelemetry.io/collector/consumer/consumererror v0.149.0 h1:lXJv8UySfvnISJnCbkxf9ghYRQoWcXC78PxGurdnhKY= +go.opentelemetry.io/collector/consumer/consumererror v0.149.0/go.mod h1:8mZKwHejnZpD0+hjg6T2ZYPzs/Ib8512DMFnx4yaknY= +go.opentelemetry.io/collector/consumer/consumertest v0.149.0 h1:IxOkDInfuUM8mT+rMNGtdUuuDlV9X2VS4WAQ/dZSYqg= +go.opentelemetry.io/collector/consumer/consumertest v0.149.0/go.mod h1:ZMvFzch5IRjYBvj6WPc30HRy19smS0WFBXaOu16Wac0= +go.opentelemetry.io/collector/consumer/xconsumer v0.149.0 h1:2z0wRTDsWqPdcC8xp9HJIAJej+07g4/yJrS0xkJJ4hA= +go.opentelemetry.io/collector/consumer/xconsumer v0.149.0/go.mod h1:AG9w3bk38dq3Rk7C2JGf3jw4ldxR063ujYBm3eiMJ7k= +go.opentelemetry.io/collector/exporter v1.55.0 h1:1pExfXXKDPbwY4Be6cHd8LQOIpP7pt7ed4SOiYruxks= +go.opentelemetry.io/collector/exporter v1.55.0/go.mod h1:Hp85myjvKjC+rLeMdVpatzYCglAv4V0MaFN8HXHfnaQ= +go.opentelemetry.io/collector/exporter/exporterhelper v0.149.0 h1:y5eKO5aFBWYv/cSL2QnLxJ8k57STn9r+g1gdTVw9Z6Q= +go.opentelemetry.io/collector/exporter/exporterhelper v0.149.0/go.mod h1:mR78r/JKfxu0x87YGplZsbYG6PBUyTr5bKgluc1qqNQ= +go.opentelemetry.io/collector/exporter/exportertest v0.149.0 h1:bmBvcffsXbDoWIEq2nSiY36+n0s2/Qd70ps5N5xObWA= +go.opentelemetry.io/collector/exporter/exportertest v0.149.0/go.mod h1:4PrrXXNfTdkWxGT5fNiJ/70g8eRDLlQgh64UwhcjUzU= +go.opentelemetry.io/collector/exporter/xexporter v0.149.0 h1:4uR3VnSxUVeV8igM7H3YkfKoQtndW8ZshWPjpGQIFUA= +go.opentelemetry.io/collector/exporter/xexporter v0.149.0/go.mod h1:My5S6QPUDggCdQ4tNbUHb7/GAk5t5CoTDY1wvCqUnTs= +go.opentelemetry.io/collector/extension v1.55.0 h1:B+1lH6sBHJPq0AX+WAtHsteqbeHQuRhHFtnjSDwSjKs= +go.opentelemetry.io/collector/extension v1.55.0/go.mod h1:2Diht9BMbFleBReevFQfnzrNpQgka3402VfLZIFyIzA= +go.opentelemetry.io/collector/extension/extensionauth v1.55.0 h1:ybszqQ+5Y+7uNkygCSVRUBHuXyYO/d/uoM1hXdDiy2s= +go.opentelemetry.io/collector/extension/extensionauth v1.55.0/go.mod h1:JSV7nc25cGtVfmVIaXywAGUU4MrZdb9R4rDdcZsddWU= +go.opentelemetry.io/collector/extension/extensionauth/extensionauthtest v0.149.0 h1:VFhyA7deUrUDbsOhCGscAouMZpapqeRjPSfp0HOgVow= +go.opentelemetry.io/collector/extension/extensionauth/extensionauthtest v0.149.0/go.mod h1:k8vS5ZzLWZIoNSuCe1rWONW2PK0ukGfIvqWLYyp+B18= +go.opentelemetry.io/collector/extension/extensioncapabilities v0.149.0 h1:XPaeWYYiosexWmxeMbEajKzyM9HaDTogj6UCBzbLcEo= +go.opentelemetry.io/collector/extension/extensioncapabilities v0.149.0/go.mod h1:9PjCfJZQRJbgewN1OlUtyQDQMUwPzN1sQnhp+d23S0c= +go.opentelemetry.io/collector/extension/extensionmiddleware v0.149.0 h1:HTyFY8jDxmd4cTzuIYIFze3fY1Bf3PM7+SXeyrx+fXk= +go.opentelemetry.io/collector/extension/extensionmiddleware v0.149.0/go.mod h1:WZ4uS1t4i39oeMhW7i5D9X9A7arYYS2q4PQBrZ5aF4U= +go.opentelemetry.io/collector/extension/extensionmiddleware/extensionmiddlewaretest v0.149.0 h1:fQioFG2Td8qVKIf5TLpTBnQ3C4VTYwyTvVEfB5qLEOE= +go.opentelemetry.io/collector/extension/extensionmiddleware/extensionmiddlewaretest v0.149.0/go.mod h1:aL1hkkYG66512S0xRnYs4XmlAmMaOYWty86HSH/Jd4I= +go.opentelemetry.io/collector/extension/extensiontest v0.149.0 h1:EvKYy2L2COLvmbiu033i9/uao+OLzINhV/aI3PT1E0k= +go.opentelemetry.io/collector/extension/extensiontest v0.149.0/go.mod h1:23mLGyEuu4j0ihcs0J+YtpVO2nD5Ak8Li0r/I07DlkQ= +go.opentelemetry.io/collector/extension/xextension v0.149.0 h1:4LCwC++YmLz+JrglBLL1JerpMo+O6ENIBG3lGA6VSN0= +go.opentelemetry.io/collector/extension/xextension v0.149.0/go.mod h1:iC2BD2whYV8ZcJTtRYEMlz0ezu5Q03/x/Hb5RGj5Pe0= +go.opentelemetry.io/collector/extension/zpagesextension v0.149.0 h1:w0w02vuT/vhLMO8hXKeb+NZcGINLEkaQTsbom4pac30= +go.opentelemetry.io/collector/extension/zpagesextension v0.149.0/go.mod h1:Np5Vdgameb0S65S7CZcXx1QXkfGb8sU/AkX9JgNnJT8= +go.opentelemetry.io/collector/featuregate v1.55.0 h1:s/bE8135+8GZpVlQ9qLXQjvprE9KNOGsLhNkqm+EDEU= +go.opentelemetry.io/collector/featuregate v1.55.0/go.mod h1:PS7zY/zaCb28EqciePVwRHVhc3oKortTFXsi3I6ee4g= +go.opentelemetry.io/collector/internal/componentalias v0.149.0 h1:0cH1hCy4vujhnAc6z4baLM0mauFZPfyqF9HtQF6YvGo= +go.opentelemetry.io/collector/internal/componentalias v0.149.0/go.mod h1:8oIpxyFLZECp6O7zFDTGeWw72CQ67C8wb6FqAL9wvCo= +go.opentelemetry.io/collector/internal/fanoutconsumer v0.149.0 h1:Eq3pjYKiXxZkmti4vmgh/jWBJ6tfwd+fDfcKcA/sHk8= +go.opentelemetry.io/collector/internal/fanoutconsumer v0.149.0/go.mod h1:Bl84aBXh5UWHWjJ/FYxXkroup1lBNpzgbdZfFOvz0cY= +go.opentelemetry.io/collector/internal/telemetry v0.149.0 h1:AlvNOgcu6/O/FZMQK7UkN3xkWGvKmj1jroX864YfXCM= +go.opentelemetry.io/collector/internal/telemetry v0.149.0/go.mod h1:y9yEZ8zgC4Ax84flfTVPZNQWxySP7mx47lb9ZbM31cs= +go.opentelemetry.io/collector/internal/testutil v0.149.0 h1:OWfUPO3NFKSaJtz/SBZph/2ENHbr/VbzzlBadKUhm8o= +go.opentelemetry.io/collector/internal/testutil v0.149.0/go.mod h1:Jkjs6rkqs973LqgZ0Fe3zrokQRKULYXPIf4HuqStiEE= +go.opentelemetry.io/collector/otelcol v0.149.0 h1:/sECMEcje2R4vSUSiZoKn7Ul/nbvk6WkKCMLqoJHvi8= +go.opentelemetry.io/collector/otelcol v0.149.0/go.mod h1:f+LKU3H4BYniQtrp65n8zt7ZJk7B4WAuajGyibcf4KY= +go.opentelemetry.io/collector/pdata v1.55.0 h1:WBgye8bo8koUyV9Vmp/r2Q3lgDezdsgfKDQAaM1oT2I= +go.opentelemetry.io/collector/pdata v1.55.0/go.mod h1:6jPrbM4tuliCPACDznjFtxnnHisfKfzwrBVoeuESYuk= +go.opentelemetry.io/collector/pdata/pprofile v0.149.0 h1:4/uI7wsgMnmBZm6Z/VNY6sWnaFN09+Nk3jr7XEmTtOk= +go.opentelemetry.io/collector/pdata/pprofile v0.149.0/go.mod h1:4uprs5wMp4MI1/bcP5mYERfobFxBn+QoeNFQBUSVk/U= +go.opentelemetry.io/collector/pdata/testdata v0.149.0 h1:Y9WCJpr9fvpCGmvh6wK0i+QtOn0OyGXnoOkLfq7xtok= +go.opentelemetry.io/collector/pdata/testdata v0.149.0/go.mod h1:5BscHKM7cy9lzPMpnaIFaTOMI8SI02AsEF4rH3aRJBg= +go.opentelemetry.io/collector/pdata/xpdata v0.149.0 h1:crfGmh5LsOAVc1ImdnPIUTMmHbOGYmWXgOyWSDnAKyw= +go.opentelemetry.io/collector/pdata/xpdata v0.149.0/go.mod h1:YgOtcDn7E/4dHw0/Yy/PvSa3GLqMKKAIikzBPM+ML2g= +go.opentelemetry.io/collector/pipeline v1.55.0 h1:jxFicLy3QYWQaQZp2f+wdCfHpOYb3mKNTqHR1KIut+U= +go.opentelemetry.io/collector/pipeline v1.55.0/go.mod h1:RD90NG3Jbk965Xaqym3JyHkuol4uZJjQVUkD9ddXJIs= +go.opentelemetry.io/collector/pipeline/xpipeline v0.149.0 h1:T30l3eiGqQe68PHXh2tnDL6VT5niZCQFKqbJ6/fVToE= +go.opentelemetry.io/collector/pipeline/xpipeline v0.149.0/go.mod h1:7KQ4/TT7mte7O5toMJk2IbqBUVgvGYpp3uU3g2CA6/o= +go.opentelemetry.io/collector/processor v1.55.0 h1:d4bCnvtAVTjy1/3JOj3ud6eEZCMsaz2C9lVStB1FM/8= +go.opentelemetry.io/collector/processor v1.55.0/go.mod h1:ruMOb0N76S+H8rhzkLoIzALAMCe7XI9qFONDWsR5IOA= +go.opentelemetry.io/collector/processor/batchprocessor v0.149.0 h1:Zl6EM6UQWd6LrjhkNr3sIFMiI8OpOAembbEbmiMxBMU= +go.opentelemetry.io/collector/processor/batchprocessor v0.149.0/go.mod h1:v7DSE83r+nwf+gtx5CYgiFErQbcJlFrK0D/wM8p41Gw= +go.opentelemetry.io/collector/processor/processortest v0.149.0 h1:J73vvUuqyG2Ojnc2CQd6yNqI/wqoWuZuNo/JQH7WTsU= +go.opentelemetry.io/collector/processor/processortest v0.149.0/go.mod h1:z7YKrOnM/y6h7ovZ3JKpCLqzRlE+xoeAhf9PU76EGtg= +go.opentelemetry.io/collector/processor/xprocessor v0.149.0 h1:hmQS3HfO9VqSVsf5h1qIwg5DRYzP1WHxg32tBkHW2Es= +go.opentelemetry.io/collector/processor/xprocessor v0.149.0/go.mod h1:kMEqqiVkTFedwNmFRg2wjA9A+CE44+CrM1wHb5Vfu0k= +go.opentelemetry.io/collector/receiver v1.55.0 h1:7GVQOPleD60LzxvkqHaChlbWw5nJvw6i2fV6UBL+7EQ= +go.opentelemetry.io/collector/receiver v1.55.0/go.mod h1:Sdx1R+nh6p9lQSZJk8KfQK4nzLI4zNrceIk7a8WpSQg= +go.opentelemetry.io/collector/receiver/receiverhelper v0.149.0 h1:cuRWQ5alfQUwtQosjbOvy2+eKjKaVBaZat0r5S3dC0A= +go.opentelemetry.io/collector/receiver/receiverhelper v0.149.0/go.mod h1:LpSzl7PfuN7LVmwdj6FwPKuwYwiNwUqtMDHU1uroNQU= +go.opentelemetry.io/collector/receiver/receivertest v0.149.0 h1:S33+mAxh7QTxY2o0fTFKEN/ULgcuw36hUVQDyIlSpTc= +go.opentelemetry.io/collector/receiver/receivertest v0.149.0/go.mod h1:w+W/7Dd64jHeCsQcJZBB6oSz3gasvKz5KP1yKzaN8V8= +go.opentelemetry.io/collector/receiver/xreceiver v0.149.0 h1:EpJ5zqTrJwQT1QsX+JHRcDfTA1Mzf0gAOPGihkxtn7E= +go.opentelemetry.io/collector/receiver/xreceiver v0.149.0/go.mod h1:hoUUGXcIr7ZuDdkqzLGfy5P7Njsc/YQ8riWX70Ukf6E= +go.opentelemetry.io/collector/service v0.149.0 h1:wYdGBC+dUs1oBpjx7hKMlN75UKc2CBJsDSbvZYu4ZvI= +go.opentelemetry.io/collector/service v0.149.0/go.mod h1:hJUZUh0LDy53geG7RA1ym/GLVeWpiMGp6gX+sXh6Z88= +go.opentelemetry.io/collector/service/hostcapabilities v0.149.0 h1:vLw9GIbpZUvRI1M2mHJMGZCsy7ijNOKTL81rTByzu7k= +go.opentelemetry.io/collector/service/hostcapabilities v0.149.0/go.mod h1:tMD3mdx4BTljhfvScmSdewN89NUgj/eoKXCUDkD0F1Y= +go.opentelemetry.io/collector/service/telemetry/telemetrytest v0.149.0 h1:Ao4axvnPWwQ07vK+67VL8veAz5eNH9v530H+B7Jsw70= +go.opentelemetry.io/collector/service/telemetry/telemetrytest v0.149.0/go.mod h1:+scbyWSHHiabLiZLLRpM80P0uhAR+NkwIhL9OGv5LZ4= go.opentelemetry.io/contrib/instrumentation/net/http/httptrace/otelhttptrace v0.65.0 h1:ab5U7DpTjjN8pNgwqlA/s0Csb+N2Raqo9eTSDhfg4Z8= go.opentelemetry.io/contrib/instrumentation/net/http/httptrace/otelhttptrace v0.65.0/go.mod h1:nwFJC46Dxhqz5R9k7IV8To/Z46JPvW+GNKhTxQQlUzg= go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.67.0 h1:OyrsyzuttWTSur2qN/Lm0m2a8yqyIjUVBZcxFPuXq2o= @@ -851,16 +851,16 @@ golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8U golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= golang.org/x/crypto v0.0.0-20210921155107-089bfa567519/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc= golang.org/x/crypto v0.11.0/go.mod h1:xgJhtzW8F9jGdVFWZESrid1U1bjeNy4zgy5cRr/CIio= -golang.org/x/crypto v0.48.0 h1:/VRzVqiRSggnhY7gNRxPauEQ5Drw9haKdM0jqfcCFts= -golang.org/x/crypto v0.48.0/go.mod h1:r0kV5h3qnFPlQnBSrULhlsRfryS2pmewsg+XfMgkVos= +golang.org/x/crypto v0.49.0 h1:+Ng2ULVvLHnJ/ZFEq4KdcDd/cfjrrjjNSXNzxg0Y4U4= +golang.org/x/crypto v0.49.0/go.mod h1:ErX4dUh2UM+CFYiXZRTcMpEcN8b/1gxEuv3nODoYtCA= golang.org/x/exp v0.0.0-20260218203240-3dfff04db8fa h1:Zt3DZoOFFYkKhDT3v7Lm9FDMEV06GpzjG2jrqW+QTE0= golang.org/x/exp v0.0.0-20260218203240-3dfff04db8fa/go.mod h1:K79w1Vqn7PoiZn+TkNpx3BUWUQksGO3JcVX6qIjytmA= 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/mod v0.6.0-dev.0.20220419223038-86c51ed26bb4/go.mod h1:jJ57K6gSWd91VN4djpZkiMVwK6gcyfeH4XE8wZrZaV4= golang.org/x/mod v0.8.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs= -golang.org/x/mod v0.33.0 h1:tHFzIWbBifEmbwtGz65eaWyGiGZatSrT9prnU8DbVL8= -golang.org/x/mod v0.33.0/go.mod h1:swjeQEj+6r7fODbD2cqrnje9PnziFuw4bmLbBZFrQ5w= +golang.org/x/mod v0.34.0 h1:xIHgNUUnW6sYkcM5Jleh05DvLOtwc6RitGHbDk4akRI= +golang.org/x/mod v0.34.0/go.mod h1:ykgH52iCZe79kzLLMhyCUzhMci+nQj+0XkbXpNYtVjY= golang.org/x/net v0.0.0-20181114220301-adae6a3d119a/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= golang.org/x/net v0.0.0-20190613194153-d28f0bde5980/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= @@ -874,8 +874,8 @@ golang.org/x/net v0.0.0-20220722155237-a158d28d115b/go.mod h1:XRhObCWvk6IyKnWLug golang.org/x/net v0.6.0/go.mod h1:2Tu9+aMcznHK/AK1HMvgo6xiTLG5rD5rZLDS+rp2Bjs= golang.org/x/net v0.10.0/go.mod h1:0qNGK6F8kojg2nk9dLZ2mShWaEBan6FAoqfSigmmuDg= golang.org/x/net v0.13.0/go.mod h1:zEVYFnQC7m/vmpQFELhcD1EWkZlX69l4oqgmer6hfKA= -golang.org/x/net v0.51.0 h1:94R/GTO7mt3/4wIKpcR5gkGmRLOuE/2hNGeWq/GBIFo= -golang.org/x/net v0.51.0/go.mod h1:aamm+2QF5ogm02fjy5Bb7CQ0WMt1/WVM7FtyaTLlA9Y= +golang.org/x/net v0.52.0 h1:He/TN1l0e4mmR3QqHMT2Xab3Aj3L9qjbhRm78/6jrW0= +golang.org/x/net v0.52.0/go.mod h1:R1MAz7uMZxVMualyPXb+VaqGSa3LIaUqk0eEt3w36Sw= golang.org/x/oauth2 v0.35.0 h1:Mv2mzuHuZuY2+bkyWXIHMfhNdJAdwW3FuWeCPYN5GVQ= golang.org/x/oauth2 v0.35.0/go.mod h1:lzm5WQJQwKZ3nwavOZ3IS5Aulzxi68dUSgRHujetwEA= golang.org/x/sync v0.0.0-20181108010431-42b317875d0f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= @@ -886,8 +886,8 @@ golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJ golang.org/x/sync v0.0.0-20210220032951-036812b2e83c/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20220722155255-886fb9371eb4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.1.0/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.19.0 h1:vV+1eWNmZ5geRlYjzm2adRgW2/mcpevXNg50YZtPCE4= -golang.org/x/sync v0.19.0/go.mod h1:9KTHXmSnoGruLpwFjVSX0lNNA75CykiMECbovNTZqGI= +golang.org/x/sync v0.20.0 h1:e0PTpb7pjO8GAtTs2dQ6jYa5BWYlMuX047Dco/pItO4= +golang.org/x/sync v0.20.0/go.mod h1:9xrNwdLfx4jkKbNva9FpL6vEN7evnE43NNNJQ2LF3+0= golang.org/x/sys v0.0.0-20180823144017-11551d06cbcc/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20180905080454-ebe1bf3edb33/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20181116152217-5ac8a444bdc5/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= @@ -928,8 +928,8 @@ golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuX golang.org/x/term v0.5.0/go.mod h1:jMB1sMXY+tzblOD4FWmEbocvup2/aLOaQEp7JmGp78k= golang.org/x/term v0.8.0/go.mod h1:xPskH00ivmX89bAKVGSKKtLOWNx2+17Eiy94tnKShWo= golang.org/x/term v0.10.0/go.mod h1:lpqdcUyK/oCiQxvxVrppt5ggO2KCZ5QblwqPnfZ6d5o= -golang.org/x/term v0.40.0 h1:36e4zGLqU4yhjlmxEaagx2KuYbJq3EwY8K943ZsHcvg= -golang.org/x/term v0.40.0/go.mod h1:w2P8uVp06p2iyKKuvXIm7N/y0UCRt3UfJTfZ7oOpglM= +golang.org/x/term v0.41.0 h1:QCgPso/Q3RTJx2Th4bDLqML4W6iJiaXFq2/ftQF13YU= +golang.org/x/term v0.41.0/go.mod h1:3pfBgksrReYfZ5lvYM0kSO0LIkAl4Yl2bXOkKP7Ec2A= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.2/go.mod h1:bEr9sfX3Q8Zfm5fL9x+3itogRgK3+ptLWKqgva+5dAk= golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= @@ -938,8 +938,8 @@ golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ= golang.org/x/text v0.7.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8= golang.org/x/text v0.9.0/go.mod h1:e1OnstbJyHTd6l/uOt8jFFHp6TRDWZR/bV3emEE/zU8= golang.org/x/text v0.11.0/go.mod h1:TvPlkZtksWOMsz7fbANvkp4WM8x/WCo/om8BMLbz+aE= -golang.org/x/text v0.34.0 h1:oL/Qq0Kdaqxa1KbNeMKwQq0reLCCaFtqu2eNuSeNHbk= -golang.org/x/text v0.34.0/go.mod h1:homfLqTYRFyVYemLBFl5GgL/DWEiH5wcsQ5gSh1yziA= +golang.org/x/text v0.35.0 h1:JOVx6vVDFokkpaq1AEptVzLTpDe9KGpj5tR4/X+ybL8= +golang.org/x/text v0.35.0/go.mod h1:khi/HExzZJ2pGnjenulevKNX1W67CUy0AsXcNubPGCA= golang.org/x/time v0.14.0 h1:MRx4UaLrDotUKUdCIqzPC48t1Y9hANFKIRpNx+Te8PI= golang.org/x/time v0.14.0/go.mod h1:eL/Oa2bBBK0TkX57Fyni+NgnyQQN4LitPmob2Hjnqw4= golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= @@ -949,8 +949,8 @@ golang.org/x/tools v0.0.0-20200619180055-7c47624df98f/go.mod h1:EkVYQZoAsY45+roY golang.org/x/tools v0.0.0-20210106214847-113979e3529a/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= golang.org/x/tools v0.1.12/go.mod h1:hNGJHUnrk76NpqgfD5Aqm5Crs+Hm0VOH/i9J2+nxYbc= golang.org/x/tools v0.6.0/go.mod h1:Xwgl3UAJ/d3gWutnCtw505GrjyAbvKui8lOU390QaIU= -golang.org/x/tools v0.42.0 h1:uNgphsn75Tdz5Ji2q36v/nsFSfR/9BRFvqhGBaJGd5k= -golang.org/x/tools v0.42.0/go.mod h1:Ma6lCIwGZvHK6XtgbswSoWroEkhugApmsXyrUmBhfr0= +golang.org/x/tools v0.43.0 h1:12BdW9CeB3Z+J/I/wj34VMl8X+fEXBxVR90JeMX5E7s= +golang.org/x/tools v0.43.0/go.mod h1:uHkMso649BX2cZK6+RpuIPXS3ho2hZo4FVwfoy1vIk0= golang.org/x/tools/godoc v0.1.0-deprecated h1:o+aZ1BOj6Hsx/GBdJO/s815sqftjSnrZZwyYTHODvtk= golang.org/x/tools/godoc v0.1.0-deprecated/go.mod h1:qM63CriJ961IHWmnWa9CjZnBndniPt4a3CK0PVB9bIg= golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= @@ -967,8 +967,8 @@ google.golang.org/genproto/googleapis/api v0.0.0-20260226221140-a57be14db171 h1: google.golang.org/genproto/googleapis/api v0.0.0-20260226221140-a57be14db171/go.mod h1:M5krXqk4GhBKvB596udGL3UyjL4I1+cTbK0orROM9ng= google.golang.org/genproto/googleapis/rpc v0.0.0-20260226221140-a57be14db171 h1:ggcbiqK8WWh6l1dnltU4BgWGIGo+EVYxCaAPih/zQXQ= google.golang.org/genproto/googleapis/rpc v0.0.0-20260226221140-a57be14db171/go.mod h1:4Hqkh8ycfw05ld/3BWL7rJOSfebL2Q+DVDeRgYgxUU8= -google.golang.org/grpc v1.79.2 h1:fRMD94s2tITpyJGtBBn7MkMseNpOZU8ZxgC3MMBaXRU= -google.golang.org/grpc v1.79.2/go.mod h1:KmT0Kjez+0dde/v2j9vzwoAScgEPx/Bw1CYChhHLrHQ= +google.golang.org/grpc v1.79.3 h1:sybAEdRIEtvcD68Gx7dmnwjZKlyfuc61Dyo9pGXXkKE= +google.golang.org/grpc v1.79.3/go.mod h1:KmT0Kjez+0dde/v2j9vzwoAScgEPx/Bw1CYChhHLrHQ= google.golang.org/protobuf v1.36.11 h1:fV6ZwhNocDyBLK0dj+fg8ektcVegBBuEolpbTQyBNVE= google.golang.org/protobuf v1.36.11/go.mod h1:HTf+CrKn2C3g5S8VImy6tdcUvCska2kB7j23XfzDpco= gopkg.in/alecthomas/kingpin.v2 v2.2.6/go.mod h1:FMv+mEhP44yOT+4EoQTLFTRgOQ1FBLkstjWtayDeSgw= diff --git a/otelcollector/prometheusreceiver/internal/apiserver/config.go b/otelcollector/prometheusreceiver/internal/apiserver/config.go index 7fe3e1f43..8866043e0 100644 --- a/otelcollector/prometheusreceiver/internal/apiserver/config.go +++ b/otelcollector/prometheusreceiver/internal/apiserver/config.go @@ -5,15 +5,33 @@ package apiserver // import "github.com/open-telemetry/opentelemetry-collector-c import ( "fmt" + "time" "go.opentelemetry.io/collector/config/confighttp" "go.opentelemetry.io/collector/config/confignet" ) -const defaultEndpoint = "0.0.0.0:9090" +const ( + defaultEndpoint = "127.0.0.1:9090" + defaultReadTimeout = 10 * time.Minute + defaultLookbackDelta = 5 * time.Minute + defaultMaxConnections = 512 + defaultEnabled = false +) type Config struct { - ServerConfig confighttp.ServerConfig `mapstructure:"server_config"` + Enabled *bool `mapstructure:"enabled"` + LookbackDelta time.Duration `mapstructure:"lookback_delta"` + MaxConnections int `mapstructure:"max_connections"` + ServerConfig confighttp.ServerConfig `mapstructure:"server_config"` +} + +// IsEnabled returns whether the API server is enabled. Defaults to false. +func (cfg *Config) IsEnabled() bool { + if cfg == nil || cfg.Enabled == nil { + return defaultEnabled + } + return *cfg.Enabled } // DefaultConfig returns the default configuration for the Prometheus API server. @@ -21,8 +39,13 @@ func DefaultConfig() Config { serverConfig := confighttp.NewDefaultServerConfig() serverConfig.NetAddr.Transport = confignet.TransportTypeTCP serverConfig.NetAddr.Endpoint = defaultEndpoint + serverConfig.ReadTimeout = defaultReadTimeout - return Config{ServerConfig: serverConfig} + return Config{ + LookbackDelta: defaultLookbackDelta, + MaxConnections: defaultMaxConnections, + ServerConfig: serverConfig, + } } func (cfg *Config) ApplyDefaults() { @@ -32,6 +55,18 @@ func (cfg *Config) ApplyDefaults() { defaultCfg := DefaultConfig() + if cfg.LookbackDelta == 0 { + cfg.LookbackDelta = defaultCfg.LookbackDelta + } + + if cfg.MaxConnections <= 0 { + cfg.MaxConnections = defaultCfg.MaxConnections + } + + if cfg.ServerConfig.ReadTimeout <= 0 { + cfg.ServerConfig.ReadTimeout = defaultCfg.ServerConfig.ReadTimeout + } + if cfg.ServerConfig.NetAddr.Transport == "" { cfg.ServerConfig.NetAddr.Transport = defaultCfg.ServerConfig.NetAddr.Transport } @@ -42,11 +77,13 @@ func (cfg *Config) ApplyDefaults() { } func (cfg *Config) Validate() error { - cfg.ApplyDefaults() + if cfg == nil { + return nil + } - if err := cfg.ServerConfig.NetAddr.Validate(); err != nil { - return fmt.Errorf("server_config::netaddr: %w", err) + if cfg.LookbackDelta < 0 { + return fmt.Errorf("lookback_delta must be non-negative") } - return nil + return cfg.ServerConfig.NetAddr.Validate() } diff --git a/otelcollector/prometheusreceiver/internal/apiserver/config.schema.yaml b/otelcollector/prometheusreceiver/internal/apiserver/config.schema.yaml new file mode 100644 index 000000000..183cf5640 --- /dev/null +++ b/otelcollector/prometheusreceiver/internal/apiserver/config.schema.yaml @@ -0,0 +1,21 @@ +$defs: + config: + type: object + properties: + enabled: + type: boolean + description: Enables the Prometheus API server when true. + default: false + lookback_delta: + type: string + format: duration + description: >- + Amount of time the query APIs look back when evaluating ranges. + default: 5m + max_connections: + type: integer + description: >- + Maximum number of simultaneous connections to the API server. + default: 512 + server_config: + $ref: go.opentelemetry.io/collector/config/confighttp.server_config \ No newline at end of file diff --git a/otelcollector/prometheusreceiver/internal/apiserver/config_test.go b/otelcollector/prometheusreceiver/internal/apiserver/config_test.go new file mode 100644 index 000000000..8b2d450c3 --- /dev/null +++ b/otelcollector/prometheusreceiver/internal/apiserver/config_test.go @@ -0,0 +1,140 @@ +// Copyright The OpenTelemetry Authors +// SPDX-License-Identifier: Apache-2.0 + +package apiserver // import "github.com/open-telemetry/opentelemetry-collector-contrib/receiver/prometheusreceiver/internal/apiserver" + +import ( + "testing" + "time" + + "github.com/stretchr/testify/assert" + "github.com/stretchr/testify/require" + "go.opentelemetry.io/collector/component/componenttest" + "go.opentelemetry.io/collector/config/confighttp" + "go.opentelemetry.io/collector/config/confignet" +) + +func TestConfigStruct(t *testing.T) { + require.NoError(t, componenttest.CheckConfigStruct(Config{})) +} + +func TestConfigDefaults(t *testing.T) { + t.Run("factory defaults", func(t *testing.T) { + cfg := DefaultConfig() + assert.Equal(t, confignet.TransportTypeTCP, cfg.ServerConfig.NetAddr.Transport) + assert.Equal(t, defaultEndpoint, cfg.ServerConfig.NetAddr.Endpoint) + assert.Equal(t, defaultReadTimeout, cfg.ServerConfig.ReadTimeout) + assert.Equal(t, defaultLookbackDelta, cfg.LookbackDelta) + assert.Equal(t, defaultMaxConnections, cfg.MaxConnections) + assert.False(t, cfg.IsEnabled()) + }) + + t.Run("enabled config", func(t *testing.T) { + cfg := DefaultConfig() + enabled := true + cfg.Enabled = &enabled + assert.True(t, cfg.IsEnabled()) + }) + + t.Run("nil config is disabled", func(t *testing.T) { + var cfg *Config + assert.False(t, cfg.IsEnabled()) + }) + + t.Run("apply defaults to zero value", func(t *testing.T) { + var cfg Config + cfg.ApplyDefaults() + assert.Equal(t, confignet.TransportTypeTCP, cfg.ServerConfig.NetAddr.Transport) + assert.Equal(t, defaultEndpoint, cfg.ServerConfig.NetAddr.Endpoint) + assert.Equal(t, defaultReadTimeout, cfg.ServerConfig.ReadTimeout) + assert.Equal(t, defaultLookbackDelta, cfg.LookbackDelta) + assert.Equal(t, defaultMaxConnections, cfg.MaxConnections) + }) + + t.Run("preserve configured values", func(t *testing.T) { + cfg := Config{ + LookbackDelta: time.Minute, + ServerConfig: confighttp.ServerConfig{ + NetAddr: confignet.AddrConfig{ + Transport: confignet.TransportTypeUnix, + Endpoint: "/tmp/prometheus.sock", + }, + ReadTimeout: time.Second, + }, + } + cfg.ApplyDefaults() + assert.Equal(t, confignet.TransportTypeUnix, cfg.ServerConfig.NetAddr.Transport) + assert.Equal(t, "/tmp/prometheus.sock", cfg.ServerConfig.NetAddr.Endpoint) + assert.Equal(t, time.Second, cfg.ServerConfig.ReadTimeout) + assert.Equal(t, time.Minute, cfg.LookbackDelta) + }) +} + +func TestConfigValidate(t *testing.T) { + tests := []struct { + name string + cfg Config + expectErr string + assertCfg func(*testing.T, Config) + }{ + { + name: "valid endpoint", + cfg: Config{ + ServerConfig: confighttp.ServerConfig{ + NetAddr: confignet.AddrConfig{ + Transport: confignet.TransportTypeTCP, + Endpoint: "127.0.0.1:4317", + }, + }, + }, + }, + { + name: "invalid transport", + cfg: Config{ + ServerConfig: confighttp.ServerConfig{ + NetAddr: confignet.AddrConfig{ + Transport: confignet.TransportType("bogus"), + Endpoint: "127.0.0.1:4317", + }, + }, + }, + expectErr: "invalid transport type", + }, + { + name: "missing endpoint uses defaults", + cfg: Config{ + ServerConfig: confighttp.ServerConfig{ + NetAddr: confignet.AddrConfig{ + Transport: confignet.TransportTypeTCP, + }, + }, + }, + assertCfg: func(t *testing.T, cfg Config) { + assert.Empty(t, cfg.ServerConfig.NetAddr.Endpoint) + }, + }, + { + name: "negative lookback delta", + cfg: Config{ + LookbackDelta: -time.Second, + }, + expectErr: "lookback_delta must be non-negative", + }, + } + + for _, tt := range tests { + tt := tt + t.Run(tt.name, func(t *testing.T) { + err := tt.cfg.Validate() + if tt.expectErr == "" { + require.NoError(t, err) + if tt.assertCfg != nil { + tt.assertCfg(t, tt.cfg) + } + return + } + require.Error(t, err) + assert.Contains(t, err.Error(), tt.expectErr) + }) + } +} diff --git a/otelcollector/prometheusreceiver/internal/apiserver/manager.go b/otelcollector/prometheusreceiver/internal/apiserver/manager.go index 1db060cbc..e800d5d39 100644 --- a/otelcollector/prometheusreceiver/internal/apiserver/manager.go +++ b/otelcollector/prometheusreceiver/internal/apiserver/manager.go @@ -5,6 +5,7 @@ package apiserver // import "github.com/open-telemetry/opentelemetry-collector-c import ( "context" + "errors" "fmt" "net/http" "net/url" @@ -13,10 +14,8 @@ import ( "runtime/debug" "strings" "sync" - "time" - grafanaRegexp "github.com/grafana/regexp" - "github.com/mwitkow/go-conntrack" + "github.com/grafana/regexp" "github.com/prometheus/client_golang/prometheus" "github.com/prometheus/client_golang/prometheus/promhttp" "github.com/prometheus/common/promslog" @@ -36,12 +35,6 @@ import ( "golang.org/x/net/netutil" ) -// Use same settings as Prometheus web server -const ( - maxConnections = 512 - readTimeoutMinutes = 10 -) - type Manager struct { settings receiver.Settings shutdown chan struct{} @@ -51,6 +44,7 @@ type Manager struct { registry *prometheus.Registry registerer prometheus.Registerer server *http.Server + serverDone chan struct{} cfgLock *sync.RWMutex } @@ -73,36 +67,20 @@ func NewManager(set receiver.Settings, cfg *Config, promCfg *promconfig.Config, } func (m *Manager) Start(ctx context.Context, host component.Host, scrapeManager *scrape.Manager) error { - if m.cfg == nil { - return nil - } - m.settings.Logger.Info("Starting Prometheus API server") m.scrapeManager = scrapeManager // If allowed CORS origins are provided in the receiver config, combine them into a single regex since the Prometheus API server requires this format. - var corsOriginRegexp *grafanaRegexp.Regexp + var corsOriginRegexp *regexp.Regexp corsConfig := m.cfg.ServerConfig.CORS.Get() if corsConfig != nil && len(corsConfig.AllowedOrigins) > 0 { - var combinedOriginsBuilder strings.Builder - combinedOriginsBuilder.WriteString(corsConfig.AllowedOrigins[0]) - for _, origin := range corsConfig.AllowedOrigins[1:] { - combinedOriginsBuilder.WriteString("|") - combinedOriginsBuilder.WriteString(origin) - } - combinedRegexp, err := grafanaRegexp.Compile(combinedOriginsBuilder.String()) + combinedRegexp, err := regexp.Compile(strings.Join(corsConfig.AllowedOrigins, "|")) if err != nil { - return fmt.Errorf("failed to compile combined CORS allowed origins into regex: %s", err.Error()) + return fmt.Errorf("failed to compile combined CORS allowed origins into regex: %w", err) } corsOriginRegexp = combinedRegexp } - // If read timeout is not set in the receiver config, use the default Prometheus value. - readTimeout := m.cfg.ServerConfig.ReadTimeout - if readTimeout == 0 { - readTimeout = time.Duration(readTimeoutMinutes) * time.Minute - } - // Set the options to keep similar code to the Prometheus repo. o := &web.Options{ ScrapeManager: m.scrapeManager, @@ -114,14 +92,14 @@ func (m *Manager) Start(ctx context.Context, host component.Host, scrapeManager Path: "", }, RoutePrefix: "/", - ReadTimeout: readTimeout, + ReadTimeout: m.cfg.ServerConfig.ReadTimeout, PageTitle: "Prometheus Receiver", - Flags: make(map[string]string), - MaxConnections: maxConnections, + MaxConnections: m.cfg.MaxConnections, IsAgent: true, Registerer: m.registerer, Gatherer: m.registry, CORSOrigin: corsOriginRegexp, + Flags: map[string]string{}, } // Creates the API object in the same way as the Prometheus web package: https://github.com/prometheus/prometheus/blob/6150e1ca0ede508e56414363cc9062ef522db518/web/web.go#L314-L354 @@ -149,7 +127,7 @@ func (m *Manager) Start(ctx context.Context, host component.Host, scrapeManager defer m.cfgLock.RUnlock() return *m.promCfg }, - o.Flags, // nil + o.Flags, api_v1.GlobalURLOptions{ ListenAddress: o.ListenAddresses[0], Host: o.ExternalURL.Host, @@ -200,7 +178,7 @@ func (m *Manager) Start(ctx context.Context, host component.Host, scrapeManager o.ConvertOTLPDelta, o.NativeOTLPDeltaIngestion, o.STZeroIngestionEnabled, - 5*time.Minute, // LookbackDelta - Using the default value of 5 minutes + m.cfg.LookbackDelta, o.EnableTypeAndUnitLabels, false, // appendMetadata from remote write nil, // OverrideErrorCode @@ -208,15 +186,12 @@ func (m *Manager) Start(ctx context.Context, host component.Host, scrapeManager api_v1.OpenAPIOptions{}, ) - // Create listener and monitor with conntrack in the same way as the Prometheus web package: https://github.com/prometheus/prometheus/blob/6150e1ca0ede508e56414363cc9062ef522db518/web/web.go#L564-L579 + // Create listener in the same way as the Prometheus web package: https://github.com/prometheus/prometheus/blob/6150e1ca0ede508e56414363cc9062ef522db518/web/web.go#L564-L579 listener, err := m.cfg.ServerConfig.ToListener(ctx) if err != nil { - return fmt.Errorf("failed to create listener: %s", err.Error()) + return fmt.Errorf("failed to create listener: %w", err) } listener = netutil.LimitListener(listener, o.MaxConnections) - listener = conntrack.NewListener(listener, - conntrack.TrackWithName("http"), - conntrack.TrackWithTracing()) // Run the API server in the same way as the Prometheus web package: https://github.com/prometheus/prometheus/blob/6150e1ca0ede508e56414363cc9062ef522db518/web/web.go#L582-L630 mux := http.NewServeMux() @@ -243,8 +218,10 @@ func (m *Manager) Start(ctx context.Context, host component.Host, scrapeManager } webconfig := "" + m.serverDone = make(chan struct{}) go func() { - if err := toolkit_web.Serve(listener, m.server, &toolkit_web.FlagConfig{WebConfigFile: &webconfig}, logger); err != nil { + defer close(m.serverDone) + if err := toolkit_web.Serve(listener, m.server, &toolkit_web.FlagConfig{WebConfigFile: &webconfig}, logger); err != nil && !errors.Is(err, http.ErrServerClosed) { m.settings.Logger.Error("API server failed", zap.Error(err)) } }() @@ -270,10 +247,28 @@ func (m *Manager) GetConfig() *promconfig.Config { } func (m *Manager) Shutdown(ctx context.Context) error { - close(m.shutdown) - if m.server != nil { - return m.server.Shutdown(ctx) + select { + case <-m.shutdown: + default: + close(m.shutdown) + } + + if m.server == nil { + return nil + } + + if err := m.server.Shutdown(ctx); err != nil { + return err } + + if m.serverDone != nil { + select { + case <-m.serverDone: + case <-ctx.Done(): + return ctx.Err() + } + } + return nil } diff --git a/otelcollector/prometheusreceiver/internal/apiserver/manager_test.go b/otelcollector/prometheusreceiver/internal/apiserver/manager_test.go new file mode 100644 index 000000000..ae223b1c7 --- /dev/null +++ b/otelcollector/prometheusreceiver/internal/apiserver/manager_test.go @@ -0,0 +1,192 @@ +// Copyright The OpenTelemetry Authors +// SPDX-License-Identifier: Apache-2.0 + +package apiserver // import "github.com/open-telemetry/opentelemetry-collector-contrib/receiver/prometheusreceiver/internal/apiserver" + +import ( + "context" + "net" + "net/http" + "sync" + "testing" + "time" + + "github.com/prometheus/client_golang/prometheus" + promconfig "github.com/prometheus/prometheus/config" + "github.com/stretchr/testify/assert" + "github.com/stretchr/testify/require" + "go.opentelemetry.io/collector/component/componenttest" + "go.opentelemetry.io/collector/config/confighttp" + "go.opentelemetry.io/collector/config/confignet" + "go.opentelemetry.io/collector/receiver/receivertest" + + "github.com/open-telemetry/opentelemetry-collector-contrib/receiver/prometheusreceiver/internal/metadata" +) + +func TestNewManager(t *testing.T) { + cfg := &Config{} + registry := prometheus.NewRegistry() + promCfg := &promconfig.Config{ + ScrapeConfigs: []*promconfig.ScrapeConfig{ + {JobName: "test-job"}, + }, + } + manager := NewManager( + receivertest.NewNopSettings(metadata.Type), + cfg, + promCfg, + registry, + registry, + &sync.RWMutex{}, + ) + + assert.NotNil(t, manager) + assert.Equal(t, cfg, manager.cfg) + assert.Equal(t, promCfg, manager.promCfg) + assert.NotNil(t, manager.shutdown) + assert.NotNil(t, manager.registry) + assert.NotNil(t, manager.registerer) + assert.NotNil(t, manager.cfgLock) +} + +func TestNewManagerUsesProvidedConfigLock(t *testing.T) { + sharedLock := &sync.RWMutex{} + registry := prometheus.NewRegistry() + promCfg := &promconfig.Config{ + ScrapeConfigs: []*promconfig.ScrapeConfig{ + {JobName: "test-job"}, + }, + } + + manager := NewManager( + receivertest.NewNopSettings(metadata.Type), + &Config{}, + promCfg, + registry, + registry, + sharedLock, + ) + + require.NotNil(t, manager) + assert.Same(t, sharedLock, manager.cfgLock) +} + +func TestNewManagerNilConfig(t *testing.T) { + registry := prometheus.NewRegistry() + + manager := NewManager( + receivertest.NewNopSettings(metadata.Type), + nil, + &promconfig.Config{}, + registry, + registry, + &sync.RWMutex{}, + ) + + require.Nil(t, manager) +} + +func TestManagerApplyConfig(t *testing.T) { + registry := prometheus.NewRegistry() + promCfg := &promconfig.Config{ + ScrapeConfigs: []*promconfig.ScrapeConfig{{JobName: "test-job"}}, + } + manager := NewManager( + receivertest.NewNopSettings(metadata.Type), + &Config{}, + promCfg, + registry, + registry, + &sync.RWMutex{}, + ) + require.NotNil(t, manager) + + newCfg := &promconfig.Config{GlobalConfig: promconfig.DefaultGlobalConfig} + + require.NoError(t, manager.ApplyConfig(newCfg)) + assert.Equal(t, newCfg, manager.GetConfig()) +} + +func TestManagerShutdown(t *testing.T) { + registry := prometheus.NewRegistry() + cfg := &Config{} + + manager := NewManager( + receivertest.NewNopSettings(metadata.Type), + cfg, + &promconfig.Config{}, + registry, + registry, + &sync.RWMutex{}, + ) + require.NotNil(t, manager) + + listener, err := net.Listen("tcp", "127.0.0.1:0") + require.NoError(t, err) + server := &http.Server{ReadHeaderTimeout: time.Second} + + done := make(chan struct{}) + go func() { + _ = server.Serve(listener) + close(done) + }() + + manager.server = server + + // Cancel test if shutdown takes too long + ctx, cancel := context.WithTimeout(t.Context(), 5*time.Second) + defer cancel() + + require.NoError(t, manager.Shutdown(ctx)) + + select { + case <-manager.shutdown: + default: + t.Fatal("shutdown channel not closed") + } + + select { + case <-done: + case <-time.After(2 * time.Second): + t.Fatal("http server did not exit") + } +} + +func TestManagerStart(t *testing.T) { + tests := []struct { + name string + manager *Manager + expectErr string + }{ + { + name: "invalid endpoint", + manager: NewManager( + receivertest.NewNopSettings(metadata.Type), + &Config{ + ServerConfig: confighttp.ServerConfig{ + NetAddr: confignet.AddrConfig{ + Endpoint: "localhost"}, + }, + }, + &promconfig.Config{}, + prometheus.NewRegistry(), + prometheus.NewRegistry(), + &sync.RWMutex{}, + ), + expectErr: "failed to create listener", + }, + } + + for _, tt := range tests { + tt := tt + t.Run(tt.name, func(t *testing.T) { + err := tt.manager.Start(t.Context(), componenttest.NewNopHost(), nil) + if tt.expectErr == "" { + require.NoError(t, err) + return + } + require.Error(t, err) + assert.Contains(t, err.Error(), tt.expectErr) + }) + } +} diff --git a/otelcollector/prometheusreceiver/internal/metadata/generated_feature_gates.go b/otelcollector/prometheusreceiver/internal/metadata/generated_feature_gates.go index 508f14b96..ee463bb95 100644 --- a/otelcollector/prometheusreceiver/internal/metadata/generated_feature_gates.go +++ b/otelcollector/prometheusreceiver/internal/metadata/generated_feature_gates.go @@ -23,22 +23,12 @@ var ReceiverPrometheusreceiverEnableNativeHistogramsFeatureGate = featuregate.Gl featuregate.WithRegisterToVersion("v0.145.0"), ) -var ReceiverPrometheusreceiverEnableReportExtraScrapeMetricsFeatureGate = featuregate.GlobalRegistry().MustRegister( - "receiver.prometheusreceiver.EnableReportExtraScrapeMetrics", - featuregate.StageDeprecated, - featuregate.WithRegisterDescription("Enables reporting of extra Prometheus scrape metrics. This gate is deprecated, use the `extra_scrape_metrics` Prometheus scrape configuration instead."), - featuregate.WithRegisterReferenceURL("https://github.com/open-telemetry/opentelemetry-collector-contrib/issues/44181"), - featuregate.WithRegisterFromVersion("v0.143.0"), - featuregate.WithRegisterToVersion("v0.148.0"), -) - -var ReceiverPrometheusreceiverRemoveReportExtraScrapeMetricsConfigFeatureGate = featuregate.GlobalRegistry().MustRegister( - "receiver.prometheusreceiver.RemoveReportExtraScrapeMetricsConfig", - featuregate.StageStable, - featuregate.WithRegisterDescription("This gate is always enabled and cannot be turned off. The 'report_extra_scrape_metrics' configuration option is always ignored. The extra scrape metrics are controlled by the EnableReportExtraScrapeMetrics feature gate, unless otherwise specified in the Prometheus scrape configuration."), - featuregate.WithRegisterReferenceURL("https://github.com/open-telemetry/opentelemetry-collector-contrib/issues/44181"), - featuregate.WithRegisterFromVersion("v0.143.0"), - featuregate.WithRegisterToVersion("v0.148.0"), +var ReceiverPrometheusreceiverIgnoreScopeInfoMetricFeatureGate = featuregate.GlobalRegistry().MustRegister( + "receiver.prometheusreceiver.IgnoreScopeInfoMetric", + featuregate.StageAlpha, + featuregate.WithRegisterDescription("When enabled, the `otel_scope_info` metric is ignored for scope attribute extraction."), + featuregate.WithRegisterReferenceURL("https://github.com/open-telemetry/opentelemetry-collector-contrib/issues/41502"), + featuregate.WithRegisterFromVersion("v0.148.0"), ) var ReceiverPrometheusreceiverRemoveStartTimeAdjustmentFeatureGate = featuregate.GlobalRegistry().MustRegister( diff --git a/otelcollector/prometheusreceiver/internal/metricfamily.go b/otelcollector/prometheusreceiver/internal/metricfamily.go index ad86611ec..479225af6 100644 --- a/otelcollector/prometheusreceiver/internal/metricfamily.go +++ b/otelcollector/prometheusreceiver/internal/metricfamily.go @@ -432,6 +432,9 @@ func populateAttributes(mType pmetric.MetricType, ls labels.Labels, dest pcommon if j < len(names) && l.Name == names[j] { return } + if strings.HasPrefix(l.Name, prometheus.ScopeLabelPrefix) { + return + } if l.Value == "" { // empty label values should be omitted return diff --git a/otelcollector/prometheusreceiver/internal/metricfamily_test.go b/otelcollector/prometheusreceiver/internal/metricfamily_test.go index 61a4b1900..9b934f47f 100644 --- a/otelcollector/prometheusreceiver/internal/metricfamily_test.go +++ b/otelcollector/prometheusreceiver/internal/metricfamily_test.go @@ -257,7 +257,7 @@ func TestMetricGroupData_toDistributionUnitTest(t *testing.T) { } else { lbls = tt.labels.Copy() } - sRef, _ := getSeriesRef(nil, lbls, mp.mtype) + sRef, _ := getSeriesRefWithoutScopeLabels(nil, lbls, mp.mtype) err := mp.addSeries(sRef, tv.metric, lbls, tv.at, tv.value) if tt.wantErr { if i != 0 { @@ -405,7 +405,7 @@ func TestMetricGroupData_toNHCBDistributionUnitTest(t *testing.T) { for _, tt := range tests { t.Run(tt.name, func(t *testing.T) { mp := newMetricFamily(tt.metricName, mc, zap.NewNop(), false, false) - sRef, _ := getSeriesRef(nil, tt.labels, mp.mtype) + sRef, _ := getSeriesRefWithoutScopeLabels(nil, tt.labels, mp.mtype) err := mp.addNHCBSeries(sRef, tt.metricName, tt.labels, tt.intervalStartTimeMs, tt.integerHistogram, tt.floatHistogram) require.NoError(t, err) @@ -575,14 +575,14 @@ func TestMetricGroupData_toExponentialDistributionUnitTest(t *testing.T) { switch { case tv.integerHistogram != nil: mp.mtype = pmetric.MetricTypeExponentialHistogram - sRef, _ := getSeriesRef(nil, lbls, mp.mtype) + sRef, _ := getSeriesRefWithoutScopeLabels(nil, lbls, mp.mtype) err = mp.addExponentialHistogramSeries(sRef, tv.metric, lbls, tv.at, tv.integerHistogram, nil) case tv.floatHistogram != nil: mp.mtype = pmetric.MetricTypeExponentialHistogram - sRef, _ := getSeriesRef(nil, lbls, mp.mtype) + sRef, _ := getSeriesRefWithoutScopeLabels(nil, lbls, mp.mtype) err = mp.addExponentialHistogramSeries(sRef, tv.metric, lbls, tv.at, nil, tv.floatHistogram) default: - sRef, _ := getSeriesRef(nil, lbls, mp.mtype) + sRef, _ := getSeriesRefWithoutScopeLabels(nil, lbls, mp.mtype) err = mp.addSeries(sRef, tv.metric, lbls, tv.at, tv.value) } if tt.wantErr { @@ -866,7 +866,7 @@ func TestMetricGroupData_toSummaryUnitTest(t *testing.T) { for _, lbs := range tt.labelsScrapes { for i, scrape := range lbs.scrapes { lb := lbs.labels.Copy() - sRef, _ := getSeriesRef(nil, lb, mp.mtype) + sRef, _ := getSeriesRefWithoutScopeLabels(nil, lb, mp.mtype) err := mp.addSeries(sRef, scrape.metric, lb, scrape.at, scrape.value) if tt.wantErr { // The first scrape won't have an error @@ -1004,7 +1004,7 @@ func TestMetricGroupData_toNumberDataUnitTest(t *testing.T) { mp := newMetricFamily(tt.metricKind, mc, zap.NewNop(), false, false) for _, tv := range tt.scrapes { lb := tt.labels.Copy() - sRef, _ := getSeriesRef(nil, lb, mp.mtype) + sRef, _ := getSeriesRefWithoutScopeLabels(nil, lb, mp.mtype) require.NoError(t, mp.addSeries(sRef, tv.metric, lb, tv.at, tv.value)) } diff --git a/otelcollector/prometheusreceiver/internal/targetallocator/manager.go b/otelcollector/prometheusreceiver/internal/targetallocator/manager.go index 8493a1e3c..37d9540ee 100644 --- a/otelcollector/prometheusreceiver/internal/targetallocator/manager.go +++ b/otelcollector/prometheusreceiver/internal/targetallocator/manager.go @@ -40,8 +40,8 @@ type Manager struct { initialScrapeConfigs []*promconfig.ScrapeConfig scrapeManager *scrape.Manager discoveryManager *discovery.Manager - wg sync.WaitGroup cfgLock *sync.RWMutex + wg sync.WaitGroup // configUpdateCount tracks how many times the config has changed, for // testing. @@ -57,9 +57,9 @@ func NewManager(set receiver.Settings, cfg *Config, promCfg *promconfig.Config, cfg: cfg, promCfg: promCfg, initialScrapeConfigs: promCfg.ScrapeConfigs, + cfgLock: cfgLock, configUpdateCount: &atomic.Int64{}, configUpdated: make(chan struct{}, 10), - cfgLock: cfgLock, } } @@ -97,9 +97,7 @@ func (m *Manager) Start(ctx context.Context, host component.Host, sm *scrape.Man if err != nil { return err } - m.wg.Add(1) - go func() { - defer m.wg.Done() + m.wg.Go(func() { targetAllocatorIntervalTicker := time.NewTicker(m.cfg.Interval) for { select { @@ -116,7 +114,7 @@ func (m *Manager) Start(ctx context.Context, host component.Host, sm *scrape.Man return } } - }() + }) return nil } diff --git a/otelcollector/prometheusreceiver/internal/targetallocator/manager_test.go b/otelcollector/prometheusreceiver/internal/targetallocator/manager_test.go index b1cfa40bf..a15745f79 100644 --- a/otelcollector/prometheusreceiver/internal/targetallocator/manager_test.go +++ b/otelcollector/prometheusreceiver/internal/targetallocator/manager_test.go @@ -6,6 +6,7 @@ package targetallocator import ( "net/http" "net/http/httptest" + "sync" "testing" "time" @@ -37,7 +38,7 @@ func TestNewManager(t *testing.T) { }, } - manager := NewManager(receivertest.NewNopSettings(metadata.Type), cfg, promCfg, nil) + manager := NewManager(receivertest.NewNopSettings(metadata.Type), cfg, promCfg, &sync.RWMutex{}) assert.NotNil(t, manager) assert.Equal(t, cfg, manager.cfg) @@ -47,6 +48,24 @@ func TestNewManager(t *testing.T) { assert.Len(t, manager.initialScrapeConfigs, 1) } +func TestNewManagerUsesProvidedConfigLock(t *testing.T) { + sharedLock := &sync.RWMutex{} + cfg := &Config{ + Interval: 30 * time.Second, + CollectorID: "test-collector", + } + promCfg := &promconfig.Config{ + ScrapeConfigs: []*promconfig.ScrapeConfig{ + {JobName: "test-job"}, + }, + } + + manager := NewManager(receivertest.NewNopSettings(metadata.Type), cfg, promCfg, sharedLock) + + require.NotNil(t, manager) + assert.Same(t, sharedLock, manager.cfgLock) +} + func TestManagerShutdown(t *testing.T) { // Create a mock target allocator server server := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { @@ -71,7 +90,7 @@ func TestManagerShutdown(t *testing.T) { settings := receivertest.NewNopSettings(metadata.Type) settings.Logger = logger - manager := NewManager(settings, cfg, promCfg, nil) + manager := NewManager(settings, cfg, promCfg, &sync.RWMutex{}) // Start the manager so the goroutine is running ctx := t.Context() diff --git a/otelcollector/prometheusreceiver/internal/targetallocator/manager_unsafe_test.go b/otelcollector/prometheusreceiver/internal/targetallocator/manager_unsafe_test.go index 42eb38c1b..f60029061 100644 --- a/otelcollector/prometheusreceiver/internal/targetallocator/manager_unsafe_test.go +++ b/otelcollector/prometheusreceiver/internal/targetallocator/manager_unsafe_test.go @@ -737,7 +737,7 @@ func TestTargetAllocatorJobRetrieval(t *testing.T) { baseCfg, err := promconfig.Load("", nil) require.NoError(t, err) - manager := NewManager(receivertest.NewNopSettings(metadata.Type), tc.cfg, baseCfg, nil) + manager := NewManager(receivertest.NewNopSettings(metadata.Type), tc.cfg, baseCfg, &sync.RWMutex{}) require.NoError(t, manager.Start(ctx, componenttest.NewNopHost(), scrapeManager, discoveryManager)) allocator.wg.Wait() @@ -943,7 +943,7 @@ func TestManagerSyncWithInitialScrapeConfigs(t *testing.T) { baseCfg, err := promconfig.Load("", nil) require.NoError(t, err) baseCfg.ScrapeConfigs = initialScrapeConfigs - manager := NewManager(receivertest.NewNopSettings(metadata.Type), cfg, baseCfg, nil) + manager := NewManager(receivertest.NewNopSettings(metadata.Type), cfg, baseCfg, &sync.RWMutex{}) require.NoError(t, manager.Start(ctx, componenttest.NewNopHost(), scrapeManager, discoveryManager)) allocator.wg.Wait() diff --git a/otelcollector/prometheusreceiver/internal/transaction.go b/otelcollector/prometheusreceiver/internal/transaction.go index 78970d2a9..2d11ef588 100644 --- a/otelcollector/prometheusreceiver/internal/transaction.go +++ b/otelcollector/prometheusreceiver/internal/transaction.go @@ -8,6 +8,7 @@ import ( "errors" "fmt" "math" + "strings" "github.com/prometheus/common/model" "github.com/prometheus/prometheus/model/exemplar" @@ -25,6 +26,7 @@ import ( "go.opentelemetry.io/collector/receiver/receiverhelper" "go.uber.org/zap" + "github.com/open-telemetry/opentelemetry-collector-contrib/pkg/pdatautil" "github.com/open-telemetry/opentelemetry-collector-contrib/pkg/translator/prometheus" mdata "github.com/open-telemetry/opentelemetry-collector-contrib/receiver/prometheusreceiver/internal/metadata" ) @@ -56,6 +58,7 @@ type transaction struct { externalLabels labels.Labels nodeResources map[resourceKey]pcommon.Resource scopeAttributes map[resourceKey]map[scopeID]pcommon.Map + ignoreScopeInfoMetric bool logger *zap.Logger buildInfo component.BuildInfo obsrecv *receiverhelper.ObsReport @@ -69,6 +72,7 @@ type scopeID struct { name string version string schemaURL string + attrsHash [16]byte } func newTransaction( @@ -81,19 +85,20 @@ func newTransaction( useMetadata bool, ) *transaction { return &transaction{ - ctx: ctx, - families: make(map[resourceKey]map[scopeID]map[metricFamilyKey]*metricFamily), - isNew: true, - trimSuffixes: trimSuffixes, - useMetadata: useMetadata, - sink: sink, - externalLabels: externalLabels, - logger: settings.Logger, - buildInfo: settings.BuildInfo, - obsrecv: obsrecv, - bufBytes: make([]byte, 0, 1024), - scopeAttributes: make(map[resourceKey]map[scopeID]pcommon.Map), - nodeResources: map[resourceKey]pcommon.Resource{}, + ctx: ctx, + families: make(map[resourceKey]map[scopeID]map[metricFamilyKey]*metricFamily), + isNew: true, + trimSuffixes: trimSuffixes, + useMetadata: useMetadata, + sink: sink, + externalLabels: externalLabels, + logger: settings.Logger, + buildInfo: settings.BuildInfo, + obsrecv: obsrecv, + bufBytes: make([]byte, 0, 1024), + scopeAttributes: make(map[resourceKey]map[scopeID]pcommon.Map), + ignoreScopeInfoMetric: mdata.ReceiverPrometheusreceiverIgnoreScopeInfoMetricFeatureGate.IsEnabled(), + nodeResources: map[resourceKey]pcommon.Resource{}, } } @@ -157,12 +162,13 @@ func (t *transaction) Append(_ storage.SeriesRef, ls labels.Labels, atMs int64, } // For the `otel_scope_info` metric we need to convert it to scope attributes. - if metricName == prometheus.ScopeInfoMetricName { + if metricName == prometheus.ScopeInfoMetricName && !t.ignoreScopeInfoMetric { t.addScopeInfo(*rKey, ls) return 0, nil } - scope := getScopeID(ls) + scope, attrs := getScopeID(ls) + t.addScopeAttributesFromLabels(*rKey, scope, attrs) if value.IsStaleNaN(val) { if t.detectAndStoreNativeHistogramStaleness(atMs, rKey, scope, metricName, ls) { @@ -278,7 +284,9 @@ func (t *transaction) AppendExemplar(_ storage.SeriesRef, l labels.Labels, e exe return 0, errMetricNameNotFound } - mf := t.getOrCreateMetricFamily(*rKey, getScopeID(l), mn) + scope, attrs := getScopeID(l) + t.addScopeAttributesFromLabels(*rKey, scope, attrs) + mf := t.getOrCreateMetricFamily(*rKey, scope, mn) mf.addExemplar(t.getSeriesRef(l, mf.mtype), e) return 0, nil @@ -329,7 +337,9 @@ func (t *transaction) AppendHistogram(_ storage.SeriesRef, ls labels.Labels, atM // The `up`, `target_info`, `otel_scope_info` metrics should never generate native histograms, // thus we don't check for them here as opposed to the Append function. - curMF := t.getOrCreateMetricFamily(*rKey, getScopeID(ls), metricName) + scope, attrs := getScopeID(ls) + t.addScopeAttributesFromLabels(*rKey, scope, attrs) + curMF := t.getOrCreateMetricFamily(*rKey, scope, metricName) seriesRef := t.getSeriesRef(ls, curMF.mtype) cacheRef := ls.Hash() @@ -405,7 +415,9 @@ func (t *transaction) setStartTimestamp(ls labels.Labels, atMs, stMs int64) (sto return 0, errMetricNameNotFound } - curMF := t.getOrCreateMetricFamily(*rKey, getScopeID(ls), metricName) + scope, attrs := getScopeID(ls) + t.addScopeAttributesFromLabels(*rKey, scope, attrs) + curMF := t.getOrCreateMetricFamily(*rKey, scope, metricName) seriesRef := t.getSeriesRef(ls, curMF.mtype) curMF.addCreationTimestamp(seriesRef, ls, atMs, stMs) @@ -418,8 +430,8 @@ func (*transaction) SetOptions(_ *storage.AppendOptions) { } func (t *transaction) getSeriesRef(ls labels.Labels, mtype pmetric.MetricType) uint64 { - var hash uint64 - hash, t.bufBytes = getSeriesRef(t.bufBytes, ls, mtype) + hash, bufBytes := getSeriesRefWithoutScopeLabels(t.bufBytes, ls, mtype) + t.bufBytes = bufBytes return hash } @@ -457,8 +469,6 @@ func (t *transaction) getMetrics() (pmetric.Metrics, error) { if scope.schemaURL != "" { ils.SetSchemaUrl(scope.schemaURL) } - // If we got an otel_scope_info metric for that scope, get scope - // attributes from it. if scopeAttributes, ok := t.scopeAttributes[rKey]; ok { if attributes, ok := scopeAttributes[scope]; ok { attributes.CopyTo(ils.Scope().Attributes()) @@ -489,20 +499,44 @@ func (t *transaction) getMetrics() (pmetric.Metrics, error) { return md, nil } -func getScopeID(ls labels.Labels) scopeID { +func getScopeID(ls labels.Labels) (scopeID, pcommon.Map) { var scope scopeID + attrs := pcommon.NewMap() ls.Range(func(lbl labels.Label) { - if lbl.Name == prometheus.ScopeNameLabelKey { + switch lbl.Name { + case prometheus.ScopeNameLabelKey: scope.name = lbl.Value - } - if lbl.Name == prometheus.ScopeVersionLabelKey { + return + case prometheus.ScopeVersionLabelKey: scope.version = lbl.Value - } - if lbl.Name == prometheus.ScopeSchemaURLLabelKey { + return + case prometheus.ScopeSchemaURLLabelKey: scope.schemaURL = lbl.Value + return + } + if !strings.HasPrefix(lbl.Name, prometheus.ScopeLabelPrefix) { + return } + attrKey := strings.TrimPrefix(lbl.Name, prometheus.ScopeLabelPrefix) + attrs.PutStr(attrKey, lbl.Value) }) - return scope + scope.attrsHash = pdatautil.MapHash(attrs) + return scope, attrs +} + +func (t *transaction) addScopeAttributesFromLabels(key resourceKey, scope scopeID, attrs pcommon.Map) { + if attrs.Len() == 0 { + return + } + if _, ok := t.scopeAttributes[key]; !ok { + t.scopeAttributes[key] = make(map[scopeID]pcommon.Map) + } + if _, exists := t.scopeAttributes[key][scope]; exists { + return + } + copied := pcommon.NewMap() + attrs.CopyTo(copied) + t.scopeAttributes[key][scope] = copied } func (t *transaction) initTransaction(lbs labels.Labels) (*resourceKey, error) { @@ -637,6 +671,6 @@ func (t *transaction) addScopeInfo(key resourceKey, ls labels.Labels) { t.scopeAttributes[key][scope] = attrs } -func getSeriesRef(bytes []byte, ls labels.Labels, mtype pmetric.MetricType) (uint64, []byte) { - return ls.HashWithoutLabels(bytes, getSortedNotUsefulLabels(mtype)...) +func getSeriesRefWithoutScopeLabels(bytes []byte, ls labels.Labels, mtype pmetric.MetricType) (uint64, []byte) { + return ls.HashWithoutLabels(bytes, getSortedNotUsefulLabelsForSeries(mtype, ls)...) } diff --git a/otelcollector/prometheusreceiver/internal/transaction_test.go b/otelcollector/prometheusreceiver/internal/transaction_test.go index 0a5c389c4..232a1e0fa 100644 --- a/otelcollector/prometheusreceiver/internal/transaction_test.go +++ b/otelcollector/prometheusreceiver/internal/transaction_test.go @@ -27,6 +27,8 @@ import ( "go.opentelemetry.io/collector/receiver/receivertest" "go.uber.org/zap" "go.uber.org/zap/zaptest/observer" + + "github.com/open-telemetry/opentelemetry-collector-contrib/pkg/translator/prometheus" ) const ( @@ -2044,7 +2046,7 @@ func TestGetOrCreateMetricFamily_DistinctFamiliesForNativeVsClassic(t *testing.T } func TestGetSeriesRef_IgnoresNotUsefulLabels(t *testing.T) { - // Build two label sets that differ only in labels likely excluded by getSortedNotUsefulLabels (e.g., _otel_* scope labels) + // Build two label sets that differ only in scope labels, which are excluded from series identity. lsA := labels.FromStrings( string(model.MetricNameLabel), "metric_x", "env", "prod", @@ -2058,12 +2060,25 @@ func TestGetSeriesRef_IgnoresNotUsefulLabels(t *testing.T) { ) var buf []byte - hashA, buf := getSeriesRef(buf, lsA, pmetric.MetricTypeSum) - hashB, _ := getSeriesRef(buf, lsB, pmetric.MetricTypeSum) + hashA, buf := getSeriesRefWithoutScopeLabels(buf, lsA, pmetric.MetricTypeSum) + hashB, _ := getSeriesRefWithoutScopeLabels(buf, lsB, pmetric.MetricTypeSum) require.Equal(t, hashA, hashB, "series ref should be equal when differing only by excluded labels") } +func TestGetScopeID_EmptyScopeAttributesUseZeroHash(t *testing.T) { + scope, attrs := getScopeID(labels.FromStrings( + string(model.MetricNameLabel), "metric_x", + prometheus.ScopeNameLabelKey, "scope.with.info", + prometheus.ScopeVersionLabelKey, "v1.0.0", + )) + + require.Equal(t, "scope.with.info", scope.name) + require.Equal(t, "v1.0.0", scope.version) + require.Zero(t, scope.attrsHash) + require.Zero(t, attrs.Len()) +} + func TestAddTargetInfo_DoesNotCopyJobInstanceOrMetricName(t *testing.T) { tr := newTxn(t, false) rk := resourceKey{job: "job-a", instance: "localhost:1234"} diff --git a/otelcollector/prometheusreceiver/internal/util.go b/otelcollector/prometheusreceiver/internal/util.go index cb6fd0478..b32d681d0 100644 --- a/otelcollector/prometheusreceiver/internal/util.go +++ b/otelcollector/prometheusreceiver/internal/util.go @@ -43,7 +43,7 @@ var ( notUsefulLabelsOther = sortString([]string{ model.MetricNameLabel, model.InstanceLabel, model.SchemeLabel, - model.MetricsPathLabel, model.JobLabel, prometheus.ScopeNameLabelKey, prometheus.ScopeVersionLabelKey, prometheus.ScopeSchemaURLLabelKey, + model.MetricsPathLabel, model.JobLabel, }) notUsefulLabelsHistogram = sortString(append(notUsefulLabelsOther, model.BucketLabel)) notUsefulLabelsSummary = sortString(append(notUsefulLabelsOther, model.QuantileLabel)) @@ -65,6 +65,34 @@ func getSortedNotUsefulLabels(mType pmetric.MetricType) []string { } } +func getSortedNotUsefulLabelsForSeries(mType pmetric.MetricType, ls labels.Labels) []string { + base := getSortedNotUsefulLabels(mType) + var exclusions []string + var seen map[string]struct{} + ls.Range(func(l labels.Label) { + if strings.HasPrefix(l.Name, prometheus.ScopeLabelPrefix) { + if exclusions == nil { + exclusions = make([]string, 0, len(base)+ls.Len()) + exclusions = append(exclusions, base...) + seen = make(map[string]struct{}, len(base)) + for _, name := range base { + seen[name] = struct{}{} + } + } + if _, ok := seen[l.Name]; ok { + return + } + seen[l.Name] = struct{}{} + exclusions = append(exclusions, l.Name) + } + }) + if exclusions == nil { + return base + } + sort.Strings(exclusions) + return exclusions +} + func timestampFromFloat64(ts float64) pcommon.Timestamp { secs := int64(ts) nanos := int64((ts - float64(secs)) * 1e9) diff --git a/otelcollector/prometheusreceiver/metadata.yaml b/otelcollector/prometheusreceiver/metadata.yaml index 76b3f623b..d1e8bd4ab 100644 --- a/otelcollector/prometheusreceiver/metadata.yaml +++ b/otelcollector/prometheusreceiver/metadata.yaml @@ -43,25 +43,12 @@ feature_gates: to_version: v0.145.0 reference_url: https://github.com/open-telemetry/opentelemetry-collector-contrib/pull/34473 - - id: receiver.prometheusreceiver.EnableReportExtraScrapeMetrics - stage: deprecated - description: >- - Enables reporting of extra Prometheus scrape metrics. This gate is deprecated, use the - `extra_scrape_metrics` Prometheus scrape configuration instead. - from_version: v0.143.0 - to_version: v0.148.0 - reference_url: https://github.com/open-telemetry/opentelemetry-collector-contrib/issues/44181 - - - id: receiver.prometheusreceiver.RemoveReportExtraScrapeMetricsConfig - stage: stable + - id: receiver.prometheusreceiver.IgnoreScopeInfoMetric + stage: alpha description: >- - This gate is always enabled and cannot be turned off. The 'report_extra_scrape_metrics' - configuration option is always ignored. The extra scrape metrics are controlled by the - EnableReportExtraScrapeMetrics feature gate, unless otherwise specified in the Prometheus - scrape configuration. - from_version: v0.143.0 - to_version: v0.148.0 - reference_url: https://github.com/open-telemetry/opentelemetry-collector-contrib/issues/44181 + When enabled, the `otel_scope_info` metric is ignored for scope attribute extraction. + from_version: v0.148.0 + reference_url: https://github.com/open-telemetry/opentelemetry-collector-contrib/issues/41502 - id: receiver.prometheusreceiver.RemoveStartTimeAdjustment stage: stable diff --git a/otelcollector/prometheusreceiver/metrics_receiver.go b/otelcollector/prometheusreceiver/metrics_receiver.go index 19e1d926c..bf179e524 100644 --- a/otelcollector/prometheusreceiver/metrics_receiver.go +++ b/otelcollector/prometheusreceiver/metrics_receiver.go @@ -66,13 +66,19 @@ func newPrometheusReceiver(set receiver.Settings, cfg *Config, next consumer.Met registerer := prometheus.WrapRegistererWith( prometheus.Labels{"receiver": set.ID.String()}, registry) - promCfgLock := &sync.RWMutex{} - - var apiCfg *apiserver.Config - if cfg.APIServer.HasValue() { - c := cfg.APIServer.Get() - apiCfg = c + apiServerCfg := cfg.APIServer + var apiServerManager *apiserver.Manager + if apiServerCfg != nil && apiServerCfg.IsEnabled() { + apiServerCfg.ApplyDefaults() + apiServerManager = apiserver.NewManager( + set, + apiServerCfg, + &baseCfg, + registry, + registerer, + promCfgLock, + ) } pr := &pReceiver{ @@ -88,14 +94,7 @@ func newPrometheusReceiver(set receiver.Settings, cfg *Config, next consumer.Met &baseCfg, promCfgLock, ), - apiServerManager: apiserver.NewManager( - set, - apiCfg, - &baseCfg, - registry, - registerer, - promCfgLock, - ), + apiServerManager: apiServerManager, } return pr, nil } @@ -123,17 +122,17 @@ func (r *pReceiver) start(ctx context.Context, host component.Host, opts prometh return err } + r.loadConfigOnce.Do(func() { + close(r.configLoaded) + }) + if r.apiServerManager != nil { - err = r.apiServerManager.Start(discoveryCtx, host, r.scrapeManager) + err := r.apiServerManager.Start(ctx, host, r.scrapeManager) if err != nil { - r.settings.Logger.Error("Failed to start API server", zap.Error(err)) + r.settings.Logger.Error("Failed to start APIServer", zap.Error(err)) } } - r.loadConfigOnce.Do(func() { - close(r.configLoaded) - }) - return nil } @@ -232,6 +231,7 @@ func (r *pReceiver) initScrapeOptions(o prometheusScrapeTestOptions) *scrape.Opt return opts } + // gcInterval returns the longest scrape interval used by a scrape config, // plus a delta to prevent race conditions. // This ensures jobs are not garbage collected between scrapes. @@ -260,8 +260,7 @@ func (r *pReceiver) Shutdown(ctx context.Context) error { r.unregisterMetrics() } if r.apiServerManager != nil { - err := r.apiServerManager.Shutdown(ctx) - if err != nil { + if err := r.apiServerManager.Shutdown(ctx); err != nil { return err } } diff --git a/otelcollector/prometheusreceiver/metrics_receiver_config_pointer_test.go b/otelcollector/prometheusreceiver/metrics_receiver_config_pointer_test.go new file mode 100644 index 000000000..d20d35679 --- /dev/null +++ b/otelcollector/prometheusreceiver/metrics_receiver_config_pointer_test.go @@ -0,0 +1,152 @@ +// Copyright The OpenTelemetry Authors +// SPDX-License-Identifier: Apache-2.0 + +package prometheusreceiver + +import ( + "reflect" + "sync" + "testing" + "time" + "unsafe" + + "github.com/prometheus/common/promslog" + promConfig "github.com/prometheus/prometheus/config" + "github.com/stretchr/testify/assert" + "github.com/stretchr/testify/require" + "go.opentelemetry.io/collector/config/confighttp" + "go.opentelemetry.io/collector/config/confignet" + "go.opentelemetry.io/collector/config/configoptional" + "go.opentelemetry.io/collector/consumer/consumertest" + "go.opentelemetry.io/collector/receiver/receivertest" + + "github.com/open-telemetry/opentelemetry-collector-contrib/receiver/prometheusreceiver/internal/apiserver" + "github.com/open-telemetry/opentelemetry-collector-contrib/receiver/prometheusreceiver/internal/metadata" + "github.com/open-telemetry/opentelemetry-collector-contrib/receiver/prometheusreceiver/internal/targetallocator" +) + +func TestTargetAllocatorAndAPIServerSharePromConfigPointer(t *testing.T) { + t.Parallel() + + receiver := newReceiverWithTargetAllocatorAndAPIServer(t) + + taPromCfg := extractManagerPromConfig(t, receiver.targetAllocatorManager) + apiPromCfg := extractManagerPromConfig(t, receiver.apiServerManager) + require.NotNil(t, taPromCfg) + require.NotNil(t, apiPromCfg) + assert.Same(t, taPromCfg, apiPromCfg) + + initialLen := len(apiPromCfg.ScrapeConfigs) + taPromCfg.ScrapeConfigs = append(taPromCfg.ScrapeConfigs, &promConfig.ScrapeConfig{JobName: "ta-added"}) + require.Len(t, apiPromCfg.ScrapeConfigs, initialLen+1) + assert.Equal(t, "ta-added", apiPromCfg.ScrapeConfigs[initialLen].JobName) +} + +func TestTargetAllocatorAndAPIServerShareConfigLock(t *testing.T) { + t.Parallel() + + receiver := newReceiverWithTargetAllocatorAndAPIServer(t) + + taLock := extractManagerLock(t, receiver.targetAllocatorManager) + apiLock := extractManagerLock(t, receiver.apiServerManager) + require.NotNil(t, taLock) + require.NotNil(t, apiLock) + assert.Same(t, taLock, apiLock) +} + +func TestPrometheusAPIServerManagerDisabledByDefault(t *testing.T) { + t.Parallel() + + const promCfgYAML = ` +global: + scrape_interval: 15s +scrape_configs: + - job_name: "initial" + static_configs: + - targets: ["127.0.0.1:1234"] +` + + promCfg, err := promConfig.Load(promCfgYAML, promslog.NewNopLogger()) + require.NoError(t, err) + + cfg := &Config{ + PrometheusConfig: (*PromConfig)(promCfg), + } + + receiver, err := newPrometheusReceiver(receivertest.NewNopSettings(metadata.Type), cfg, consumertest.NewNop()) + require.NoError(t, err) + require.Nil(t, receiver.apiServerManager) +} + +func newReceiverWithTargetAllocatorAndAPIServer(t *testing.T) *pReceiver { + t.Helper() + + const promCfgYAML = ` +global: + scrape_interval: 15s +scrape_configs: + - job_name: "initial" + static_configs: + - targets: ["127.0.0.1:1234"] +` + + promCfg, err := promConfig.Load(promCfgYAML, promslog.NewNopLogger()) + require.NoError(t, err) + + apiEnabled := true + cfg := &Config{ + PrometheusConfig: (*PromConfig)(promCfg), + APIServer: &apiserver.Config{ + Enabled: &apiEnabled, + ServerConfig: confighttp.ServerConfig{ + NetAddr: confignet.AddrConfig{ + Transport: "tcp", + Endpoint: "127.0.0.1:0", + }, + }, + }, + TargetAllocator: configoptional.Some(targetallocator.Config{ + ClientConfig: confighttp.ClientConfig{ + Endpoint: "http://target-allocator:8080", + }, + CollectorID: "collector-1", + Interval: time.Second, + }), + } + + receiver, err := newPrometheusReceiver(receivertest.NewNopSettings(metadata.Type), cfg, consumertest.NewNop()) + require.NoError(t, err) + require.NotNil(t, receiver.targetAllocatorManager) + require.NotNil(t, receiver.apiServerManager) + return receiver +} + +func extractManagerPromConfig(t *testing.T, manager any) *promConfig.Config { + t.Helper() + require.NotNil(t, manager) + + val := reflect.ValueOf(manager) + require.True(t, val.IsValid()) + require.Equal(t, reflect.Pointer, val.Kind()) + + field := val.Elem().FieldByName("promCfg") + require.True(t, field.IsValid()) + require.True(t, field.CanAddr()) + + return *(**promConfig.Config)(unsafe.Pointer(field.UnsafeAddr())) +} + +func extractManagerLock(t *testing.T, manager any) *sync.RWMutex { + t.Helper() + require.NotNil(t, manager) + + val := reflect.ValueOf(manager) + require.True(t, val.IsValid()) + require.Equal(t, reflect.Pointer, val.Kind()) + + field := val.Elem().FieldByName("cfgLock") + require.True(t, field.IsValid()) + require.True(t, field.CanAddr()) + + return *(**sync.RWMutex)(unsafe.Pointer(field.UnsafeAddr())) +} diff --git a/otelcollector/prometheusreceiver/metrics_receiver_labels_test.go b/otelcollector/prometheusreceiver/metrics_receiver_labels_test.go index 488823a7a..b06fae0ce 100644 --- a/otelcollector/prometheusreceiver/metrics_receiver_labels_test.go +++ b/otelcollector/prometheusreceiver/metrics_receiver_labels_test.go @@ -11,6 +11,9 @@ import ( "github.com/stretchr/testify/require" "go.opentelemetry.io/collector/pdata/pcommon" "go.opentelemetry.io/collector/pdata/pmetric" + + "github.com/open-telemetry/opentelemetry-collector-contrib/internal/common/testutil" + "github.com/open-telemetry/opentelemetry-collector-contrib/receiver/prometheusreceiver/internal/metadata" ) const targetExternalLabels = ` @@ -831,6 +834,23 @@ jvm_memory_bytes_used{area="heap"} 100 otel_scope_info{animal="bear", otel_scope_name="scope.with.attributes", otel_scope_version="v1.5.0"} 1 ` +const targetScopeAttributesFromMetricLabels = ` +# HELP jvm_memory_bytes_used Used bytes of a given JVM memory area. +# TYPE jvm_memory_bytes_used gauge +jvm_memory_bytes_used{area="heap", otel_scope_name="scope.with.attributes", otel_scope_version="v1.5.0", otel_scope_schema_url="https://opentelemetry.io/schemas/1.21.0", otel_scope_animal="bear"} 100 +jvm_memory_bytes_used{area="nonheap", otel_scope_name="scope.with.attributes", otel_scope_version="v1.5.0", otel_scope_schema_url="https://opentelemetry.io/schemas/1.21.0", otel_scope_animal="fox"} 101 +` + +const targetScopeInfoAndMetricLabels = ` +# HELP jvm_memory_bytes_used Used bytes of a given JVM memory area. +# TYPE jvm_memory_bytes_used gauge +jvm_memory_bytes_used{area="heap", otel_scope_name="scope.with.metric.labels", otel_scope_version="v1.5.0", otel_scope_schema_url="https://opentelemetry.io/schemas/1.21.0", otel_scope_animal="bear"} 100 +jvm_memory_bytes_used{area="nonheap", otel_scope_name="scope.with.metric.labels", otel_scope_version="v1.5.0", otel_scope_schema_url="https://opentelemetry.io/schemas/1.21.0", otel_scope_animal="fox"} 101 +jvm_memory_bytes_used{area="oldstyle", otel_scope_name="scope.with.info", otel_scope_version="v2.0.0"} 102 +# TYPE otel_scope_info gauge +otel_scope_info{animal="rabbit", otel_scope_name="scope.with.info", otel_scope_version="v2.0.0"} 1 +` + func TestScopeInfoScopeAttributes(t *testing.T) { targets := []*testData{ { @@ -878,3 +898,214 @@ func verifyMultipleScopes(t *testing.T, td *testData, rms []pmetric.ResourceMetr _, found = dp.Attributes().Get("area") require.True(t, found, "Should only have 'area' attribute") } + +func TestScopeAttributeLabels(t *testing.T) { + targets := []*testData{ + { + name: "target1", + pages: []mockPrometheusResponse{ + {code: 200, data: targetScopeAttributesFromMetricLabels}, + }, + validateFunc: verifyScopeAttributeLabels, + }, + } + + testComponent(t, targets, nil) +} + +func TestIgnoreScopeInfoMetricFeatureGate(t *testing.T) { + testCases := []struct { + name string + gateEnabled bool + validateFunc func(*testing.T, *testData, []pmetric.ResourceMetrics) + }{ + { + name: "enabled", + gateEnabled: true, + validateFunc: verifyIgnoreScopeInfoMetricEnabled, + }, + { + name: "disabled", + gateEnabled: false, + validateFunc: verifyIgnoreScopeInfoMetricDisabled, + }, + } + + for _, tc := range testCases { + t.Run(tc.name, func(t *testing.T) { + defer testutil.SetFeatureGateForTest(t, metadata.ReceiverPrometheusreceiverIgnoreScopeInfoMetricFeatureGate, tc.gateEnabled)() + + targets := []*testData{ + { + name: "target1", + pages: []mockPrometheusResponse{ + {code: 200, data: targetScopeInfoAndMetricLabels}, + }, + validateFunc: tc.validateFunc, + }, + } + + testComponent(t, targets, nil) + }) + } +} + +func verifyScopeAttributeLabels(t *testing.T, td *testData, rms []pmetric.ResourceMetrics) { + verifyNumValidScrapeResults(t, td, rms) + require.NotEmpty(t, rms, "At least one resource metric should be present") + + sms := rms[0].ScopeMetrics() + filtered := make([]pmetric.ScopeMetrics, 0, sms.Len()) + for i := 0; i < sms.Len(); i++ { + sm := sms.At(i) + if sm.Scope().Name() == "scope.with.attributes" { + filtered = append(filtered, sm) + } + } + require.Len(t, filtered, 2, "Two scope metrics should be present for scope.with.attributes") + animals := map[string]pmetric.ScopeMetrics{} + for _, sm := range filtered { + require.Equal(t, "scope.with.attributes", sm.Scope().Name()) + require.Equal(t, "v1.5.0", sm.Scope().Version()) + require.Equal(t, "https://opentelemetry.io/schemas/1.21.0", sm.SchemaUrl()) + require.Equal(t, 1, sm.Scope().Attributes().Len()) + + animalValue, found := sm.Scope().Attributes().Get("animal") + require.True(t, found) + animals[animalValue.Str()] = sm + + require.Equal(t, 1, sm.Metrics().Len()) + dp := sm.Metrics().At(0).Gauge().DataPoints().At(0) + require.Equal(t, 1, dp.Attributes().Len()) + _, found = dp.Attributes().Get("area") + require.True(t, found) + _, found = dp.Attributes().Get("otel_scope_animal") + require.False(t, found) + } + + require.Contains(t, animals, "bear") + require.Contains(t, animals, "fox") +} + +func verifyIgnoreScopeInfoMetricEnabled(t *testing.T, td *testData, rms []pmetric.ResourceMetrics) { + verifyNumValidScrapeResults(t, td, rms) + require.NotEmpty(t, rms, "At least one resource metric should be present") + + sms := rms[0].ScopeMetrics() + metricLabelScopes := make([]pmetric.ScopeMetrics, 0, sms.Len()) + var scopeInfoScope pmetric.ScopeMetrics + for i := 0; i < sms.Len(); i++ { + sm := sms.At(i) + switch sm.Scope().Name() { + case "scope.with.metric.labels": + metricLabelScopes = append(metricLabelScopes, sm) + case "scope.with.info": + scopeInfoScope = sm + } + } + + require.Len(t, metricLabelScopes, 2, "Two scope metrics should be present for scope.with.metric.labels") + animals := map[string]pmetric.ScopeMetrics{} + for _, sm := range metricLabelScopes { + require.Equal(t, "scope.with.metric.labels", sm.Scope().Name()) + require.Equal(t, "v1.5.0", sm.Scope().Version()) + require.Equal(t, "https://opentelemetry.io/schemas/1.21.0", sm.SchemaUrl()) + require.Equal(t, 1, sm.Scope().Attributes().Len()) + + animalValue, found := sm.Scope().Attributes().Get("animal") + require.True(t, found) + animals[animalValue.Str()] = sm + + require.Equal(t, 1, sm.Metrics().Len()) + dp := sm.Metrics().At(0).Gauge().DataPoints().At(0) + require.Equal(t, 1, dp.Attributes().Len()) + _, found = dp.Attributes().Get("area") + require.True(t, found) + _, found = dp.Attributes().Get("otel_scope_animal") + require.False(t, found) + } + + require.Contains(t, animals, "bear") + require.Contains(t, animals, "fox") + + require.Equal(t, "scope.with.info", scopeInfoScope.Scope().Name()) + require.Equal(t, "v2.0.0", scopeInfoScope.Scope().Version()) + require.Equal(t, 0, scopeInfoScope.Scope().Attributes().Len()) + require.Equal(t, 2, scopeInfoScope.Metrics().Len()) + + scopeMetricsByName := make(map[string]pmetric.Metric, scopeInfoScope.Metrics().Len()) + for i := 0; i < scopeInfoScope.Metrics().Len(); i++ { + metric := scopeInfoScope.Metrics().At(i) + scopeMetricsByName[metric.Name()] = metric + } + + oldStyleMetric, found := scopeMetricsByName["jvm_memory_bytes_used"] + require.True(t, found) + dp := oldStyleMetric.Gauge().DataPoints().At(0) + require.Equal(t, 1, dp.Attributes().Len()) + _, found = dp.Attributes().Get("area") + require.True(t, found) + + // otel_scope_info becomes a regular metric when the feature gate is enabled + scopeInfoMetric, found := scopeMetricsByName["otel_scope_info"] + require.True(t, found) + dp = scopeInfoMetric.Gauge().DataPoints().At(0) + require.Equal(t, 1, dp.Attributes().Len()) + animal, found := dp.Attributes().Get("animal") + require.True(t, found) + require.Equal(t, "rabbit", animal.Str()) +} + +func verifyIgnoreScopeInfoMetricDisabled(t *testing.T, td *testData, rms []pmetric.ResourceMetrics) { + verifyNumValidScrapeResults(t, td, rms) + require.NotEmpty(t, rms, "At least one resource metric should be present") + + sms := rms[0].ScopeMetrics() + metricLabelScopes := make([]pmetric.ScopeMetrics, 0, sms.Len()) + var scopeInfoScope pmetric.ScopeMetrics + for i := 0; i < sms.Len(); i++ { + sm := sms.At(i) + switch sm.Scope().Name() { + case "scope.with.metric.labels": + metricLabelScopes = append(metricLabelScopes, sm) + case "scope.with.info": + scopeInfoScope = sm + } + } + + require.Len(t, metricLabelScopes, 2, "Two scope metrics should be present for scope.with.metric.labels") + animals := map[string]pmetric.ScopeMetrics{} + for _, sm := range metricLabelScopes { + require.Equal(t, "scope.with.metric.labels", sm.Scope().Name()) + require.Equal(t, "v1.5.0", sm.Scope().Version()) + require.Equal(t, "https://opentelemetry.io/schemas/1.21.0", sm.SchemaUrl()) + require.Equal(t, 1, sm.Scope().Attributes().Len()) + + animalValue, found := sm.Scope().Attributes().Get("animal") + require.True(t, found) + animals[animalValue.Str()] = sm + + require.Equal(t, 1, sm.Metrics().Len()) + dp := sm.Metrics().At(0).Gauge().DataPoints().At(0) + require.Equal(t, 1, dp.Attributes().Len()) + _, found = dp.Attributes().Get("area") + require.True(t, found) + _, found = dp.Attributes().Get("otel_scope_animal") + require.False(t, found) + } + + require.Contains(t, animals, "bear") + require.Contains(t, animals, "fox") + + require.Equal(t, "scope.with.info", scopeInfoScope.Scope().Name()) + require.Equal(t, "v2.0.0", scopeInfoScope.Scope().Version()) + require.Equal(t, 1, scopeInfoScope.Scope().Attributes().Len()) + scopeAnimal, found := scopeInfoScope.Scope().Attributes().Get("animal") + require.True(t, found) + require.Equal(t, "rabbit", scopeAnimal.Str()) + require.Equal(t, 1, scopeInfoScope.Metrics().Len()) + dp := scopeInfoScope.Metrics().At(0).Gauge().DataPoints().At(0) + require.Equal(t, 1, dp.Attributes().Len()) + _, found = dp.Attributes().Get("area") + require.True(t, found) +} diff --git a/otelcollector/prometheusreceiver/metricsreceiver_api_server_test.go b/otelcollector/prometheusreceiver/metricsreceiver_api_server_test.go index 6e56d7ac8..641c651af 100644 --- a/otelcollector/prometheusreceiver/metricsreceiver_api_server_test.go +++ b/otelcollector/prometheusreceiver/metricsreceiver_api_server_test.go @@ -15,7 +15,8 @@ import ( api_v1 "github.com/prometheus/prometheus/web/api/v1" "github.com/stretchr/testify/assert" "github.com/stretchr/testify/require" - "go.opentelemetry.io/collector/config/configoptional" + "go.opentelemetry.io/collector/config/confighttp" + "go.opentelemetry.io/collector/config/confignet" "go.opentelemetry.io/collector/pdata/pmetric" "github.com/open-telemetry/opentelemetry-collector-contrib/receiver/prometheusreceiver/internal/apiserver" @@ -61,11 +62,18 @@ func TestPrometheusAPIServer(t *testing.T) { require.Nil(t, response) }) - apiCfg := apiserver.DefaultConfig() - apiCfg.ServerConfig.NetAddr.Endpoint = endpoint + apiEnabled := true receiver, _ := newTestReceiver(t, &Config{ PrometheusConfig: cfg, - APIServer: configoptional.Some(apiCfg), + APIServer: &apiserver.Config{ + Enabled: &apiEnabled, + ServerConfig: confighttp.ServerConfig{ + NetAddr: confignet.AddrConfig{ + Transport: "tcp", + Endpoint: endpoint, + }, + }, + }, }) endpointsToReceivers[endpoint] = receiver mp.wg.Wait() diff --git a/otelcollector/prometheusreceiver/testdata/config_prometheus_api_server.yaml b/otelcollector/prometheusreceiver/testdata/config_prometheus_api_server.yaml index 864777e24..ebb717d3f 100644 --- a/otelcollector/prometheusreceiver/testdata/config_prometheus_api_server.yaml +++ b/otelcollector/prometheusreceiver/testdata/config_prometheus_api_server.yaml @@ -1,5 +1,6 @@ prometheus/withAPIEnabled: api_server: + enabled: true server_config: endpoint: "localhost:9090" config: @@ -7,13 +8,15 @@ prometheus/withAPIEnabled: - job_name: 'demo' scrape_interval: 5s fallback_scrape_protocol: "PrometheusText1.0.0" -prometheus/withAPIDisabled: +prometheus/withoutAPI: config: scrape_configs: - job_name: 'demo' scrape_interval: 5s fallback_scrape_protocol: "PrometheusText1.0.0" -prometheus/withoutAPI: +prometheus/withAPIUsingDefaults: + api_server: + enabled: true config: scrape_configs: - job_name: 'demo' @@ -21,6 +24,7 @@ prometheus/withoutAPI: fallback_scrape_protocol: "PrometheusText1.0.0" prometheus/withInvalidAPIConfig: api_server: + enabled: true server_config: transport: "invalid" config: