diff --git a/.pipelines/azure-pipeline-build.yml b/.pipelines/azure-pipeline-build.yml index f61797791..d7482215e 100644 --- a/.pipelines/azure-pipeline-build.yml +++ b/.pipelines/azure-pipeline-build.yml @@ -27,7 +27,7 @@ variables: IS_OTEL_UPGRADE_BRANCH: $[startsWith(variables['Build.SourceBranchName'], 'otelcollector-upgrade-')] BUILD_WINDOWS: true Codeql.Enabled: true - GOLANG_VERSION: '1.24.9' + GOLANG_VERSION: '1.24.11' FLUENTBIT_GOLANG_VERSION: '1.24.6' TESTKUBE_GOLANG_VERSION: '1.23.10' FLUENT_BIT_VERSION: '3.2.2' diff --git a/.trivyignore b/.trivyignore index 4d505e4b7..e8144b88e 100644 --- a/.trivyignore +++ b/.trivyignore @@ -1,25 +1,15 @@ # This file contains CVEs to be ignored by Trivy -# Auto-generated on Tue Oct 14 07:13:40 UTC 2025 # CRITICAL # HIGH -# kube-state-metrics -CVE-2024-33599 # -CVE-2024-33601 # -CVE-2025-4802 # -# prometheus-collector - -# MEDIUM -# kube-state-metrics -CVE-2023-4527 # -CVE-2023-4806 # -CVE-2024-33600 # - -# prometheus-collector # promconfigvalidator -CVE-2025-47914 -CVE-2025-58181 - -# LOW -# kube-state-metrics +# otelcollector +CVE-2025-68156 # github.com/expr-lang/expr +# # # promconfigvalidator +CVE-2025-68156 # github.com/expr-lang/expr + +# # # MEDIUM +# # # prometheusui +CVE-2025-47914 # golang.org/x/crypto +CVE-2025-58181 # golang.org/x/crypto diff --git a/OPENTELEMETRY_VERSION b/OPENTELEMETRY_VERSION index 2a3b4ef89..be3279c4c 100644 --- a/OPENTELEMETRY_VERSION +++ b/OPENTELEMETRY_VERSION @@ -1 +1 @@ -v0.136.0 +v0.142.0 diff --git a/TARGETALLOCATOR_VERSION b/TARGETALLOCATOR_VERSION index 2a3b4ef89..be3279c4c 100644 --- a/TARGETALLOCATOR_VERSION +++ b/TARGETALLOCATOR_VERSION @@ -1 +1 @@ -v0.136.0 +v0.142.0 diff --git a/internal/docs/UpgradeotelCol.md b/internal/docs/UpgradeotelCol.md index 606fc8152..b13b28c3c 100644 --- a/internal/docs/UpgradeotelCol.md +++ b/internal/docs/UpgradeotelCol.md @@ -368,3 +368,7 @@ promCfg := (*promconfig.Config)(cfg) #### 3. Deleted File - `otelcollector/prometheusreceiver/metricsreceiver_api_server_test.go` - Removed (old test file) + + +#### Test +Build the otelcollector to make sure the function `api_v1.NewAPI` doesn't need extra parameters added at the end if a newer Prometheus version is used. Find the corresponding Prometheus version branch in the Prometheus repo and look in the [web.go](https://github.com/prometheus/prometheus/blob/main/web/web.go#L364) file and function there to see what should be changed. diff --git a/internal/otel-upgrade-scripts/upgrade.sh b/internal/otel-upgrade-scripts/upgrade.sh index 9dca3d14e..341bfbf84 100755 --- a/internal/otel-upgrade-scripts/upgrade.sh +++ b/internal/otel-upgrade-scripts/upgrade.sh @@ -224,10 +224,6 @@ rm otelcollector/Dockerfile.backup cp otelcollector/Makefile.backup otelcollector/otel-allocator/Makefile rm otelcollector/Makefile.backup -# Update flags.go -sed -i '/import (/a\\tuberzap "go.uber.org/zap"' otelcollector/otel-allocator/internal/config/flags.go -sed -i '/zapCmdLineOpts.BindFlags(zapFlagSet)/a\\tlvl := uberzap.NewAtomicLevelAt(uberzap.PanicLevel)\n\tzapCmdLineOpts.Level = &lvl' otelcollector/otel-allocator/internal/config/flags.go - # Add the Arc EULA into the main.go file echo "Adding Arc EULA to otel-allocator main.go file..." sed -i '/func main() {/a\\t// EULA statement is required for Arc extension\n\tclusterResourceId := os.Getenv("CLUSTER")\n\tif strings.EqualFold(clusterResourceId, "connectedclusters") {\n\t\tsetupLog.Info("MICROSOFT SOFTWARE LICENSE TERMS\\n\\nMICROSOFT Azure Arc-enabled Kubernetes\\n\\nThis software is licensed to you as part of your or your company'\''s subscription license for Microsoft Azure Services. You may only use the software with Microsoft Azure Services and subject to the terms and conditions of the agreement under which you obtained Microsoft Azure Services. If you do not have an active subscription license for Microsoft Azure Services, you may not use the software. Microsoft Azure Legal Information: https://azure.microsoft.com/en-us/support/legal/")\n\t}' otelcollector/otel-allocator/main.go diff --git a/otelcollector/build/windows/scripts/setup.ps1 b/otelcollector/build/windows/scripts/setup.ps1 index bf5583036..561407ce4 100644 --- a/otelcollector/build/windows/scripts/setup.ps1 +++ b/otelcollector/build/windows/scripts/setup.ps1 @@ -32,7 +32,7 @@ Write-Host ('Installing Fluent Bit'); try { # Keep version in sync with linux in setup.sh file # $fluentBitUri = 'https://github.com/microsoft/OMS-docker/releases/download/winakslogagent/td-agent-bit-1.4.0-win64.zip' - $fluentBitUri = 'https://releases.fluentbit.io/3.0/fluent-bit-3.0.7-win64.zip' + $fluentBitUri = 'https://packages.fluentbit.io/windows/fluent-bit-3.0.7-win64.zip' Invoke-WebRequest -Uri $fluentBitUri -OutFile /installation/fluent-bit.zip Expand-Archive -Path /installation/fluent-bit.zip -Destination /installation/fluent-bit Move-Item -Path /installation/fluent-bit/*/bin/* -Destination /opt/fluent-bit/bin/ -ErrorAction SilentlyContinue diff --git a/otelcollector/configuration-reader-builder/go.mod b/otelcollector/configuration-reader-builder/go.mod index d4672907f..ec5504cbf 100644 --- a/otelcollector/configuration-reader-builder/go.mod +++ b/otelcollector/configuration-reader-builder/go.mod @@ -1,6 +1,8 @@ module github.com/configurationreader -go 1.23.7 +go 1.24.0 + +toolchain go1.24.11 replace github.com/prometheus-collector/shared => ../shared @@ -24,6 +26,8 @@ require ( k8s.io/client-go v0.31.3 ) +require go.yaml.in/yaml/v2 v2.4.3 // indirect + require ( github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc // indirect github.com/emicklei/go-restful/v3 v3.12.1 // indirect @@ -47,15 +51,15 @@ require ( github.com/onsi/ginkgo/v2 v2.22.2 // indirect github.com/onsi/gomega v1.36.2 // indirect github.com/prometheus/client_model v0.6.2 // indirect - github.com/prometheus/common v0.65.0 // indirect + github.com/prometheus/common v0.67.4 // indirect github.com/x448/float16 v0.8.4 // indirect - golang.org/x/net v0.40.0 // indirect - golang.org/x/oauth2 v0.30.0 // indirect - golang.org/x/sys v0.33.0 // indirect - golang.org/x/term v0.32.0 // indirect - golang.org/x/text v0.25.0 // indirect + golang.org/x/net v0.46.0 // indirect + golang.org/x/oauth2 v0.32.0 // indirect + golang.org/x/sys v0.37.0 // indirect + golang.org/x/term v0.36.0 // indirect + golang.org/x/text v0.30.0 // indirect golang.org/x/time v0.7.0 // indirect - google.golang.org/protobuf v1.36.6 // indirect + google.golang.org/protobuf v1.36.10 // indirect gopkg.in/inf.v0 v0.9.1 // indirect gopkg.in/yaml.v3 v3.0.1 // indirect k8s.io/klog/v2 v2.130.1 // indirect diff --git a/otelcollector/configuration-reader-builder/go.sum b/otelcollector/configuration-reader-builder/go.sum index 17bdd2faf..66f097c25 100644 --- a/otelcollector/configuration-reader-builder/go.sum +++ b/otelcollector/configuration-reader-builder/go.sum @@ -60,20 +60,22 @@ github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 h1:Jamvg5psRI github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= github.com/prometheus/client_model v0.6.2 h1:oBsgwpGs7iVziMvrGhE53c/GrLUsZdHnqNwqPLxwZyk= github.com/prometheus/client_model v0.6.2/go.mod h1:y3m2F6Gdpfy6Ut/GBsUqTWZqCUvMVzSfMLjcu6wAwpE= -github.com/prometheus/common v0.65.0 h1:QDwzd+G1twt//Kwj/Ww6E9FQq1iVMmODnILtW1t2VzE= -github.com/prometheus/common v0.65.0/go.mod h1:0gZns+BLRQ3V6NdaerOhMbwwRbNh9hkGINtQAsP5GS8= +github.com/prometheus/common v0.67.4 h1:yR3NqWO1/UyO1w2PhUvXlGQs/PtFmoveVO0KZ4+Lvsc= +github.com/prometheus/common v0.67.4/go.mod h1:gP0fq6YjjNCLssJCQp0yk4M8W6ikLURwkdd/YKtTbyI= github.com/rogpeppe/go-internal v1.12.0 h1:exVL4IDcn6na9z1rAb56Vxr+CgyK3nn3O+epU5NdKM8= github.com/rogpeppe/go-internal v1.12.0/go.mod h1:E+RYuTGaKKdloAfM02xzb0FW3Paa99yedzYV+kq4uf4= github.com/spf13/pflag v1.0.5 h1:iy+VFUOCP1a+8yFto/drg2CJ5u0yRoB7fZw3DKv/JXA= github.com/spf13/pflag v1.0.5/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg= github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI= -github.com/stretchr/testify v1.10.0 h1:Xv5erBjTwe/5IxqUQTdXv5kgmIvbHo3QQyRwhJsOfJA= -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/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.yaml.in/yaml/v2 v2.4.3 h1:6gvOSjQoTB3vt1l+CU+tSyi/HOjfOjRLJ4YwYZGwRO0= +go.yaml.in/yaml/v2 v2.4.3/go.mod h1:zSxWcmIDjOzPXpjlTTbAsKokqkDNAVtZO0WOMiT90s8= golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= @@ -83,38 +85,38 @@ golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20200226121028-0de0cce0169b/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20201021035429-f5854403a974/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= -golang.org/x/net v0.40.0 h1:79Xs7wF06Gbdcg4kdCCIQArK11Z1hr5POQ6+fIYHNuY= -golang.org/x/net v0.40.0/go.mod h1:y0hY0exeL2Pku80/zKK7tpntoX23cqL3Oa6njdgRtds= -golang.org/x/oauth2 v0.30.0 h1:dnDm7JmhM45NNpd8FDDeLhK6FwqbOf4MLCM9zb1BOHI= -golang.org/x/oauth2 v0.30.0/go.mod h1:B++QgG3ZKulg6sRPGD/mqlHQs5rB3Ml9erfeDY7xKlU= +golang.org/x/net v0.46.0 h1:giFlY12I07fugqwPuWJi68oOnpfqFnJIJzaIIm2JVV4= +golang.org/x/net v0.46.0/go.mod h1:Q9BGdFy1y4nkUwiLvT5qtyhAnEHgnQ/zd8PfU6nc210= +golang.org/x/oauth2 v0.32.0 h1:jsCblLleRMDrxMN29H3z/k1KliIvpLgCkE6R8FXXNgY= +golang.org/x/oauth2 v0.32.0/go.mod h1:lzm5WQJQwKZ3nwavOZ3IS5Aulzxi68dUSgRHujetwEA= golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200930185726-fdedc70b468f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.33.0 h1:q3i8TbbEz+JRD9ywIRlyRAQbM0qF7hu24q3teo2hbuw= -golang.org/x/sys v0.33.0/go.mod h1:BJP2sWEmIv4KK5OTEluFJCKSidICx8ciO85XgH3Ak8k= -golang.org/x/term v0.32.0 h1:DR4lr0TjUs3epypdhTOkMmuF5CDFJ/8pOnbzMZPQ7bg= -golang.org/x/term v0.32.0/go.mod h1:uZG1FhGx848Sqfsq4/DlJr3xGGsYMu/L5GW4abiaEPQ= +golang.org/x/sys v0.37.0 h1:fdNQudmxPjkdUTPnLn5mdQv7Zwvbvpaxqs831goi9kQ= +golang.org/x/sys v0.37.0/go.mod h1:OgkHotnGiDImocRcuBABYBEXf8A9a87e/uXjp9XT3ks= +golang.org/x/term v0.36.0 h1:zMPR+aF8gfksFprF/Nc/rd1wRS1EI6nDBGyWAvDzx2Q= +golang.org/x/term v0.36.0/go.mod h1:Qu394IJq6V6dCBRgwqshf3mPF85AqzYEzofzRdZkWss= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= -golang.org/x/text v0.25.0 h1:qVyWApTSYLk/drJRO5mDlNYskwQznZmkpV2c8q9zls4= -golang.org/x/text v0.25.0/go.mod h1:WEdwpYrmk1qmdHvhkSTNPm3app7v4rsT8F2UD6+VHIA= +golang.org/x/text v0.30.0 h1:yznKA/E9zq54KzlzBEAWn1NXSQ8DIp/NYMy88xJjl4k= +golang.org/x/text v0.30.0/go.mod h1:yDdHFIX9t+tORqspjENWgzaCVXgk0yYnYuSZ8UzzBVM= golang.org/x/time v0.7.0 h1:ntUhktv3OPE6TgYxXWv9vKvUSJyIFJlyohwbkEwPrKQ= golang.org/x/time v0.7.0/go.mod h1:3BpzKBy/shNhVucY/MWOyx10tF3SFh9QdLuxbVysPQM= golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.0.0-20200619180055-7c47624df98f/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= golang.org/x/tools v0.0.0-20210106214847-113979e3529a/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= -golang.org/x/tools v0.28.0 h1:WuB6qZ4RPCQo5aP3WdKZS7i595EdWqWR8vqJTlwTVK8= -golang.org/x/tools v0.28.0/go.mod h1:dcIOrVd3mfQKTgrDVQHqCPMWy6lnhfhtX3hLXYVLfRw= +golang.org/x/tools v0.37.0 h1:DVSRzp7FwePZW356yEAChSdNcQo6Nsp+fex1SUW09lE= +golang.org/x/tools v0.37.0/go.mod h1:MBN5QPQtLMHVdvsbtarmTNukZDdgwdwlO5qGacAzF0w= 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= -google.golang.org/protobuf v1.36.6 h1:z1NpPI8ku2WgiWnf+t9wTPsn6eP1L7ksHUlkfLvd9xY= -google.golang.org/protobuf v1.36.6/go.mod h1:jduwjTPXsFjZGTmRluh+L6NjiWu7pchiJ2/5YcXBHnY= +google.golang.org/protobuf v1.36.10 h1:AYd7cD/uASjIL6Q9LiTjz8JLcrh/88q5UObnmY3aOOE= +google.golang.org/protobuf v1.36.10/go.mod h1:HTf+CrKn2C3g5S8VImy6tdcUvCska2kB7j23XfzDpco= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c h1:Hei/4ADfdWqJk1ZMxUNpqntNwaWcugrBjAiHlqqRiVk= gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c/go.mod h1:JHkPIbrfpd72SG/EVd6muEfDQjcINNoR0C8j2r3qZ4Q= diff --git a/otelcollector/opentelemetry-collector-builder/components.go b/otelcollector/opentelemetry-collector-builder/components.go index a177f5b66..0a79ecde4 100644 --- a/otelcollector/opentelemetry-collector-builder/components.go +++ b/otelcollector/opentelemetry-collector-builder/components.go @@ -13,6 +13,7 @@ import ( "go.opentelemetry.io/collector/processor" "go.opentelemetry.io/collector/processor/batchprocessor" "go.opentelemetry.io/collector/receiver" + "go.opentelemetry.io/collector/service/telemetry/otelconftelemetry" ) func components() (otelcol.Factories, error) { @@ -37,6 +38,7 @@ func components() (otelcol.Factories, error) { resourceProcessor.Type(): resourceProcessor, filterProcessor.Type(): filterProcessor, }, + Telemetry: otelconftelemetry.NewFactory(), } return factories, nil diff --git a/otelcollector/opentelemetry-collector-builder/go.mod b/otelcollector/opentelemetry-collector-builder/go.mod index 71772cf44..eae4bca13 100644 --- a/otelcollector/opentelemetry-collector-builder/go.mod +++ b/otelcollector/opentelemetry-collector-builder/go.mod @@ -5,77 +5,79 @@ go 1.24.0 toolchain go1.24.7 require ( - github.com/open-telemetry/opentelemetry-collector-contrib/exporter/prometheusexporter v0.136.0 - github.com/open-telemetry/opentelemetry-collector-contrib/processor/filterprocessor v0.136.0 - github.com/open-telemetry/opentelemetry-collector-contrib/processor/resourceprocessor v0.136.0 - github.com/open-telemetry/opentelemetry-collector-contrib/receiver/prometheusreceiver v0.136.0 - go.opentelemetry.io/collector/component v1.42.0 - go.opentelemetry.io/collector/confmap v1.42.0 - go.opentelemetry.io/collector/confmap/provider/envprovider v1.42.0 - go.opentelemetry.io/collector/confmap/provider/fileprovider v1.42.0 - go.opentelemetry.io/collector/exporter v1.42.0 - go.opentelemetry.io/collector/exporter/otlpexporter v0.136.0 - go.opentelemetry.io/collector/extension v1.42.0 - go.opentelemetry.io/collector/otelcol v0.136.0 - go.opentelemetry.io/collector/processor v1.42.0 - go.opentelemetry.io/collector/processor/batchprocessor v0.136.0 - go.opentelemetry.io/collector/receiver v1.42.0 + github.com/open-telemetry/opentelemetry-collector-contrib/exporter/prometheusexporter v0.142.0 + github.com/open-telemetry/opentelemetry-collector-contrib/processor/filterprocessor v0.142.0 + github.com/open-telemetry/opentelemetry-collector-contrib/processor/resourceprocessor v0.142.0 + github.com/open-telemetry/opentelemetry-collector-contrib/receiver/prometheusreceiver v0.142.0 + go.opentelemetry.io/collector/component v1.48.0 + go.opentelemetry.io/collector/confmap v1.48.0 + go.opentelemetry.io/collector/confmap/provider/envprovider v1.48.0 + go.opentelemetry.io/collector/confmap/provider/fileprovider v1.48.0 + go.opentelemetry.io/collector/exporter v1.48.0 + go.opentelemetry.io/collector/exporter/otlpexporter v0.142.0 + go.opentelemetry.io/collector/extension v1.48.0 + go.opentelemetry.io/collector/otelcol v0.142.0 + go.opentelemetry.io/collector/processor v1.48.0 + go.opentelemetry.io/collector/processor/batchprocessor v0.142.0 + go.opentelemetry.io/collector/receiver v1.48.0 + go.opentelemetry.io/collector/service v0.142.0 ) require ( - cloud.google.com/go/auth v0.16.2 // indirect + cloud.google.com/go/auth v0.17.0 // indirect cloud.google.com/go/auth/oauth2adapt v0.2.8 // indirect - cloud.google.com/go/compute/metadata v0.7.0 // indirect - github.com/Azure/azure-sdk-for-go/sdk/azcore v1.18.0 // indirect - github.com/Azure/azure-sdk-for-go/sdk/azidentity v1.10.1 // indirect - github.com/Azure/azure-sdk-for-go/sdk/internal v1.11.1 // indirect + cloud.google.com/go/compute/metadata v0.9.0 // indirect + github.com/Azure/azure-sdk-for-go/sdk/azcore v1.19.1 // indirect + github.com/Azure/azure-sdk-for-go/sdk/azidentity v1.12.0 // 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.4.2 // indirect + github.com/AzureAD/microsoft-authentication-library-for-go v1.5.0 // indirect github.com/Code-Hex/go-generics-cache v1.5.1 // indirect 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.4.4 // indirect + github.com/antchfx/xmlquery v1.5.0 // indirect github.com/antchfx/xpath v1.3.5 // indirect github.com/armon/go-metrics v0.4.1 // indirect github.com/asaskevich/govalidator v0.0.0-20230301143203-a9d515a09cc2 // indirect - github.com/aws/aws-sdk-go-v2 v1.37.0 // indirect - github.com/aws/aws-sdk-go-v2/config v1.29.14 // indirect - github.com/aws/aws-sdk-go-v2/credentials v1.17.67 // indirect - github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.16.30 // indirect - github.com/aws/aws-sdk-go-v2/internal/configsources v1.4.0 // indirect - github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.7.0 // indirect - github.com/aws/aws-sdk-go-v2/internal/ini v1.8.3 // indirect - github.com/aws/aws-sdk-go-v2/service/ec2 v1.237.0 // indirect - github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding v1.13.0 // indirect - github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.13.0 // indirect - github.com/aws/aws-sdk-go-v2/service/lightsail v1.44.0 // indirect - github.com/aws/aws-sdk-go-v2/service/sso v1.25.3 // indirect - github.com/aws/aws-sdk-go-v2/service/ssooidc v1.30.1 // indirect - github.com/aws/aws-sdk-go-v2/service/sts v1.33.19 // indirect - github.com/aws/smithy-go v1.22.5 // indirect + github.com/aws/aws-sdk-go-v2 v1.39.6 // indirect + github.com/aws/aws-sdk-go-v2/config v1.31.17 // indirect + github.com/aws/aws-sdk-go-v2/credentials v1.18.21 // indirect + github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.18.13 // indirect + github.com/aws/aws-sdk-go-v2/internal/configsources v1.4.13 // indirect + github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.7.13 // indirect + github.com/aws/aws-sdk-go-v2/internal/ini v1.8.4 // indirect + github.com/aws/aws-sdk-go-v2/service/ec2 v1.262.0 // indirect + github.com/aws/aws-sdk-go-v2/service/ecs v1.67.2 // indirect + github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding v1.13.3 // indirect + github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.13.13 // indirect + github.com/aws/aws-sdk-go-v2/service/lightsail v1.50.4 // indirect + github.com/aws/aws-sdk-go-v2/service/sso v1.30.1 // indirect + github.com/aws/aws-sdk-go-v2/service/ssooidc v1.35.5 // indirect + github.com/aws/aws-sdk-go-v2/service/sts v1.39.1 // indirect + github.com/aws/smithy-go v1.23.2 // indirect github.com/bboreham/go-loser v0.0.0-20230920113527-fcc2c21820a3 // indirect github.com/beorn7/perks v1.0.1 // 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-20250501225837-2ac532fd4443 // indirect + github.com/cncf/xds/go v0.0.0-20251022180443-0feb69152e9f // indirect github.com/containerd/errdefs v1.0.0 // indirect github.com/containerd/errdefs/pkg v0.3.0 // indirect - github.com/coreos/go-systemd/v22 v22.5.0 // indirect + github.com/coreos/go-systemd/v22 v22.6.0 // 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.157.0 // indirect + github.com/digitalocean/godo v1.168.0 // indirect github.com/distribution/reference v0.6.0 // indirect - github.com/docker/docker v28.3.3+incompatible // indirect + github.com/docker/docker v28.5.2+incompatible // indirect github.com/docker/go-connections v0.6.0 // indirect github.com/docker/go-units v0.5.0 // indirect - github.com/ebitengine/purego v0.8.4 // indirect + github.com/ebitengine/purego v0.9.1 // indirect github.com/edsrzf/mmap-go v1.2.0 // indirect github.com/elastic/go-grok v0.3.1 // indirect - github.com/elastic/lunes v0.1.0 // indirect - github.com/emicklei/go-restful/v3 v3.11.0 // indirect - github.com/envoyproxy/go-control-plane/envoy v1.32.4 // indirect + github.com/elastic/lunes v0.2.0 // indirect + github.com/emicklei/go-restful/v3 v3.12.2 // indirect + github.com/envoyproxy/go-control-plane/envoy v1.35.0 // indirect github.com/envoyproxy/protoc-gen-validate v1.2.1 // indirect github.com/expr-lang/expr v1.17.6 // indirect github.com/facette/natsort v0.0.0-20181210072756-2cd4dd1e2dcb // indirect @@ -83,19 +85,19 @@ require ( github.com/felixge/httpsnoop v1.0.4 // indirect github.com/foxboron/go-tpm-keyfiles v0.0.0-20250903184740-5d135037bd4d // indirect github.com/fsnotify/fsnotify v1.9.0 // indirect - github.com/fxamacker/cbor/v2 v2.7.0 // indirect + github.com/fxamacker/cbor/v2 v2.9.0 // indirect github.com/go-kit/log v0.2.1 // indirect github.com/go-logfmt/logfmt v0.6.0 // indirect github.com/go-logr/logr v1.4.3 // indirect github.com/go-logr/stdr v1.2.2 // indirect github.com/go-ole/go-ole v1.2.6 // indirect github.com/go-openapi/analysis v0.23.0 // indirect - github.com/go-openapi/errors v0.22.0 // indirect + github.com/go-openapi/errors v0.22.3 // indirect github.com/go-openapi/jsonpointer v0.21.0 // indirect github.com/go-openapi/jsonreference v0.21.0 // indirect github.com/go-openapi/loads v0.22.0 // indirect github.com/go-openapi/spec v0.21.0 // indirect - github.com/go-openapi/strfmt v0.23.0 // indirect + github.com/go-openapi/strfmt v0.24.0 // indirect github.com/go-openapi/swag v0.23.0 // indirect github.com/go-openapi/validate v0.24.0 // indirect github.com/go-resty/resty/v2 v2.16.5 // indirect @@ -103,27 +105,25 @@ require ( 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-yaml v1.18.0 // indirect + github.com/goccy/go-yaml v1.19.0 // indirect github.com/gogo/protobuf v1.3.2 // indirect - github.com/golang-jwt/jwt/v5 v5.2.2 // indirect + github.com/golang-jwt/jwt/v5 v5.3.0 // indirect github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da // indirect - github.com/golang/protobuf v1.5.4 // indirect github.com/golang/snappy v1.0.0 // indirect - github.com/google/gnostic-models v0.6.8 // indirect + github.com/google/gnostic-models v0.7.0 // indirect github.com/google/go-cmp v0.7.0 // indirect github.com/google/go-querystring v1.1.0 // indirect - github.com/google/go-tpm v0.9.6 // indirect - github.com/google/gofuzz v1.2.0 // indirect + github.com/google/go-tpm v0.9.7 // indirect github.com/google/s2a-go v0.1.9 // indirect github.com/google/uuid v1.6.0 // indirect github.com/googleapis/enterprise-certificate-proxy v0.3.6 // indirect - github.com/googleapis/gax-go/v2 v2.14.2 // indirect - github.com/gophercloud/gophercloud/v2 v2.7.0 // indirect - github.com/gorilla/websocket v1.5.0 // indirect - github.com/grafana/regexp v0.0.0-20240518133315-a468a5bfb3bc // indirect - github.com/grpc-ecosystem/grpc-gateway/v2 v2.27.1 // indirect + github.com/googleapis/gax-go/v2 v2.15.0 // indirect + github.com/gophercloud/gophercloud/v2 v2.8.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/grpc-ecosystem/grpc-gateway/v2 v2.27.2 // indirect github.com/hashicorp/consul/api v1.32.0 // indirect - github.com/hashicorp/cronexpr v1.1.2 // indirect + github.com/hashicorp/cronexpr v1.1.3 // indirect github.com/hashicorp/errwrap v1.1.0 // indirect github.com/hashicorp/go-cleanhttp v0.5.2 // indirect github.com/hashicorp/go-hclog v1.6.3 // indirect @@ -131,12 +131,12 @@ require ( github.com/hashicorp/go-multierror v1.1.1 // indirect github.com/hashicorp/go-retryablehttp v0.7.7 // indirect github.com/hashicorp/go-rootcerts v1.0.2 // indirect - github.com/hashicorp/go-version v1.7.0 // indirect + github.com/hashicorp/go-version v1.8.0 // indirect github.com/hashicorp/golang-lru v1.0.2 // indirect github.com/hashicorp/golang-lru/v2 v2.0.7 // indirect - github.com/hashicorp/nomad/api v0.0.0-20241218080744-e3ac00f30eec // indirect + github.com/hashicorp/nomad/api v0.0.0-20250930071859-eaa0fe0e27af // indirect github.com/hashicorp/serf v0.10.1 // indirect - github.com/hetznercloud/hcloud-go/v2 v2.21.1 // indirect + github.com/hetznercloud/hcloud-go/v2 v2.29.0 // indirect github.com/iancoleman/strcase v0.3.0 // indirect github.com/inconshreveable/mousetrap v1.1.0 // indirect github.com/ionos-cloud/sdk-go/v6 v6.3.4 // indirect @@ -144,13 +144,14 @@ 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.0 // indirect + github.com/klauspost/compress v1.18.2 // indirect + github.com/klauspost/cpuid/v2 v2.0.9 // 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.0 // indirect github.com/kolo/xmlrpc v0.0.0-20220921171641-a4b6fa1dd06b // indirect github.com/kylelemons/godebug v1.1.0 // indirect - github.com/linode/linodego v1.52.2 // indirect + github.com/linode/linodego v1.60.0 // indirect github.com/lufia/plan9stats v0.0.0-20211012122336-39d0f177ccd0 // indirect github.com/magefile/mage v1.15.0 // indirect github.com/mailru/easyjson v0.7.7 // indirect @@ -158,7 +159,7 @@ require ( github.com/mattn/go-isatty v0.0.20 // indirect github.com/mdlayher/socket v0.4.1 // indirect github.com/mdlayher/vsock v1.2.1 // indirect - github.com/miekg/dns v1.1.66 // indirect + github.com/miekg/dns v1.1.68 // indirect github.com/mitchellh/copystructure v1.2.0 // indirect github.com/mitchellh/go-homedir v1.1.0 // indirect github.com/mitchellh/mapstructure v1.5.1-0.20231216201459-8508981c8b6c // indirect @@ -171,14 +172,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.136.0 // indirect - github.com/open-telemetry/opentelemetry-collector-contrib/internal/exp/metrics v0.136.0 // indirect - github.com/open-telemetry/opentelemetry-collector-contrib/internal/filter v0.136.0 // indirect - github.com/open-telemetry/opentelemetry-collector-contrib/pkg/ottl v0.136.0 // indirect - github.com/open-telemetry/opentelemetry-collector-contrib/pkg/pdatautil v0.136.0 // indirect - github.com/open-telemetry/opentelemetry-collector-contrib/pkg/resourcetotelemetry v0.136.0 // indirect - github.com/open-telemetry/opentelemetry-collector-contrib/pkg/translator/prometheus v0.136.0 // indirect - github.com/open-telemetry/opentelemetry-collector-contrib/processor/deltatocumulativeprocessor v0.136.0 // indirect + github.com/open-telemetry/opentelemetry-collector-contrib/internal/coreinternal v0.142.0 // indirect + github.com/open-telemetry/opentelemetry-collector-contrib/internal/exp/metrics v0.142.0 // indirect + github.com/open-telemetry/opentelemetry-collector-contrib/internal/filter v0.142.0 // indirect + github.com/open-telemetry/opentelemetry-collector-contrib/pkg/ottl v0.142.0 // indirect + github.com/open-telemetry/opentelemetry-collector-contrib/pkg/pdatautil v0.142.0 // indirect + github.com/open-telemetry/opentelemetry-collector-contrib/pkg/resourcetotelemetry v0.142.0 // indirect + github.com/open-telemetry/opentelemetry-collector-contrib/pkg/translator/prometheus v0.142.0 // indirect + github.com/open-telemetry/opentelemetry-collector-contrib/processor/deltatocumulativeprocessor v0.142.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 @@ -190,147 +191,149 @@ require ( github.com/power-devops/perfstat v0.0.0-20240221224432-82ca36839d55 // indirect github.com/prometheus/alertmanager v0.28.1 // indirect github.com/prometheus/client_golang v1.23.2 // indirect + github.com/prometheus/client_golang/exp v0.0.0-20250914183048-a974e0d45e0a // indirect github.com/prometheus/client_model v0.6.2 // indirect - github.com/prometheus/common v0.66.1 // indirect + github.com/prometheus/common v0.67.4 // indirect github.com/prometheus/common/assets v0.2.0 // indirect - github.com/prometheus/exporter-toolkit v0.14.0 // indirect - github.com/prometheus/otlptranslator v0.0.2 // indirect + github.com/prometheus/exporter-toolkit v0.15.0 // indirect + github.com/prometheus/otlptranslator v1.0.0 // indirect github.com/prometheus/procfs v0.17.0 // indirect - github.com/prometheus/prometheus v0.305.1-0.20250808193045-294f36e80261 // indirect - github.com/prometheus/sigv4 v0.2.0 // indirect + github.com/prometheus/prometheus v0.308.0 // indirect + github.com/prometheus/sigv4 v0.3.0 // indirect github.com/puzpuzpuz/xsync/v3 v3.5.1 // indirect github.com/rs/cors v1.11.1 // indirect - github.com/scaleway/scaleway-sdk-go v1.0.0-beta.33 // indirect - github.com/shirou/gopsutil/v4 v4.25.8 // indirect + github.com/scaleway/scaleway-sdk-go v1.0.0-beta.35 // indirect + github.com/shirou/gopsutil/v4 v4.25.11 // indirect github.com/shurcooL/httpfs v0.0.0-20230704072500-f1e31cf0ba5c // indirect - github.com/spf13/cobra v1.10.1 // indirect + github.com/spf13/cobra v1.10.2 // indirect github.com/spf13/pflag v1.0.9 // indirect - github.com/stackitcloud/stackit-sdk-go/core v0.17.2 // indirect + github.com/stackitcloud/stackit-sdk-go/core v0.17.3 // indirect github.com/stretchr/testify v1.11.1 // indirect - github.com/tklauser/go-sysconf v0.3.15 // indirect - github.com/tklauser/numcpus v0.10.0 // indirect + github.com/tklauser/go-sysconf v0.3.16 // indirect + github.com/tklauser/numcpus v0.11.0 // indirect github.com/twmb/murmur3 v1.1.8 // indirect github.com/ua-parser/uap-go v0.0.0-20240611065828-3a4781585db6 // indirect github.com/vultr/govultr/v2 v2.17.2 // indirect github.com/x448/float16 v0.8.4 // indirect github.com/yusufpapurcu/wmi v1.2.4 // indirect - go.mongodb.org/mongo-driver v1.14.0 // indirect - go.opentelemetry.io/auto/sdk v1.1.0 // indirect - go.opentelemetry.io/collector v0.136.0 // indirect - go.opentelemetry.io/collector/client v1.42.0 // indirect - go.opentelemetry.io/collector/component/componentstatus v0.136.0 // indirect - go.opentelemetry.io/collector/component/componenttest v0.136.0 // indirect - go.opentelemetry.io/collector/config/configauth v0.136.0 // indirect - go.opentelemetry.io/collector/config/configcompression v1.42.0 // indirect - go.opentelemetry.io/collector/config/configgrpc v0.136.0 // indirect - go.opentelemetry.io/collector/config/confighttp v0.136.0 // indirect - go.opentelemetry.io/collector/config/configmiddleware v1.42.0 // indirect - go.opentelemetry.io/collector/config/confignet v1.42.0 // indirect - go.opentelemetry.io/collector/config/configopaque v1.42.0 // indirect - go.opentelemetry.io/collector/config/configoptional v0.136.0 // indirect - go.opentelemetry.io/collector/config/configretry v1.42.0 // indirect - go.opentelemetry.io/collector/config/configtelemetry v0.136.0 // indirect - go.opentelemetry.io/collector/config/configtls v1.42.0 // indirect - go.opentelemetry.io/collector/confmap/xconfmap v0.136.0 // indirect - go.opentelemetry.io/collector/connector v0.136.0 // indirect - go.opentelemetry.io/collector/connector/connectortest v0.136.0 // indirect - go.opentelemetry.io/collector/connector/xconnector v0.136.0 // indirect - go.opentelemetry.io/collector/consumer v1.42.0 // indirect - go.opentelemetry.io/collector/consumer/consumererror v0.136.0 // indirect - go.opentelemetry.io/collector/consumer/consumererror/xconsumererror v0.136.0 // indirect - go.opentelemetry.io/collector/consumer/consumertest v0.136.0 // indirect - go.opentelemetry.io/collector/consumer/xconsumer v0.136.0 // indirect - go.opentelemetry.io/collector/exporter/exporterhelper v0.136.0 // indirect - go.opentelemetry.io/collector/exporter/exporterhelper/xexporterhelper v0.136.0 // indirect - go.opentelemetry.io/collector/exporter/exportertest v0.136.0 // indirect - go.opentelemetry.io/collector/exporter/xexporter v0.136.0 // indirect - go.opentelemetry.io/collector/extension/extensionauth v1.42.0 // indirect - go.opentelemetry.io/collector/extension/extensioncapabilities v0.136.0 // indirect - go.opentelemetry.io/collector/extension/extensionmiddleware v0.136.0 // indirect - go.opentelemetry.io/collector/extension/extensiontest v0.136.0 // indirect - go.opentelemetry.io/collector/extension/xextension v0.136.0 // indirect - go.opentelemetry.io/collector/featuregate v1.42.0 // indirect - go.opentelemetry.io/collector/internal/fanoutconsumer v0.136.0 // indirect - go.opentelemetry.io/collector/internal/telemetry v0.136.0 // indirect - go.opentelemetry.io/collector/pdata v1.42.0 // indirect - go.opentelemetry.io/collector/pdata/pprofile v0.136.0 // indirect - go.opentelemetry.io/collector/pdata/testdata v0.136.0 // indirect - go.opentelemetry.io/collector/pdata/xpdata v0.136.0 // indirect - go.opentelemetry.io/collector/pipeline v1.42.0 // indirect - go.opentelemetry.io/collector/pipeline/xpipeline v0.136.0 // indirect - go.opentelemetry.io/collector/processor/processorhelper v0.136.0 // indirect - go.opentelemetry.io/collector/processor/processorhelper/xprocessorhelper v0.136.0 // indirect - go.opentelemetry.io/collector/processor/processortest v0.136.0 // indirect - go.opentelemetry.io/collector/processor/xprocessor v0.136.0 // indirect - go.opentelemetry.io/collector/receiver/receiverhelper v0.136.0 // indirect - go.opentelemetry.io/collector/receiver/receivertest v0.136.0 // indirect - go.opentelemetry.io/collector/receiver/xreceiver v0.136.0 // indirect + github.com/zeebo/xxh3 v1.0.2 // indirect + go.mongodb.org/mongo-driver v1.17.4 // indirect + go.opentelemetry.io/auto/sdk v1.2.1 // indirect + go.opentelemetry.io/collector v0.142.0 // indirect + go.opentelemetry.io/collector/client v1.48.0 // indirect + go.opentelemetry.io/collector/component/componentstatus v0.142.0 // indirect + go.opentelemetry.io/collector/component/componenttest v0.142.0 // indirect + go.opentelemetry.io/collector/config/configauth v1.48.0 // indirect + go.opentelemetry.io/collector/config/configcompression v1.48.0 // indirect + go.opentelemetry.io/collector/config/configgrpc v0.142.0 // indirect + go.opentelemetry.io/collector/config/confighttp v0.142.0 // indirect + go.opentelemetry.io/collector/config/configmiddleware v1.48.0 // indirect + go.opentelemetry.io/collector/config/confignet v1.48.0 // indirect + go.opentelemetry.io/collector/config/configopaque v1.48.0 // indirect + go.opentelemetry.io/collector/config/configoptional v1.48.0 // indirect + go.opentelemetry.io/collector/config/configretry v1.48.0 // indirect + go.opentelemetry.io/collector/config/configtelemetry v0.142.0 // indirect + go.opentelemetry.io/collector/config/configtls v1.48.0 // indirect + go.opentelemetry.io/collector/confmap/xconfmap v0.142.0 // indirect + go.opentelemetry.io/collector/connector v0.142.0 // indirect + go.opentelemetry.io/collector/connector/connectortest v0.142.0 // indirect + go.opentelemetry.io/collector/connector/xconnector v0.142.0 // indirect + go.opentelemetry.io/collector/consumer v1.48.0 // indirect + go.opentelemetry.io/collector/consumer/consumererror v0.142.0 // indirect + go.opentelemetry.io/collector/consumer/consumererror/xconsumererror v0.142.0 // indirect + go.opentelemetry.io/collector/consumer/consumertest v0.142.0 // indirect + go.opentelemetry.io/collector/consumer/xconsumer v0.142.0 // indirect + go.opentelemetry.io/collector/exporter/exporterhelper v0.142.0 // indirect + go.opentelemetry.io/collector/exporter/exporterhelper/xexporterhelper v0.142.0 // indirect + go.opentelemetry.io/collector/exporter/exportertest v0.142.0 // indirect + go.opentelemetry.io/collector/exporter/xexporter v0.142.0 // indirect + go.opentelemetry.io/collector/extension/extensionauth v1.48.0 // indirect + go.opentelemetry.io/collector/extension/extensioncapabilities v0.142.0 // indirect + go.opentelemetry.io/collector/extension/extensionmiddleware v0.142.0 // indirect + go.opentelemetry.io/collector/extension/extensiontest v0.142.0 // indirect + go.opentelemetry.io/collector/extension/xextension v0.142.0 // indirect + go.opentelemetry.io/collector/featuregate v1.48.0 // indirect + go.opentelemetry.io/collector/internal/fanoutconsumer v0.142.0 // indirect + go.opentelemetry.io/collector/internal/telemetry v0.142.0 // indirect + go.opentelemetry.io/collector/pdata v1.48.0 // indirect + go.opentelemetry.io/collector/pdata/pprofile v0.142.0 // indirect + go.opentelemetry.io/collector/pdata/testdata v0.142.0 // indirect + go.opentelemetry.io/collector/pdata/xpdata v0.142.0 // indirect + go.opentelemetry.io/collector/pipeline v1.48.0 // indirect + go.opentelemetry.io/collector/pipeline/xpipeline v0.142.0 // indirect + go.opentelemetry.io/collector/processor/processorhelper v0.142.0 // indirect + go.opentelemetry.io/collector/processor/processorhelper/xprocessorhelper v0.142.0 // indirect + go.opentelemetry.io/collector/processor/processortest v0.142.0 // indirect + go.opentelemetry.io/collector/processor/xprocessor v0.142.0 // indirect + go.opentelemetry.io/collector/receiver/receiverhelper v0.142.0 // indirect + go.opentelemetry.io/collector/receiver/receivertest v0.142.0 // indirect + go.opentelemetry.io/collector/receiver/xreceiver v0.142.0 // indirect go.opentelemetry.io/collector/semconv v0.128.1-0.20250610090210-188191247685 // indirect - go.opentelemetry.io/collector/service v0.136.0 // indirect - go.opentelemetry.io/collector/service/hostcapabilities v0.136.0 // indirect - go.opentelemetry.io/contrib/bridges/otelzap v0.12.0 // indirect - go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.62.0 // indirect - go.opentelemetry.io/contrib/instrumentation/net/http/httptrace/otelhttptrace v0.61.0 // indirect - go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.63.0 // indirect - go.opentelemetry.io/contrib/otelconf v0.16.0 // indirect - go.opentelemetry.io/contrib/propagators/b3 v1.37.0 // indirect - go.opentelemetry.io/otel v1.38.0 // indirect - go.opentelemetry.io/otel/exporters/otlp/otlplog/otlploggrpc v0.13.0 // indirect - go.opentelemetry.io/otel/exporters/otlp/otlplog/otlploghttp v0.13.0 // indirect - go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetricgrpc v1.37.0 // indirect - go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetrichttp v1.37.0 // indirect - go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.37.0 // indirect - go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.37.0 // indirect - go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp v1.37.0 // indirect + go.opentelemetry.io/collector/service/hostcapabilities v0.142.0 // indirect + go.opentelemetry.io/contrib/bridges/otelzap v0.13.0 // indirect + go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.63.0 // indirect + go.opentelemetry.io/contrib/instrumentation/net/http/httptrace/otelhttptrace v0.63.0 // indirect + go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.64.0 // indirect + go.opentelemetry.io/contrib/otelconf v0.18.0 // indirect + go.opentelemetry.io/contrib/propagators/b3 v1.38.0 // indirect + go.opentelemetry.io/otel v1.39.0 // indirect + go.opentelemetry.io/otel/exporters/otlp/otlplog/otlploggrpc v0.14.0 // indirect + go.opentelemetry.io/otel/exporters/otlp/otlplog/otlploghttp v0.14.0 // indirect + go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetricgrpc v1.38.0 // indirect + go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetrichttp v1.38.0 // indirect + go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.38.0 // indirect + go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.38.0 // indirect + go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp v1.38.0 // indirect go.opentelemetry.io/otel/exporters/prometheus v0.60.0 // indirect - go.opentelemetry.io/otel/exporters/stdout/stdoutlog v0.13.0 // indirect - go.opentelemetry.io/otel/exporters/stdout/stdoutmetric v1.37.0 // indirect - go.opentelemetry.io/otel/exporters/stdout/stdouttrace v1.37.0 // indirect - go.opentelemetry.io/otel/log v0.14.0 // indirect - go.opentelemetry.io/otel/metric v1.38.0 // indirect - go.opentelemetry.io/otel/sdk v1.38.0 // indirect - go.opentelemetry.io/otel/sdk/log v0.13.0 // indirect - go.opentelemetry.io/otel/sdk/metric v1.38.0 // indirect - go.opentelemetry.io/otel/trace v1.38.0 // indirect - go.opentelemetry.io/proto/otlp v1.7.0 // indirect + go.opentelemetry.io/otel/exporters/stdout/stdoutlog v0.14.0 // indirect + go.opentelemetry.io/otel/exporters/stdout/stdoutmetric v1.38.0 // indirect + go.opentelemetry.io/otel/exporters/stdout/stdouttrace v1.38.0 // indirect + go.opentelemetry.io/otel/log v0.15.0 // indirect + go.opentelemetry.io/otel/metric v1.39.0 // indirect + go.opentelemetry.io/otel/sdk v1.39.0 // indirect + go.opentelemetry.io/otel/sdk/log v0.14.0 // indirect + go.opentelemetry.io/otel/sdk/metric v1.39.0 // indirect + go.opentelemetry.io/otel/trace v1.39.0 // indirect + go.opentelemetry.io/proto/otlp v1.7.1 // indirect go.uber.org/atomic v1.11.0 // indirect go.uber.org/goleak v1.3.0 // indirect go.uber.org/multierr v1.11.0 // indirect - go.uber.org/zap v1.27.0 // indirect + go.uber.org/zap v1.27.1 // indirect go.uber.org/zap/exp v0.3.0 // indirect - go.yaml.in/yaml/v2 v2.4.2 // indirect + go.yaml.in/yaml/v2 v2.4.3 // indirect go.yaml.in/yaml/v3 v3.0.4 // indirect - golang.org/x/crypto v0.42.0 // indirect - golang.org/x/exp v0.0.0-20250106191152-7588d65b2ba8 // indirect - golang.org/x/mod v0.27.0 // indirect - golang.org/x/net v0.44.0 // indirect - golang.org/x/oauth2 v0.30.0 // indirect - golang.org/x/sync v0.17.0 // indirect - golang.org/x/sys v0.36.0 // indirect - golang.org/x/term v0.35.0 // indirect - golang.org/x/text v0.29.0 // indirect - golang.org/x/time v0.12.0 // indirect - golang.org/x/tools v0.36.0 // indirect + golang.org/x/crypto v0.46.0 // indirect + golang.org/x/exp v0.0.0-20250808145144-a408d31f581a // indirect + golang.org/x/mod v0.30.0 // indirect + golang.org/x/net v0.48.0 // indirect + golang.org/x/oauth2 v0.32.0 // indirect + golang.org/x/sync v0.19.0 // indirect + golang.org/x/sys v0.39.0 // indirect + golang.org/x/term v0.38.0 // indirect + golang.org/x/text v0.32.0 // indirect + golang.org/x/time v0.13.0 // indirect + golang.org/x/tools v0.39.0 // indirect gonum.org/v1/gonum v0.16.0 // indirect - google.golang.org/api v0.239.0 // indirect - google.golang.org/genproto/googleapis/api v0.0.0-20250707201910-8d1bb00bc6a7 // indirect - google.golang.org/genproto/googleapis/rpc v0.0.0-20250707201910-8d1bb00bc6a7 // indirect - google.golang.org/grpc v1.75.1 // indirect - google.golang.org/protobuf v1.36.9 // indirect + google.golang.org/api v0.252.0 // indirect + google.golang.org/genproto/googleapis/api v0.0.0-20251022142026-3a174f9686a8 // indirect + google.golang.org/genproto/googleapis/rpc v0.0.0-20251022142026-3a174f9686a8 // indirect + google.golang.org/grpc v1.77.0 // indirect + google.golang.org/protobuf v1.36.10 // indirect gopkg.in/evanphx/json-patch.v4 v4.12.0 // indirect gopkg.in/inf.v0 v0.9.1 // indirect gopkg.in/ini.v1 v1.67.0 // indirect gopkg.in/yaml.v2 v2.4.0 // indirect gopkg.in/yaml.v3 v3.0.1 // indirect - k8s.io/api v0.32.3 // indirect - k8s.io/apimachinery v0.32.3 // indirect - k8s.io/client-go v0.32.3 // indirect + k8s.io/api v0.34.1 // indirect + k8s.io/apimachinery v0.34.1 // indirect + k8s.io/client-go v0.34.1 // indirect k8s.io/klog/v2 v2.130.1 // indirect - k8s.io/kube-openapi v0.0.0-20241105132330-32ad38e42d3f // indirect - k8s.io/utils v0.0.0-20241104100929-3ea5e8cea738 // indirect - sigs.k8s.io/json v0.0.0-20241010143419-9aa6b5e7a4b3 // indirect - sigs.k8s.io/structured-merge-diff/v4 v4.4.2 // indirect - sigs.k8s.io/yaml v1.5.0 // indirect + k8s.io/kube-openapi v0.0.0-20250710124328-f3f2b991d03b // indirect + k8s.io/utils v0.0.0-20250604170112-4c0f3b243397 // indirect + sigs.k8s.io/json v0.0.0-20241014173422-cfa47c3a1cc8 // indirect + sigs.k8s.io/randfill v1.0.0 // indirect + sigs.k8s.io/structured-merge-diff/v6 v6.3.0 // indirect + sigs.k8s.io/yaml v1.6.0 // indirect ) replace github.com/open-telemetry/opentelemetry-collector-contrib/receiver/prometheusreceiver => ../prometheusreceiver diff --git a/otelcollector/opentelemetry-collector-builder/go.sum b/otelcollector/opentelemetry-collector-builder/go.sum index 1afabbc83..e6643144a 100644 --- a/otelcollector/opentelemetry-collector-builder/go.sum +++ b/otelcollector/opentelemetry-collector-builder/go.sum @@ -1,19 +1,19 @@ -cloud.google.com/go/auth v0.16.2 h1:QvBAGFPLrDeoiNjyfVunhQ10HKNYuOwZ5noee0M5df4= -cloud.google.com/go/auth v0.16.2/go.mod h1:sRBas2Y1fB1vZTdurouM0AzuYQBMZinrUYL8EufhtEA= +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/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.7.0 h1:PBWF+iiAerVNe8UCHxdOt6eHLVc3ydFeOCw78U8ytSU= -cloud.google.com/go/compute/metadata v0.7.0/go.mod h1:j5MvL9PprKL39t166CoB1uVHfQMs4tFQZZcKwksXUjo= -dario.cat/mergo v1.0.1 h1:Ra4+bf83h2ztPIQYNP99R6m+Y7KfnARDfID+a+vLl4s= -dario.cat/mergo v1.0.1/go.mod h1:uNxQE+84aUszobStD9th8a29P2fMDhsBdgRYvZOxGmk= -github.com/Azure/azure-sdk-for-go/sdk/azcore v1.18.0 h1:Gt0j3wceWMwPmiazCa8MzMA0MfhmPIz0Qp0FJ6qcM0U= -github.com/Azure/azure-sdk-for-go/sdk/azcore v1.18.0/go.mod h1:Ot/6aikWnKWi4l9QB7qVSwa8iMphQNqkWALMoNT3rzM= -github.com/Azure/azure-sdk-for-go/sdk/azidentity v1.10.1 h1:B+blDbyVIG3WaikNxPnhPiJ1MThR03b3vKGtER95TP4= -github.com/Azure/azure-sdk-for-go/sdk/azidentity v1.10.1/go.mod h1:JdM5psgjfBf5fo2uWOZhflPWyDBZ/O/CNAH9CtsuZE4= +cloud.google.com/go/compute/metadata v0.9.0 h1:pDUj4QMoPejqq20dK0Pg2N4yG9zIkYGdBtwLoEkH9Zs= +cloud.google.com/go/compute/metadata v0.9.0/go.mod h1:E0bWwX5wTnLPedCKqk3pJmVgCBSM6qQI1yTBdEb3C10= +dario.cat/mergo v1.0.2 h1:85+piFYR1tMbRrLcDwR18y4UKJ3aH1Tbzi24VRW1TK8= +dario.cat/mergo v1.0.2/go.mod h1:E/hbnu0NxMFBjpMIE34DRGLWqDy0g5FuKDhCb31ngxA= +github.com/Azure/azure-sdk-for-go/sdk/azcore v1.19.1 h1:5YTBM8QDVIBN3sxBil89WfdAAqDZbyJTgh688DSxX5w= +github.com/Azure/azure-sdk-for-go/sdk/azcore v1.19.1/go.mod h1:YD5h/ldMsG0XiIw7PdyNhLxaM317eFh5yNLccNfGdyw= +github.com/Azure/azure-sdk-for-go/sdk/azidentity v1.12.0 h1:wL5IEG5zb7BVv1Kv0Xm92orq+5hB5Nipn3B5tn4Rqfk= +github.com/Azure/azure-sdk-for-go/sdk/azidentity v1.12.0/go.mod h1:J7MUC/wtRpfGVbQ5sIItY5/FuVWmvzlY21WAOfQnq/I= github.com/Azure/azure-sdk-for-go/sdk/azidentity/cache v0.3.2 h1:yz1bePFlP5Vws5+8ez6T3HWXPmwOK7Yvq8QxDBD3SKY= github.com/Azure/azure-sdk-for-go/sdk/azidentity/cache v0.3.2/go.mod h1:Pa9ZNPuoNu/GztvBSKk9J1cDJW6vk/n0zLtV4mgd8N8= -github.com/Azure/azure-sdk-for-go/sdk/internal v1.11.1 h1:FPKJS1T+clwv+OLGt13a8UjqeRuh0O4SJ3lUriThc+4= -github.com/Azure/azure-sdk-for-go/sdk/internal v1.11.1/go.mod h1:j2chePtV91HrC22tGoRX3sGY42uF13WzmmV80/OdVAA= +github.com/Azure/azure-sdk-for-go/sdk/internal v1.11.2 h1:9iefClla7iYpfYWdzPCRDozdmndjTm8DXdpCzPajMgA= +github.com/Azure/azure-sdk-for-go/sdk/internal v1.11.2/go.mod h1:XtLgD3ZD34DAaVIIAyG3objl5DynM3CQ/vMcbBNJZGI= github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/compute/armcompute/v5 v5.7.0 h1:LkHbJbgF3YyvC53aqYGR+wWQDn2Rdp9AQdGndf9QvY4= github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/compute/armcompute/v5 v5.7.0/go.mod h1:QyiQdW4f4/BIfB8ZutZ2s+28RAgfa/pT+zS++ZHyM1I= github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/internal/v2 v2.0.0 h1:PTFGRSlMKCQelWwxUyYVEUqseBJVemLyqWJjvMyt0do= @@ -26,8 +26,8 @@ github.com/Azure/go-ansiterm v0.0.0-20250102033503-faa5f7b0171c h1:udKWzYgxTojEK github.com/Azure/go-ansiterm v0.0.0-20250102033503-faa5f7b0171c/go.mod h1:xomTg63KZ2rFqZQzSB4Vz2SUXa1BpHTVz9L5PTmPC4E= github.com/AzureAD/microsoft-authentication-extensions-for-go/cache v0.1.1 h1:WJTmL004Abzc5wDB5VtZG2PJk5ndYDgVacGqfirKxjM= github.com/AzureAD/microsoft-authentication-extensions-for-go/cache v0.1.1/go.mod h1:tCcJZ0uHAmvjsVYzEFivsRTN00oz5BEsRgQHu5JZ9WE= -github.com/AzureAD/microsoft-authentication-library-for-go v1.4.2 h1:oygO0locgZJe7PpYPXT5A29ZkwJaPqcva7BVeemZOZs= -github.com/AzureAD/microsoft-authentication-library-for-go v1.4.2/go.mod h1:wP83P5OoQ5p6ip3ScPr0BAq0BvuPAvacpEuSzyouqAI= +github.com/AzureAD/microsoft-authentication-library-for-go v1.5.0 h1:XkkQbfMyuH2jTSjQjSoihryI8GINRcs4xp8lNawg0FI= +github.com/AzureAD/microsoft-authentication-library-for-go v1.5.0/go.mod h1:HKpQxkWaGLJ+D/5H8QRpyQXA1eKjxkFlOMwck5+33Jk= github.com/Code-Hex/go-generics-cache v1.5.1 h1:6vhZGc5M7Y/YD8cIUcY8kcuQLB4cHR7U+0KMqAA0KcU= github.com/Code-Hex/go-generics-cache v1.5.1/go.mod h1:qxcC9kRVrct9rHeiYpFWSoW1vxyillCVzX13KZG8dl4= github.com/DataDog/datadog-go v3.2.0+incompatible/go.mod h1:LButxg5PwREeZtORoXG3tL4fMGNddJ+vMq1mwgfaqoQ= @@ -45,9 +45,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.4.4 h1:mxMEkdYP3pjKSftxss4nUHfjBhnMk4imGoR96FRY2dg= -github.com/antchfx/xmlquery v1.4.4/go.mod h1:AEPEEPYE9GnA2mj5Ur2L5Q5/2PycJ0N9Fusrx9b12fc= -github.com/antchfx/xpath v1.3.3/go.mod h1:i54GszH55fYfBmoZXapTHN8T8tkcHfRgLyVwwqzXNcs= +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 h1:PqbXLC3TkfeZyakF5eeh3NTWEbYl4VHNVeufANzDbKQ= github.com/antchfx/xpath v1.3.5/go.mod h1:i54GszH55fYfBmoZXapTHN8T8tkcHfRgLyVwwqzXNcs= github.com/armon/circbuf v0.0.0-20150827004946-bbbad097214e/go.mod h1:3U/XgcO3hCbHZ8TKRvWD2dDTCfh9M9ya+I9JpbB7O8o= @@ -58,36 +57,38 @@ github.com/armon/go-radix v0.0.0-20180808171621-7fddfc383310/go.mod h1:ufUuZ+zHj github.com/armon/go-radix v1.0.0/go.mod h1:ufUuZ+zHj4x4TnLV4JWEpy2hxWSpsRywHrMgIH9cCH8= github.com/asaskevich/govalidator v0.0.0-20230301143203-a9d515a09cc2 h1:DklsrG3dyBCFEj5IhUbnKptjxatkF07cF2ak3yi77so= github.com/asaskevich/govalidator v0.0.0-20230301143203-a9d515a09cc2/go.mod h1:WaHUgvxTVq04UNunO+XhnAqY/wQc+bxr74GqbsZ/Jqw= -github.com/aws/aws-sdk-go-v2 v1.37.0 h1:YtCOESR/pN4j5oA7cVHSfOwIcuh/KwHC4DOSXFbv5F0= -github.com/aws/aws-sdk-go-v2 v1.37.0/go.mod h1:9Q0OoGQoboYIAJyslFyF1f5K1Ryddop8gqMhWx/n4Wg= -github.com/aws/aws-sdk-go-v2/config v1.29.14 h1:f+eEi/2cKCg9pqKBoAIwRGzVb70MRKqWX4dg1BDcSJM= -github.com/aws/aws-sdk-go-v2/config v1.29.14/go.mod h1:wVPHWcIFv3WO89w0rE10gzf17ZYy+UVS1Geq8Iei34g= -github.com/aws/aws-sdk-go-v2/credentials v1.17.67 h1:9KxtdcIA/5xPNQyZRgUSpYOE6j9Bc4+D7nZua0KGYOM= -github.com/aws/aws-sdk-go-v2/credentials v1.17.67/go.mod h1:p3C44m+cfnbv763s52gCqrjaqyPikj9Sg47kUVaNZQQ= -github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.16.30 h1:x793wxmUWVDhshP8WW2mlnXuFrO4cOd3HLBroh1paFw= -github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.16.30/go.mod h1:Jpne2tDnYiFascUEs2AWHJL9Yp7A5ZVy3TNyxaAjD6M= -github.com/aws/aws-sdk-go-v2/internal/configsources v1.4.0 h1:H2iZoqW/v2Jnrh1FnU725Bq6KJ0k2uP63yH+DcY+HUI= -github.com/aws/aws-sdk-go-v2/internal/configsources v1.4.0/go.mod h1:L0FqLbwMXHvNC/7crWV1iIxUlOKYZUE8KuTIA+TozAI= -github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.7.0 h1:EDped/rNzAhFPhVY0sDGbtD16OKqksfA8OjF/kLEgw8= -github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.7.0/go.mod h1:uUI335jvzpZRPpjYx6ODc/wg1qH+NnoSTK/FwVeK0C0= -github.com/aws/aws-sdk-go-v2/internal/ini v1.8.3 h1:bIqFDwgGXXN1Kpp99pDOdKMTTb5d2KyU5X/BZxjOkRo= -github.com/aws/aws-sdk-go-v2/internal/ini v1.8.3/go.mod h1:H5O/EsxDWyU+LP/V8i5sm8cxoZgc2fdNR9bxlOFrQTo= -github.com/aws/aws-sdk-go-v2/service/ec2 v1.237.0 h1:XHE2G+yaDQql32FZt19QmQt4WuisqQJIkMUSCxeCUl8= -github.com/aws/aws-sdk-go-v2/service/ec2 v1.237.0/go.mod h1:t11/j/nH9i6bbsPH9xc04BJOsV2nVPUqrB67/TLDsyM= -github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding v1.13.0 h1:6+lZi2JeGKtCraAj1rpoZfKqnQ9SptseRZioejfUOLM= -github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding v1.13.0/go.mod h1:eb3gfbVIxIoGgJsi9pGne19dhCBpK6opTYpQqAmdy44= -github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.13.0 h1:eRhU3Sh8dGbaniI6B+I48XJMrTPRkK4DKo+vqIxziOU= -github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.13.0/go.mod h1:paNLV18DZ6FnWE/bd06RIKPDIFpjuvCkGKWTG/GDBeM= -github.com/aws/aws-sdk-go-v2/service/lightsail v1.44.0 h1:QiiCqpKy0prxq+92uWfESzcb7/8Y9JAamcMOzVYLEoM= -github.com/aws/aws-sdk-go-v2/service/lightsail v1.44.0/go.mod h1:ESppxYqXQCpCY+KWl3BdkQjmsQX6zxKP39SnDtRDoU0= -github.com/aws/aws-sdk-go-v2/service/sso v1.25.3 h1:1Gw+9ajCV1jogloEv1RRnvfRFia2cL6c9cuKV2Ps+G8= -github.com/aws/aws-sdk-go-v2/service/sso v1.25.3/go.mod h1:qs4a9T5EMLl/Cajiw2TcbNt2UNo/Hqlyp+GiuG4CFDI= -github.com/aws/aws-sdk-go-v2/service/ssooidc v1.30.1 h1:hXmVKytPfTy5axZ+fYbR5d0cFmC3JvwLm5kM83luako= -github.com/aws/aws-sdk-go-v2/service/ssooidc v1.30.1/go.mod h1:MlYRNmYu/fGPoxBQVvBYr9nyr948aY/WLUvwBMBJubs= -github.com/aws/aws-sdk-go-v2/service/sts v1.33.19 h1:1XuUZ8mYJw9B6lzAkXhqHlJd/XvaX32evhproijJEZY= -github.com/aws/aws-sdk-go-v2/service/sts v1.33.19/go.mod h1:cQnB8CUnxbMU82JvlqjKR2HBOm3fe9pWorWBza6MBJ4= -github.com/aws/smithy-go v1.22.5 h1:P9ATCXPMb2mPjYBgueqJNCA5S9UfktsW0tTxi+a7eqw= -github.com/aws/smithy-go v1.22.5/go.mod h1:t1ufH5HMublsJYulve2RKmHDC15xu1f26kHCp/HgceI= +github.com/aws/aws-sdk-go-v2 v1.39.6 h1:2JrPCVgWJm7bm83BDwY5z8ietmeJUbh3O2ACnn+Xsqk= +github.com/aws/aws-sdk-go-v2 v1.39.6/go.mod h1:c9pm7VwuW0UPxAEYGyTmyurVcNrbF6Rt/wixFqDhcjE= +github.com/aws/aws-sdk-go-v2/config v1.31.17 h1:QFl8lL6RgakNK86vusim14P2k8BFSxjvUkcWLDjgz9Y= +github.com/aws/aws-sdk-go-v2/config v1.31.17/go.mod h1:V8P7ILjp/Uef/aX8TjGk6OHZN6IKPM5YW6S78QnRD5c= +github.com/aws/aws-sdk-go-v2/credentials v1.18.21 h1:56HGpsgnmD+2/KpG0ikvvR8+3v3COCwaF4r+oWwOeNA= +github.com/aws/aws-sdk-go-v2/credentials v1.18.21/go.mod h1:3YELwedmQbw7cXNaII2Wywd+YY58AmLPwX4LzARgmmA= +github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.18.13 h1:T1brd5dR3/fzNFAQch/iBKeX07/ffu/cLu+q+RuzEWk= +github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.18.13/go.mod h1:Peg/GBAQ6JDt+RoBf4meB1wylmAipb7Kg2ZFakZTlwk= +github.com/aws/aws-sdk-go-v2/internal/configsources v1.4.13 h1:a+8/MLcWlIxo1lF9xaGt3J/u3yOZx+CdSveSNwjhD40= +github.com/aws/aws-sdk-go-v2/internal/configsources v1.4.13/go.mod h1:oGnKwIYZ4XttyU2JWxFrwvhF6YKiK/9/wmE3v3Iu9K8= +github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.7.13 h1:HBSI2kDkMdWz4ZM7FjwE7e/pWDEZ+nR95x8Ztet1ooY= +github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.7.13/go.mod h1:YE94ZoDArI7awZqJzBAZ3PDD2zSfuP7w6P2knOzIn8M= +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.262.0 h1:5qBb1XV/D18qtCHd3bmmxoVglI+fZ4QWuS/EB8kIXYQ= +github.com/aws/aws-sdk-go-v2/service/ec2 v1.262.0/go.mod h1:NDdDLLW5PtLLXN661gKcvJvqAH5OBXsfhMlmKVu1/pY= +github.com/aws/aws-sdk-go-v2/service/ecs v1.67.2 h1:oeICOX/+D0XXV1aMYJPXVe3CO37zYr7fB6HFgxchleU= +github.com/aws/aws-sdk-go-v2/service/ecs v1.67.2/go.mod h1:rrhqfkXfa2DSNq0RyFhnnFEAyI+yJB4+2QlZKeJvMjs= +github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding v1.13.3 h1:x2Ibm/Af8Fi+BH+Hsn9TXGdT+hKbDd5XOTZxTMxDk7o= +github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding v1.13.3/go.mod h1:IW1jwyrQgMdhisceG8fQLmQIydcT/jWY21rFhzgaKwo= +github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.13.13 h1:kDqdFvMY4AtKoACfzIGD8A0+hbT41KTKF//gq7jITfM= +github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.13.13/go.mod h1:lmKuogqSU3HzQCwZ9ZtcqOc5XGMqtDK7OIc2+DxiUEg= +github.com/aws/aws-sdk-go-v2/service/lightsail v1.50.4 h1:/1o2AYwHJojUDeMvQNyJiKZwcWCc3e4kQuTXqRLuThc= +github.com/aws/aws-sdk-go-v2/service/lightsail v1.50.4/go.mod h1:Nn2xx6HojGuNMtUFxxz/nyNLSS+tHMRsMhe3+W3wB5k= +github.com/aws/aws-sdk-go-v2/service/sso v1.30.1 h1:0JPwLz1J+5lEOfy/g0SURC9cxhbQ1lIMHMa+AHZSzz0= +github.com/aws/aws-sdk-go-v2/service/sso v1.30.1/go.mod h1:fKvyjJcz63iL/ftA6RaM8sRCtN4r4zl4tjL3qw5ec7k= +github.com/aws/aws-sdk-go-v2/service/ssooidc v1.35.5 h1:OWs0/j2UYR5LOGi88sD5/lhN6TDLG6SfA7CqsQO9zF0= +github.com/aws/aws-sdk-go-v2/service/ssooidc v1.35.5/go.mod h1:klO+ejMvYsB4QATfEOIXk8WAEwN4N0aBfJpvC+5SZBo= +github.com/aws/aws-sdk-go-v2/service/sts v1.39.1 h1:mLlUgHn02ue8whiR4BmxxGJLR2gwU6s6ZzJ5wDamBUs= +github.com/aws/aws-sdk-go-v2/service/sts v1.39.1/go.mod h1:E19xDjpzPZC7LS2knI9E6BaRFDK43Eul7vd6rSq2HWk= +github.com/aws/smithy-go v1.23.2 h1:Crv0eatJUQhaManss33hS5r40CG3ZFH+21XSkqMrIUM= +github.com/aws/smithy-go v1.23.2/go.mod h1:LEj2LM3rBRQJxPZTB4KuzZkaZYnZPnvgIhb4pu07mx0= 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= @@ -104,8 +105,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/cncf/xds/go v0.0.0-20250501225837-2ac532fd4443 h1:aQ3y1lwWyqYPiWZThqv1aFbZMiM9vblcSArJRf2Irls= -github.com/cncf/xds/go v0.0.0-20250501225837-2ac532fd4443/go.mod h1:W+zGtBO5Y1IgJhy4+A9GOqVhqLpfZi+vwmdNXUehLA8= +github.com/cncf/xds/go v0.0.0-20251022180443-0feb69152e9f h1:Y8xYupdHxryycyPlc9Y+bSQAYZnetRJ70VMVKm5CKI0= +github.com/cncf/xds/go v0.0.0-20251022180443-0feb69152e9f/go.mod h1:HlzOvOjVBOfTGSRXRyY0OiCS/3J1akRGQQpRO/7zyF4= github.com/containerd/errdefs v1.0.0 h1:tg5yIfIlQIrxYtu9ajqY42W3lpS19XqdxRQeEwYG8PI= github.com/containerd/errdefs v1.0.0/go.mod h1:+YBYIdtsnF4Iw6nWZhJcqGSg/dwvV7tyJ/kCkyJ2k+M= github.com/containerd/errdefs/pkg v0.3.0 h1:9IKJ06FvyNlexW690DXuQNx2KA2cUJXx151Xdx3ZPPE= @@ -114,8 +115,8 @@ github.com/containerd/log v0.1.0 h1:TCJt7ioM2cr/tfR8GPbGf9/VRAX8D2B4PjzCpfX540I= github.com/containerd/log v0.1.0/go.mod h1:VRRf09a7mHDIRezVKTRCrOq78v577GXq3bSa3EhrzVo= github.com/containerd/platforms v0.2.1 h1:zvwtM3rz2YHPQsF2CHYM8+KtB5dvhISiXh5ZpSBQv6A= github.com/containerd/platforms v0.2.1/go.mod h1:XHCb+2/hzowdiut9rkudds9bE5yJ7npe7dG/wG+uFPw= -github.com/coreos/go-systemd/v22 v22.5.0 h1:RrqgGjYQKalulkV8NGVIfkXQf6YYmOyiJKk8iXXhfZs= -github.com/coreos/go-systemd/v22 v22.5.0/go.mod h1:Y58oyj3AT4RCenI/lSvhwexgC+NSVTIJ3seZv2GcEnc= +github.com/coreos/go-systemd/v22 v22.6.0 h1:aGVa/v8B7hpb0TKl0MWoAavPDmHvobFe5R5zn0bCJWo= +github.com/coreos/go-systemd/v22 v22.6.0/go.mod h1:iG+pp635Fo7ZmV/j14KUcmEyWF+0X7Lua8rrTWzYgWU= github.com/cpuguy83/dockercfg v0.3.2 h1:DlJTyZGBDlXqUZ2Dk2Q3xHs/FtnooJJVaad2S9GKorA= github.com/cpuguy83/dockercfg v0.3.2/go.mod h1:sugsbF4//dDlL/i+S+rtpIWp+5h0BHJHfjj5/jFyUJc= github.com/cpuguy83/go-md2man/v2 v2.0.6/go.mod h1:oOW0eioCTA6cOiMLiUPZOpcVxMig6NIQQ7OS05n1F4g= @@ -125,32 +126,30 @@ 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/dgryski/go-rendezvous v0.0.0-20200823014737-9f7001d12a5f h1:lO4WD4F/rVNCu3HqELle0jiPLLBs70cWOduZpkS1E78= -github.com/dgryski/go-rendezvous v0.0.0-20200823014737-9f7001d12a5f/go.mod h1:cuUVRXasLTGF7a8hSLbxyZXjz+1KgoB3wDUb6vlszIc= -github.com/digitalocean/godo v1.157.0 h1:ReELaS6FxXNf8gryUiVH0wmyUmZN8/NCmBX4gXd3F0o= -github.com/digitalocean/godo v1.157.0/go.mod h1:tYeiWY5ZXVpU48YaFv0M5irUFHXGorZpDNm7zzdWMzM= +github.com/digitalocean/godo v1.168.0 h1:mlORtUcPD91LQeJoznrH3XvfvgK3t8Wvrpph9giUT/Q= +github.com/digitalocean/godo v1.168.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.3.3+incompatible h1:Dypm25kh4rmk49v1eiVbsAtpAsYURjYkaKubwuBdxEI= -github.com/docker/docker v28.3.3+incompatible/go.mod h1:eEKB0N0r5NX/I1kEveEz05bcu8tLC/8azJZsviup8Sk= +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.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/ebitengine/purego v0.8.4 h1:CF7LEKg5FFOsASUj0+QwaXf8Ht6TlFxg09+S9wz0omw= -github.com/ebitengine/purego v0.8.4/go.mod h1:iIjxzd6CiRiOG0UyXP+V1+jWqUXVjPKLAI0mRfJZTmQ= +github.com/ebitengine/purego v0.9.1 h1:a/k2f2HQU3Pi399RPW1MOaZyhKJL9w/xFpKAg4q1s0A= +github.com/ebitengine/purego v0.9.1/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/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.1.0 h1:amRtLPjwkWtzDF/RKzcEPMvSsSseLDLW+bnhfNSLRe4= -github.com/elastic/lunes v0.1.0/go.mod h1:xGphYIt3XdZRtyWosHQTErsQTd4OP1p9wsbVoHelrd4= -github.com/emicklei/go-restful/v3 v3.11.0 h1:rAQeMHw1c7zTmncogyy8VvRZwtkmkZ4FxERmMY4rD+g= -github.com/emicklei/go-restful/v3 v3.11.0/go.mod h1:6n3XBCmQQb25CM2LCACGz8ukIrRry+4bhvbpWn3mrbc= -github.com/envoyproxy/go-control-plane/envoy v1.32.4 h1:jb83lalDRZSpPWW2Z7Mck/8kXZ5CQAFYVjQcdVIr83A= -github.com/envoyproxy/go-control-plane/envoy v1.32.4/go.mod h1:Gzjc5k8JcJswLjAx1Zm+wSYE20UrLtt7JZMWiWQXQEw= +github.com/elastic/lunes v0.2.0 h1:WI3bsdOTuaYXVe2DS1KbqA7u7FOHN4o8qJw80ZyZoQs= +github.com/elastic/lunes v0.2.0/go.mod h1:u3W/BdONWTrh0JjNZ21C907dDc+cUZttZrGa625nf2k= +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.35.0 h1:ixjkELDE+ru6idPxcHLj8LBVc2bFP7iBytj353BoHUo= +github.com/envoyproxy/go-control-plane/envoy v1.35.0/go.mod h1:09qwbGVuSWWAyN5t/b3iyVfz5+z8QWGrzkoqm/8SbEs= github.com/envoyproxy/protoc-gen-validate v1.2.1 h1:DEo3O99U8j4hBFwbJfrz9VtgcDfUKS7KJ7spH3d86P8= github.com/envoyproxy/protoc-gen-validate v1.2.1/go.mod h1:d/C80l/jxXLdfEIhX1W2TmLfsJ31lvEjwamM4DxlWXU= github.com/expr-lang/expr v1.17.6 h1:1h6i8ONk9cexhDmowO/A64VPxHScu7qfSl2k8OlINec= @@ -170,8 +169,8 @@ github.com/foxboron/swtpm_test v0.0.0-20230726224112-46aaafdf7006 h1:50sW4r0Pcvl github.com/foxboron/swtpm_test v0.0.0-20230726224112-46aaafdf7006/go.mod h1:eIXCMsMYCaqq9m1KSSxXwQG11krpuNPGP3k0uaWrbas= github.com/fsnotify/fsnotify v1.9.0 h1:2Ml+OJNzbYCTzsxtv8vKSFD9PbJjmhYF14k/jKC7S9k= github.com/fsnotify/fsnotify v1.9.0/go.mod h1:8jBTzvmWwFyi3Pb8djgCCO5IBqzKJ/Jwo8TRcHyHii0= -github.com/fxamacker/cbor/v2 v2.7.0 h1:iM5WgngdRBanHcxugY4JySA0nk1wZorNOpTgCMedv5E= -github.com/fxamacker/cbor/v2 v2.7.0/go.mod h1:pxXPTn3joSm21Gbwsv0w9OSA2y1HFR9qXEeXQVeNoDQ= +github.com/fxamacker/cbor/v2 v2.9.0 h1:NpKPmjDBgUfBms6tr6JZkTHtfFGcMKsw3eGcmD/sapM= +github.com/fxamacker/cbor/v2 v2.9.0/go.mod h1:vM4b+DJCtHn+zz7h3FFp/hDAI9WNWCsZj23V5ytsSxQ= github.com/go-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= @@ -189,8 +188,8 @@ github.com/go-ole/go-ole v1.2.6 h1:/Fpf6oFPoeFik9ty7siob0G6Ke8QvQEuVcuChpwXzpY= github.com/go-ole/go-ole v1.2.6/go.mod h1:pprOEPIfldk/42T2oK7lQ4v4JSDwmV0As9GaiUsvbm0= github.com/go-openapi/analysis v0.23.0 h1:aGday7OWupfMs+LbmLZG4k0MYXIANxcuBTYUC03zFCU= github.com/go-openapi/analysis v0.23.0/go.mod h1:9mz9ZWaSlV8TvjQHLl2mUW2PbZtemkE8yA5v22ohupo= -github.com/go-openapi/errors v0.22.0 h1:c4xY/OLxUBSTiepAg3j/MHuAv5mJhnf53LLMWFB+u/w= -github.com/go-openapi/errors v0.22.0/go.mod h1:J3DmZScxCDufmIMsdOuDHxJbdOGC0xtUynjIx092vXE= +github.com/go-openapi/errors v0.22.3 h1:k6Hxa5Jg1TUyZnOwV2Lh81j8ayNw5VVYLvKrp4zFKFs= +github.com/go-openapi/errors v0.22.3/go.mod h1:+WvbaBBULWCOna//9B9TbLNGSFOfF8lY9dw4hGiEiKQ= github.com/go-openapi/jsonpointer v0.21.0 h1:YgdVicSA9vH5RiHs9TZW5oyafXZFc6+2Vc1rr/O9oNQ= github.com/go-openapi/jsonpointer v0.21.0/go.mod h1:IUyH9l/+uyhIYQ/PXVA41Rexl+kOkAPDdXEYns6fzUY= github.com/go-openapi/jsonreference v0.21.0 h1:Rs+Y7hSXT83Jacb7kFyjn4ijOuVGSvOdF2+tg1TRrwQ= @@ -199,8 +198,8 @@ github.com/go-openapi/loads v0.22.0 h1:ECPGd4jX1U6NApCGG1We+uEozOAvXvJSF4nnwHZ8A github.com/go-openapi/loads v0.22.0/go.mod h1:yLsaTCS92mnSAZX5WWoxszLj0u+Ojl+Zs5Stn1oF+rs= github.com/go-openapi/spec v0.21.0 h1:LTVzPc3p/RzRnkQqLRndbAzjY0d0BCL72A6j3CdL9ZY= github.com/go-openapi/spec v0.21.0/go.mod h1:78u6VdPw81XU44qEWGhtr982gJ5BWg2c0I5XwVMotYk= -github.com/go-openapi/strfmt v0.23.0 h1:nlUS6BCqcnAk0pyhi9Y+kdDVZdZMHfEKQiS4HaMgO/c= -github.com/go-openapi/strfmt v0.23.0/go.mod h1:NrtIpfKtWIygRkKVsxh7XQMDQW5HKQl6S5ik2elW+K4= +github.com/go-openapi/strfmt v0.24.0 h1:dDsopqbI3wrrlIzeXRbqMihRNnjzGC+ez4NQaAAJLuc= +github.com/go-openapi/strfmt v0.24.0/go.mod h1:Lnn1Bk9rZjXxU9VMADbEEOo7D7CDyKGLsSKekhFr7s4= github.com/go-openapi/swag v0.23.0 h1:vsEVJDUo2hPJ2tu0/Xc+4noaxyEffXNIs3cOULZ+GrE= github.com/go-openapi/swag v0.23.0/go.mod h1:esZ8ITTYEsH1V2trKHjAN8Ai7xHb8RV+YSZ577vPjgQ= github.com/go-openapi/validate v0.24.0 h1:LdfDKwNbpB6Vn40xhTdNZAnfLECL81w+VX3BumrGD58= @@ -218,14 +217,13 @@ github.com/gobwas/glob v0.2.3 h1:A4xDbljILXROh+kObIiy5kIaPYD8e96x1tgBhUI5J+Y= github.com/gobwas/glob v0.2.3/go.mod h1:d3Ez4x06l9bZtSvzIay5+Yzi0fmZzPgnTbPcKjJAkT8= github.com/goccy/go-json v0.10.5 h1:Fq85nIqj+gXn/S5ahsiTlK3TmC85qgirsdTP/+DeaC4= github.com/goccy/go-json v0.10.5/go.mod h1:oq7eo15ShAhp70Anwd5lgX2pLfOS3QCiwU/PULtXL6M= -github.com/goccy/go-yaml v1.18.0 h1:8W7wMFS12Pcas7KU+VVkaiCng+kG8QiFeFwzFb+rwuw= -github.com/goccy/go-yaml v1.18.0/go.mod h1:XBurs7gK8ATbW4ZPGKgcbrY1Br56PdM69F7LkFRi1kA= -github.com/godbus/dbus/v5 v5.0.4/go.mod h1:xhWf0FNVPg57R7Z0UbKHbJfkEywrmjJnf7w5xrFpKfA= +github.com/goccy/go-yaml v1.19.0 h1:EmkZ9RIsX+Uq4DYFowegAuJo8+xdX3T/2dwNPXbxEYE= +github.com/goccy/go-yaml v1.19.0/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.2.2 h1:Rl4B7itRWVtYIHFrSNd7vhTiz9UpLdi6gZhZ3wEeDy8= -github.com/golang-jwt/jwt/v5 v5.2.2/go.mod h1:pqrtFR0X4osieyHYxtmOUWsAWrfe1Q5UVIyoH402zdk= +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/groupcache v0.0.0-20210331224755-41bb18bfe9da h1:oI5xCqsCo564l8iNU+DwB5epxmsaqB+rhGL0m5jtYqE= github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= github.com/golang/protobuf v1.2.0/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= @@ -236,51 +234,48 @@ github.com/golang/protobuf v1.5.4/go.mod h1:lnTiLA8Wa4RWRcIUkrtSVa5nRhsEGBg48fD6 github.com/golang/snappy v1.0.0 h1:Oy607GVXHs7RtbggtPBnr2RmDArIsAefDwvrdWvRhGs= github.com/golang/snappy v1.0.0/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q= github.com/google/btree v0.0.0-20180813153112-4030bb1f1f0c/go.mod h1:lNA+9X1NB3Zf8V7Ke586lFgjr2dZNuvo3lPJSGZ5JPQ= -github.com/google/btree v1.0.1 h1:gK4Kx5IaGY9CD5sPJ36FHiBJ6ZXl0kilRiiCj+jdYp4= -github.com/google/btree v1.0.1/go.mod h1:xXMiIv4Fb/0kKde4SpL7qlzvu5cMJDRkFDxJfI9uaxA= -github.com/google/gnostic-models v0.6.8 h1:yo/ABAfM5IMRsS1VnXjTBvUb61tFIHozhlYvRgGre9I= -github.com/google/gnostic-models v0.6.8/go.mod h1:5n7qKqH0f5wFt+aWF8CW6pZLLNOfYuF5OpfBSENuI8U= +github.com/google/btree v1.1.3 h1:CVpQJjYgC4VbzxeGVHfvZrv1ctoYCAI8vbl07Fcxlyg= +github.com/google/btree v1.1.3/go.mod h1:qOPhT0dTNdNzV6Z/lhRX0YXUafgPLFUh+gZMl761Gm4= +github.com/google/gnostic-models v0.7.0 h1:qwTtogB15McXDaNqTZdzPJRHvaVJlAl+HVQnLmJEJxo= +github.com/google/gnostic-models v0.7.0/go.mod h1:whL5G0m6dmc5cPxKc5bdKdEN3UjI7OUGxBlw57miDrQ= github.com/google/go-cmp v0.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.5.6/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= -github.com/google/go-cmp v0.5.9/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY= 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-tpm v0.9.6 h1:Ku42PT4LmjDu1H5C5ISWLlpI1mj+Zq7sPGKoRw2XROA= -github.com/google/go-tpm v0.9.6/go.mod h1:h9jEsEECg7gtLis0upRBQU+GhYVH6jMjrFxI8u6bVUY= +github.com/google/go-tpm v0.9.7 h1:u89J4tUUeDTlH8xxC3CTW7OHZjbjKoHdQ9W7gCUhtxA= +github.com/google/go-tpm v0.9.7/go.mod h1:h9jEsEECg7gtLis0upRBQU+GhYVH6jMjrFxI8u6bVUY= github.com/google/go-tpm-tools v0.4.4 h1:oiQfAIkc6xTy9Fl5NKTeTJkBTlXdHsxAofmQyxBKY98= github.com/google/go-tpm-tools v0.4.4/go.mod h1:T8jXkp2s+eltnCDIsXR84/MTcVU9Ja7bh3Mit0pa4AY= 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-20250607225305-033d6d78b36a h1://KbezygeMJZCSHH+HgUZiTeSoiuFspbMg1ge+eFj18= -github.com/google/pprof v0.0.0-20250607225305-033d6d78b36a/go.mod h1:5hDyRhoBCxViHszMt12TnOpEI4VVi+U8Gm9iphldiMA= +github.com/google/pprof v0.0.0-20250923004556-9e5a51aed1e8 h1:ZI8gCoCjGzPsum4L21jHdQs8shFBIQih1TM9Rd/c+EQ= +github.com/google/pprof v0.0.0-20250923004556-9e5a51aed1e8/go.mod h1:I6V7YzU0XDpsHqbsyrghnFZLO1gwK6NPTNvmetQIk9U= 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.6 h1:GW/XbdyBFQ8Qe+YAmFU9uHLo7OnF5tL52HFAgMmyrf4= github.com/googleapis/enterprise-certificate-proxy v0.3.6/go.mod h1:MkHOF77EYAE7qfSuSS9PU6g4Nt4e11cnsDUowfwewLA= -github.com/googleapis/gax-go/v2 v2.14.2 h1:eBLnkZ9635krYIPD+ag1USrOAI0Nr0QYF3+/3GqO0k0= -github.com/googleapis/gax-go/v2 v2.14.2/go.mod h1:ON64QhlJkhVtSqp4v1uaK92VyZ2gmvDQsweuyLV+8+w= -github.com/gophercloud/gophercloud/v2 v2.7.0 h1:o0m4kgVcPgHlcXiWAjoVxGd8QCmvM5VU+YM71pFbn0E= -github.com/gophercloud/gophercloud/v2 v2.7.0/go.mod h1:Ki/ILhYZr/5EPebrPL9Ej+tUg4lqx71/YH2JWVeU+Qk= -github.com/gorilla/websocket v1.5.0 h1:PPwGk2jz7EePpoHN/+ClbZu8SPxiqlu12wZP/3sWmnc= -github.com/gorilla/websocket v1.5.0/go.mod h1:YR8l580nyteQvAITg2hZ9XVh4b55+EU/adAjf1fMHhE= -github.com/grafana/regexp v0.0.0-20240518133315-a468a5bfb3bc h1:GN2Lv3MGO7AS6PrRoT6yV5+wkrOpcszoIsO4+4ds248= -github.com/grafana/regexp v0.0.0-20240518133315-a468a5bfb3bc/go.mod h1:+JKpmjMGhpgPL+rXZ5nsZieVzvarn86asRlBg4uNGnk= -github.com/grpc-ecosystem/grpc-gateway/v2 v2.27.1 h1:X5VWvz21y3gzm9Nw/kaUeku/1+uBhcekkmy4IkffJww= -github.com/grpc-ecosystem/grpc-gateway/v2 v2.27.1/go.mod h1:Zanoh4+gvIgluNqcfMVTJueD4wSS5hT7zTt4Mrutd90= +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.8.0 h1:of2+8tT6+FbEYHfYC8GBu8TXJNsXYSNm9KuvpX7Neqo= +github.com/gophercloud/gophercloud/v2 v2.8.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= +github.com/grafana/regexp v0.0.0-20250905093917-f7b3be9d1853/go.mod h1:+JKpmjMGhpgPL+rXZ5nsZieVzvarn86asRlBg4uNGnk= +github.com/grpc-ecosystem/grpc-gateway/v2 v2.27.2 h1:8Tjv8EJ+pM1xP8mK6egEbD1OgnVTyacbefKhmbLhIhU= +github.com/grpc-ecosystem/grpc-gateway/v2 v2.27.2/go.mod h1:pkJQ2tZHJ0aFOVEEot6oZmaVEZcRme73eIFmhiVuRWs= github.com/hashicorp/consul/api v1.32.0 h1:5wp5u780Gri7c4OedGEPzmlUEzi0g2KyiPphSr6zjVg= github.com/hashicorp/consul/api v1.32.0/go.mod h1:Z8YgY0eVPukT/17ejW+l+C7zJmKwgPHtjU1q16v/Y40= github.com/hashicorp/consul/sdk v0.16.1 h1:V8TxTnImoPD5cj0U9Spl0TUxcytjcbbJeADFF07KdHg= github.com/hashicorp/consul/sdk v0.16.1/go.mod h1:fSXvwxB2hmh1FMZCNl6PwX0Q/1wdWtHJcZ7Ea5tns0s= -github.com/hashicorp/cronexpr v1.1.2 h1:wG/ZYIKT+RT3QkOdgYc+xsKWVRgnxJ1OJtjjy84fJ9A= -github.com/hashicorp/cronexpr v1.1.2/go.mod h1:P4wA0KBl9C5q2hABiMO7cp6jcIg96CDh1Efb3g1PWA4= +github.com/hashicorp/cronexpr v1.1.3 h1:rl5IkxXN2m681EfivTlccqIryzYJSXRGRNa0xeG7NA4= +github.com/hashicorp/cronexpr v1.1.3/go.mod h1:P4wA0KBl9C5q2hABiMO7cp6jcIg96CDh1Efb3g1PWA4= github.com/hashicorp/errwrap v1.0.0/go.mod h1:YH+1FKiLXxHSkmPseP+kNlulaMuP3n2brvKWEqk/Jc4= github.com/hashicorp/errwrap v1.1.0 h1:OxrOeh75EUXMY8TBjag2fzXGZ40LB6IKw45YeGUDY2I= github.com/hashicorp/errwrap v1.1.0/go.mod h1:YH+1FKiLXxHSkmPseP+kNlulaMuP3n2brvKWEqk/Jc4= @@ -314,8 +309,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.7.0 h1:5tqGy27NaOTB8yJKUZELlFAS/LTKJkrmONwQKeRZfjY= -github.com/hashicorp/go-version v1.7.0/go.mod h1:fltr4n8CU8Ke44wwGCBoEymUuxUHl09ZGVZPK5anwXA= +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/golang-lru v0.5.0/go.mod h1:/m3WP610KZHVQ1SGc6re/UDhFvYD7pJ4Ao+sR/qLZy8= github.com/hashicorp/golang-lru v0.5.4/go.mod h1:iADmTwqILo4mZ8BN3D2Q6+9jd8WM5uGBxy+E8yxSoD4= github.com/hashicorp/golang-lru v1.0.2 h1:dV3g9Z/unq5DpblPpw+Oqcv4dU/1omnb4Ok8iPY6p1c= @@ -327,12 +322,12 @@ 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.1 h1:mk5dRuzeDNis2bi6LLoQIXfMH7JQvAzt3mQD0vNZZUo= github.com/hashicorp/memberlist v0.5.1/go.mod h1:zGDXV6AqbDTKTM6yxW0I4+JtFzZAJVoIPvss4hV8F24= -github.com/hashicorp/nomad/api v0.0.0-20241218080744-e3ac00f30eec h1:+YBzb977VrmffaCX/OBm17dEVJUcWn5dW+eqs3aIJ/A= -github.com/hashicorp/nomad/api v0.0.0-20241218080744-e3ac00f30eec/go.mod h1:svtxn6QnrQ69P23VvIWMR34tg3vmwLz4UdUzm1dSCgE= +github.com/hashicorp/nomad/api v0.0.0-20250930071859-eaa0fe0e27af h1:ScAYf8O+9xTqTJPZH8MIlUfO+ak8cb31rW1aYJgS+jE= +github.com/hashicorp/nomad/api v0.0.0-20250930071859-eaa0fe0e27af/go.mod h1:sldFTIgs+FsUeKU3LwVjviAIuksxD8TzDOn02MYwslE= 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.21.1 h1:IH3liW8/cCRjfJ4cyqYvw3s1ek+KWP8dl1roa0lD8JM= -github.com/hetznercloud/hcloud-go/v2 v2.21.1/go.mod h1:XOaYycZJ3XKMVWzmqQ24/+1V7ormJHmPdck/kxrNnQA= +github.com/hetznercloud/hcloud-go/v2 v2.29.0 h1:LzNFw5XLBfftyu3WM1sdSLjOZBlWORtz2hgGydHaYV8= +github.com/hetznercloud/hcloud-go/v2 v2.29.0/go.mod h1:XBU4+EDH2KVqu2KU7Ws0+ciZcX4ygukQl/J0L5GS8P8= github.com/hexops/gotextdiff v1.0.3 h1:gitA9+qJrrTCsiCl7+kh75nPqQt1cx4ZkudSTLoUqJM= github.com/hexops/gotextdiff v1.0.3/go.mod h1:pSWU5MAI3yDq+fZBTazCSJysOMbxWL1BSow5/V2vxeg= github.com/iancoleman/strcase v0.3.0 h1:nTXanmYxhfFAMjZL34Ov6gkzEsSJZ5DbhxWjvSASxEI= @@ -341,8 +336,8 @@ github.com/inconshreveable/mousetrap v1.1.0 h1:wN+x4NVGpMsO7ErUn/mUI3vEoE6Jt13X2 github.com/inconshreveable/mousetrap v1.1.0/go.mod h1:vpF70FUmC8bwa3OWnCshd2FqLfsEA9PFc4w1p2J65bw= github.com/ionos-cloud/sdk-go/v6 v6.3.4 h1:jTvGl4LOF8v8OYoEIBNVwbFoqSGAFqn6vGE7sp7/BqQ= github.com/ionos-cloud/sdk-go/v6 v6.3.4/go.mod h1:wCVwNJ/21W29FWFUv+fNawOTMlFoP1dS3L+ZuztFW48= -github.com/jarcoal/httpmock v1.4.0 h1:BvhqnH0JAYbNudL2GMJKgOHe2CtKlzJ/5rWKyp+hc2k= -github.com/jarcoal/httpmock v1.4.0/go.mod h1:ftW1xULwo+j0R0JJkJIIi7UKigZUXCLLanykgjwBXL0= +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/josharian/intern v1.0.0 h1:vlS4z54oSdjm0bgjRigI+G1HpF+tI+9rE5LLzOg8HmY= github.com/josharian/intern v1.0.0/go.mod h1:5DoeVV0s6jJacbCEi61lwdGj/aVlrQvzHFFd8Hwg//Y= github.com/jpillora/backoff v1.0.0 h1:uvFg412JmmHBHw7iwprIxkPMI+sGQ4kzOWsMeHnm2EA= @@ -358,8 +353,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.0 h1:c/Cqfb0r+Yi+JtIEq73FWXVkRonBlf0CRNYc8Zttxdo= -github.com/klauspost/compress v1.18.0/go.mod h1:2Pp+KzxcywXVXMr50+X0Q/Lsb43OQHYWRCY2AiWywWQ= +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 h1:lgaqFMSdTdQYdZ04uHyN2d/eKdOMyi2YLSvlQIBFYa4= +github.com/klauspost/cpuid/v2 v2.0.9/go.mod h1:FInQzS24/EEf25PyTYn52gqo7WaD8xa0213Md/qVLRg= 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= @@ -379,8 +376,8 @@ github.com/kr/text v0.2.0 h1:5Nx0Ya0ZqY2ygV366QzturHI13Jq95ApcVaJBhpS+AY= github.com/kr/text v0.2.0/go.mod h1:eLer722TekiGuMkidMxC/pM04lWEeraHUUmBw8l2grE= github.com/kylelemons/godebug v1.1.0 h1:RPNrshWIDI6G2gRW9EHilWtl7Z6Sb1BR0xunSBf0SNc= github.com/kylelemons/godebug v1.1.0/go.mod h1:9/0rRGxNHcop5bhtWyNeEfOS8JIWk580+fNqagV/RAw= -github.com/linode/linodego v1.52.2 h1:N9ozU27To1LMSrDd8WvJZ5STSz1eGYdyLnxhAR/dIZg= -github.com/linode/linodego v1.52.2/go.mod h1:bI949fZaVchjWyKIA08hNyvAcV6BAS+PM2op3p7PAWA= +github.com/linode/linodego v1.60.0 h1:SgsebJFRCi+lSmYy+C40wmKZeJllGGm+W12Qw4+yVdI= +github.com/linode/linodego v1.60.0/go.mod h1:1+Bt0oTz5rBnDOJbGhccxn7LYVytXTIIfAy7QYmijDs= github.com/lufia/plan9stats v0.0.0-20211012122336-39d0f177ccd0 h1:6E+4a0GO5zZEnZ81pIr0yLvtUWk2if982qA3F3QD6H4= github.com/lufia/plan9stats v0.0.0-20211012122336-39d0f177ccd0/go.mod h1:zJYVVT2jmtg6P3p1VtQj7WsuWi/y4VnjVBn7F8KPB3I= github.com/magefile/mage v1.15.0 h1:BvGheCMAsG3bWUDbZ8AyXXpCNwU9u5CB6sM+HNb9HYg= @@ -413,15 +410,13 @@ github.com/mdlayher/vsock v1.2.1 h1:pC1mTJTvjo1r9n9fbm7S1j04rCgCzhCOS5DY0zqHlnQ= github.com/mdlayher/vsock v1.2.1/go.mod h1:NRfCibel++DgeMD8z/hP+PPTjlNJsdPOmxcnENvE+SE= 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.66 h1:FeZXOS3VCVsKnEAd+wBkjMC3D2K+ww66Cq3VnCINuJE= -github.com/miekg/dns v1.1.66/go.mod h1:jGFzBsSNbJw6z1HYut1RKBKHA9PBdxeHrZG8J+gC2WE= +github.com/miekg/dns v1.1.68 h1:jsSRkNozw7G/mnmXULynzMNIsgY2dHC8LO6U6Ij2JEA= +github.com/miekg/dns v1.1.68/go.mod h1:fujopn7TB3Pu3JM69XaawiU0wqjpL9/8xGop5UrTPps= github.com/mitchellh/cli v1.1.0/go.mod h1:xcISNoH86gajksDmfB23e/pu+B+GeFRMYmoHXxx3xhI= github.com/mitchellh/copystructure v1.2.0 h1:vpKXTN4ewci03Vljg/q9QvCGUDttBOGBIa15WveJJGw= github.com/mitchellh/copystructure v1.2.0/go.mod h1:qLl+cE2AmVv+CoeAwDPye/v+N2HKCj9FbZEVFJRxO9s= github.com/mitchellh/go-homedir v1.1.0 h1:lukF9ziXFxDFPkA1vsr5zpc1XuPDn/wFntq5mG+4E0Y= github.com/mitchellh/go-homedir v1.1.0/go.mod h1:SfyaCUpYCn1Vlf4IUYiD9fPX4A5wJrkLzIz1N1q0pr0= -github.com/mitchellh/go-testing-interface v1.14.1 h1:jrgshOhYAUVNMAJiKbEu7EqAwgJJ2JqpQmpLJOu07cU= -github.com/mitchellh/go-testing-interface v1.14.1/go.mod h1:gfgS7OtZj6MA4U1UrDRp04twqAjfvlZyCfX3sDjEym8= github.com/mitchellh/mapstructure v0.0.0-20160808181253-ca63d7c062ee/go.mod h1:FVVH3fgwuzCH5S8UJGiWEs2h04kUh9fWfEaFds41c1Y= github.com/mitchellh/mapstructure v1.5.1-0.20231216201459-8508981c8b6c h1:cqn374mizHuIWj+OSJCajGr/phAmuMug9qIX3l9CflE= github.com/mitchellh/mapstructure v1.5.1-0.20231216201459-8508981c8b6c/go.mod h1:bFUtVrKA4DC2yAKiSyO/QUcy7e+RRV2QTWOzhPopBRo= @@ -468,38 +463,38 @@ github.com/onsi/ginkgo/v2 v2.21.0 h1:7rg/4f3rB88pb5obDgNZrNHrQ4e6WpjonchcpuBRnZM github.com/onsi/ginkgo/v2 v2.21.0/go.mod h1:7Du3c42kxCUegi0IImZ1wUQzMBVecgIHjR1C+NkhLQo= github.com/onsi/gomega v1.35.1 h1:Cwbd75ZBPxFSuZ6T+rN/WCb/gOc6YgFBXLlZLhC7Ds4= github.com/onsi/gomega v1.35.1/go.mod h1:PvZbdDc8J6XJEpDK4HCuRBm8a6Fzp9/DmhC9C7yFlog= -github.com/open-telemetry/opentelemetry-collector-contrib/exporter/prometheusexporter v0.136.0 h1:pVhDE2Ju3y5kojjRJ0qElBKrfhICXFzMzwcIA2rwerc= -github.com/open-telemetry/opentelemetry-collector-contrib/exporter/prometheusexporter v0.136.0/go.mod h1:978Wrtzu0OJbrfW6rpuBLfvl671rKqcjV3/Y0sOC8Fs= -github.com/open-telemetry/opentelemetry-collector-contrib/exporter/prometheusremotewriteexporter v0.136.0 h1:jgNOzBqIkRvh5jTEaWjwtqbgP2DIYdjb3JgcVu3Hg2s= -github.com/open-telemetry/opentelemetry-collector-contrib/exporter/prometheusremotewriteexporter v0.136.0/go.mod h1:ND2gE9ky7XdVCPvJL/uH3Upzdq2Wp1+HZZDNLDh++Tc= -github.com/open-telemetry/opentelemetry-collector-contrib/internal/common v0.136.0 h1:ofSNZonHS44OCPgi/rPoNkNxC1v8nHxPNWa5TAtK6Cs= -github.com/open-telemetry/opentelemetry-collector-contrib/internal/common v0.136.0/go.mod h1:Loh7TRQEfeJ+N3KvPBjIE+7ewhtKtk58ac5B/eEcXhE= -github.com/open-telemetry/opentelemetry-collector-contrib/internal/coreinternal v0.136.0 h1:iw305OKkyu6xYgHA/zV4HvEpU6w9fzg5COEh5bMhor4= -github.com/open-telemetry/opentelemetry-collector-contrib/internal/coreinternal v0.136.0/go.mod h1:LqKBsP+TSqiaMlOv9lQ731roP0JTjCUekw0rcm0sghE= -github.com/open-telemetry/opentelemetry-collector-contrib/internal/exp/metrics v0.136.0 h1:OuR81KyWJaEXOoPT/qa9B8RJsUEPyniZwJwANPPdEvk= -github.com/open-telemetry/opentelemetry-collector-contrib/internal/exp/metrics v0.136.0/go.mod h1:rHQxv7q4gR8ZKk6rzPhXsjlXDY3o54SC6stTpgYw8q8= -github.com/open-telemetry/opentelemetry-collector-contrib/internal/filter v0.136.0 h1:mKELU5kjXPclcITDvCwy7xZ9za6J7sCIiVj2DlEMqng= -github.com/open-telemetry/opentelemetry-collector-contrib/internal/filter v0.136.0/go.mod h1:ZCfcimdENbhW1A/ubn6KHgVn2PRoeZ3DDy0vrH4uvGA= -github.com/open-telemetry/opentelemetry-collector-contrib/pkg/golden v0.136.0 h1:QUOaiK3ur0645Ivt/sbIHZpmPEWBj0Gbv05Q4mRgBCE= -github.com/open-telemetry/opentelemetry-collector-contrib/pkg/golden v0.136.0/go.mod h1:Vhkv+ColKVM57X6VXnrwQN22XvvZZ052pA5ghpQPH2Y= -github.com/open-telemetry/opentelemetry-collector-contrib/pkg/ottl v0.136.0 h1:EYLhEj1o8j/FhMPm3zMY+PsSsMPGCV6HK/9owsVhOQw= -github.com/open-telemetry/opentelemetry-collector-contrib/pkg/ottl v0.136.0/go.mod h1:8MyCN0t5LHRe6Y1nOhpZkUBl7FPGJY8gQZaUHOQClUU= -github.com/open-telemetry/opentelemetry-collector-contrib/pkg/pdatatest v0.136.0 h1:lDLdXA9WIvFCK4P6dFdsYJSDDNgaacj+afw7dOBIel8= -github.com/open-telemetry/opentelemetry-collector-contrib/pkg/pdatatest v0.136.0/go.mod h1:q15PuRASnJ6doVHWTt6ug2VvB0rSeUf39CjqKKVqFlU= -github.com/open-telemetry/opentelemetry-collector-contrib/pkg/pdatautil v0.136.0 h1:gp2AYLP2yL5O0RTiKpyORvxqjSEypMSH/6laB5bh0l4= -github.com/open-telemetry/opentelemetry-collector-contrib/pkg/pdatautil v0.136.0/go.mod h1:5mPPRoLAp4uhg7tV+OLR+HmHyYtALSGZ0oMVHgMAfL8= -github.com/open-telemetry/opentelemetry-collector-contrib/pkg/resourcetotelemetry v0.136.0 h1:GqXklBwfz5soY4wRzYrMTljPOSgGwtGZUFeJ377v2CU= -github.com/open-telemetry/opentelemetry-collector-contrib/pkg/resourcetotelemetry v0.136.0/go.mod h1:t7VtqzYX3cQXcELIaoYzAAQ4fMVzMJxYP6eQmi5FFWI= -github.com/open-telemetry/opentelemetry-collector-contrib/pkg/translator/prometheus v0.136.0 h1:u8SJhb+BmHukyg0DszoYMpsBLJ0ZUuRjKqLOcjnczhE= -github.com/open-telemetry/opentelemetry-collector-contrib/pkg/translator/prometheus v0.136.0/go.mod h1:HIPCM9JaZ31QUfkEUJY7SYdmfH3zWuhcNt0PoOlBWKE= -github.com/open-telemetry/opentelemetry-collector-contrib/pkg/translator/prometheusremotewrite v0.136.0 h1:7mLIozG1dsFkT4bN9AjY24RsESWddOAxwcMLsGcVdkU= -github.com/open-telemetry/opentelemetry-collector-contrib/pkg/translator/prometheusremotewrite v0.136.0/go.mod h1:ZsTpEnxDR6VFCnx6o2vBW1bSd7kJwjEgTjdgp0/Fbmw= -github.com/open-telemetry/opentelemetry-collector-contrib/processor/deltatocumulativeprocessor v0.136.0 h1:3m1GQBFf8xRXjozuuyJD97122Rh81KiSR4HAMaN4Xfk= -github.com/open-telemetry/opentelemetry-collector-contrib/processor/deltatocumulativeprocessor v0.136.0/go.mod h1:5LdAGh7nkcym4+EzmzCDNK9Qdp7mL1TPzzQpdPEJtds= -github.com/open-telemetry/opentelemetry-collector-contrib/processor/filterprocessor v0.136.0 h1:Z+pxuXaNWM34xoS5ktUHkI55uBDBrA3D6XZU3vDCQFA= -github.com/open-telemetry/opentelemetry-collector-contrib/processor/filterprocessor v0.136.0/go.mod h1:nMaiQG/zpgLmKqIDitLUZNMM9JGbHu75udMeEQ96Zc4= -github.com/open-telemetry/opentelemetry-collector-contrib/processor/resourceprocessor v0.136.0 h1:GHAl/v04NITgEg4PB/eJELVVMKcL/JJ6rnwmFWOMvEU= -github.com/open-telemetry/opentelemetry-collector-contrib/processor/resourceprocessor v0.136.0/go.mod h1:/F1/oNY6fOPsS7z73MWCn6dIeA0oQiCMtlP3EqBAuK0= +github.com/open-telemetry/opentelemetry-collector-contrib/exporter/prometheusexporter v0.142.0 h1:xOLDVjNd6psVtXPukDaplTdurhEO3Mcs782v6v7T5Co= +github.com/open-telemetry/opentelemetry-collector-contrib/exporter/prometheusexporter v0.142.0/go.mod h1:gZP+QFBEa+43Np6/QQzL0rWfB53zpzzY9V/DyMVNm8g= +github.com/open-telemetry/opentelemetry-collector-contrib/exporter/prometheusremotewriteexporter v0.142.0 h1:/T6fRgyEL7oVPICdAxxS95WZoXIs1UT5d7zh+Zx7nfc= +github.com/open-telemetry/opentelemetry-collector-contrib/exporter/prometheusremotewriteexporter v0.142.0/go.mod h1:1sMRncHXhSR+oH62WhjSkE1xFBqlqdpg6ljqydCXZ7w= +github.com/open-telemetry/opentelemetry-collector-contrib/internal/common v0.142.0 h1:fC1yPxjl8bwbKaCXMw49E2xPNBTD5BcPAXvLxwonLVs= +github.com/open-telemetry/opentelemetry-collector-contrib/internal/common v0.142.0/go.mod h1:jg0mIqL3FJEGt53DZNx2jTeklKRjVfV4rgb2LEojNM8= +github.com/open-telemetry/opentelemetry-collector-contrib/internal/coreinternal v0.142.0 h1:opPgnpecX14LQ+5FQPjnh3J4kE5BL+0YYyG6I9HTUTI= +github.com/open-telemetry/opentelemetry-collector-contrib/internal/coreinternal v0.142.0/go.mod h1:CQ0QNfzurkpqCDtbDpXYJoDa3/RvmNfQc8NPtkmwV0Y= +github.com/open-telemetry/opentelemetry-collector-contrib/internal/exp/metrics v0.142.0 h1:agYk41V3eIfV6aIMxIeRQ7SFhfaW5k2O96HEebpmPwM= +github.com/open-telemetry/opentelemetry-collector-contrib/internal/exp/metrics v0.142.0/go.mod h1:ZmMdcBia20ih8NYia5b4dNhfNLT68xHgaqF+fNW+TLM= +github.com/open-telemetry/opentelemetry-collector-contrib/internal/filter v0.142.0 h1:fAl09gr9B7LyZBvhBVsvNYMdm8sofMT4lgb3MHjfuRM= +github.com/open-telemetry/opentelemetry-collector-contrib/internal/filter v0.142.0/go.mod h1:TL+PKrQbFZw9z5N/2egn0bV/UmOFWUnKq4m9Vh86IoM= +github.com/open-telemetry/opentelemetry-collector-contrib/pkg/golden v0.142.0 h1:N5J6TArF3DZr8xibVA3vht5onHGjevWYc1mhBi3kmBI= +github.com/open-telemetry/opentelemetry-collector-contrib/pkg/golden v0.142.0/go.mod h1:zNkIEuXEi5nOcKE2RUbWwFcGZ+S7eHhsVf0kG+KB6O4= +github.com/open-telemetry/opentelemetry-collector-contrib/pkg/ottl v0.142.0 h1:+ECJBHPtMabbUgv1UhtALEbFeVLT5TMky3GNppGbJVc= +github.com/open-telemetry/opentelemetry-collector-contrib/pkg/ottl v0.142.0/go.mod h1:CQAv2XJaKey12eJm8Vlj/07+p89+cdgwhBMds6VW6GM= +github.com/open-telemetry/opentelemetry-collector-contrib/pkg/pdatatest v0.142.0 h1:yVQdTECRBDF31YbIS3B2KI1fQLP+COgSnexg6SQlHxM= +github.com/open-telemetry/opentelemetry-collector-contrib/pkg/pdatatest v0.142.0/go.mod h1:Wu/4rn2sFzW3u3DyHrkrq3l+A98hvjJ3Yt8cyZo8lBM= +github.com/open-telemetry/opentelemetry-collector-contrib/pkg/pdatautil v0.142.0 h1:bLp+Ii1UQ9cNr+Dm1jKzbcklhd0eBnPuIFQY6NPzkZ0= +github.com/open-telemetry/opentelemetry-collector-contrib/pkg/pdatautil v0.142.0/go.mod h1:6N36UrFd9Yiz2aYpXM5xiK7Eqp2RyAr3O8lUE+wK2Y8= +github.com/open-telemetry/opentelemetry-collector-contrib/pkg/resourcetotelemetry v0.142.0 h1:67xG97ED3JHXlPsjVUOiH8u3U5LBXPU4vKgPkgzYGm4= +github.com/open-telemetry/opentelemetry-collector-contrib/pkg/resourcetotelemetry v0.142.0/go.mod h1:kS1cJS2m9ECyrRmEDlhN0nQM+QuUovHRYTF6sUPvb1U= +github.com/open-telemetry/opentelemetry-collector-contrib/pkg/translator/prometheus v0.142.0 h1:lRM1vdTLNlf5zdzcyVnBvT+BQudM75W+eFpA6PJKjk0= +github.com/open-telemetry/opentelemetry-collector-contrib/pkg/translator/prometheus v0.142.0/go.mod h1:KkTsTXx2Da0ejZkh3ldivRJlw2dljQbf8NIHxYWRQSo= +github.com/open-telemetry/opentelemetry-collector-contrib/pkg/translator/prometheusremotewrite v0.142.0 h1:bRAZfr1JqTVg4zA8fWfGtzoc+fIeWuVSCPGNXgTPqvg= +github.com/open-telemetry/opentelemetry-collector-contrib/pkg/translator/prometheusremotewrite v0.142.0/go.mod h1:vqrxUspQ5sYFuy8ccbX7PXVe64AEXJV9oh9mtTagPHE= +github.com/open-telemetry/opentelemetry-collector-contrib/processor/deltatocumulativeprocessor v0.142.0 h1:fL8LBVeje+nbts2VIInvRa4T5LlsC0BZCI60wNGoS+Y= +github.com/open-telemetry/opentelemetry-collector-contrib/processor/deltatocumulativeprocessor v0.142.0/go.mod h1:fSnKuTN91I68Ou1Lgfwe3Mt6BGl9kcA8PYCpnGkPnsY= +github.com/open-telemetry/opentelemetry-collector-contrib/processor/filterprocessor v0.142.0 h1:4EdL6RK8VTCPyop0EZoG/lpidlDQqS5BIyAnhSG8E2k= +github.com/open-telemetry/opentelemetry-collector-contrib/processor/filterprocessor v0.142.0/go.mod h1:w972rpLwATEI4AI7h6h5tbMRGRkEicaxxbgOTH9O/0Q= +github.com/open-telemetry/opentelemetry-collector-contrib/processor/resourceprocessor v0.142.0 h1:bKXAt6YhBQrOb73kDARUPf1QgaMU0aD9DpfDunp1kVA= +github.com/open-telemetry/opentelemetry-collector-contrib/processor/resourceprocessor v0.142.0/go.mod h1:GBb0jZpICfzzsJMmZAW/tDYQyaRrmNlOUvQVOOO3tk4= 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= @@ -534,6 +529,8 @@ github.com/prometheus/client_golang v1.0.0/go.mod h1:db9x61etRT2tGnBNRi70OPL5Fsn github.com/prometheus/client_golang v1.4.0/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-20250914183048-a974e0d45e0a h1:RF1vfKM34/3DbGNis22BGd6sDDY3XBi0eM7pYqmOEO0= +github.com/prometheus/client_golang/exp v0.0.0-20250914183048-a974e0d45e0a/go.mod h1:FGJuwvfcPY0V5enm+w8zF1RNS062yugQtPPQp1c4Io4= 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= @@ -541,53 +538,51 @@ github.com/prometheus/client_model v0.6.2 h1:oBsgwpGs7iVziMvrGhE53c/GrLUsZdHnqNw github.com/prometheus/client_model v0.6.2/go.mod h1:y3m2F6Gdpfy6Ut/GBsUqTWZqCUvMVzSfMLjcu6wAwpE= github.com/prometheus/common v0.4.1/go.mod h1:TNfzLD0ON7rHzMJeJkieUDPYmFC7Snx/y86RQel1bk4= github.com/prometheus/common v0.9.1/go.mod h1:yhUN8i9wzaXS3w1O07YhxHEBxD+W35wd8bs7vj7HSQ4= -github.com/prometheus/common v0.66.1 h1:h5E0h5/Y8niHc5DlaLlWLArTQI7tMrsfQjHV+d9ZoGs= -github.com/prometheus/common v0.66.1/go.mod h1:gcaUsgf3KfRSwHY4dIMXLPV0K/Wg1oZ8+SbZk/HH/dA= +github.com/prometheus/common v0.67.4 h1:yR3NqWO1/UyO1w2PhUvXlGQs/PtFmoveVO0KZ4+Lvsc= +github.com/prometheus/common v0.67.4/go.mod h1:gP0fq6YjjNCLssJCQp0yk4M8W6ikLURwkdd/YKtTbyI= github.com/prometheus/common/assets v0.2.0 h1:0P5OrzoHrYBOSM1OigWL3mY8ZvV2N4zIE/5AahrSrfM= github.com/prometheus/common/assets v0.2.0/go.mod h1:D17UVUE12bHbim7HzwUvtqm6gwBEaDQ0F+hIGbFbccI= -github.com/prometheus/exporter-toolkit v0.14.0 h1:NMlswfibpcZZ+H0sZBiTjrA3/aBFHkNZqE+iCj5EmRg= -github.com/prometheus/exporter-toolkit v0.14.0/go.mod h1:Gu5LnVvt7Nr/oqTBUC23WILZepW0nffNo10XdhQcwWA= -github.com/prometheus/otlptranslator v0.0.2 h1:+1CdeLVrRQ6Psmhnobldo0kTp96Rj80DRXRd5OSnMEQ= -github.com/prometheus/otlptranslator v0.0.2/go.mod h1:P8AwMgdD7XEr6QRUJ2QWLpiAZTgTE2UYgjlu3svompI= +github.com/prometheus/exporter-toolkit v0.15.0 h1:Pcle5sSViwR1x0gdPd0wtYrPQENBieQAM7TmT0qtb2U= +github.com/prometheus/exporter-toolkit v0.15.0/go.mod h1:OyRWd2iTo6Xge9Kedvv0IhCrJSBu36JCfJ2yVniRIYk= +github.com/prometheus/otlptranslator v1.0.0 h1:s0LJW/iN9dkIH+EnhiD3BlkkP5QVIUVEoIwkU+A6qos= +github.com/prometheus/otlptranslator v1.0.0/go.mod h1:vRYWnXvI6aWGpsdY/mOT/cbeVRBlPWtBNDb7kGR3uKM= github.com/prometheus/procfs v0.0.0-20181005140218-185b4288413d/go.mod h1:c3At6R/oaqEKCNdg8wHV1ftS6bRYblBhIjjI8uT2IGk= github.com/prometheus/procfs v0.0.2/go.mod h1:TjEm7ze935MbeOT/UhFTIMYKhuLP4wbCsTZCD3I8kEA= github.com/prometheus/procfs v0.0.8/go.mod h1:7Qr8sr6344vo1JqZ6HhLceV9o3AJ1Ff+GxbHq6oeK9A= github.com/prometheus/procfs v0.17.0 h1:FuLQ+05u4ZI+SS/w9+BWEM2TXiHKsUQ9TADiRH7DuK0= github.com/prometheus/procfs v0.17.0/go.mod h1:oPQLaDAMRbA+u8H5Pbfq+dl3VDAvHxMUOVhe0wYB2zw= -github.com/prometheus/prometheus v0.305.1-0.20250808193045-294f36e80261 h1:EtTzzd5UW9TXf9C8BUHv66RgdjG51efqGKWmlxMqjgs= -github.com/prometheus/prometheus v0.305.1-0.20250808193045-294f36e80261/go.mod h1:KMw//femth6oNhcWeCrh4Er45VNPkNac87cTK6er/dA= -github.com/prometheus/sigv4 v0.2.0 h1:qDFKnHYFswJxdzGeRP63c4HlH3Vbn1Yf/Ao2zabtVXk= -github.com/prometheus/sigv4 v0.2.0/go.mod h1:D04rqmAaPPEUkjRQxGqjoxdyJuyCh6E0M18fZr0zBiE= +github.com/prometheus/prometheus v0.308.0 h1:kVh/5m1n6m4cSK9HYTDEbMxzuzCWyEdPdKSxFRxXj04= +github.com/prometheus/prometheus v0.308.0/go.mod h1:xXYKzScyqyFHihpS0UsXpC2F3RA/CygOs7wb4mpdusE= +github.com/prometheus/sigv4 v0.3.0 h1:QIG7nTbu0JTnNidGI1Uwl5AGVIChWUACxn2B/BQ1kms= +github.com/prometheus/sigv4 v0.3.0/go.mod h1:fKtFYDus2M43CWKMNtGvFNHGXnAJJEGZbiYCmVp/F8I= github.com/puzpuzpuz/xsync/v3 v3.5.1 h1:GJYJZwO6IdxN/IKbneznS6yPkVC+c3zyY/j19c++5Fg= github.com/puzpuzpuz/xsync/v3 v3.5.1/go.mod h1:VjzYrABPabuM4KyBh1Ftq6u8nhwY5tBPKP9jpmh0nnA= -github.com/redis/go-redis/v9 v9.8.0 h1:q3nRvjrlge/6UD7eTu/DSg2uYiU2mCL0G/uzBWqhicI= -github.com/redis/go-redis/v9 v9.8.0/go.mod h1:huWgSWd8mW6+m0VPhJjSSQ+d6Nh1VICQ6Q5lHuCH/Iw= -github.com/rogpeppe/go-internal v1.13.1 h1:KvO1DLK/DRN07sQ1LQKScxyZJuNnedQ5/wKSR38lUII= -github.com/rogpeppe/go-internal v1.13.1/go.mod h1:uMEvuHeurkdAXX61udpOXGD/AzZDWNMNyH2VO9fmH0o= +github.com/rogpeppe/go-internal v1.14.1 h1:UQB4HGPB6osV0SQTLymcB4TgvyWu6ZyliaW0tI/otEQ= +github.com/rogpeppe/go-internal v1.14.1/go.mod h1:MaRKkUm5W0goXpeCfT7UZI6fk/L7L7so1lCWt35ZSgc= github.com/rs/cors v1.11.1 h1:eU3gRzXLRK57F5rKMGMZURNdIG4EoAmX8k94r9wXWHA= github.com/rs/cors v1.11.1/go.mod h1:XyqrcTp5zjWr1wsJ8PIRZssZ8b/WMcMf71DJnit4EMU= github.com/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.33 h1:KhF0WejiUTDbL5X55nXowP7zNopwpowa6qaMAWyIE+0= -github.com/scaleway/scaleway-sdk-go v1.0.0-beta.33/go.mod h1:792k1RTU+5JeMXm35/e2Wgp71qPH/DmDoZrRc+EFZDk= +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/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/shirou/gopsutil/v4 v4.25.8 h1:NnAsw9lN7587WHxjJA9ryDnqhJpFH6A+wagYWTOH970= -github.com/shirou/gopsutil/v4 v4.25.8/go.mod h1:q9QdMmfAOVIw7a+eF86P7ISEU6ka+NLgkUxlopV4RwI= -github.com/shoenig/test v1.7.1 h1:UJcjSAI3aUKx52kfcfhblgyhZceouhvvs3OYdWgn+PY= -github.com/shoenig/test v1.7.1/go.mod h1:UxJ6u/x2v/TNs/LoLxBNJRV9DiwBBKYxXSyczsBHFoI= +github.com/shirou/gopsutil/v4 v4.25.11 h1:X53gB7muL9Gnwwo2evPSE+SfOrltMoR6V3xJAXZILTY= +github.com/shirou/gopsutil/v4 v4.25.11/go.mod h1:EivAfP5x2EhLp2ovdpKSozecVXn1TmuG7SMzs/Wh4PU= +github.com/shoenig/test v1.12.2 h1:ZVT8NeIUwGWpZcKaepPmFMoNQ3sVpxvqUh/MAqwFiJI= +github.com/shoenig/test v1.12.2/go.mod h1:UxJ6u/x2v/TNs/LoLxBNJRV9DiwBBKYxXSyczsBHFoI= github.com/shurcooL/httpfs v0.0.0-20230704072500-f1e31cf0ba5c h1:aqg5Vm5dwtvL+YgDpBcK1ITf3o96N/K7/wsRXQnUTEs= github.com/shurcooL/httpfs v0.0.0-20230704072500-f1e31cf0ba5c/go.mod h1:owqhoLW1qZoYLZzLnBw+QkPP9WZnjlSWihhxAJC1+/M= github.com/sirupsen/logrus v1.2.0/go.mod h1:LxeOpSwHxABJmUn/MG1IvRgCAasNZTLOkJPxbbu5VWo= github.com/sirupsen/logrus v1.4.2/go.mod h1:tLMulIdttU9McNUspp0xgXVQah82FyeX6MwdIuYE2rE= github.com/sirupsen/logrus v1.9.3 h1:dueUQJ1C2q9oE3F7wvmSGAaVtTmUizReu6fjN8uqzbQ= github.com/sirupsen/logrus v1.9.3/go.mod h1:naHLuLoDiP4jHNo9R0sCBMtWGeIprob74mVsIT4qYEQ= -github.com/spf13/cobra v1.10.1 h1:lJeBwCfmrnXthfAupyUTzJ/J4Nc1RsHC/mSRU2dll/s= -github.com/spf13/cobra v1.10.1/go.mod h1:7SmJGaTHFVBY0jW4NXGluQoLvhqFQM+6XSKD+P4XaB0= +github.com/spf13/cobra v1.10.2 h1:DMTTonx5m65Ic0GOoRY2c16WCbHxOOw6xxezuLaBpcU= +github.com/spf13/cobra v1.10.2/go.mod h1:7C1pvHqHw5A4vrJfjNwvOdzYu0Gml16OCs2GRiTUUS4= github.com/spf13/pflag v1.0.9 h1:9exaQaMOCwffKiiiYk6/BndUBv+iRViNW+4lEMi0PvY= github.com/spf13/pflag v1.0.9/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg= -github.com/stackitcloud/stackit-sdk-go/core v0.17.2 h1:jPyn+i8rkp2hM80+hOg0B/1EVRbMt778Tr5RWyK1m2E= -github.com/stackitcloud/stackit-sdk-go/core v0.17.2/go.mod h1:8KIw3czdNJ9sdil9QQimxjR6vHjeINFrRv0iZ67wfn0= +github.com/stackitcloud/stackit-sdk-go/core v0.17.3 h1:GsZGmRRc/3GJLmCUnsZswirr5wfLRrwavbnL/renOqg= +github.com/stackitcloud/stackit-sdk-go/core v0.17.3/go.mod h1:HBCXJGPgdRulplDzhrmwC+Dak9B/x0nzNtmOpu+1Ahg= 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= @@ -604,8 +599,8 @@ github.com/stretchr/testify v1.8.4/go.mod h1:sz/lmYIOXD/1dqDmKjjqLyZ2RngseejIcXl github.com/stretchr/testify v1.9.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/testcontainers/testcontainers-go v0.38.0 h1:d7uEapLcv2P8AvH8ahLqDMMxda2W9gQN1nRbHS28HBw= -github.com/testcontainers/testcontainers-go v0.38.0/go.mod h1:C52c9MoHpWO+C4aqmgSU+hxlR5jlEayWtgYrb8Pzz1w= +github.com/testcontainers/testcontainers-go v0.40.0 h1:pSdJYLOVgLE8YdUY2FHQ1Fxu+aMnb6JfVz1mxk7OeMU= +github.com/testcontainers/testcontainers-go v0.40.0/go.mod h1:FSXV5KQtX2HAMlm7U3APNyLkkap35zNLxukw9oBi/MY= github.com/tidwall/gjson v1.10.2 h1:APbLGOM0rrEkd8WBw9C24nllro4ajFuJu0Sc9hRz8Bo= github.com/tidwall/gjson v1.10.2/go.mod h1:/wbyibRr2FHMks5tjHJ5F8dMZh3AcwJEMf5vlfC0lxk= github.com/tidwall/match v1.1.1 h1:+Ho715JplO36QYgwN9PGYNhgZvoUSc9X2c80KVTi+GA= @@ -616,10 +611,10 @@ github.com/tidwall/tinylru v1.1.0 h1:XY6IUfzVTU9rpwdhKUF6nQdChgCdGjkMfLzbWyiau6I github.com/tidwall/tinylru v1.1.0/go.mod h1:3+bX+TJ2baOLMWTnlyNWHh4QMnFyARg2TLTQ6OFbzw8= github.com/tidwall/wal v1.2.1 h1:xQvwnRF3e+xBC4NvFvl1mPGJHU0aH5zNzlUKnKGIImA= github.com/tidwall/wal v1.2.1/go.mod h1:r6lR1j27W9EPalgHiB7zLJDYu3mzW5BQP5KrzBpYY/E= -github.com/tklauser/go-sysconf v0.3.15 h1:VE89k0criAymJ/Os65CSn1IXaol+1wrsFHEB8Ol49K4= -github.com/tklauser/go-sysconf v0.3.15/go.mod h1:Dmjwr6tYFIseJw7a3dRLJfsHAMXZ3nEnL/aZY+0IuI4= -github.com/tklauser/numcpus v0.10.0 h1:18njr6LDBk1zuna922MgdjQuJFjrdppsZG60sHGfjso= -github.com/tklauser/numcpus v0.10.0/go.mod h1:BiTKazU708GQTYF4mB+cmlpT2Is1gLk7XVuEeem8LsQ= +github.com/tklauser/go-sysconf v0.3.16 h1:frioLaCQSsF5Cy1jgRBrzr6t502KIIwQ0MArYICU0nA= +github.com/tklauser/go-sysconf v0.3.16/go.mod h1:/qNL9xxDhc7tx3HSRsLWNnuzbVfh3e7gh/BmM179nYI= +github.com/tklauser/numcpus v0.11.0 h1:nSTwhKH5e1dMNsCdVBukSZrURJRoHbSEQjdEbY+9RXw= +github.com/tklauser/numcpus v0.11.0/go.mod h1:z+LwcLq54uWZTX0u/bGobaV34u6V7KNlTZejzM6/3MQ= github.com/tv42/httpunix v0.0.0-20150427012821-b75d8614f926/go.mod h1:9ESjWnEqriFuLhtthL60Sar/7RFoluCcXsuvEwTV5KM= github.com/twmb/murmur3 v1.1.8 h1:8Yt9taO/WN3l08xErzjeschgZU2QSrwm1kclYq+0aRg= github.com/twmb/murmur3 v1.1.8/go.mod h1:Qq/R7NUyOfr65zD+6Q5IHKsJLwP7exErjN6lyyq3OSQ= @@ -634,218 +629,224 @@ github.com/yuin/goldmark v1.2.1/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9dec github.com/yuin/goldmark v1.4.13/go.mod h1:6yULJ656Px+3vBD8DxQVa3kxgyrAnzto9xy5taEt/CY= github.com/yusufpapurcu/wmi v1.2.4 h1:zFUKzehAFReQwLys1b/iSMl+JQGSCSjtVqQn9bBrPo0= github.com/yusufpapurcu/wmi v1.2.4/go.mod h1:SBZ9tNy3G9/m5Oi98Zks0QjeHVDvuK0qfxQmPyzfmi0= -go.mongodb.org/mongo-driver v1.14.0 h1:P98w8egYRjYe3XDjxhYJagTokP/H6HzlsnojRgZRd80= -go.mongodb.org/mongo-driver v1.14.0/go.mod h1:Vzb0Mk/pa7e6cWw85R4F/endUC3u0U9jGcNU603k65c= -go.opentelemetry.io/auto/sdk v1.1.0 h1:cH53jehLUN6UFLY71z+NDOiNJqDdPRaXzTel0sJySYA= -go.opentelemetry.io/auto/sdk v1.1.0/go.mod h1:3wSPjt5PWp2RhlCcmmOial7AvC4DQqZb7a7wCow3W8A= -go.opentelemetry.io/collector v0.136.0 h1:fEXsiNTa7itOD2SCspqBep6fnULa7mglLlNyhSizqok= -go.opentelemetry.io/collector v0.136.0/go.mod h1:m7YjwJ3xAzGIWa+vyHOE48R6pTKgh90vnlXjFhoB5+A= -go.opentelemetry.io/collector/client v1.42.0 h1:oBEWwd0ZgC9OLlIKZX7vo8PLXuUFoXuy3k0CuzLiKcM= -go.opentelemetry.io/collector/client v1.42.0/go.mod h1:GbBP2Ztn1xeeaAX6hIus0NOH/J0HcRgHP7SU8VDxwP0= -go.opentelemetry.io/collector/component v1.42.0 h1:on4XJ/NT1oPnuCVKDEtlpcr3GGPAS9taWBe8woHSTmY= -go.opentelemetry.io/collector/component v1.42.0/go.mod h1:mehIbkABLhEEs3kmAqer2GRmLwcQLoeF7C48CR6lxP0= -go.opentelemetry.io/collector/component/componentstatus v0.136.0 h1:MOD0t//ZYi23kIpjUm3Cqbp48xoNXPgFL8JBXp/kKaY= -go.opentelemetry.io/collector/component/componentstatus v0.136.0/go.mod h1:rwy++UVZJmymzltlvdYZptTvfxqLC4Vn9jMcM9X8U1c= -go.opentelemetry.io/collector/component/componenttest v0.136.0 h1:24U54okKfUl7tSApQ+84joz8KXgZicWgH+O7UB4fgNI= -go.opentelemetry.io/collector/component/componenttest v0.136.0/go.mod h1:diUZ4BjPMz0PJ/ur5BO9jSBWd8qebvOWMxVrEAoT6dQ= -go.opentelemetry.io/collector/config/configauth v0.136.0 h1:Xpi7zmpvidot/RRAcWN+8xkx87947+Ec1xMDGOLd+l4= -go.opentelemetry.io/collector/config/configauth v0.136.0/go.mod h1:WzZxFZqlc7pxbQxeto+kkV2zXFiEm5NA14fkjDp5kKU= -go.opentelemetry.io/collector/config/configcompression v1.42.0 h1:vznptUF452U526FHHp/fhGL9KgFCLb3sZ+iq4PXQYII= -go.opentelemetry.io/collector/config/configcompression v1.42.0/go.mod h1:ZlnKaXFYL3HVMUNWVAo/YOLYoxNZo7h8SrQp3l7GV00= -go.opentelemetry.io/collector/config/configgrpc v0.136.0 h1:JutKKrIa44ec6VSrE8/0K/hPewJ4H69QbkYs3Gh3/k4= -go.opentelemetry.io/collector/config/configgrpc v0.136.0/go.mod h1:yxJgGrmH9jW/hPUvLlpGLsNRiQcOgK67r5RL4dvvdDE= -go.opentelemetry.io/collector/config/confighttp v0.136.0 h1:7wnmvlm4mZOnF4LD9Q0FIU35EW2z0KB94HRBqM0S0Xw= -go.opentelemetry.io/collector/config/confighttp v0.136.0/go.mod h1:F6zKdR0MagtYZ8NBJOgw9VqPbY+BwkWmO9UYE5mODGU= -go.opentelemetry.io/collector/config/configmiddleware v1.42.0 h1:11LMjkIPnNirc5okrcjO8CEbJ+2Xo7WM/CJqv6J97+M= -go.opentelemetry.io/collector/config/configmiddleware v1.42.0/go.mod h1:v45dyG4WvLxC0Yfw80NvjSFzngTUJdH9zzZOTAXenjg= -go.opentelemetry.io/collector/config/confignet v1.42.0 h1:K2tHmUzCOQiIYr84K+dxugkxQ0jVvYEyHxAhMU7CR0Y= -go.opentelemetry.io/collector/config/confignet v1.42.0/go.mod h1:4jJWdoe1MmpqxMzxrIILcS5FK2JPocXYZGUvv5ZQVKE= -go.opentelemetry.io/collector/config/configopaque v1.42.0 h1:AffFfB6FMKrgvgeSHCsOo+Q1cR4I2kqM3nRwEr/iHyk= -go.opentelemetry.io/collector/config/configopaque v1.42.0/go.mod h1:9uzLyGsWX0FtPWkomQXqLtblmSHgJFaM4T0gMBrCma0= -go.opentelemetry.io/collector/config/configoptional v0.136.0 h1:DwrduTAWbPwOW/k4GPcYUFB7DLruLvs+Zg2/RAHJ2DI= -go.opentelemetry.io/collector/config/configoptional v0.136.0/go.mod h1:hFcVjh2DqKIVMA9mbb2ctSW8d0SRN2UrNim33WxZM4o= -go.opentelemetry.io/collector/config/configretry v1.42.0 h1:iCm6gr8V7+J1ZI6fiHHeDqMzvFvJ9xKMlZt5DC2M5Vw= -go.opentelemetry.io/collector/config/configretry v1.42.0/go.mod h1:ZSTYqAJCq4qf+/4DGoIxCElDIl5yHt8XxEbcnpWBbMM= -go.opentelemetry.io/collector/config/configtelemetry v0.136.0 h1:d5So8zVG6gRl7I3v2Trvk9kPkzSO6kubrcEUZ+wrasw= -go.opentelemetry.io/collector/config/configtelemetry v0.136.0/go.mod h1:Xjw2+DpNLjYtx596EHSWBy0dNQRiJ2H+BlWU907lO40= -go.opentelemetry.io/collector/config/configtls v1.42.0 h1:gACpOXSmxBeo+M8qjSxt7AU04B0qWzjqg2ZLvMA8Sdo= -go.opentelemetry.io/collector/config/configtls v1.42.0/go.mod h1:SJNnptQLBW+nO4CgTtNI1di8nAHNOIl2gclu9GsmK8g= -go.opentelemetry.io/collector/confmap v1.42.0 h1:Hdeqq1RkGBBWbmDpa96aC5LchklzUzCu4aSRRoPicng= -go.opentelemetry.io/collector/confmap v1.42.0/go.mod h1:KW/l4uXBGnl5OM8WYi3gTg6PeG+y24nlIMS71KwWQjk= -go.opentelemetry.io/collector/confmap/provider/envprovider v1.42.0 h1:I4ijuuEUBtePNu7v3C8S/uwEwcXsQnos6d/lvCKby6k= -go.opentelemetry.io/collector/confmap/provider/envprovider v1.42.0/go.mod h1:Nd5diM9jWG9sg6d6eHvR3sIuYgnU9PptExuCgELKTIs= -go.opentelemetry.io/collector/confmap/provider/fileprovider v1.42.0 h1:BGejutI9811qBuzlV9jUI0vOLLR/6P/yprn4HqrQkh4= -go.opentelemetry.io/collector/confmap/provider/fileprovider v1.42.0/go.mod h1:tT2TNx//LDPh5vxKg07kW07n5lPRJmbKkT3oISTdBa4= -go.opentelemetry.io/collector/confmap/provider/yamlprovider v1.42.0 h1:M0Vo2jp1LJrtudwGO4jdhNGKnRxh3D0NsJV/pY6Nnwk= -go.opentelemetry.io/collector/confmap/provider/yamlprovider v1.42.0/go.mod h1:SJLJgZ7Q21O+MXOQnoNhliEjmk1Wr3DDRf3MTeB3Dlk= -go.opentelemetry.io/collector/confmap/xconfmap v0.136.0 h1:eC14gN+NL5HxmOmN9Aa4SkAnJhmUgmYP5cgEjCdz0sw= -go.opentelemetry.io/collector/confmap/xconfmap v0.136.0/go.mod h1:bDvQo42iyxLGR/Nl4eKP//F/jpDcD52JCb7uLGKA3lc= -go.opentelemetry.io/collector/connector v0.136.0 h1:q697P3BcHJcuqT+GE/Am5bqXGpAvCTf5gSlLL2HZ2iM= -go.opentelemetry.io/collector/connector v0.136.0/go.mod h1:zCKUihQzRDkAkszDPXg9RqTc/NcpRNGBbILySFaZ6zA= -go.opentelemetry.io/collector/connector/connectortest v0.136.0 h1:NQgEvJvAJKcswQ/5GQmo57gVgJQqYFvvLpYEpFCptaE= -go.opentelemetry.io/collector/connector/connectortest v0.136.0/go.mod h1:kBPRa9qDsuH7MGvgBwWxV4mLP7yG4fnLwxdBG2jigAA= -go.opentelemetry.io/collector/connector/xconnector v0.136.0 h1:7kEvmi1pARTHqGsBkmoi/IpG5xpAU7PMKDaWfLF18ps= -go.opentelemetry.io/collector/connector/xconnector v0.136.0/go.mod h1:+adB64pX2hOcDxgYmFN6gN6B5oLwKgnczzCqffrSiaE= -go.opentelemetry.io/collector/consumer v1.42.0 h1:RhdoAXrLODs4cnh1m/ihWfHTyWzGO1jL0X+E7wETzUE= -go.opentelemetry.io/collector/consumer v1.42.0/go.mod h1:jKcMYx9LXWMK4dupP2NhiAuHK063JiVMlyAC+ZMqlD0= -go.opentelemetry.io/collector/consumer/consumererror v0.136.0 h1:lYnTR/fJ8gBfVZ813sKPWXmj9a8+TajhrHBfqKwrWvQ= -go.opentelemetry.io/collector/consumer/consumererror v0.136.0/go.mod h1:DIivxQ3sy3mDZLaEcXdwZvEFLILpcyHxRiqEaPkHRFU= -go.opentelemetry.io/collector/consumer/consumererror/xconsumererror v0.136.0 h1:0p5xkXuvCKMKwGdTeuzy1Vz04XJyk4cVdyebtGr/PFI= -go.opentelemetry.io/collector/consumer/consumererror/xconsumererror v0.136.0/go.mod h1:e8DN9AXPONTtXKO9ycYSWKrvj7I9hHIlCg2mIu2cUlc= -go.opentelemetry.io/collector/consumer/consumertest v0.136.0 h1:zzO47GjzIg2X3uVW+lwtqS6S0vRm5qMx5O4zmQznCME= -go.opentelemetry.io/collector/consumer/consumertest v0.136.0/go.mod h1:gTdRvUiJSmzmWp2Ndlh0N0yQ3hPnmTYul2DWuy31/D0= -go.opentelemetry.io/collector/consumer/xconsumer v0.136.0 h1:7GczvR8x75lTyP9M+oWHQyGRDIRJ+QjY7IiJkucgOo4= -go.opentelemetry.io/collector/consumer/xconsumer v0.136.0/go.mod h1:sXw0lOF6D1iKhLy2xorJ8D3PysDXT0egmHJZu8TY0lE= -go.opentelemetry.io/collector/exporter v1.42.0 h1:YMWMSAfaMu3lgy+lgaJDszdAOsg0lRh4EvIyA974Uuw= -go.opentelemetry.io/collector/exporter v1.42.0/go.mod h1:is8qnDQ1NLFMGNagY986ASIJJRIeHJZ+d1hDdOY6u1w= -go.opentelemetry.io/collector/exporter/exporterhelper v0.136.0 h1:fJuA2u4Ls5+OWqcrXYSC6m8hpC4fFDI8kwNjYn4O34w= -go.opentelemetry.io/collector/exporter/exporterhelper v0.136.0/go.mod h1:1F2UKZ68AQaWkjxlk6rtQ/oehL83O2AoDEex9+lEasg= -go.opentelemetry.io/collector/exporter/exporterhelper/xexporterhelper v0.136.0 h1:XkUU01WC9ZGYwD0DJgeeEsfmVK7qZOcEbC+1Y6UcqxA= -go.opentelemetry.io/collector/exporter/exporterhelper/xexporterhelper v0.136.0/go.mod h1:VFewDMp0wztsEXHXF4Hc7QaFoYPSo8vY+S9c0zFOT2k= -go.opentelemetry.io/collector/exporter/exportertest v0.136.0 h1:VIXgWzwok1bfQtAryfAZa5yEomzKEbhobjiHgKWuPmw= -go.opentelemetry.io/collector/exporter/exportertest v0.136.0/go.mod h1:aZkv1l+97E/onJ1rnlMzO/PEDFDfVtgIFvNJB0/EmXI= -go.opentelemetry.io/collector/exporter/otlpexporter v0.136.0 h1:mDHEYBDZ4SzziMq2PlqE0gwZax/t9zLmt/9Flaj0lks= -go.opentelemetry.io/collector/exporter/otlpexporter v0.136.0/go.mod h1:KY5693AbBX4IYfBlCTRPFlFjJTkzYlr5+XpPZR+VwwM= -go.opentelemetry.io/collector/exporter/xexporter v0.136.0 h1:7ELBwU8sSnUMAWr+jQHDNM0+o878BTk++DiW0KA7Dr4= -go.opentelemetry.io/collector/exporter/xexporter v0.136.0/go.mod h1:W4e+GmyokpCt6+d5pvCA17b7oU1fm968t5fDwW4zQv0= -go.opentelemetry.io/collector/extension v1.42.0 h1:+9pK5AGHyV3LpWcF8ez45O/6QwOnxXBRS06a7hokLVg= -go.opentelemetry.io/collector/extension v1.42.0/go.mod h1:mS3Ucj0UQw4Qy9KmXtTkdQTQxan+LbGeH4stPuTYofU= -go.opentelemetry.io/collector/extension/extensionauth v1.42.0 h1:Re0wxZOplHtdV8YaypVaktHYPiaWPwVDt+hrBFXHEoI= -go.opentelemetry.io/collector/extension/extensionauth v1.42.0/go.mod h1:m8A4ZoWKvE91c5fF7HFvnZvwxbXtPJiNSoreGYoXt6A= -go.opentelemetry.io/collector/extension/extensionauth/extensionauthtest v0.136.0 h1:yx0474FuJHinlSbAXU/IZov6TXc5LPSGRPsQRiMGRG4= -go.opentelemetry.io/collector/extension/extensionauth/extensionauthtest v0.136.0/go.mod h1:etBi3U/UCSa9x5Lao6CRcj7CmuULJbkxqXUoaSDeLOA= -go.opentelemetry.io/collector/extension/extensioncapabilities v0.136.0 h1:hFqIp1TiXdIDlGJRMlV+Xm4GwTxRO6Wmaxe/uYH6U7E= -go.opentelemetry.io/collector/extension/extensioncapabilities v0.136.0/go.mod h1:cwa7CHOF39Oqq5SFiYOs1bsjgKmDUFzYysfQ45RPT88= -go.opentelemetry.io/collector/extension/extensionmiddleware v0.136.0 h1:H+c3QyaN5tL3VmX3rSbV9Che5cpokLThJxZmJXed6cE= -go.opentelemetry.io/collector/extension/extensionmiddleware v0.136.0/go.mod h1:Vxtt+KlwwO4mpPEFyUMb/92BlMqOZc4Jk8RNjM99vcU= -go.opentelemetry.io/collector/extension/extensionmiddleware/extensionmiddlewaretest v0.136.0 h1:0Mqxievpq+Lu7nd7/Y7LSW30cgTYyJIpOg48+0XTRcI= -go.opentelemetry.io/collector/extension/extensionmiddleware/extensionmiddlewaretest v0.136.0/go.mod h1:Rd+mz0JkBudg+RYZuETiJpx4aByF5CyV+15mBf+1SJA= -go.opentelemetry.io/collector/extension/extensiontest v0.136.0 h1:BkL2AC38Xa/WU71YfEKdjYGl/pjALmJDtHZIm5gzEzk= -go.opentelemetry.io/collector/extension/extensiontest v0.136.0/go.mod h1:XxRKblTb56a6zkrb8i9qowl7mY9ebW2NnOvCIXgxjZM= -go.opentelemetry.io/collector/extension/xextension v0.136.0 h1:Ykw3UUAKugGDLTz+Secowj6pL9Mg6H/V+pezeQKhTJY= -go.opentelemetry.io/collector/extension/xextension v0.136.0/go.mod h1:BLED8xk0WmkZ0bfjl/WwQ7jk4cJnnrHlo3MHsdhtr/U= -go.opentelemetry.io/collector/extension/zpagesextension v0.136.0 h1:acfmAXEGmvLlM2N6KtieLVKXBvJ/dmkOfOFDftZFFXg= -go.opentelemetry.io/collector/extension/zpagesextension v0.136.0/go.mod h1:fXFm8bNm6QegoFjFk3QINvSXUDyBSy/3r/mv366xQ5A= -go.opentelemetry.io/collector/featuregate v1.42.0 h1:uCVwumVBVex46DsG/fvgiTGuf9f53bALra7vGyKaqFI= -go.opentelemetry.io/collector/featuregate v1.42.0/go.mod h1:d0tiRzVYrytB6LkcYgz2ESFTv7OktRPQe0QEQcPt1L4= -go.opentelemetry.io/collector/internal/fanoutconsumer v0.136.0 h1:GxjQ+9q6M7PwE3QnA3VVBLt5aHVnk4z7wQLo+J+0tho= -go.opentelemetry.io/collector/internal/fanoutconsumer v0.136.0/go.mod h1:DOvL5ZalQk/zmYBjKZok52dXIxUOK0JoOoQfm5qjbhM= -go.opentelemetry.io/collector/internal/telemetry v0.136.0 h1:3TcnxyUFs6jJZeLo5ju3fMWS4lRmIApl9To2XWk922M= -go.opentelemetry.io/collector/internal/telemetry v0.136.0/go.mod h1:dTykH9zv/zOnlyUvqfGIqpaQZhmayW7NssD7TPU4paE= -go.opentelemetry.io/collector/otelcol v0.136.0 h1:1QpVMUxPmrJ2HmrKFPXWEfQYALEC1kDmHp2YtzqjlPE= -go.opentelemetry.io/collector/otelcol v0.136.0/go.mod h1:TscxAyGfBSss2Rre6NMvJX6q6CU9kzaucSBOf5f+QKY= -go.opentelemetry.io/collector/pdata v1.42.0 h1:XEzisp/SNfKDcY4aRU6qrHeLzGypRUdYHjbBqkDFOO4= -go.opentelemetry.io/collector/pdata v1.42.0/go.mod h1:nnOmgf+RI/D5xYWgFPZ5nKuhf2E0Qy9Nx/mxoTvIq3k= -go.opentelemetry.io/collector/pdata/pprofile v0.136.0 h1:ysyWnVnEzAwUH+MAhEuu7X0y/YnTtjEY1gC7aj05QzA= -go.opentelemetry.io/collector/pdata/pprofile v0.136.0/go.mod h1:vAvrFj+xpwlSH85QFYGKYQ4xc0Lym5pWNRh1hMUH3TY= -go.opentelemetry.io/collector/pdata/testdata v0.136.0 h1:amivoDBK7ALqhwwCkSOYqfT95t1+o/TS6MHycseNs80= -go.opentelemetry.io/collector/pdata/testdata v0.136.0/go.mod h1:KlNRkMO7MZdbGjNJGFS0+yc2gpuraJg6F6gkuqaqA8Y= -go.opentelemetry.io/collector/pdata/xpdata v0.136.0 h1:KAYBx6+aS5rYUlwJ85QM9pxHq0VdftC9lTyXIzv1oM4= -go.opentelemetry.io/collector/pdata/xpdata v0.136.0/go.mod h1:bSnwXzg3wKjaKc8FgMZ23OmcodD6eDNyntUZdtlxPeU= -go.opentelemetry.io/collector/pipeline v1.42.0 h1:jqn1lPwUdCn+lsyNubCtwzXZLEm+R3kRWxLpDkhlvvs= -go.opentelemetry.io/collector/pipeline v1.42.0/go.mod h1:xUrAqiebzYbrgxyoXSkk6/Y3oi5Sy3im2iCA51LwUAI= -go.opentelemetry.io/collector/pipeline/xpipeline v0.136.0 h1:dvzL/yfXUjBxcCqtl4ifvQqi5cIeYAmFdZz1OPE2gXA= -go.opentelemetry.io/collector/pipeline/xpipeline v0.136.0/go.mod h1:0trVl/7QYhPyIohE+n+hL0F0DdiceghKPG2olvZqipc= -go.opentelemetry.io/collector/processor v1.42.0 h1:JVMaRA8QkiOJHAswCVAugMaFhDbNedat2XRKjlsNv2A= -go.opentelemetry.io/collector/processor v1.42.0/go.mod h1:O9uYN7VeC4gnD2qsaXaM50rvO8tt2zJS/9bnzucJ+N8= -go.opentelemetry.io/collector/processor/batchprocessor v0.136.0 h1:8IIzCdjD7WyLb1Rbg6t/UPXMJl8rdSbdvkP+fYvY4FE= -go.opentelemetry.io/collector/processor/batchprocessor v0.136.0/go.mod h1:te1bnTdwdQNYxHBHJJSZMAWLWyX+ZB0JKO43zKc6bck= -go.opentelemetry.io/collector/processor/processorhelper v0.136.0 h1:LxQhJuOkhkrZjTlabAaCW+KVv3BlOXaf8F13k/ze3dQ= -go.opentelemetry.io/collector/processor/processorhelper v0.136.0/go.mod h1:atZGpAhMdMtu0jF8jGUdRKj0V1i+DKaZ+q7xsH0+q/0= -go.opentelemetry.io/collector/processor/processorhelper/xprocessorhelper v0.136.0 h1:tqdeDvJiMc16r3s1QOhk5MVCMo6UApWWh/5tJCnL6u4= -go.opentelemetry.io/collector/processor/processorhelper/xprocessorhelper v0.136.0/go.mod h1:NT4ntzR9UA8XPI7EQIjW3D+9bvF6DMQ1GUU7FS/kvos= -go.opentelemetry.io/collector/processor/processortest v0.136.0 h1:lQC435oZdDmLnSczmQ7Cdoca+y7SBpLQ0m/fVsd8pJY= -go.opentelemetry.io/collector/processor/processortest v0.136.0/go.mod h1:uWH1oXGiCzvnWuLyvzyqm8a/g6dGyfJWgAj2yEhhrWg= -go.opentelemetry.io/collector/processor/xprocessor v0.136.0 h1:/Ee8JT9pM3moxPDM18NbNYQzVzzg+80ewTOFyVUmOd0= -go.opentelemetry.io/collector/processor/xprocessor v0.136.0/go.mod h1:RtmNJHS/MS6XO7gBdjiDWep1TN1vMlrcH5qQr1MOWxM= -go.opentelemetry.io/collector/receiver v1.42.0 h1:wdR3SShnOUj6PQFNOHJl8amKDaMrY6gnnU7oh7z61rQ= -go.opentelemetry.io/collector/receiver v1.42.0/go.mod h1:ts8UqHPKm+fP3/nsPrLizbUClqpL8JO3HM5Rd9UQEWA= -go.opentelemetry.io/collector/receiver/receiverhelper v0.136.0 h1:Le0/Ow1GIvRRo4XwDjf/xERzWJf1JkoJEUjqHVPIXr8= -go.opentelemetry.io/collector/receiver/receiverhelper v0.136.0/go.mod h1:N8MEtYYYJncGC9PQ+YdRN7WkHpYNTh3MAxPLVLf7cn8= -go.opentelemetry.io/collector/receiver/receivertest v0.136.0 h1:xPhvg2K72Iy+bqzMwz+q4CmudYKy/Vq+dS1x2ETojP0= -go.opentelemetry.io/collector/receiver/receivertest v0.136.0/go.mod h1:DgPO43LjdtRXJ7BnXU2gGKak74cvGOie9qSdb7D/UWg= -go.opentelemetry.io/collector/receiver/xreceiver v0.136.0 h1:eb2DLzWewhJMJU34mgmL8WxgoYim44+Ry6/AMrjfY8E= -go.opentelemetry.io/collector/receiver/xreceiver v0.136.0/go.mod h1:k/j2K4krExMopkkOBFyPyDSgkrnQSN1fXHqLCvh8O5g= +github.com/zeebo/assert v1.3.0 h1:g7C04CbJuIDKNPFHmsk4hwZDO5O+kntRxzaUoNXj+IQ= +github.com/zeebo/assert v1.3.0/go.mod h1:Pq9JiuJQpG8JLJdtkwrJESF0Foym2/D9XMU5ciN/wJ0= +github.com/zeebo/xxh3 v1.0.2 h1:xZmwmqxHZA8AI603jOQ0tMqmBr9lPeFwGg6d+xy9DC0= +github.com/zeebo/xxh3 v1.0.2/go.mod h1:5NWz9Sef7zIDm2JHfFlcQvNekmcEl9ekUZQQKCYaDcA= +go.mongodb.org/mongo-driver v1.17.4 h1:jUorfmVzljjr0FLzYQsGP8cgN/qzzxlY9Vh0C9KFXVw= +go.mongodb.org/mongo-driver v1.17.4/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.142.0 h1:1PFBnYwphCN7wWXU85/G5SN08hzRua8AkEI1yPIvVMk= +go.opentelemetry.io/collector v0.142.0/go.mod h1:etSWqFxETgvoEjTINqGu+B/Lm+EbJiu3PZGW+bemo1A= +go.opentelemetry.io/collector/client v1.48.0 h1:/ycTq3gsP5NJ5ymDDkEWhem2z+7rH7cUMzifRGal6uQ= +go.opentelemetry.io/collector/client v1.48.0/go.mod h1:ySz+QB/uo8zWI3lGVKOfLqyPP/NZj6oB+j0EjIPsF14= +go.opentelemetry.io/collector/component v1.48.0 h1:0hZKOvT6fIlXoE+6t40UXbXOH7r/h9jyE3eIt0W19Qg= +go.opentelemetry.io/collector/component v1.48.0/go.mod h1:Kmc9Z2CT53M2oRRf+WXHUHHgjCC+ADbiqfPO5mgZe3g= +go.opentelemetry.io/collector/component/componentstatus v0.142.0 h1:a1KkLCtShI5SfhO2ga75VqWjjBRGgrerelt/2JXWLBI= +go.opentelemetry.io/collector/component/componentstatus v0.142.0/go.mod h1:IRWKvFcUrFrkz1gJEV+cKAdE2ZBT128gk1sHt0OzKI4= +go.opentelemetry.io/collector/component/componenttest v0.142.0 h1:a8XclEutO5dv4AnzThHK8dfqR4lDWjJKLtRNM2aVUFM= +go.opentelemetry.io/collector/component/componenttest v0.142.0/go.mod h1:JhX/zKaEbjhFcsiV2ha2spzo24A6RL/jqNBS0svURD0= +go.opentelemetry.io/collector/config/configauth v1.48.0 h1:WYXQLzW7VeUXGOEKXkIVaBe02m01h3qiyIMULygz4o4= +go.opentelemetry.io/collector/config/configauth v1.48.0/go.mod h1:kewLALUSiJfa8Kr0/BkObqO/Wuu5PWLqozKuLrxq7Dc= +go.opentelemetry.io/collector/config/configcompression v1.48.0 h1:fsJCQ6NHsD6QOaa9dUlW9KzoPh505cXZApg7gTs8UQA= +go.opentelemetry.io/collector/config/configcompression v1.48.0/go.mod h1:ZlnKaXFYL3HVMUNWVAo/YOLYoxNZo7h8SrQp3l7GV00= +go.opentelemetry.io/collector/config/configgrpc v0.142.0 h1:CV0W6Sh8rZJMH/aJoAHc/WH3isk35dGoUtiiCkWURnA= +go.opentelemetry.io/collector/config/configgrpc v0.142.0/go.mod h1:WVaqPqwoF1ZdanMlVgdzZK/WdDLKB5judYkref2l2xI= +go.opentelemetry.io/collector/config/confighttp v0.142.0 h1:FastUGaVj1X2ThqYil2kMtnpPij4fps+Ic8gYH6U0Zw= +go.opentelemetry.io/collector/config/confighttp v0.142.0/go.mod h1:wNo/bNY8VDWfU1zXOHzCmb9JDH5UAlmtgkZMK2MjHo4= +go.opentelemetry.io/collector/config/configmiddleware v1.48.0 h1:8b4f8NOI2Mr2QaWHcYlVekac8eoKraogzqHI587eWAs= +go.opentelemetry.io/collector/config/configmiddleware v1.48.0/go.mod h1:pUiX9YcS0oWBLx+BbtmCk44bGeXV+6QY2ik8iTgdHuc= +go.opentelemetry.io/collector/config/confignet v1.48.0 h1:17KMNfj9W39BOtAG1ICvg7SyMncTn1opVynhwWuYn+c= +go.opentelemetry.io/collector/config/confignet v1.48.0/go.mod h1:4jJWdoe1MmpqxMzxrIILcS5FK2JPocXYZGUvv5ZQVKE= +go.opentelemetry.io/collector/config/configopaque v1.48.0 h1:ST/hdVf8RsIfuxSbfYi2PTYdrwQgC6+4HubX4yKpkXI= +go.opentelemetry.io/collector/config/configopaque v1.48.0/go.mod h1:QUbIsaQUTrfkx258rZcrvuBBx7JEA5aywnhRG2g1Zps= +go.opentelemetry.io/collector/config/configoptional v1.48.0 h1:BjqC8qjg5A8QNHpQE9XdRnnXHw0EpRG9wzIN3SKtxHs= +go.opentelemetry.io/collector/config/configoptional v1.48.0/go.mod h1:SrGxQQO3GABGHPvKG0eeSKNJKD2ECxewkFSTBVSoWlE= +go.opentelemetry.io/collector/config/configretry v1.48.0 h1:tH4fU4nWv3PTUDU82fhMCG0tt33p2/wCkjmQcznLpPU= +go.opentelemetry.io/collector/config/configretry v1.48.0/go.mod h1:ZSTYqAJCq4qf+/4DGoIxCElDIl5yHt8XxEbcnpWBbMM= +go.opentelemetry.io/collector/config/configtelemetry v0.142.0 h1:hidlUz9WXTYhrcS1O1RtN4o8WKtYDAELiTCP4P453EI= +go.opentelemetry.io/collector/config/configtelemetry v0.142.0/go.mod h1:Xjw2+DpNLjYtx596EHSWBy0dNQRiJ2H+BlWU907lO40= +go.opentelemetry.io/collector/config/configtls v1.48.0 h1:+099UpRcmp1H+Y+kekr/WYDfZw9yWBGRfD84xA0+J+g= +go.opentelemetry.io/collector/config/configtls v1.48.0/go.mod h1:qSbIUUcstn7Hsj//rBWdN4/sxurjl0970OcUQW2tBho= +go.opentelemetry.io/collector/confmap v1.48.0 h1:vGhg25NEUX5DiYziJEw2siwdzsvtXBRZVuYyLVinFR8= +go.opentelemetry.io/collector/confmap v1.48.0/go.mod h1:8tJHJowmvUkJ8AHzZ6SaH61dcWbdfRE9Sd/hwsKLgRE= +go.opentelemetry.io/collector/confmap/provider/envprovider v1.48.0 h1:TeKwB3r/bCmwhIgiiCA80GNGfUNk1qhN2kRb8/hIw5k= +go.opentelemetry.io/collector/confmap/provider/envprovider v1.48.0/go.mod h1:7cJK4GoBjyMdiBlS4fYRj+rPOaJ5VTyU3OQcLYqgnaw= +go.opentelemetry.io/collector/confmap/provider/fileprovider v1.48.0 h1:lGcgMXsucIvYbZCuW51lB/7cNQ2/ASk7KUa8noxV4QQ= +go.opentelemetry.io/collector/confmap/provider/fileprovider v1.48.0/go.mod h1:tRy+5rXYYHzDCDSpxdYHi3w35kY9n7y3rhPVn1uenAE= +go.opentelemetry.io/collector/confmap/xconfmap v0.142.0 h1:SNfuFP8TA0PmUkx6ryY63uNjLN2HMh5VeGO++IYdPgA= +go.opentelemetry.io/collector/confmap/xconfmap v0.142.0/go.mod h1:FXuX6B8b7Ub7qkLqloWKanmPhADL18EEkaFptcd4eDQ= +go.opentelemetry.io/collector/connector v0.142.0 h1:8IHsthuYBhOgdwdIsoc4X4/jyK2qcY/NmjH6w+iq0cw= +go.opentelemetry.io/collector/connector v0.142.0/go.mod h1:GHxeYzlWol0ZYJRtcSU5JGwdeahaUpmtF/hjE67gjoE= +go.opentelemetry.io/collector/connector/connectortest v0.142.0 h1:Cpvef+XP4wa8mWQVYzmYfc6iqcouS1hJE+TJ71yQEWk= +go.opentelemetry.io/collector/connector/connectortest v0.142.0/go.mod h1:pweTOYtLDKdxaLXNoejLYxn5HW32zAac3WWey2D8LTU= +go.opentelemetry.io/collector/connector/xconnector v0.142.0 h1:O0E9sDIN4A2ppydNzYNy9YjQ8L5C9y6anO6tgUpv8IA= +go.opentelemetry.io/collector/connector/xconnector v0.142.0/go.mod h1:j7xWw0WEJO7QSWW/v1RxD9Qn8RDyqKGvgDM8S3xM8y8= +go.opentelemetry.io/collector/consumer v1.48.0 h1:g1uroz2AA0cqnEsjqFTSZG+y8uH1gQBqqyzk8kd3QiM= +go.opentelemetry.io/collector/consumer v1.48.0/go.mod h1:lC6PnVXBwI456SV5WtvJqE7vjCNN6DAUc8xjFQ9wUV4= +go.opentelemetry.io/collector/consumer/consumererror v0.142.0 h1:2QnxUNL8ZQ42fz5uB1O1OKtfmVH/NcBYHIZ9gt/xqRE= +go.opentelemetry.io/collector/consumer/consumererror v0.142.0/go.mod h1:/nrPOD+za/pWOiL13QzyqHSUNpY8IrHKE6cXQIK2p7k= +go.opentelemetry.io/collector/consumer/consumererror/xconsumererror v0.142.0 h1:LzURVB3Yz1ByWpkH8ZJR8j9PbJzth15UJnCaOpsxuCY= +go.opentelemetry.io/collector/consumer/consumererror/xconsumererror v0.142.0/go.mod h1:ol4kw1OqsjuGLyU2MIh18mGIBVIgY0OqNoNUJJ+V7j4= +go.opentelemetry.io/collector/consumer/consumertest v0.142.0 h1:TRt8zR57Vk1PTjtqjHOwOAMbIl+IeloHxWAuF8sWdRw= +go.opentelemetry.io/collector/consumer/consumertest v0.142.0/go.mod h1:yq2dhMxFUlCFkRN7LES3fzsTmUDw9VaunyRAka2TEaY= +go.opentelemetry.io/collector/consumer/xconsumer v0.142.0 h1:qOoQnLZXQ9sRLexTkkmBx3qfaOmEgco9VBPmryg5UhA= +go.opentelemetry.io/collector/consumer/xconsumer v0.142.0/go.mod h1:oPN0yJzEpovwlWvmSaiYgtDqGuOmMMLmmg352sqZdsE= +go.opentelemetry.io/collector/exporter v1.48.0 h1:2NQ4VlkGdPTO+tw2cFdjElKzivWAtXm2zOIEjoTyvno= +go.opentelemetry.io/collector/exporter v1.48.0/go.mod h1:AOcXxccg8g3R5khMm0DHLmKrr0pWOoGfr9uMbtOPJrg= +go.opentelemetry.io/collector/exporter/exporterhelper v0.142.0 h1:7v8drPONUqXv7tXEFiy5OD1av3ruMsJ+XD62OU/U21E= +go.opentelemetry.io/collector/exporter/exporterhelper v0.142.0/go.mod h1:8qsCgTqRzqIy0d9vFJPHqx14MkZZHTmHenlqxPepMyY= +go.opentelemetry.io/collector/exporter/exporterhelper/xexporterhelper v0.142.0 h1:0IMYuAC1LdoLXVLEFrlmwn8Y1k0WbhcQWResYmwV/C0= +go.opentelemetry.io/collector/exporter/exporterhelper/xexporterhelper v0.142.0/go.mod h1:f/v34PDtqDebl8lPHZn8RvH/m0hkMQEF9duvcKH7ldE= +go.opentelemetry.io/collector/exporter/exportertest v0.142.0 h1:Qy/vEkgIwrsajKlrCgt/NXV/aoof0dPhBJcvz39l03A= +go.opentelemetry.io/collector/exporter/exportertest v0.142.0/go.mod h1:HKitP6nu1DJDmic18t7HxhkBb3Is7nGnbSw4G1pLNNo= +go.opentelemetry.io/collector/exporter/otlpexporter v0.142.0 h1:Upr0K8fHSg5iCV5swa3VO/MpMBNiFwd1dCIuDMGqzpQ= +go.opentelemetry.io/collector/exporter/otlpexporter v0.142.0/go.mod h1:KFm2q64edLBppQFkP6ZQKe4qHpYH/dPkB8+Htc0+2Ms= +go.opentelemetry.io/collector/exporter/xexporter v0.142.0 h1:AcToj72FFKtHvVaY43HYsPb0kI/cpsH+UHd16qd6kHk= +go.opentelemetry.io/collector/exporter/xexporter v0.142.0/go.mod h1:jRGzj6P1jfpCxEl0VC0KZZv0ylhy7naJjl7VgBdxJBU= +go.opentelemetry.io/collector/extension v1.48.0 h1:Q8Av/8Ap59eOzlX1fBSw5TcH5qzqtZOA1qlKbigIkt8= +go.opentelemetry.io/collector/extension v1.48.0/go.mod h1:mKPlW1m7W3s8aRgkZk6ocukkBc4FnIc6GmikteazFXs= +go.opentelemetry.io/collector/extension/extensionauth v1.48.0 h1:MU72qUj04g77Mjbp4H7XKBbwRM7L5gNwu1MDF2192Yo= +go.opentelemetry.io/collector/extension/extensionauth v1.48.0/go.mod h1:CtNVU6ivNIAcJoCL7GRxDGpuvSgWVpgmrRiGD7FQAyY= +go.opentelemetry.io/collector/extension/extensionauth/extensionauthtest v0.142.0 h1:IFQ7tIUd4rr+HG7OtRmAGqfLu7u+59Aq6owfQ8wlZto= +go.opentelemetry.io/collector/extension/extensionauth/extensionauthtest v0.142.0/go.mod h1:eOAU/g111TZ9K2A+QJAHnwfCtCtfR/Tlcl09sfB1/n4= +go.opentelemetry.io/collector/extension/extensioncapabilities v0.142.0 h1:a8CdWl6JI5zVrdT5O55193d75uGSPdG6mrlPOML9EJU= +go.opentelemetry.io/collector/extension/extensioncapabilities v0.142.0/go.mod h1:lJ2TAjbqCAy8FQfUPtm9f+rXCsxLOTQqq1q4G+7rZOw= +go.opentelemetry.io/collector/extension/extensionmiddleware v0.142.0 h1:/PlrYC8ITEKJnhRwij9nvWWehfT1TbDvrv7xqz5Y12E= +go.opentelemetry.io/collector/extension/extensionmiddleware v0.142.0/go.mod h1:rdpsumcbndkZ00eDBaLL4Q5PNWYBOXqt4YR9wtk2sH0= +go.opentelemetry.io/collector/extension/extensionmiddleware/extensionmiddlewaretest v0.142.0 h1:veAJV0RIIkNUz2t9LEV/ockN4+OfwerdwDuAMBz2FG8= +go.opentelemetry.io/collector/extension/extensionmiddleware/extensionmiddlewaretest v0.142.0/go.mod h1:6WPuxGTBY+YlpWXIw7qMcvRqRowj685VwaMqWaiME+g= +go.opentelemetry.io/collector/extension/extensiontest v0.142.0 h1:QfArQ1Pd2VpcYBljan/MLT1XUUMZmxmgTYA25R0ZILg= +go.opentelemetry.io/collector/extension/extensiontest v0.142.0/go.mod h1:en+IIu8wEHpKeZ5O7FjcG0/vWK+OfPYaLSLLJq3GXYY= +go.opentelemetry.io/collector/extension/xextension v0.142.0 h1:0h0nRM0XxCPFqsSJ/V9ZcwW3C3MznBVta+ROFyGOrIY= +go.opentelemetry.io/collector/extension/xextension v0.142.0/go.mod h1:FI1aksqUe6meQJD02jBLRWOFxJRVVZB/SlGY/VUV8bU= +go.opentelemetry.io/collector/extension/zpagesextension v0.142.0 h1:iDhkwn+vo8dE4kxivefZkojL/PdBRQhwPDcB23YNGzQ= +go.opentelemetry.io/collector/extension/zpagesextension v0.142.0/go.mod h1:B+PGlULxRejmP3ArfLQc+Eh7MXqSVG60sxrejqqSd4M= +go.opentelemetry.io/collector/featuregate v1.48.0 h1:jiGRcl93yzUFgZVDuskMAftFraE21jANdxXTQfSQScc= +go.opentelemetry.io/collector/featuregate v1.48.0/go.mod h1:/1bclXgP91pISaEeNulRxzzmzMTm4I5Xih2SnI4HRSo= +go.opentelemetry.io/collector/internal/fanoutconsumer v0.142.0 h1:eLGLhIj5UBg5wQfCUE8QUW2s34/z2OkHt00CT3ALunY= +go.opentelemetry.io/collector/internal/fanoutconsumer v0.142.0/go.mod h1:xCrK+o5Pzy5J7fytpEgtrPUMzZdgxv9z20p1no+Qs54= +go.opentelemetry.io/collector/internal/telemetry v0.142.0 h1:ALK9O2AYWuptSGSFzNW0BL6hFq7sf2lxwTrGQa45Nic= +go.opentelemetry.io/collector/internal/telemetry v0.142.0/go.mod h1:Nuf7neseGamZJQjpf8f6yk4qrvb0YrSnuSzh5u0GwbQ= +go.opentelemetry.io/collector/internal/testutil v0.142.0 h1:MHnAVRimQdsfYqYHC3YuJRkIUap4VmSpJkkIT2N7jJA= +go.opentelemetry.io/collector/internal/testutil v0.142.0/go.mod h1:YAD9EAkwh/l5asZNbEBEUCqEjoL1OKMjAMoPjPqH76c= +go.opentelemetry.io/collector/otelcol v0.142.0 h1:duJ0gjAL9tqclYqVDYnNuthcWzunJQ5nsPoea6EIEGI= +go.opentelemetry.io/collector/otelcol v0.142.0/go.mod h1:ZE2NblF9dAq/xKbMPeEcsBXkbfoQHyPe3m5nM7WDsO0= +go.opentelemetry.io/collector/pdata v1.48.0 h1:CKZ+9v/lGTX/cTGx2XVp8kp0E8R//60kHFCBdZudrTg= +go.opentelemetry.io/collector/pdata v1.48.0/go.mod h1:jaf2JQGpfUreD1TOtGBPsq00ecOqM66NG15wALmdxKA= +go.opentelemetry.io/collector/pdata/pprofile v0.142.0 h1:Ivyw7WY8SIIWqzXsnNmjEgz3ysVs/OkIf0KIpJUnuuo= +go.opentelemetry.io/collector/pdata/pprofile v0.142.0/go.mod h1:94GAph54K4WDpYz9xirhroHB3ptNLuPiY02k8fyoNUI= +go.opentelemetry.io/collector/pdata/testdata v0.142.0 h1:+jf9RyLWl8WyhIVjpg7yuH+bRdQH4mW20cPtCMlY1cI= +go.opentelemetry.io/collector/pdata/testdata v0.142.0/go.mod h1:kgAu5ZLEcVuPH3RFiHDg23RGitgm1M0cUAVwiGX4SB8= +go.opentelemetry.io/collector/pdata/xpdata v0.142.0 h1:xRpmhY12JnJ89E2kM2maOjG7C9QK6dSnTr03Ce8qfPA= +go.opentelemetry.io/collector/pdata/xpdata v0.142.0/go.mod h1:0e/FY0Stzxx4M2sqELIRrXzeoTsAwjVPKT9mQvL4hmc= +go.opentelemetry.io/collector/pipeline v1.48.0 h1:E4zyQ7+4FTGvdGS4pruUnItuyRTGhN0Qqk1CN71lfW0= +go.opentelemetry.io/collector/pipeline v1.48.0/go.mod h1:xUrAqiebzYbrgxyoXSkk6/Y3oi5Sy3im2iCA51LwUAI= +go.opentelemetry.io/collector/pipeline/xpipeline v0.142.0 h1:/Sj6qgwWUJtGmxiq6k1AqauxXjJYzRIJxQtUamAApPI= +go.opentelemetry.io/collector/pipeline/xpipeline v0.142.0/go.mod h1:wDQUlMZLs57CNTfmoxQgiw+mwoqj8ZUChmwI6Ck6KCs= +go.opentelemetry.io/collector/processor v1.48.0 h1:3Kttw79mnrf463QKJGoGZzFfiNzQuMWK0p2nHuvOhaQ= +go.opentelemetry.io/collector/processor v1.48.0/go.mod h1:A3OsW6ga+a48J1mrnVNH5L5kB0v+n9nVFlmOQB5/Jwk= +go.opentelemetry.io/collector/processor/batchprocessor v0.142.0 h1:7db0TbGwVaBQ2xNjr1JfTOGJiWEois5G0CwMkXo95D8= +go.opentelemetry.io/collector/processor/batchprocessor v0.142.0/go.mod h1:dKn4oFvzxO/LOIF8cmnkwA2VJ4Z6BHQKcmPyQ0iB8CY= +go.opentelemetry.io/collector/processor/processorhelper v0.142.0 h1:FNQv56skQ7R5se8cyuU8zc4hSvU7ZUyRYmp0XxOjIpU= +go.opentelemetry.io/collector/processor/processorhelper v0.142.0/go.mod h1:31wwl1zprOZEf5c9mWPq2j0XMtHOSZuhC5c8o6lQ/PY= +go.opentelemetry.io/collector/processor/processorhelper/xprocessorhelper v0.142.0 h1:0m6+vPZD5ji4xcVHbJRRPIDfrfGn1FwM8ofK1ZgQ1fY= +go.opentelemetry.io/collector/processor/processorhelper/xprocessorhelper v0.142.0/go.mod h1:cpij0FM0F4mc7EWvTLAqidh8pXW4S8LrphdDlVh8kvE= +go.opentelemetry.io/collector/processor/processortest v0.142.0 h1:wQnJeXDejBL6r8ov66AYAGf8Q0/JspjuqAjPVBdCUoI= +go.opentelemetry.io/collector/processor/processortest v0.142.0/go.mod h1:QU5SWj0L+92MSvQxZDjwWCsKssNDm+nD6SHn7IvviUE= +go.opentelemetry.io/collector/processor/xprocessor v0.142.0 h1:7a1Crxrd5iBMVnebTxkcqxVkRHAlOBUUmNTUVUTnlCU= +go.opentelemetry.io/collector/processor/xprocessor v0.142.0/go.mod h1:LY/GS2DiJILJKS3ynU3eOLLWSP8CmN1FtdpAMsVV8AU= +go.opentelemetry.io/collector/receiver v1.48.0 h1:2xGdkrHE98WPxnmhevsEz3n66yWj0O/cO0AzbUgtN8A= +go.opentelemetry.io/collector/receiver v1.48.0/go.mod h1:fD0sfx2mTFlz5slMYao4zFcELz2g+FoF6ISF6elUIRk= +go.opentelemetry.io/collector/receiver/receiverhelper v0.142.0 h1:GfoWfdCyILpRq7vgBGra0qR1eOS8f52+QLBVMh658Gc= +go.opentelemetry.io/collector/receiver/receiverhelper v0.142.0/go.mod h1:yN7WC8y4HFA3FNQ6h1gKF+AkucJBivLw51Jo/4wFU/I= +go.opentelemetry.io/collector/receiver/receivertest v0.142.0 h1:g8o86xp8hi3Uq4gkxMWmGuxOtm8H0tSVP0G9KLEwqpE= +go.opentelemetry.io/collector/receiver/receivertest v0.142.0/go.mod h1:3y3gCAMiaLlXULJxHRxI9LeVF7rkAq5M2K1XGNiqDWY= +go.opentelemetry.io/collector/receiver/xreceiver v0.142.0 h1:hrKh3IqPcgQHfbdcphsT0Rf4W3rCLOI+DAGyYbk74Q8= +go.opentelemetry.io/collector/receiver/xreceiver v0.142.0/go.mod h1:8UWwgjW0ksDu29+oQEBSnSIstN263IhJbpwaEUiDuJw= go.opentelemetry.io/collector/semconv v0.128.1-0.20250610090210-188191247685 h1:XCN7qkZRNzRYfn6chsMZkbFZxoFcW6fZIsZs2aCzcbc= go.opentelemetry.io/collector/semconv v0.128.1-0.20250610090210-188191247685/go.mod h1:OPXer4l43X23cnjLXIZnRj/qQOjSuq4TgBLI76P9hns= -go.opentelemetry.io/collector/service v0.136.0 h1:NvGStX9kN1KrcKO1aJjB4LFLRCBcPERzhlOiOxrFcG4= -go.opentelemetry.io/collector/service v0.136.0/go.mod h1:xE6YQmPW5/5g4I/R3PTRBdaGr2Epc2NxkMAAEttJo1k= -go.opentelemetry.io/collector/service/hostcapabilities v0.136.0 h1:YxOwlA7mmKVQq/+vbOs37WpZ2yRZGkKmC0qKrPQwlCY= -go.opentelemetry.io/collector/service/hostcapabilities v0.136.0/go.mod h1:mONVgs/2Sw/h/fjqURBKGTB22B+7KXL9TSWNX/37LCA= -go.opentelemetry.io/contrib/bridges/otelzap v0.12.0 h1:FGre0nZh5BSw7G73VpT3xs38HchsfPsa2aZtMp0NPOs= -go.opentelemetry.io/contrib/bridges/otelzap v0.12.0/go.mod h1:X2PYPViI2wTPIMIOBjG17KNybTzsrATnvPJ02kkz7LM= -go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.62.0 h1:rbRJ8BBoVMsQShESYZ0FkvcITu8X8QNwJogcLUmDNNw= -go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.62.0/go.mod h1:ru6KHrNtNHxM4nD/vd6QrLVWgKhxPYgblq4VAtNawTQ= -go.opentelemetry.io/contrib/instrumentation/net/http/httptrace/otelhttptrace v0.61.0 h1:lREC4C0ilyP4WibDhQ7Gg2ygAQFP8oR07Fst/5cafwI= -go.opentelemetry.io/contrib/instrumentation/net/http/httptrace/otelhttptrace v0.61.0/go.mod h1:HfvuU0kW9HewH14VCOLImqKvUgONodURG7Alj/IrnGI= -go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.63.0 h1:RbKq8BG0FI8OiXhBfcRtqqHcZcka+gU3cskNuf05R18= -go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.63.0/go.mod h1:h06DGIukJOevXaj/xrNjhi/2098RZzcLTbc0jDAUbsg= -go.opentelemetry.io/contrib/otelconf v0.16.0 h1:mTYGRlZtpc/zDaTaUQSnsZ1hyoRONaS4Od/Ny5++lhE= -go.opentelemetry.io/contrib/otelconf v0.16.0/go.mod h1:gnsljuyDyVDg39vUvXKj0BVCiVaokN3b8N5BL/ab8fQ= -go.opentelemetry.io/contrib/propagators/b3 v1.37.0 h1:0aGKdIuVhy5l4GClAjl72ntkZJhijf2wg1S7b5oLoYA= -go.opentelemetry.io/contrib/propagators/b3 v1.37.0/go.mod h1:nhyrxEJEOQdwR15zXrCKI6+cJK60PXAkJ/jRyfhr2mg= -go.opentelemetry.io/contrib/zpages v0.62.0 h1:9fUYTLmrK0x/lweM2uM+BOx069jLx8PxVqWhegGJ9Bo= -go.opentelemetry.io/contrib/zpages v0.62.0/go.mod h1:C8kXoiC1Ytvereztus2R+kqdSa6W/MZ8FfS8Zwj+LiM= -go.opentelemetry.io/otel v1.38.0 h1:RkfdswUDRimDg0m2Az18RKOsnI8UDzppJAtj01/Ymk8= -go.opentelemetry.io/otel v1.38.0/go.mod h1:zcmtmQ1+YmQM9wrNsTGV/q/uyusom3P8RxwExxkZhjM= -go.opentelemetry.io/otel/exporters/otlp/otlplog/otlploggrpc v0.13.0 h1:z6lNIajgEBVtQZHjfw2hAccPEBDs+nx58VemmXWa2ec= -go.opentelemetry.io/otel/exporters/otlp/otlplog/otlploggrpc v0.13.0/go.mod h1:+kyc3bRx/Qkq05P6OCu3mTEIOxYRYzoIg+JsUp5X+PM= -go.opentelemetry.io/otel/exporters/otlp/otlplog/otlploghttp v0.13.0 h1:zUfYw8cscHHLwaY8Xz3fiJu+R59xBnkgq2Zr1lwmK/0= -go.opentelemetry.io/otel/exporters/otlp/otlplog/otlploghttp v0.13.0/go.mod h1:514JLMCcFLQFS8cnTepOk6I09cKWJ5nGHBxHrMJ8Yfg= -go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetricgrpc v1.37.0 h1:zG8GlgXCJQd5BU98C0hZnBbElszTmUgCNCfYneaDL0A= -go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetricgrpc v1.37.0/go.mod h1:hOfBCz8kv/wuq73Mx2H2QnWokh/kHZxkh6SNF2bdKtw= -go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetrichttp v1.37.0 h1:9PgnL3QNlj10uGxExowIDIZu66aVBwWhXmbOp1pa6RA= -go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetrichttp v1.37.0/go.mod h1:0ineDcLELf6JmKfuo0wvvhAVMuxWFYvkTin2iV4ydPQ= -go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.37.0 h1:Ahq7pZmv87yiyn3jeFz/LekZmPLLdKejuO3NcK9MssM= -go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.37.0/go.mod h1:MJTqhM0im3mRLw1i8uGHnCvUEeS7VwRyxlLC78PA18M= -go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.37.0 h1:EtFWSnwW9hGObjkIdmlnWSydO+Qs8OwzfzXLUPg4xOc= -go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.37.0/go.mod h1:QjUEoiGCPkvFZ/MjK6ZZfNOS6mfVEVKYE99dFhuN2LI= -go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp v1.37.0 h1:bDMKF3RUSxshZ5OjOTi8rsHGaPKsAt76FaqgvIUySLc= -go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp v1.37.0/go.mod h1:dDT67G/IkA46Mr2l9Uj7HsQVwsjASyV9SjGofsiUZDA= +go.opentelemetry.io/collector/service v0.142.0 h1:3p2V3E3v97bmjJB591VkHlZQ+ez/PjGDHDF247jImLo= +go.opentelemetry.io/collector/service v0.142.0/go.mod h1:n75a5MCGU/xz3iAhM/tZYxAXCIkpWvN7QQftO0f9ulI= +go.opentelemetry.io/collector/service/hostcapabilities v0.142.0 h1:/l/T3kWNrxy18pV+VfTKIRBw0JwPHiDVH4lPOyKjI78= +go.opentelemetry.io/collector/service/hostcapabilities v0.142.0/go.mod h1:1Rm5SgOnwBKllAWBlPVcEDCBEtiHe7dv2Pfr4/HaiWo= +go.opentelemetry.io/collector/service/telemetry/telemetrytest v0.142.0 h1:vl9QQPsPZVYzIn7sRjqNpScP+hEOAaoX+C3iGF7CkOM= +go.opentelemetry.io/collector/service/telemetry/telemetrytest v0.142.0/go.mod h1:Sf8FQY4ig/+jIC9eGKOMcw97yCB2rR0aUGgchWM4tIo= +go.opentelemetry.io/contrib/bridges/otelzap v0.13.0 h1:aBKdhLVieqvwWe9A79UHI/0vgp2t/s2euY8X59pGRlw= +go.opentelemetry.io/contrib/bridges/otelzap v0.13.0/go.mod h1:SYqtxLQE7iINgh6WFuVi2AI70148B8EI35DSk0Wr8m4= +go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.63.0 h1:YH4g8lQroajqUwWbq/tr2QX1JFmEXaDLgG+ew9bLMWo= +go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.63.0/go.mod h1:fvPi2qXDqFs8M4B4fmJhE92TyQs9Ydjlg3RvfUp+NbQ= +go.opentelemetry.io/contrib/instrumentation/net/http/httptrace/otelhttptrace v0.63.0 h1:2pn7OzMewmYRiNtv1doZnLo3gONcnMHlFnmOR8Vgt+8= +go.opentelemetry.io/contrib/instrumentation/net/http/httptrace/otelhttptrace v0.63.0/go.mod h1:rjbQTDEPQymPE0YnRQp9/NuPwwtL0sesz/fnqRW/v84= +go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.64.0 h1:ssfIgGNANqpVFCndZvcuyKbl0g+UAVcbBcqGkG28H0Y= +go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.64.0/go.mod h1:GQ/474YrbE4Jx8gZ4q5I4hrhUzM6UPzyrqJYV2AqPoQ= +go.opentelemetry.io/contrib/otelconf v0.18.0 h1:ciF2Gf00BWs0DnexKFZXcxg9kJ8r3SUW1LOzW3CsKA8= +go.opentelemetry.io/contrib/otelconf v0.18.0/go.mod h1:FcP7k+JLwBLdOxS6qY6VQ/4b5VBntI6L6o80IMwhAeI= +go.opentelemetry.io/contrib/propagators/b3 v1.38.0 h1:uHsCCOSKl0kLrV2dLkFK+8Ywk9iKa/fptkytc6aFFEo= +go.opentelemetry.io/contrib/propagators/b3 v1.38.0/go.mod h1:wMRSZJZcY8ya9mApLLhwIMjqmApy2o/Ml+62lhvxyHU= +go.opentelemetry.io/contrib/zpages v0.63.0 h1:TppOKuZGbqXMgsfjqq3i09N5Vbo1JLtLImUqiTPGnX4= +go.opentelemetry.io/contrib/zpages v0.63.0/go.mod h1:5F8uugz75ay/MMhRRhxAXY33FuaI8dl7jTxefrIy5qk= +go.opentelemetry.io/otel v1.39.0 h1:8yPrr/S0ND9QEfTfdP9V+SiwT4E0G7Y5MO7p85nis48= +go.opentelemetry.io/otel v1.39.0/go.mod h1:kLlFTywNWrFyEdH0oj2xK0bFYZtHRYUdv1NklR/tgc8= +go.opentelemetry.io/otel/exporters/otlp/otlplog/otlploggrpc v0.14.0 h1:OMqPldHt79PqWKOMYIAQs3CxAi7RLgPxwfFSwr4ZxtM= +go.opentelemetry.io/otel/exporters/otlp/otlplog/otlploggrpc v0.14.0/go.mod h1:1biG4qiqTxKiUCtoWDPpL3fB3KxVwCiGw81j3nKMuHE= +go.opentelemetry.io/otel/exporters/otlp/otlplog/otlploghttp v0.14.0 h1:QQqYw3lkrzwVsoEX0w//EhH/TCnpRdEenKBOOEIMjWc= +go.opentelemetry.io/otel/exporters/otlp/otlplog/otlploghttp v0.14.0/go.mod h1:gSVQcr17jk2ig4jqJ2DX30IdWH251JcNAecvrqTxH1s= +go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetricgrpc v1.38.0 h1:vl9obrcoWVKp/lwl8tRE33853I8Xru9HFbw/skNeLs8= +go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetricgrpc v1.38.0/go.mod h1:GAXRxmLJcVM3u22IjTg74zWBrRCKq8BnOqUVLodpcpw= +go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetrichttp v1.38.0 h1:Oe2z/BCg5q7k4iXC3cqJxKYg0ieRiOqF0cecFYdPTwk= +go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetrichttp v1.38.0/go.mod h1:ZQM5lAJpOsKnYagGg/zV2krVqTtaVdYdDkhMoX6Oalg= +go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.38.0 h1:GqRJVj7UmLjCVyVJ3ZFLdPRmhDUp2zFmQe3RHIOsw24= +go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.38.0/go.mod h1:ri3aaHSmCTVYu2AWv44YMauwAQc0aqI9gHKIcSbI1pU= +go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.38.0 h1:lwI4Dc5leUqENgGuQImwLo4WnuXFPetmPpkLi2IrX54= +go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.38.0/go.mod h1:Kz/oCE7z5wuyhPxsXDuaPteSWqjSBD5YaSdbxZYGbGk= +go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp v1.38.0 h1:aTL7F04bJHUlztTsNGJ2l+6he8c+y/b//eR0jjjemT4= +go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp v1.38.0/go.mod h1:kldtb7jDTeol0l3ewcmd8SDvx3EmIE7lyvqbasU3QC4= go.opentelemetry.io/otel/exporters/prometheus v0.60.0 h1:cGtQxGvZbnrWdC2GyjZi0PDKVSLWP/Jocix3QWfXtbo= go.opentelemetry.io/otel/exporters/prometheus v0.60.0/go.mod h1:hkd1EekxNo69PTV4OWFGZcKQiIqg0RfuWExcPKFvepk= -go.opentelemetry.io/otel/exporters/stdout/stdoutlog v0.13.0 h1:yEX3aC9KDgvYPhuKECHbOlr5GLwH6KTjLJ1sBSkkxkc= -go.opentelemetry.io/otel/exporters/stdout/stdoutlog v0.13.0/go.mod h1:/GXR0tBmmkxDaCUGahvksvp66mx4yh5+cFXgSlhg0vQ= -go.opentelemetry.io/otel/exporters/stdout/stdoutmetric v1.37.0 h1:6VjV6Et+1Hd2iLZEPtdV7vie80Yyqf7oikJLjQ/myi0= -go.opentelemetry.io/otel/exporters/stdout/stdoutmetric v1.37.0/go.mod h1:u8hcp8ji5gaM/RfcOo8z9NMnf1pVLfVY7lBY2VOGuUU= -go.opentelemetry.io/otel/exporters/stdout/stdouttrace v1.37.0 h1:SNhVp/9q4Go/XHBkQ1/d5u9P/U+L1yaGPoi0x+mStaI= -go.opentelemetry.io/otel/exporters/stdout/stdouttrace v1.37.0/go.mod h1:tx8OOlGH6R4kLV67YaYO44GFXloEjGPZuMjEkaaqIp4= -go.opentelemetry.io/otel/log v0.14.0 h1:2rzJ+pOAZ8qmZ3DDHg73NEKzSZkhkGIua9gXtxNGgrM= -go.opentelemetry.io/otel/log v0.14.0/go.mod h1:5jRG92fEAgx0SU/vFPxmJvhIuDU9E1SUnEQrMlJpOno= +go.opentelemetry.io/otel/exporters/stdout/stdoutlog v0.14.0 h1:B/g+qde6Mkzxbry5ZZag0l7QrQBCtVm7lVjaLgmpje8= +go.opentelemetry.io/otel/exporters/stdout/stdoutlog v0.14.0/go.mod h1:mOJK8eMmgW6ocDJn6Bn11CcZ05gi3P8GylBXEkZtbgA= +go.opentelemetry.io/otel/exporters/stdout/stdoutmetric v1.38.0 h1:wm/Q0GAAykXv83wzcKzGGqAnnfLFyFe7RslekZuv+VI= +go.opentelemetry.io/otel/exporters/stdout/stdoutmetric v1.38.0/go.mod h1:ra3Pa40+oKjvYh+ZD3EdxFZZB0xdMfuileHAm4nNN7w= +go.opentelemetry.io/otel/exporters/stdout/stdouttrace v1.38.0 h1:kJxSDN4SgWWTjG/hPp3O7LCGLcHXFlvS2/FFOrwL+SE= +go.opentelemetry.io/otel/exporters/stdout/stdouttrace v1.38.0/go.mod h1:mgIOzS7iZeKJdeB8/NYHrJ48fdGc71Llo5bJ1J4DWUE= +go.opentelemetry.io/otel/log v0.15.0 h1:0VqVnc3MgyYd7QqNVIldC3dsLFKgazR6P3P3+ypkyDY= +go.opentelemetry.io/otel/log v0.15.0/go.mod h1:9c/G1zbyZfgu1HmQD7Qj84QMmwTp2QCQsZH1aeoWDE4= go.opentelemetry.io/otel/log/logtest v0.14.0 h1:BGTqNeluJDK2uIHAY8lRqxjVAYfqgcaTbVk1n3MWe5A= go.opentelemetry.io/otel/log/logtest v0.14.0/go.mod h1:IuguGt8XVP4XA4d2oEEDMVDBBCesMg8/tSGWDjuKfoA= -go.opentelemetry.io/otel/metric v1.38.0 h1:Kl6lzIYGAh5M159u9NgiRkmoMKjvbsKtYRwgfrA6WpA= -go.opentelemetry.io/otel/metric v1.38.0/go.mod h1:kB5n/QoRM8YwmUahxvI3bO34eVtQf2i4utNVLr9gEmI= -go.opentelemetry.io/otel/sdk v1.38.0 h1:l48sr5YbNf2hpCUj/FoGhW9yDkl+Ma+LrVl8qaM5b+E= -go.opentelemetry.io/otel/sdk v1.38.0/go.mod h1:ghmNdGlVemJI3+ZB5iDEuk4bWA3GkTpW+DOoZMYBVVg= -go.opentelemetry.io/otel/sdk/log v0.13.0 h1:I3CGUszjM926OphK8ZdzF+kLqFvfRY/IIoFq/TjwfaQ= -go.opentelemetry.io/otel/sdk/log v0.13.0/go.mod h1:lOrQyCCXmpZdN7NchXb6DOZZa1N5G1R2tm5GMMTpDBw= -go.opentelemetry.io/otel/sdk/log/logtest v0.13.0 h1:9yio6AFZ3QD9j9oqshV1Ibm9gPLlHNxurno5BreMtIA= -go.opentelemetry.io/otel/sdk/log/logtest v0.13.0/go.mod h1:QOGiAJHl+fob8Nu85ifXfuQYmJTFAvcrxL6w5/tu168= -go.opentelemetry.io/otel/sdk/metric v1.38.0 h1:aSH66iL0aZqo//xXzQLYozmWrXxyFkBJ6qT5wthqPoM= -go.opentelemetry.io/otel/sdk/metric v1.38.0/go.mod h1:dg9PBnW9XdQ1Hd6ZnRz689CbtrUp0wMMs9iPcgT9EZA= -go.opentelemetry.io/otel/trace v1.38.0 h1:Fxk5bKrDZJUH+AMyyIXGcFAPah0oRcT+LuNtJrmcNLE= -go.opentelemetry.io/otel/trace v1.38.0/go.mod h1:j1P9ivuFsTceSWe1oY+EeW3sc+Pp42sO++GHkg4wwhs= -go.opentelemetry.io/proto/otlp v1.7.0 h1:jX1VolD6nHuFzOYso2E73H85i92Mv8JQYk0K9vz09os= -go.opentelemetry.io/proto/otlp v1.7.0/go.mod h1:fSKjH6YJ7HDlwzltzyMj036AJ3ejJLCgCSHGj4efDDo= -go.opentelemetry.io/proto/slim/otlp v1.8.0 h1:afcLwp2XOeCbGrjufT1qWyruFt+6C9g5SOuymrSPUXQ= -go.opentelemetry.io/proto/slim/otlp v1.8.0/go.mod h1:Yaa5fjYm1SMCq0hG0x/87wV1MP9H5xDuG/1+AhvBcsI= -go.opentelemetry.io/proto/slim/otlp/collector/profiles/v1development v0.1.0 h1:Uc+elixz922LHx5colXGi1ORbsW8DTIGM+gg+D9V7HE= -go.opentelemetry.io/proto/slim/otlp/collector/profiles/v1development v0.1.0/go.mod h1:VyU6dTWBWv6h9w/+DYgSZAPMabWbPTFTuxp25sM8+s0= -go.opentelemetry.io/proto/slim/otlp/profiles/v1development v0.1.0 h1:i8YpvWGm/Uq1koL//bnbJ/26eV3OrKWm09+rDYo7keU= -go.opentelemetry.io/proto/slim/otlp/profiles/v1development v0.1.0/go.mod h1:pQ70xHY/ZVxNUBPn+qUWPl8nwai87eWdqL3M37lNi9A= +go.opentelemetry.io/otel/metric v1.39.0 h1:d1UzonvEZriVfpNKEVmHXbdf909uGTOQjA0HF0Ls5Q0= +go.opentelemetry.io/otel/metric v1.39.0/go.mod h1:jrZSWL33sD7bBxg1xjrqyDjnuzTUB0x1nBERXd7Ftcs= +go.opentelemetry.io/otel/sdk v1.39.0 h1:nMLYcjVsvdui1B/4FRkwjzoRVsMK8uL/cj0OyhKzt18= +go.opentelemetry.io/otel/sdk v1.39.0/go.mod h1:vDojkC4/jsTJsE+kh+LXYQlbL8CgrEcwmt1ENZszdJE= +go.opentelemetry.io/otel/sdk/log v0.14.0 h1:JU/U3O7N6fsAXj0+CXz21Czg532dW2V4gG1HE/e8Zrg= +go.opentelemetry.io/otel/sdk/log v0.14.0/go.mod h1:imQvII+0ZylXfKU7/wtOND8Hn4OpT3YUoIgqJVksUkM= +go.opentelemetry.io/otel/sdk/log/logtest v0.14.0 h1:Ijbtz+JKXl8T2MngiwqBlPaHqc4YCaP/i13Qrow6gAM= +go.opentelemetry.io/otel/sdk/log/logtest v0.14.0/go.mod h1:dCU8aEL6q+L9cYTqcVOk8rM9Tp8WdnHOPLiBgp0SGOA= +go.opentelemetry.io/otel/sdk/metric v1.39.0 h1:cXMVVFVgsIf2YL6QkRF4Urbr/aMInf+2WKg+sEJTtB8= +go.opentelemetry.io/otel/sdk/metric v1.39.0/go.mod h1:xq9HEVH7qeX69/JnwEfp6fVq5wosJsY1mt4lLfYdVew= +go.opentelemetry.io/otel/trace v1.39.0 h1:2d2vfpEDmCJ5zVYz7ijaJdOF59xLomrvj7bjt6/qCJI= +go.opentelemetry.io/otel/trace v1.39.0/go.mod h1:88w4/PnZSazkGzz/w84VHpQafiU4EtqqlVdxWy+rNOA= +go.opentelemetry.io/proto/otlp v1.7.1 h1:gTOMpGDb0WTBOP8JaO72iL3auEZhVmAQg4ipjOVAtj4= +go.opentelemetry.io/proto/otlp v1.7.1/go.mod h1:b2rVh6rfI/s2pHWNlB7ILJcRALpcNDzKhACevjI+ZnE= +go.opentelemetry.io/proto/slim/otlp v1.9.0 h1:fPVMv8tP3TrsqlkH1HWYUpbCY9cAIemx184VGkS6vlE= +go.opentelemetry.io/proto/slim/otlp v1.9.0/go.mod h1:xXdeJJ90Gqyll+orzUkY4bOd2HECo5JofeoLpymVqdI= +go.opentelemetry.io/proto/slim/otlp/collector/profiles/v1development v0.2.0 h1:o13nadWDNkH/quoDomDUClnQBpdQQ2Qqv0lQBjIXjE8= +go.opentelemetry.io/proto/slim/otlp/collector/profiles/v1development v0.2.0/go.mod h1:Gyb6Xe7FTi/6xBHwMmngGoHqL0w29Y4eW8TGFzpefGA= +go.opentelemetry.io/proto/slim/otlp/profiles/v1development v0.2.0 h1:EiUYvtwu6PMrMHVjcPfnsG3v+ajPkbUeH+IL93+QYyk= +go.opentelemetry.io/proto/slim/otlp/profiles/v1development v0.2.0/go.mod h1:mUUHKFiN2SST3AhJ8XhJxEoeVW12oqfXog0Bo8W3Ec4= 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/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.0 h1:aJMhYGrd5QSmlpLMr2MftRKl7t8J8PTZPA732ud/XR8= -go.uber.org/zap v1.27.0/go.mod h1:GB2qFLM7cTU87MWRP2mPIjqfIDnGu+VIO4V/SdhGo2E= +go.uber.org/zap v1.27.1 h1:08RqriUEv8+ArZRYSTXy1LeBScaMpVSTBhCeaZYfMYc= +go.uber.org/zap v1.27.1/go.mod h1:GB2qFLM7cTU87MWRP2mPIjqfIDnGu+VIO4V/SdhGo2E= go.uber.org/zap/exp v0.3.0 h1:6JYzdifzYkGmTdRR59oYH+Ng7k49H9qVpWwNSsGJj3U= go.uber.org/zap/exp v0.3.0/go.mod h1:5I384qq7XGxYyByIhHm6jg5CHkGY0nsTfbDLgDDlgJQ= -go.yaml.in/yaml/v2 v2.4.2 h1:DzmwEr2rDGHl7lsFgAHxmNz/1NlQ7xLIrlN2h5d1eGI= -go.yaml.in/yaml/v2 v2.4.2/go.mod h1:081UH+NErpNdqlCXm3TtEran0rJZGxAYx9hb/ELlsPU= +go.yaml.in/yaml/v2 v2.4.3 h1:6gvOSjQoTB3vt1l+CU+tSyi/HOjfOjRLJ4YwYZGwRO0= +go.yaml.in/yaml/v2 v2.4.3/go.mod h1:zSxWcmIDjOzPXpjlTTbAsKokqkDNAVtZO0WOMiT90s8= go.yaml.in/yaml/v3 v3.0.4 h1:tfq32ie2Jv2UxXFdLJdh3jXuOzWiL1fo0bu/FbuKpbc= go.yaml.in/yaml/v3 v3.0.4/go.mod h1:DhzuOOF2ATzADvBadXxruRBLzYTpT36CKvDb3+aBEFg= golang.org/x/crypto v0.0.0-20180904163835-0709b304e793/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= @@ -858,10 +859,10 @@ 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.42.0 h1:chiH31gIWm57EkTXpwnqf8qeuMUi0yekh6mT2AvFlqI= -golang.org/x/crypto v0.42.0/go.mod h1:4+rDnOTJhQCx2q7/j6rAN5XDw8kPjeaXEUR2eL94ix8= -golang.org/x/exp v0.0.0-20250106191152-7588d65b2ba8 h1:yqrTHse8TCMW1M1ZCP+VAR/l0kKxwaAIqN/il7x4voA= -golang.org/x/exp v0.0.0-20250106191152-7588d65b2ba8/go.mod h1:tujkw807nyEEAamNbDrEGzRav+ilXA7PCRAd6xsmwiU= +golang.org/x/crypto v0.46.0 h1:cKRW/pmt1pKAfetfu+RCEvjvZkA9RimPbh7bhFjGVBU= +golang.org/x/crypto v0.46.0/go.mod h1:Evb/oLKmMraqjZ2iQTwDwvCtJkczlDuTmdJXoZVzqU0= +golang.org/x/exp v0.0.0-20250808145144-a408d31f581a h1:Y+7uR/b1Mw2iSXZ3G//1haIiSElDQZ8KWh0h+sZPG90= +golang.org/x/exp v0.0.0-20250808145144-a408d31f581a/go.mod h1:rT6SFzZ7oxADUDx58pcaKFTcZ+inxAa9fTrYx/uVYwg= 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= @@ -869,8 +870,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.27.0 h1:kb+q2PyFnEADO2IEF935ehFUXlWiNjJWtRNgBLSfbxQ= -golang.org/x/mod v0.27.0/go.mod h1:rWI627Fq0DEoudcK+MBkNkCe0EetEaDSwJJkCcjpazc= +golang.org/x/mod v0.30.0 h1:fDEXFVZ/fmCKProc/yAXXUijritrDzahmwwefnjoPFk= +golang.org/x/mod v0.30.0/go.mod h1:lAsf5O2EvJeSFMiBxXDki7sCgAxEUcZHXoXMKT4GJKc= 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= @@ -887,10 +888,10 @@ 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.44.0 h1:evd8IRDyfNBMBTTY5XRF1vaZlD+EmWx6x8PkhR04H/I= -golang.org/x/net v0.44.0/go.mod h1:ECOoLqd5U3Lhyeyo/QDCEVQ4sNgYsqvCZ722XogGieY= -golang.org/x/oauth2 v0.30.0 h1:dnDm7JmhM45NNpd8FDDeLhK6FwqbOf4MLCM9zb1BOHI= -golang.org/x/oauth2 v0.30.0/go.mod h1:B++QgG3ZKulg6sRPGD/mqlHQs5rB3Ml9erfeDY7xKlU= +golang.org/x/net v0.48.0 h1:zyQRTTrjc33Lhh0fBgT/H3oZq9WuvRR5gPC70xpDiQU= +golang.org/x/net v0.48.0/go.mod h1:+ndRgGjkh8FGtu1w1FGbEC31if4VrNVMuKTgcAAnQRY= +golang.org/x/oauth2 v0.32.0 h1:jsCblLleRMDrxMN29H3z/k1KliIvpLgCkE6R8FXXNgY= +golang.org/x/oauth2 v0.32.0/go.mod h1:lzm5WQJQwKZ3nwavOZ3IS5Aulzxi68dUSgRHujetwEA= golang.org/x/sync v0.0.0-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= @@ -903,8 +904,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.17.0 h1:l60nONMj9l5drqw6jlhIELNv9I0A4OFgRsG9k2oT9Ug= -golang.org/x/sync v0.17.0/go.mod h1:9KTHXmSnoGruLpwFjVSX0lNNA75CykiMECbovNTZqGI= +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/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= @@ -940,8 +941,8 @@ golang.org/x/sys v0.12.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.17.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= golang.org/x/sys v0.20.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= golang.org/x/sys v0.28.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= -golang.org/x/sys v0.36.0 h1:KVRy2GtZBrk1cBYA7MKu5bEZFxQk4NIDV6RLVcC8o0k= -golang.org/x/sys v0.36.0/go.mod h1:OgkHotnGiDImocRcuBABYBEXf8A9a87e/uXjp9XT3ks= +golang.org/x/sys v0.39.0 h1:CvCKL8MeisomCi6qNZ+wbb0DN9E5AATixKsvNtMoMFk= +golang.org/x/sys v0.39.0/go.mod h1:OgkHotnGiDImocRcuBABYBEXf8A9a87e/uXjp9XT3ks= golang.org/x/telemetry v0.0.0-20240228155512-f48c80bd79b2/go.mod h1:TeRTkGYfJXctD9OcfyVLyj2J3IxLnKwHJR8f4D8a3YE= golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8= @@ -951,8 +952,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.35.0 h1:bZBVKBudEyhRcajGcNc3jIfWPqV4y/Kt2XcoigOWtDQ= -golang.org/x/term v0.35.0/go.mod h1:TPGtkTLesOwf2DE8CgVYiZinHAOuy5AYUYT1lENIZnA= +golang.org/x/term v0.38.0 h1:PQ5pkm/rLO6HnxFR7N2lJHOZX6Kez5Y1gDSJla6jo7Q= +golang.org/x/term v0.38.0/go.mod h1:bSEAKrOT1W+VSu9TSCMtoGEOUcKxOKgl3LE5QEF/xVg= 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= @@ -964,10 +965,10 @@ 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.29.0 h1:1neNs90w9YzJ9BocxfsQNHKuAT4pkghyXc4nhZ6sJvk= -golang.org/x/text v0.29.0/go.mod h1:7MhJOA9CD2qZyOKYazxdYMF85OwPdEr9jTtBpO7ydH4= -golang.org/x/time v0.12.0 h1:ScB/8o8olJvc+CQPWrK3fPZNfh7qgwCrY0zJmoEQLSE= -golang.org/x/time v0.12.0/go.mod h1:CDIdPxbZBQxdj6cxyCIdrNogrJKMJ7pr37NYpMcMDSg= +golang.org/x/text v0.32.0 h1:ZD01bjUt1FQ9WJ0ClOL5vxgxOI/sVCNgX1YtKwcY0mU= +golang.org/x/text v0.32.0/go.mod h1:o/rUWzghvpD5TXrTIBuJU77MTaN0ljMWE47kxGJQ7jY= +golang.org/x/time v0.13.0 h1:eUlYslOIt32DgYD6utsuUeHs4d7AsEYLuIAdg7FlYgI= +golang.org/x/time v0.13.0/go.mod h1:eL/Oa2bBBK0TkX57Fyni+NgnyQQN4LitPmob2Hjnqw4= 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= @@ -977,26 +978,28 @@ 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.36.0 h1:kWS0uv/zsvHEle1LbV5LE8QujrxB3wfQyxHfhOk0Qkg= -golang.org/x/tools v0.36.0/go.mod h1:WBDiHKJK8YgLHlcQPYQzNCkUxUypCaa5ZegCVutKm+s= +golang.org/x/tools v0.39.0 h1:ik4ho21kwuQln40uelmciQPp9SipgNDdrafrYA4TmQQ= +golang.org/x/tools v0.39.0/go.mod h1:JnefbkDPyD8UU2kI5fuf8ZX4/yUeh9W877ZeBONxUqQ= +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= golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= gonum.org/v1/gonum v0.16.0 h1:5+ul4Swaf3ESvrOnidPp4GZbzf0mxVQpDCYUQE7OJfk= gonum.org/v1/gonum v0.16.0/go.mod h1:fef3am4MQ93R2HHpKnLk4/Tbh/s0+wqD5nfa6Pnwy4E= -google.golang.org/api v0.239.0 h1:2hZKUnFZEy81eugPs4e2XzIJ5SOwQg0G82bpXD65Puo= -google.golang.org/api v0.239.0/go.mod h1:cOVEm2TpdAGHL2z+UwyS+kmlGr3bVWQQ6sYEqkKje50= -google.golang.org/genproto v0.0.0-20250505200425-f936aa4a68b2 h1:1tXaIXCracvtsRxSBsYDiSBN0cuJvM7QYW+MrpIRY78= -google.golang.org/genproto v0.0.0-20250505200425-f936aa4a68b2/go.mod h1:49MsLSx0oWMOZqcpB3uL8ZOkAh1+TndpJ8ONoCBWiZk= -google.golang.org/genproto/googleapis/api v0.0.0-20250707201910-8d1bb00bc6a7 h1:FiusG7LWj+4byqhbvmB+Q93B/mOxJLN2DTozDuZm4EU= -google.golang.org/genproto/googleapis/api v0.0.0-20250707201910-8d1bb00bc6a7/go.mod h1:kXqgZtrWaf6qS3jZOCnCH7WYfrvFjkC51bM8fz3RsCA= -google.golang.org/genproto/googleapis/rpc v0.0.0-20250707201910-8d1bb00bc6a7 h1:pFyd6EwwL2TqFf8emdthzeX+gZE1ElRq3iM8pui4KBY= -google.golang.org/genproto/googleapis/rpc v0.0.0-20250707201910-8d1bb00bc6a7/go.mod h1:qQ0YXyHHx3XkvlzUtpXDkS29lDSafHMZBAZDc03LQ3A= -google.golang.org/grpc v1.75.1 h1:/ODCNEuf9VghjgO3rqLcfg8fiOP0nSluljWFlDxELLI= -google.golang.org/grpc v1.75.1/go.mod h1:JtPAzKiq4v1xcAB2hydNlWI2RnF85XXcV0mhKXr2ecQ= -google.golang.org/protobuf v1.36.9 h1:w2gp2mA27hUeUzj9Ex9FBjsBm40zfaDtEWow293U7Iw= -google.golang.org/protobuf v1.36.9/go.mod h1:fuxRtAxBytpl4zzqUh6/eyUujkJdNiuEkXntxiD/uRU= +google.golang.org/api v0.252.0 h1:xfKJeAJaMwb8OC9fesr369rjciQ704AjU/psjkKURSI= +google.golang.org/api v0.252.0/go.mod h1:dnHOv81x5RAmumZ7BWLShB/u7JZNeyalImxHmtTHxqw= +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-20251022142026-3a174f9686a8 h1:mepRgnBZa07I4TRuomDE4sTIYieg/osKmzIf4USdWS4= +google.golang.org/genproto/googleapis/api v0.0.0-20251022142026-3a174f9686a8/go.mod h1:fDMmzKV90WSg1NbozdqrE64fkuTv6mlq2zxo9ad+3yo= +google.golang.org/genproto/googleapis/rpc v0.0.0-20251022142026-3a174f9686a8 h1:M1rk8KBnUsBDg1oPGHNCxG4vc1f49epmTO7xscSajMk= +google.golang.org/genproto/googleapis/rpc v0.0.0-20251022142026-3a174f9686a8/go.mod h1:7i2o+ce6H/6BluujYR+kqX3GKH+dChPTQU19wjRPiGk= +google.golang.org/grpc v1.77.0 h1:wVVY6/8cGA6vvffn+wWK5ToddbgdU3d8MNENr4evgXM= +google.golang.org/grpc v1.77.0/go.mod h1:z0BY1iVj0q8E1uSQCjL9cppRj+gnZjzDnzV0dHhrNig= +google.golang.org/protobuf v1.36.10 h1:AYd7cD/uASjIL6Q9LiTjz8JLcrh/88q5UObnmY3aOOE= +google.golang.org/protobuf v1.36.10/go.mod h1:HTf+CrKn2C3g5S8VImy6tdcUvCska2kB7j23XfzDpco= gopkg.in/alecthomas/kingpin.v2 v2.2.6/go.mod h1:FMv+mEhP44yOT+4EoQTLFTRgOQ1FBLkstjWtayDeSgw= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/check.v1 v1.0.0-20190902080502-41f04d3bba15/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= @@ -1019,22 +1022,23 @@ 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.0.3 h1:4AuOwCGf4lLR9u3YOe2awrHygurzhO/HeQ6laiA6Sx0= gotest.tools/v3 v3.0.3/go.mod h1:Z7Lb0S5l+klDB31fvDQX8ss/FlKDxtlFlw3Oa8Ymbl8= -k8s.io/api v0.32.3 h1:Hw7KqxRusq+6QSplE3NYG4MBxZw1BZnq4aP4cJVINls= -k8s.io/api v0.32.3/go.mod h1:2wEDTXADtm/HA7CCMD8D8bK4yuBUptzaRhYcYEEYA3k= -k8s.io/apimachinery v0.32.3 h1:JmDuDarhDmA/Li7j3aPrwhpNBA94Nvk5zLeOge9HH1U= -k8s.io/apimachinery v0.32.3/go.mod h1:GpHVgxoKlTxClKcteaeuF1Ul/lDVb74KpZcxcmLDElE= -k8s.io/client-go v0.32.3 h1:RKPVltzopkSgHS7aS98QdscAgtgah/+zmpAogooIqVU= -k8s.io/client-go v0.32.3/go.mod h1:3v0+3k4IcT9bXTc4V2rt+d2ZPPG700Xy6Oi0Gdl2PaY= +k8s.io/api v0.34.1 h1:jC+153630BMdlFukegoEL8E/yT7aLyQkIVuwhmwDgJM= +k8s.io/api v0.34.1/go.mod h1:SB80FxFtXn5/gwzCoN6QCtPD7Vbu5w2n1S0J5gFfTYk= +k8s.io/apimachinery v0.34.1 h1:dTlxFls/eikpJxmAC7MVE8oOeP1zryV7iRyIjB0gky4= +k8s.io/apimachinery v0.34.1/go.mod h1:/GwIlEcWuTX9zKIg2mbw0LRFIsXwrfoVxn+ef0X13lw= +k8s.io/client-go v0.34.1 h1:ZUPJKgXsnKwVwmKKdPfw4tB58+7/Ik3CrjOEhsiZ7mY= +k8s.io/client-go v0.34.1/go.mod h1:kA8v0FP+tk6sZA0yKLRG67LWjqufAoSHA2xVGKw9Of8= 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-20241105132330-32ad38e42d3f h1:GA7//TjRY9yWGy1poLzYYJJ4JRdzg3+O6e8I+e+8T5Y= -k8s.io/kube-openapi v0.0.0-20241105132330-32ad38e42d3f/go.mod h1:R/HEjbvWI0qdfb8viZUeVZm0X6IZnxAydC7YU42CMw4= -k8s.io/utils v0.0.0-20241104100929-3ea5e8cea738 h1:M3sRQVHv7vB20Xc2ybTt7ODCeFj6JSWYFzOFnYeS6Ro= -k8s.io/utils v0.0.0-20241104100929-3ea5e8cea738/go.mod h1:OLgZIPagt7ERELqWJFomSt595RzquPNLL48iOWgYOg0= -sigs.k8s.io/json v0.0.0-20241010143419-9aa6b5e7a4b3 h1:/Rv+M11QRah1itp8VhT6HoVx1Ray9eB4DBr+K+/sCJ8= -sigs.k8s.io/json v0.0.0-20241010143419-9aa6b5e7a4b3/go.mod h1:18nIHnGi6636UCz6m8i4DhaJ65T6EruyzmoQqI2BVDo= -sigs.k8s.io/structured-merge-diff/v4 v4.4.2 h1:MdmvkGuXi/8io6ixD5wud3vOLwc1rj0aNqRlpuvjmwA= -sigs.k8s.io/structured-merge-diff/v4 v4.4.2/go.mod h1:N8f93tFZh9U6vpxwRArLiikrE5/2tiu1w1AGfACIGE4= -sigs.k8s.io/yaml v1.4.0/go.mod h1:Ejl7/uTz7PSA4eKMyQCUTnhZYNmLIl+5c2lQPGR2BPY= -sigs.k8s.io/yaml v1.5.0 h1:M10b2U7aEUY6hRtU870n2VTPgR5RZiL/I6Lcc2F4NUQ= -sigs.k8s.io/yaml v1.5.0/go.mod h1:wZs27Rbxoai4C0f8/9urLZtZtF3avA3gKvGyPdDqTO4= +k8s.io/kube-openapi v0.0.0-20250710124328-f3f2b991d03b h1:MloQ9/bdJyIu9lb1PzujOPolHyvO06MXG5TUIj2mNAA= +k8s.io/kube-openapi v0.0.0-20250710124328-f3f2b991d03b/go.mod h1:UZ2yyWbFTpuhSbFhv24aGNOdoRdJZgsIObGBUaYVsts= +k8s.io/utils v0.0.0-20250604170112-4c0f3b243397 h1:hwvWFiBzdWw1FhfY1FooPn3kzWuJ8tmbZBHi4zVsl1Y= +k8s.io/utils v0.0.0-20250604170112-4c0f3b243397/go.mod h1:OLgZIPagt7ERELqWJFomSt595RzquPNLL48iOWgYOg0= +sigs.k8s.io/json v0.0.0-20241014173422-cfa47c3a1cc8 h1:gBQPwqORJ8d8/YNZWEjoZs7npUVDpVXUUOFfW6CgAqE= +sigs.k8s.io/json v0.0.0-20241014173422-cfa47c3a1cc8/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.0 h1:jTijUJbW353oVOd9oTlifJqOGEkUw2jB/fXCbTiQEco= +sigs.k8s.io/structured-merge-diff/v6 v6.3.0/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/opentelemetry-collector-builder/main.go b/otelcollector/opentelemetry-collector-builder/main.go index 5457ecb7e..1fda1b927 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.136.0", + Version: "0.142.0", } set := otelcol.CollectorSettings{ diff --git a/otelcollector/otel-allocator/go.mod b/otelcollector/otel-allocator/go.mod index 39c9b5694..b1c49d48a 100644 --- a/otelcollector/otel-allocator/go.mod +++ b/otelcollector/otel-allocator/go.mod @@ -1,16 +1,9 @@ module github.com/open-telemetry/opentelemetry-operator/cmd/otel-allocator -go 1.24.0 - -toolchain go1.24.1 +go 1.24.6 retract v1.51.0 -// pointing to this fork for prometheus-operator since we need fixes for asset store which is only available from v0.84.0 of prometheus-operator -// targetallocator cannot upgrade to v0.84.0 because of this issue - https://github.com/open-telemetry/opentelemetry-operator/issues/4196 -// this commit is from this repository -https://github.com/rashmichandrashekar/prometheus-operator/tree/rashmi/v0.81.0-patch-assetstore - which only has the asset store fixes on top of v0.81.0 of prometheus-operator -replace github.com/prometheus-operator/prometheus-operator => github.com/rashmichandrashekar/prometheus-operator v0.0.0-20250715221118-b55ea6d3c138 - require ( github.com/blang/semver/v4 v4.0.0 github.com/buraksezer/consistent v0.10.0 @@ -24,13 +17,13 @@ require ( github.com/json-iterator/go v1.1.12 // indirect github.com/mitchellh/mapstructure v1.5.0 // indirect github.com/oklog/run v1.2.0 - github.com/prometheus-operator/prometheus-operator v0.81.0 - github.com/prometheus-operator/prometheus-operator/pkg/apis/monitoring v0.81.0 - github.com/prometheus-operator/prometheus-operator/pkg/client v0.81.0 - github.com/prometheus/client_golang v1.23.0 - github.com/prometheus/common v0.65.0 - github.com/prometheus/prometheus v0.301.0 - github.com/spf13/pflag v1.0.6 + github.com/prometheus-operator/prometheus-operator v0.87.1 + github.com/prometheus-operator/prometheus-operator/pkg/apis/monitoring v0.87.1 + github.com/prometheus-operator/prometheus-operator/pkg/client v0.87.1 + github.com/prometheus/client_golang v1.23.2 + github.com/prometheus/common v0.67.4 + github.com/prometheus/prometheus v0.308.1 + github.com/spf13/pflag v1.0.10 github.com/stretchr/testify v1.11.1 go.opentelemetry.io/otel v1.38.0 go.opentelemetry.io/otel/exporters/prometheus v0.60.0 @@ -41,33 +34,32 @@ require ( go.uber.org/zap v1.27.0 gopkg.in/yaml.v2 v2.4.0 gopkg.in/yaml.v3 v3.0.1 // indirect - k8s.io/api v0.32.3 - k8s.io/apiextensions-apiserver v0.32.3 // indirect - k8s.io/apimachinery v0.32.3 - k8s.io/client-go v0.32.3 - k8s.io/component-base v0.32.3 // indirect + k8s.io/api v0.34.2 + k8s.io/apiextensions-apiserver v0.34.2 // indirect + k8s.io/apimachinery v0.34.2 + k8s.io/client-go v0.34.2 + k8s.io/component-base v0.34.2 // indirect k8s.io/klog/v2 v2.130.1 - k8s.io/utils v0.0.0-20241210054802-24370beab758 - sigs.k8s.io/controller-runtime v0.20.4 - sigs.k8s.io/yaml v1.5.0 // indirect + k8s.io/utils v0.0.0-20251002143259-bc988d571ff4 + sigs.k8s.io/controller-runtime v0.22.4 + sigs.k8s.io/yaml v1.6.0 // indirect ) require ( - cloud.google.com/go/auth v0.13.0 // indirect - cloud.google.com/go/auth/oauth2adapt v0.2.6 // indirect - cloud.google.com/go/compute/metadata v0.7.0 // indirect - github.com/Azure/azure-sdk-for-go/sdk/azcore v1.16.0 // indirect - github.com/Azure/azure-sdk-for-go/sdk/azidentity v1.8.0 // indirect - github.com/Azure/azure-sdk-for-go/sdk/internal v1.10.0 // indirect + cloud.google.com/go/auth v0.17.0 // 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.19.1 // indirect + github.com/Azure/azure-sdk-for-go/sdk/azidentity v1.12.0 // 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.2.2 // indirect + github.com/AzureAD/microsoft-authentication-library-for-go v1.5.0 // indirect github.com/Code-Hex/go-generics-cache v1.5.1 // indirect github.com/Microsoft/go-winio v0.6.1 // 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/aws/aws-sdk-go v1.55.5 // 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 @@ -76,57 +68,54 @@ require ( github.com/cncf/xds/go v0.0.0-20250501225837-2ac532fd4443 // 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.132.0 // indirect + github.com/digitalocean/godo v1.168.0 // indirect github.com/distribution/reference v0.6.0 // indirect - github.com/docker/docker v28.0.0+incompatible // indirect + github.com/docker/docker v28.5.2+incompatible // indirect github.com/docker/go-connections v0.4.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 - github.com/emicklei/go-restful/v3 v3.12.1 // indirect + github.com/emicklei/go-restful/v3 v3.13.0 // indirect github.com/envoyproxy/protoc-gen-validate v1.2.1 // indirect github.com/evanphx/json-patch/v5 v5.9.11 // indirect github.com/facette/natsort v0.0.0-20181210072756-2cd4dd1e2dcb // indirect github.com/fatih/color v1.16.0 // indirect github.com/felixge/httpsnoop v1.0.4 // indirect - github.com/fsnotify/fsnotify v1.8.0 // indirect - github.com/fxamacker/cbor/v2 v2.7.0 // 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/go-logfmt/logfmt v0.6.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.23.0 // indirect - github.com/go-openapi/errors v0.22.0 // indirect - github.com/go-openapi/jsonpointer v0.21.0 // indirect - github.com/go-openapi/jsonreference v0.21.0 // indirect - github.com/go-openapi/loads v0.22.0 // indirect - github.com/go-openapi/runtime v0.28.0 // indirect - github.com/go-openapi/spec v0.21.0 // indirect - github.com/go-openapi/strfmt v0.23.0 // indirect - github.com/go-openapi/swag v0.23.0 // indirect - github.com/go-openapi/validate v0.24.0 // indirect + github.com/go-openapi/analysis v0.24.0 // indirect + github.com/go-openapi/errors v0.22.3 // indirect + github.com/go-openapi/jsonpointer v0.22.1 // indirect + github.com/go-openapi/jsonreference v0.21.2 // indirect + github.com/go-openapi/loads v0.23.1 // indirect + github.com/go-openapi/runtime v0.29.0 // indirect + github.com/go-openapi/spec v0.22.0 // indirect + github.com/go-openapi/strfmt v0.24.0 // indirect + github.com/go-openapi/swag v0.25.1 // indirect + github.com/go-openapi/validate v0.25.0 // 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-resty/resty/v2 v2.15.3 // indirect + github.com/go-resty/resty/v2 v2.16.5 // indirect github.com/go-zookeeper/zk v1.0.4 // indirect github.com/goccy/go-json v0.10.5 github.com/gogo/protobuf v1.3.2 // indirect - github.com/golang-jwt/jwt/v5 v5.2.2 // indirect - github.com/golang/protobuf v1.5.4 // indirect - github.com/google/gnostic-models v0.6.9 // indirect + github.com/golang-jwt/jwt/v5 v5.3.0 // indirect + github.com/google/gnostic-models v0.7.0 // indirect github.com/google/go-cmp v0.7.0 // indirect github.com/google/go-querystring v1.1.0 // indirect - github.com/google/gofuzz v1.2.0 // indirect - github.com/google/s2a-go v0.1.8 // indirect - github.com/googleapis/enterprise-certificate-proxy v0.3.4 // indirect - github.com/googleapis/gax-go/v2 v2.14.0 // indirect - github.com/gophercloud/gophercloud v1.14.1 // indirect - github.com/gorilla/websocket v1.5.3 // indirect - github.com/grafana/regexp v0.0.0-20240518133315-a468a5bfb3bc // indirect - github.com/hashicorp/consul/api v1.30.0 // indirect - github.com/hashicorp/cronexpr v1.1.2 // indirect + github.com/google/s2a-go v0.1.9 // indirect + github.com/googleapis/enterprise-certificate-proxy v0.3.6 // indirect + github.com/googleapis/gax-go/v2 v2.15.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.0 // indirect + github.com/hashicorp/cronexpr v1.1.3 // indirect github.com/hashicorp/errwrap v1.1.0 // indirect github.com/hashicorp/go-cleanhttp v0.5.2 // indirect github.com/hashicorp/go-hclog v1.6.3 // indirect @@ -134,97 +123,127 @@ require ( github.com/hashicorp/go-multierror v1.1.1 // indirect github.com/hashicorp/go-retryablehttp v0.7.7 // indirect github.com/hashicorp/go-rootcerts v1.0.2 // indirect - github.com/hashicorp/go-version v1.7.0 // indirect github.com/hashicorp/golang-lru v0.6.0 // indirect - github.com/hashicorp/nomad/api v0.0.0-20241218080744-e3ac00f30eec // indirect + github.com/hashicorp/nomad/api v0.0.0-20250930071859-eaa0fe0e27af // indirect github.com/hashicorp/serf v0.10.1 // indirect - github.com/hetznercloud/hcloud-go/v2 v2.17.1 // indirect + github.com/hetznercloud/hcloud-go/v2 v2.29.0 // indirect github.com/inconshreveable/mousetrap v1.1.0 // indirect - github.com/ionos-cloud/sdk-go/v6 v6.3.0 // indirect - github.com/jmespath/go-jmespath v0.4.1-0.20220621161143-b0104c826a24 // indirect - github.com/josharian/intern v1.0.0 // indirect + github.com/ionos-cloud/sdk-go/v6 v6.3.4 // indirect github.com/jpillora/backoff v1.0.0 // indirect - github.com/klauspost/cpuid/v2 v2.2.8 // indirect + github.com/klauspost/cpuid/v2 v2.2.10 // 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.43.0 // indirect - github.com/mailru/easyjson v0.9.0 // indirect + github.com/linode/linodego v1.60.0 // indirect github.com/mattn/go-colorable v0.1.13 // 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.62 // indirect + github.com/miekg/dns v1.1.68 // 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 - github.com/modern-go/reflect2 v1.0.2 // indirect + github.com/modern-go/reflect2 v1.0.3-0.20250322232337-35a7c28c31ee // 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/opencontainers/go-digest v1.0.0 // indirect github.com/opencontainers/image-spec v1.0.2 // indirect - github.com/opentracing/opentracing-go v1.2.0 // indirect - github.com/ovh/go-ovh v1.6.0 // indirect + github.com/ovh/go-ovh v1.9.0 // indirect github.com/pelletier/go-toml/v2 v2.2.2 // 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.11.0 // indirect - github.com/prometheus/alertmanager v0.28.1 // indirect + github.com/prometheus-community/prom-label-proxy v0.12.1 // indirect + github.com/prometheus/alertmanager v0.29.0 // indirect github.com/prometheus/client_model v0.6.2 // indirect github.com/prometheus/procfs v0.17.0 // indirect - github.com/scaleway/scaleway-sdk-go v1.0.0-beta.30 // indirect - github.com/spf13/cobra v1.9.1 // indirect + github.com/scaleway/scaleway-sdk-go v1.0.0-beta.35 // 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/vultr/govultr/v2 v2.17.2 // indirect github.com/x448/float16 v0.8.4 // indirect - go.mongodb.org/mongo-driver v1.17.2 // indirect - go.opentelemetry.io/auto/sdk v1.1.0 // indirect - go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.62.0 // indirect + go.mongodb.org/mongo-driver v1.17.4 // indirect + go.opentelemetry.io/auto/sdk v1.2.1 // indirect + go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.63.0 // indirect go.opentelemetry.io/otel/trace v1.38.0 // indirect go.uber.org/atomic v1.11.0 golang.org/x/arch v0.8.0 // indirect - golang.org/x/crypto v0.41.0 // indirect - golang.org/x/exp v0.0.0-20250106191152-7588d65b2ba8 // indirect - golang.org/x/mod v0.26.0 // indirect - golang.org/x/net v0.43.0 // indirect - golang.org/x/oauth2 v0.30.0 // indirect - golang.org/x/sync v0.16.0 // indirect - golang.org/x/sys v0.35.0 // indirect - golang.org/x/term v0.34.0 // indirect - golang.org/x/text v0.28.0 // indirect - golang.org/x/time v0.9.0 // indirect - golang.org/x/tools v0.35.0 // indirect + golang.org/x/crypto v0.45.0 // indirect + golang.org/x/exp v0.0.0-20251002181428-27f1f14c8bb9 // indirect + golang.org/x/mod v0.29.0 // indirect + golang.org/x/net v0.47.0 // indirect + golang.org/x/oauth2 v0.32.0 // indirect + golang.org/x/sync v0.18.0 // indirect + golang.org/x/sys v0.38.0 // indirect + golang.org/x/term v0.37.0 // indirect + golang.org/x/text v0.31.0 // indirect + golang.org/x/time v0.13.0 // indirect + golang.org/x/tools v0.38.0 // indirect gomodules.xyz/jsonpatch/v2 v2.4.0 // indirect - google.golang.org/api v0.213.0 // indirect - google.golang.org/genproto/googleapis/api v0.0.0-20250825161204-c5933d9347a5 // indirect - google.golang.org/genproto/googleapis/rpc v0.0.0-20250825161204-c5933d9347a5 // indirect - google.golang.org/grpc v1.75.0 // indirect - google.golang.org/protobuf v1.36.8 // indirect - gopkg.in/evanphx/json-patch.v4 v4.12.0 // indirect + google.golang.org/api v0.252.0 // indirect + google.golang.org/genproto/googleapis/api v0.0.0-20250929231259-57b25ae835d4 // indirect + google.golang.org/genproto/googleapis/rpc v0.0.0-20251006185510-65f7160b3a87 // indirect + google.golang.org/grpc v1.76.0 // indirect + google.golang.org/protobuf v1.36.10 // indirect + gopkg.in/evanphx/json-patch.v4 v4.13.0 // indirect gopkg.in/inf.v0 v0.9.1 // indirect gopkg.in/ini.v1 v1.67.0 // indirect - k8s.io/kube-openapi v0.0.0-20241212222426-2c72e554b1e7 // indirect - sigs.k8s.io/json v0.0.0-20241014173422-cfa47c3a1cc8 // indirect - sigs.k8s.io/structured-merge-diff/v4 v4.6.0 // indirect + k8s.io/kube-openapi v0.0.0-20250910181357-589584f1c912 // indirect + sigs.k8s.io/json v0.0.0-20250730193827-2d320260d730 // indirect ) require gotest.tools/v3 v3.5.2 -require github.com/goccy/go-yaml v1.18.0 +require ( + github.com/aws/smithy-go v1.23.2 + github.com/goccy/go-yaml v1.18.0 +) require ( - github.com/envoyproxy/go-control-plane/envoy v1.32.4 // indirect + github.com/aws/aws-sdk-go-v2 v1.39.6 // indirect + github.com/aws/aws-sdk-go-v2/config v1.31.17 // indirect + github.com/aws/aws-sdk-go-v2/credentials v1.18.21 // indirect + github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.18.13 // indirect + github.com/aws/aws-sdk-go-v2/internal/configsources v1.4.13 // indirect + github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.7.13 // indirect + github.com/aws/aws-sdk-go-v2/internal/ini v1.8.4 // indirect + github.com/aws/aws-sdk-go-v2/service/ec2 v1.262.0 // indirect + github.com/aws/aws-sdk-go-v2/service/ecs v1.67.2 // indirect + github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding v1.13.3 // indirect + github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.13.13 // indirect + github.com/aws/aws-sdk-go-v2/service/lightsail v1.50.4 // indirect + github.com/aws/aws-sdk-go-v2/service/sso v1.30.1 // indirect + github.com/aws/aws-sdk-go-v2/service/ssooidc v1.35.5 // indirect + github.com/aws/aws-sdk-go-v2/service/sts v1.39.1 // 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.35.0 // indirect github.com/evanphx/json-patch v5.9.0+incompatible // indirect - github.com/golang/snappy v1.0.0 // indirect + github.com/go-openapi/swag/cmdutils v0.25.1 // indirect + github.com/go-openapi/swag/conv v0.25.1 // indirect + github.com/go-openapi/swag/fileutils v0.25.1 // indirect + github.com/go-openapi/swag/jsonname v0.25.1 // indirect + github.com/go-openapi/swag/jsonutils v0.25.1 // indirect + github.com/go-openapi/swag/loading v0.25.1 // indirect + github.com/go-openapi/swag/mangling v0.25.1 // indirect + github.com/go-openapi/swag/netutils v0.25.1 // indirect + github.com/go-openapi/swag/stringutils v0.25.1 // indirect + github.com/go-openapi/swag/typeutils v0.25.1 // indirect + github.com/go-openapi/swag/yamlutils v0.25.1 // indirect github.com/google/btree v1.1.3 // indirect + github.com/gophercloud/gophercloud/v2 v2.8.0 // indirect + github.com/klauspost/compress v1.18.2 // indirect + github.com/moby/sys/sequential v0.6.0 // indirect github.com/onsi/ginkgo/v2 v2.23.4 // indirect github.com/onsi/gomega v1.37.0 // indirect - github.com/prometheus/otlptranslator v0.0.2 // indirect - github.com/prometheus/sigv4 v0.1.0 // indirect - go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp v1.38.0 // indirect - go.yaml.in/yaml/v2 v2.4.2 // indirect + github.com/prometheus/client_golang/exp v0.0.0-20251212205219-7ba246a648ca // indirect + github.com/prometheus/otlptranslator v1.0.0 // indirect + github.com/prometheus/sigv4 v0.3.0 // indirect + github.com/stackitcloud/stackit-sdk-go/core v0.17.3 // indirect + go.yaml.in/yaml/v2 v2.4.3 // indirect go.yaml.in/yaml/v3 v3.0.4 // indirect + sigs.k8s.io/randfill v1.0.0 // indirect + sigs.k8s.io/structured-merge-diff/v6 v6.3.0 // indirect ) diff --git a/otelcollector/otel-allocator/go.sum b/otelcollector/otel-allocator/go.sum index 086c58147..465abb7bb 100644 --- a/otelcollector/otel-allocator/go.sum +++ b/otelcollector/otel-allocator/go.sum @@ -1,17 +1,17 @@ -cloud.google.com/go/auth v0.13.0 h1:8Fu8TZy167JkW8Tj3q7dIkr2v4cndv41ouecJx0PAHs= -cloud.google.com/go/auth v0.13.0/go.mod h1:COOjD9gwfKNKz+IIduatIhYJQIc0mG3H102r/EMxX6Q= -cloud.google.com/go/auth/oauth2adapt v0.2.6 h1:V6a6XDu2lTwPZWOawrAa9HUK+DB2zfJyTuciBG5hFkU= -cloud.google.com/go/auth/oauth2adapt v0.2.6/go.mod h1:AlmsELtlEBnaNTL7jCj8VQFLy6mbZv0s4Q7NGBeQ5E8= -cloud.google.com/go/compute/metadata v0.7.0 h1:PBWF+iiAerVNe8UCHxdOt6eHLVc3ydFeOCw78U8ytSU= -cloud.google.com/go/compute/metadata v0.7.0/go.mod h1:j5MvL9PprKL39t166CoB1uVHfQMs4tFQZZcKwksXUjo= -github.com/Azure/azure-sdk-for-go/sdk/azcore v1.16.0 h1:JZg6HRh6W6U4OLl6lk7BZ7BLisIzM9dG1R50zUk9C/M= -github.com/Azure/azure-sdk-for-go/sdk/azcore v1.16.0/go.mod h1:YL1xnZ6QejvQHWJrX/AvhFl4WW4rqHVoKspWNVwFk0M= -github.com/Azure/azure-sdk-for-go/sdk/azidentity v1.8.0 h1:B/dfvscEQtew9dVuoxqxrUKKv8Ih2f55PydknDamU+g= -github.com/Azure/azure-sdk-for-go/sdk/azidentity v1.8.0/go.mod h1:fiPSssYvltE08HJchL04dOy+RD4hgrjph0cwGGMntdI= -github.com/Azure/azure-sdk-for-go/sdk/azidentity/cache v0.3.0 h1:+m0M/LFxN43KvULkDNfdXOgrjtg6UYJPFBJyuEcRCAw= -github.com/Azure/azure-sdk-for-go/sdk/azidentity/cache v0.3.0/go.mod h1:PwOyop78lveYMRs6oCxjiVyBdyCgIYH6XHIVZO9/SFQ= -github.com/Azure/azure-sdk-for-go/sdk/internal v1.10.0 h1:ywEEhmNahHBihViHepv3xPBn1663uRv2t2q/ESv9seY= -github.com/Azure/azure-sdk-for-go/sdk/internal v1.10.0/go.mod h1:iZDifYGJTIgIIkYRNWPENUnqx6bJ2xnSDFI2tjwZNuY= +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/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.19.1 h1:5YTBM8QDVIBN3sxBil89WfdAAqDZbyJTgh688DSxX5w= +github.com/Azure/azure-sdk-for-go/sdk/azcore v1.19.1/go.mod h1:YD5h/ldMsG0XiIw7PdyNhLxaM317eFh5yNLccNfGdyw= +github.com/Azure/azure-sdk-for-go/sdk/azidentity v1.12.0 h1:wL5IEG5zb7BVv1Kv0Xm92orq+5hB5Nipn3B5tn4Rqfk= +github.com/Azure/azure-sdk-for-go/sdk/azidentity v1.12.0/go.mod h1:J7MUC/wtRpfGVbQ5sIItY5/FuVWmvzlY21WAOfQnq/I= +github.com/Azure/azure-sdk-for-go/sdk/azidentity/cache v0.3.2 h1:yz1bePFlP5Vws5+8ez6T3HWXPmwOK7Yvq8QxDBD3SKY= +github.com/Azure/azure-sdk-for-go/sdk/azidentity/cache v0.3.2/go.mod h1:Pa9ZNPuoNu/GztvBSKk9J1cDJW6vk/n0zLtV4mgd8N8= +github.com/Azure/azure-sdk-for-go/sdk/internal v1.11.2 h1:9iefClla7iYpfYWdzPCRDozdmndjTm8DXdpCzPajMgA= +github.com/Azure/azure-sdk-for-go/sdk/internal v1.11.2/go.mod h1:XtLgD3ZD34DAaVIIAyG3objl5DynM3CQ/vMcbBNJZGI= github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/compute/armcompute/v5 v5.7.0 h1:LkHbJbgF3YyvC53aqYGR+wWQDn2Rdp9AQdGndf9QvY4= github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/compute/armcompute/v5 v5.7.0/go.mod h1:QyiQdW4f4/BIfB8ZutZ2s+28RAgfa/pT+zS++ZHyM1I= github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/internal/v2 v2.0.0 h1:PTFGRSlMKCQelWwxUyYVEUqseBJVemLyqWJjvMyt0do= @@ -24,8 +24,8 @@ github.com/Azure/go-ansiterm v0.0.0-20230124172434-306776ec8161 h1:L/gRVlceqvL25 github.com/Azure/go-ansiterm v0.0.0-20230124172434-306776ec8161/go.mod h1:xomTg63KZ2rFqZQzSB4Vz2SUXa1BpHTVz9L5PTmPC4E= github.com/AzureAD/microsoft-authentication-extensions-for-go/cache v0.1.1 h1:WJTmL004Abzc5wDB5VtZG2PJk5ndYDgVacGqfirKxjM= github.com/AzureAD/microsoft-authentication-extensions-for-go/cache v0.1.1/go.mod h1:tCcJZ0uHAmvjsVYzEFivsRTN00oz5BEsRgQHu5JZ9WE= -github.com/AzureAD/microsoft-authentication-library-for-go v1.2.2 h1:XHOnouVk1mxXfQidrMEnLlPk9UMeRtyBTnEFtxkV0kU= -github.com/AzureAD/microsoft-authentication-library-for-go v1.2.2/go.mod h1:wP83P5OoQ5p6ip3ScPr0BAq0BvuPAvacpEuSzyouqAI= +github.com/AzureAD/microsoft-authentication-library-for-go v1.5.0 h1:XkkQbfMyuH2jTSjQjSoihryI8GINRcs4xp8lNawg0FI= +github.com/AzureAD/microsoft-authentication-library-for-go v1.5.0/go.mod h1:HKpQxkWaGLJ+D/5H8QRpyQXA1eKjxkFlOMwck5+33Jk= github.com/Code-Hex/go-generics-cache v1.5.1 h1:6vhZGc5M7Y/YD8cIUcY8kcuQLB4cHR7U+0KMqAA0KcU= github.com/Code-Hex/go-generics-cache v1.5.1/go.mod h1:qxcC9kRVrct9rHeiYpFWSoW1vxyillCVzX13KZG8dl4= github.com/DATA-DOG/go-sqlmock v1.4.1/go.mod h1:f/Ixk793poVmq4qj/V1dPUg2JEAKC73Q5eFN3EC/SaM= @@ -46,8 +46,38 @@ github.com/armon/go-radix v0.0.0-20180808171621-7fddfc383310/go.mod h1:ufUuZ+zHj github.com/armon/go-radix v1.0.0/go.mod h1:ufUuZ+zHj4x4TnLV4JWEpy2hxWSpsRywHrMgIH9cCH8= github.com/asaskevich/govalidator v0.0.0-20230301143203-a9d515a09cc2 h1:DklsrG3dyBCFEj5IhUbnKptjxatkF07cF2ak3yi77so= github.com/asaskevich/govalidator v0.0.0-20230301143203-a9d515a09cc2/go.mod h1:WaHUgvxTVq04UNunO+XhnAqY/wQc+bxr74GqbsZ/Jqw= -github.com/aws/aws-sdk-go v1.55.5 h1:KKUZBfBoyqy5d3swXyiC7Q76ic40rYcbqH7qjh59kzU= -github.com/aws/aws-sdk-go v1.55.5/go.mod h1:eRwEWoyTWFMVYVQzKMNHWP5/RV4xIUGMQfXQHfHkpNU= +github.com/aws/aws-sdk-go-v2 v1.39.6 h1:2JrPCVgWJm7bm83BDwY5z8ietmeJUbh3O2ACnn+Xsqk= +github.com/aws/aws-sdk-go-v2 v1.39.6/go.mod h1:c9pm7VwuW0UPxAEYGyTmyurVcNrbF6Rt/wixFqDhcjE= +github.com/aws/aws-sdk-go-v2/config v1.31.17 h1:QFl8lL6RgakNK86vusim14P2k8BFSxjvUkcWLDjgz9Y= +github.com/aws/aws-sdk-go-v2/config v1.31.17/go.mod h1:V8P7ILjp/Uef/aX8TjGk6OHZN6IKPM5YW6S78QnRD5c= +github.com/aws/aws-sdk-go-v2/credentials v1.18.21 h1:56HGpsgnmD+2/KpG0ikvvR8+3v3COCwaF4r+oWwOeNA= +github.com/aws/aws-sdk-go-v2/credentials v1.18.21/go.mod h1:3YELwedmQbw7cXNaII2Wywd+YY58AmLPwX4LzARgmmA= +github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.18.13 h1:T1brd5dR3/fzNFAQch/iBKeX07/ffu/cLu+q+RuzEWk= +github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.18.13/go.mod h1:Peg/GBAQ6JDt+RoBf4meB1wylmAipb7Kg2ZFakZTlwk= +github.com/aws/aws-sdk-go-v2/internal/configsources v1.4.13 h1:a+8/MLcWlIxo1lF9xaGt3J/u3yOZx+CdSveSNwjhD40= +github.com/aws/aws-sdk-go-v2/internal/configsources v1.4.13/go.mod h1:oGnKwIYZ4XttyU2JWxFrwvhF6YKiK/9/wmE3v3Iu9K8= +github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.7.13 h1:HBSI2kDkMdWz4ZM7FjwE7e/pWDEZ+nR95x8Ztet1ooY= +github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.7.13/go.mod h1:YE94ZoDArI7awZqJzBAZ3PDD2zSfuP7w6P2knOzIn8M= +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.262.0 h1:5qBb1XV/D18qtCHd3bmmxoVglI+fZ4QWuS/EB8kIXYQ= +github.com/aws/aws-sdk-go-v2/service/ec2 v1.262.0/go.mod h1:NDdDLLW5PtLLXN661gKcvJvqAH5OBXsfhMlmKVu1/pY= +github.com/aws/aws-sdk-go-v2/service/ecs v1.67.2 h1:oeICOX/+D0XXV1aMYJPXVe3CO37zYr7fB6HFgxchleU= +github.com/aws/aws-sdk-go-v2/service/ecs v1.67.2/go.mod h1:rrhqfkXfa2DSNq0RyFhnnFEAyI+yJB4+2QlZKeJvMjs= +github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding v1.13.3 h1:x2Ibm/Af8Fi+BH+Hsn9TXGdT+hKbDd5XOTZxTMxDk7o= +github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding v1.13.3/go.mod h1:IW1jwyrQgMdhisceG8fQLmQIydcT/jWY21rFhzgaKwo= +github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.13.13 h1:kDqdFvMY4AtKoACfzIGD8A0+hbT41KTKF//gq7jITfM= +github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.13.13/go.mod h1:lmKuogqSU3HzQCwZ9ZtcqOc5XGMqtDK7OIc2+DxiUEg= +github.com/aws/aws-sdk-go-v2/service/lightsail v1.50.4 h1:/1o2AYwHJojUDeMvQNyJiKZwcWCc3e4kQuTXqRLuThc= +github.com/aws/aws-sdk-go-v2/service/lightsail v1.50.4/go.mod h1:Nn2xx6HojGuNMtUFxxz/nyNLSS+tHMRsMhe3+W3wB5k= +github.com/aws/aws-sdk-go-v2/service/sso v1.30.1 h1:0JPwLz1J+5lEOfy/g0SURC9cxhbQ1lIMHMa+AHZSzz0= +github.com/aws/aws-sdk-go-v2/service/sso v1.30.1/go.mod h1:fKvyjJcz63iL/ftA6RaM8sRCtN4r4zl4tjL3qw5ec7k= +github.com/aws/aws-sdk-go-v2/service/ssooidc v1.35.5 h1:OWs0/j2UYR5LOGi88sD5/lhN6TDLG6SfA7CqsQO9zF0= +github.com/aws/aws-sdk-go-v2/service/ssooidc v1.35.5/go.mod h1:klO+ejMvYsB4QATfEOIXk8WAEwN4N0aBfJpvC+5SZBo= +github.com/aws/aws-sdk-go-v2/service/sts v1.39.1 h1:mLlUgHn02ue8whiR4BmxxGJLR2gwU6s6ZzJ5wDamBUs= +github.com/aws/aws-sdk-go-v2/service/sts v1.39.1/go.mod h1:E19xDjpzPZC7LS2knI9E6BaRFDK43Eul7vd6rSq2HWk= +github.com/aws/smithy-go v1.23.2 h1:Crv0eatJUQhaManss33hS5r40CG3ZFH+21XSkqMrIUM= +github.com/aws/smithy-go v1.23.2/go.mod h1:LEj2LM3rBRQJxPZTB4KuzZkaZYnZPnvgIhb4pu07mx0= 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= @@ -76,6 +106,10 @@ 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/cncf/xds/go v0.0.0-20250501225837-2ac532fd4443 h1:aQ3y1lwWyqYPiWZThqv1aFbZMiM9vblcSArJRf2Irls= github.com/cncf/xds/go v0.0.0-20250501225837-2ac532fd4443/go.mod h1:W+zGtBO5Y1IgJhy4+A9GOqVhqLpfZi+vwmdNXUehLA8= +github.com/containerd/errdefs v1.0.0 h1:tg5yIfIlQIrxYtu9ajqY42W3lpS19XqdxRQeEwYG8PI= +github.com/containerd/errdefs v1.0.0/go.mod h1:+YBYIdtsnF4Iw6nWZhJcqGSg/dwvV7tyJ/kCkyJ2k+M= +github.com/containerd/errdefs/pkg v0.3.0 h1:9IKJ06FvyNlexW690DXuQNx2KA2cUJXx151Xdx3ZPPE= +github.com/containerd/errdefs/pkg v0.3.0/go.mod h1:NJw6s9HwNuRhnjJhM7pylWwMyAkmCQvQ4GpJHEqRLVk= github.com/containerd/log v0.1.0 h1:TCJt7ioM2cr/tfR8GPbGf9/VRAX8D2B4PjzCpfX540I= github.com/containerd/log v0.1.0/go.mod h1:VRRf09a7mHDIRezVKTRCrOq78v577GXq3bSa3EhrzVo= github.com/cpuguy83/go-md2man/v2 v2.0.6/go.mod h1:oOW0eioCTA6cOiMLiUPZOpcVxMig6NIQQ7OS05n1F4g= @@ -85,16 +119,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/dgryski/go-rendezvous v0.0.0-20200823014737-9f7001d12a5f h1:lO4WD4F/rVNCu3HqELle0jiPLLBs70cWOduZpkS1E78= -github.com/dgryski/go-rendezvous v0.0.0-20200823014737-9f7001d12a5f/go.mod h1:cuUVRXasLTGF7a8hSLbxyZXjz+1KgoB3wDUb6vlszIc= -github.com/digitalocean/godo v1.132.0 h1:n0x6+ZkwbyQBtIU1wwBhv26EINqHg0wWQiBXlwYg/HQ= -github.com/digitalocean/godo v1.132.0/go.mod h1:PU8JB6I1XYkQIdHFop8lLAY9ojp6M0XcU0TWaQSxbrc= +github.com/digitalocean/godo v1.168.0 h1:mlORtUcPD91LQeJoznrH3XvfvgK3t8Wvrpph9giUT/Q= +github.com/digitalocean/godo v1.168.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.0.0+incompatible h1:Olh0KS820sJ7nPsBKChVhk5pzqcwDR15fumfAd/p9hM= -github.com/docker/docker v28.0.0+incompatible/go.mod h1:eEKB0N0r5NX/I1kEveEz05bcu8tLC/8azJZsviup8Sk= +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-units v0.5.0 h1:69rxXcBk27SvSaaxTtLh/8llcHD8vYHT7WSdRZ/jvr4= @@ -103,10 +135,10 @@ 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/efficientgo/core v1.0.0-rc.3 h1:X6CdgycYWDcbYiJr1H1+lQGzx13o7bq3EUkbB9DsSPc= github.com/efficientgo/core v1.0.0-rc.3/go.mod h1:FfGdkzWarkuzOlY04VY+bGfb1lWrjaL6x/GLcQ4vJps= -github.com/emicklei/go-restful/v3 v3.12.1 h1:PJMDIM/ak7btuL8Ex0iYET9hxM3CI2sjZtzpL63nKAU= -github.com/emicklei/go-restful/v3 v3.12.1/go.mod h1:6n3XBCmQQb25CM2LCACGz8ukIrRry+4bhvbpWn3mrbc= -github.com/envoyproxy/go-control-plane/envoy v1.32.4 h1:jb83lalDRZSpPWW2Z7Mck/8kXZ5CQAFYVjQcdVIr83A= -github.com/envoyproxy/go-control-plane/envoy v1.32.4/go.mod h1:Gzjc5k8JcJswLjAx1Zm+wSYE20UrLtt7JZMWiWQXQEw= +github.com/emicklei/go-restful/v3 v3.13.0 h1:C4Bl2xDndpU6nJ4bc1jXd+uTmYPVUwkD6bFY/oTyCes= +github.com/emicklei/go-restful/v3 v3.13.0/go.mod h1:6n3XBCmQQb25CM2LCACGz8ukIrRry+4bhvbpWn3mrbc= +github.com/envoyproxy/go-control-plane/envoy v1.35.0 h1:ixjkELDE+ru6idPxcHLj8LBVc2bFP7iBytj353BoHUo= +github.com/envoyproxy/go-control-plane/envoy v1.35.0/go.mod h1:09qwbGVuSWWAyN5t/b3iyVfz5+z8QWGrzkoqm/8SbEs= github.com/envoyproxy/protoc-gen-validate v1.2.1 h1:DEo3O99U8j4hBFwbJfrz9VtgcDfUKS7KJ7spH3d86P8= github.com/envoyproxy/protoc-gen-validate v1.2.1/go.mod h1:d/C80l/jxXLdfEIhX1W2TmLfsJ31lvEjwamM4DxlWXU= github.com/evanphx/json-patch v5.9.0+incompatible h1:fBXyNpNMuTTDdquAq/uisOr2lShz4oaXpDTX2bLe7ls= @@ -122,10 +154,10 @@ github.com/fatih/color v1.16.0 h1:zmkK9Ngbjj+K0yRhTVONQh1p/HknKYSlNT+vZCzyokM= github.com/fatih/color v1.16.0/go.mod h1:fL2Sau1YI5c0pdGEVCbKQbLXB6edEj1ZgiY4NijnWvE= github.com/felixge/httpsnoop v1.0.4 h1:NFTV2Zj1bL4mc9sqWACXbQFVBBg2W3GPvqp8/ESS2Wg= github.com/felixge/httpsnoop v1.0.4/go.mod h1:m8KPJKqk1gH5J9DgRY2ASl2lWCfGKXixSwevea8zH2U= -github.com/fsnotify/fsnotify v1.8.0 h1:dAwr6QBTBZIkG8roQaJjGof0pp0EeF+tNV7YBP3F/8M= -github.com/fsnotify/fsnotify v1.8.0/go.mod h1:8jBTzvmWwFyi3Pb8djgCCO5IBqzKJ/Jwo8TRcHyHii0= -github.com/fxamacker/cbor/v2 v2.7.0 h1:iM5WgngdRBanHcxugY4JySA0nk1wZorNOpTgCMedv5E= -github.com/fxamacker/cbor/v2 v2.7.0/go.mod h1:pxXPTn3joSm21Gbwsv0w9OSA2y1HFR9qXEeXQVeNoDQ= +github.com/fsnotify/fsnotify v1.9.0 h1:2Ml+OJNzbYCTzsxtv8vKSFD9PbJjmhYF14k/jKC7S9k= +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/ghodss/yaml v1.0.0 h1:wQHKEahhL6wmXdzwWG11gIVCkOv05bNOh+Rxn0yngAk= @@ -140,8 +172,8 @@ github.com/go-kit/log v0.2.1 h1:MRVx0/zhvdseW+Gza6N9rVzU/IVzaeE1SFI4raAhmBU= github.com/go-kit/log v0.2.1/go.mod h1:NwTd00d/i8cPZ3xOwwiv2PO5MOcx78fFErGNcVmBjv0= github.com/go-logfmt/logfmt v0.3.0/go.mod h1:Qt1PoO58o5twSAckw1HlFXLmHsOX5/0LbT9GBnD5lWE= github.com/go-logfmt/logfmt v0.4.0/go.mod h1:3RMwSq7FuexP4Kalkev3ejPJsZTpXXBr9+V4qmtdjCk= -github.com/go-logfmt/logfmt v0.6.0 h1:wGYYu3uicYdqXVgoYbvnkrPVXkuLM1p1ifugDMEdRi4= -github.com/go-logfmt/logfmt v0.6.0/go.mod h1:WYhtIu8zTZfxdn5+rREduYbwxfcBr/Vr6KEVveWlfTs= +github.com/go-logfmt/logfmt v0.6.1 h1:4hvbpePJKnIzH1B+8OR/JPbTx37NktoI9LE2QZBBkvE= +github.com/go-logfmt/logfmt v0.6.1/go.mod h1:EV2pOAQoZaT1ZXZbqDl5hrymndi4SY9ED9/z6CO0XAk= github.com/go-logr/logr v1.2.2/go.mod h1:jdQByPbusPIv2/zmleS9BjJVeZ6kBagPoEUsqbVz/1A= github.com/go-logr/logr v1.4.3 h1:CjnDlHq8ikf6E492q6eKboGOC0T8CDaOvkHCIg8idEI= github.com/go-logr/logr v1.4.3/go.mod h1:9T104GzyrTigFIr8wt5mBrctHMim0Nb2HLGrmQ40KvY= @@ -149,26 +181,50 @@ 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.23.0 h1:aGday7OWupfMs+LbmLZG4k0MYXIANxcuBTYUC03zFCU= -github.com/go-openapi/analysis v0.23.0/go.mod h1:9mz9ZWaSlV8TvjQHLl2mUW2PbZtemkE8yA5v22ohupo= -github.com/go-openapi/errors v0.22.0 h1:c4xY/OLxUBSTiepAg3j/MHuAv5mJhnf53LLMWFB+u/w= -github.com/go-openapi/errors v0.22.0/go.mod h1:J3DmZScxCDufmIMsdOuDHxJbdOGC0xtUynjIx092vXE= -github.com/go-openapi/jsonpointer v0.21.0 h1:YgdVicSA9vH5RiHs9TZW5oyafXZFc6+2Vc1rr/O9oNQ= -github.com/go-openapi/jsonpointer v0.21.0/go.mod h1:IUyH9l/+uyhIYQ/PXVA41Rexl+kOkAPDdXEYns6fzUY= -github.com/go-openapi/jsonreference v0.21.0 h1:Rs+Y7hSXT83Jacb7kFyjn4ijOuVGSvOdF2+tg1TRrwQ= -github.com/go-openapi/jsonreference v0.21.0/go.mod h1:LmZmgsrTkVg9LG4EaHeY8cBDslNPMo06cago5JNLkm4= -github.com/go-openapi/loads v0.22.0 h1:ECPGd4jX1U6NApCGG1We+uEozOAvXvJSF4nnwHZ8Aco= -github.com/go-openapi/loads v0.22.0/go.mod h1:yLsaTCS92mnSAZX5WWoxszLj0u+Ojl+Zs5Stn1oF+rs= -github.com/go-openapi/runtime v0.28.0 h1:gpPPmWSNGo214l6n8hzdXYhPuJcGtziTOgUpvsFWGIQ= -github.com/go-openapi/runtime v0.28.0/go.mod h1:QN7OzcS+XuYmkQLw05akXk0jRH/eZ3kb18+1KwW9gyc= -github.com/go-openapi/spec v0.21.0 h1:LTVzPc3p/RzRnkQqLRndbAzjY0d0BCL72A6j3CdL9ZY= -github.com/go-openapi/spec v0.21.0/go.mod h1:78u6VdPw81XU44qEWGhtr982gJ5BWg2c0I5XwVMotYk= -github.com/go-openapi/strfmt v0.23.0 h1:nlUS6BCqcnAk0pyhi9Y+kdDVZdZMHfEKQiS4HaMgO/c= -github.com/go-openapi/strfmt v0.23.0/go.mod h1:NrtIpfKtWIygRkKVsxh7XQMDQW5HKQl6S5ik2elW+K4= -github.com/go-openapi/swag v0.23.0 h1:vsEVJDUo2hPJ2tu0/Xc+4noaxyEffXNIs3cOULZ+GrE= -github.com/go-openapi/swag v0.23.0/go.mod h1:esZ8ITTYEsH1V2trKHjAN8Ai7xHb8RV+YSZ577vPjgQ= -github.com/go-openapi/validate v0.24.0 h1:LdfDKwNbpB6Vn40xhTdNZAnfLECL81w+VX3BumrGD58= -github.com/go-openapi/validate v0.24.0/go.mod h1:iyeX1sEufmv3nPbBdX3ieNviWnOZaJ1+zquzJEf2BAQ= +github.com/go-openapi/analysis v0.24.0 h1:vE/VFFkICKyYuTWYnplQ+aVr45vlG6NcZKC7BdIXhsA= +github.com/go-openapi/analysis v0.24.0/go.mod h1:GLyoJA+bvmGGaHgpfeDh8ldpGo69fAJg7eeMDMRCIrw= +github.com/go-openapi/errors v0.22.3 h1:k6Hxa5Jg1TUyZnOwV2Lh81j8ayNw5VVYLvKrp4zFKFs= +github.com/go-openapi/errors v0.22.3/go.mod h1:+WvbaBBULWCOna//9B9TbLNGSFOfF8lY9dw4hGiEiKQ= +github.com/go-openapi/jsonpointer v0.22.1 h1:sHYI1He3b9NqJ4wXLoJDKmUmHkWy/L7rtEo92JUxBNk= +github.com/go-openapi/jsonpointer v0.22.1/go.mod h1:pQT9OsLkfz1yWoMgYFy4x3U5GY5nUlsOn1qSBH5MkCM= +github.com/go-openapi/jsonreference v0.21.2 h1:Wxjda4M/BBQllegefXrY/9aq1fxBA8sI5M/lFU6tSWU= +github.com/go-openapi/jsonreference v0.21.2/go.mod h1:pp3PEjIsJ9CZDGCNOyXIQxsNuroxm8FAJ/+quA0yKzQ= +github.com/go-openapi/loads v0.23.1 h1:H8A0dX2KDHxDzc797h0+uiCZ5kwE2+VojaQVaTlXvS0= +github.com/go-openapi/loads v0.23.1/go.mod h1:hZSXkyACCWzWPQqizAv/Ye0yhi2zzHwMmoXQ6YQml44= +github.com/go-openapi/runtime v0.29.0 h1:Y7iDTFarS9XaFQ+fA+lBLngMwH6nYfqig1G+pHxMRO0= +github.com/go-openapi/runtime v0.29.0/go.mod h1:52HOkEmLL/fE4Pg3Kf9nxc9fYQn0UsIWyGjGIJE9dkg= +github.com/go-openapi/spec v0.22.0 h1:xT/EsX4frL3U09QviRIZXvkh80yibxQmtoEvyqug0Tw= +github.com/go-openapi/spec v0.22.0/go.mod h1:K0FhKxkez8YNS94XzF8YKEMULbFrRw4m15i2YUht4L0= +github.com/go-openapi/strfmt v0.24.0 h1:dDsopqbI3wrrlIzeXRbqMihRNnjzGC+ez4NQaAAJLuc= +github.com/go-openapi/strfmt v0.24.0/go.mod h1:Lnn1Bk9rZjXxU9VMADbEEOo7D7CDyKGLsSKekhFr7s4= +github.com/go-openapi/swag v0.25.1 h1:6uwVsx+/OuvFVPqfQmOOPsqTcm5/GkBhNwLqIR916n8= +github.com/go-openapi/swag v0.25.1/go.mod h1:bzONdGlT0fkStgGPd3bhZf1MnuPkf2YAys6h+jZipOo= +github.com/go-openapi/swag/cmdutils v0.25.1 h1:nDke3nAFDArAa631aitksFGj2omusks88GF1VwdYqPY= +github.com/go-openapi/swag/cmdutils v0.25.1/go.mod h1:pdae/AFo6WxLl5L0rq87eRzVPm/XRHM3MoYgRMvG4A0= +github.com/go-openapi/swag/conv v0.25.1 h1:+9o8YUg6QuqqBM5X6rYL/p1dpWeZRhoIt9x7CCP+he0= +github.com/go-openapi/swag/conv v0.25.1/go.mod h1:Z1mFEGPfyIKPu0806khI3zF+/EUXde+fdeksUl2NiDs= +github.com/go-openapi/swag/fileutils v0.25.1 h1:rSRXapjQequt7kqalKXdcpIegIShhTPXx7yw0kek2uU= +github.com/go-openapi/swag/fileutils v0.25.1/go.mod h1:+NXtt5xNZZqmpIpjqcujqojGFek9/w55b3ecmOdtg8M= +github.com/go-openapi/swag/jsonname v0.25.1 h1:Sgx+qbwa4ej6AomWC6pEfXrA6uP2RkaNjA9BR8a1RJU= +github.com/go-openapi/swag/jsonname v0.25.1/go.mod h1:71Tekow6UOLBD3wS7XhdT98g5J5GR13NOTQ9/6Q11Zo= +github.com/go-openapi/swag/jsonutils v0.25.1 h1:AihLHaD0brrkJoMqEZOBNzTLnk81Kg9cWr+SPtxtgl8= +github.com/go-openapi/swag/jsonutils v0.25.1/go.mod h1:JpEkAjxQXpiaHmRO04N1zE4qbUEg3b7Udll7AMGTNOo= +github.com/go-openapi/swag/jsonutils/fixtures_test v0.25.1 h1:DSQGcdB6G0N9c/KhtpYc71PzzGEIc/fZ1no35x4/XBY= +github.com/go-openapi/swag/jsonutils/fixtures_test v0.25.1/go.mod h1:kjmweouyPwRUEYMSrbAidoLMGeJ5p6zdHi9BgZiqmsg= +github.com/go-openapi/swag/loading v0.25.1 h1:6OruqzjWoJyanZOim58iG2vj934TysYVptyaoXS24kw= +github.com/go-openapi/swag/loading v0.25.1/go.mod h1:xoIe2EG32NOYYbqxvXgPzne989bWvSNoWoyQVWEZicc= +github.com/go-openapi/swag/mangling v0.25.1 h1:XzILnLzhZPZNtmxKaz/2xIGPQsBsvmCjrJOWGNz/ync= +github.com/go-openapi/swag/mangling v0.25.1/go.mod h1:CdiMQ6pnfAgyQGSOIYnZkXvqhnnwOn997uXZMAd/7mQ= +github.com/go-openapi/swag/netutils v0.25.1 h1:2wFLYahe40tDUHfKT1GRC4rfa5T1B4GWZ+msEFA4Fl4= +github.com/go-openapi/swag/netutils v0.25.1/go.mod h1:CAkkvqnUJX8NV96tNhEQvKz8SQo2KF0f7LleiJwIeRE= +github.com/go-openapi/swag/stringutils v0.25.1 h1:Xasqgjvk30eUe8VKdmyzKtjkVjeiXx1Iz0zDfMNpPbw= +github.com/go-openapi/swag/stringutils v0.25.1/go.mod h1:JLdSAq5169HaiDUbTvArA2yQxmgn4D6h4A+4HqVvAYg= +github.com/go-openapi/swag/typeutils v0.25.1 h1:rD/9HsEQieewNt6/k+JBwkxuAHktFtH3I3ysiFZqukA= +github.com/go-openapi/swag/typeutils v0.25.1/go.mod h1:9McMC/oCdS4BKwk2shEB7x17P6HmMmA6dQRtAkSnNb8= +github.com/go-openapi/swag/yamlutils v0.25.1 h1:mry5ez8joJwzvMbaTGLhw8pXUnhDK91oSJLDPF1bmGk= +github.com/go-openapi/swag/yamlutils v0.25.1/go.mod h1:cm9ywbzncy3y6uPm/97ysW8+wZ09qsks+9RS8fLWKqg= +github.com/go-openapi/validate v0.25.0 h1:JD9eGX81hDTjoY3WOzh6WqxVBVl7xjsLnvDo1GL5WPU= +github.com/go-openapi/validate v0.25.0/go.mod h1:SUY7vKrN5FiwK6LyvSwKjDfLNirSfWwHNgxd2l29Mmw= 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= @@ -177,8 +233,8 @@ github.com/go-playground/universal-translator v0.18.1 h1:Bcnm0ZwsGyWbCzImXv+pAJn 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-resty/resty/v2 v2.15.3 h1:bqff+hcqAflpiF591hhJzNdkRsFhlB96CYfBwSFvql8= -github.com/go-resty/resty/v2 v2.15.3/go.mod h1:0fHAoK7JoBy/Ch36N8VFeMsK7xQOHhvWaC3iOktwmIU= +github.com/go-resty/resty/v2 v2.16.5 h1:hBKqmWrr7uRc3euHVqmh1HTHcKn99Smr7o5spptdhTM= +github.com/go-resty/resty/v2 v2.16.5/go.mod h1:hkJtXbA2iKHzJheXYvQ8snQES5ZLGKMwQ07xAwp/fiA= github.com/go-stack/stack v1.8.0/go.mod h1:v0f6uXyyMGvRgIKkXu+yp6POWl0qKG85gN/melR3HDY= github.com/go-task/slim-sprig/v3 v3.0.0 h1:sUs3vkvUymDpBKi3qH1YSqBQk9+9D/8M2mN1vB6EwHI= github.com/go-task/slim-sprig/v3 v3.0.0/go.mod h1:W848ghGpv3Qj3dhTPRyJypKRiqCdHZiAzKg9hl15HA8= @@ -193,8 +249,8 @@ github.com/goccy/go-yaml v1.18.0/go.mod h1:XBurs7gK8ATbW4ZPGKgcbrY1Br56PdM69F7Lk 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.2.2 h1:Rl4B7itRWVtYIHFrSNd7vhTiz9UpLdi6gZhZ3wEeDy8= -github.com/golang-jwt/jwt/v5 v5.2.2/go.mod h1:pqrtFR0X4osieyHYxtmOUWsAWrfe1Q5UVIyoH402zdk= +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/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= @@ -205,12 +261,11 @@ github.com/golang/snappy v1.0.0/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEW github.com/google/btree v0.0.0-20180813153112-4030bb1f1f0c/go.mod h1:lNA+9X1NB3Zf8V7Ke586lFgjr2dZNuvo3lPJSGZ5JPQ= github.com/google/btree v1.1.3 h1:CVpQJjYgC4VbzxeGVHfvZrv1ctoYCAI8vbl07Fcxlyg= github.com/google/btree v1.1.3/go.mod h1:qOPhT0dTNdNzV6Z/lhRX0YXUafgPLFUh+gZMl761Gm4= -github.com/google/gnostic-models v0.6.9 h1:MU/8wDLif2qCXZmzncUQ/BOfxWfthHi63KqpoNbWqVw= -github.com/google/gnostic-models v0.6.9/go.mod h1:CiWsm0s6BSQd1hRn8/QmxqB6BesYcbSZxsz9b0KuDBw= +github.com/google/gnostic-models v0.7.0 h1:qwTtogB15McXDaNqTZdzPJRHvaVJlAl+HVQnLmJEJxo= +github.com/google/gnostic-models v0.7.0/go.mod h1:whL5G0m6dmc5cPxKc5bdKdEN3UjI7OUGxBlw57miDrQ= github.com/google/go-cmp v0.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.5.9/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY= github.com/google/go-cmp v0.7.0 h1:wk8382ETsv4JYUZwIsn6YpYiWiBsYLSJiTsyBybVuN8= github.com/google/go-cmp v0.7.0/go.mod h1:pXiqmnSA92OHEEa9HXL2W4E7lf9JzCmGVUdgjX3N/iU= github.com/google/go-querystring v1.1.0 h1:AnCroh3fv4ZBgVIf1Iwtovgjaw/GiKJo8M8yD/fhyJ8= @@ -218,31 +273,30 @@ github.com/google/go-querystring v1.1.0/go.mod h1:Kcdr2DB4koayq7X8pmAG4sNG59So17 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-20250403155104-27863c87afa6 h1:BHT72Gu3keYf3ZEu2J0b1vyeLSOYI8bm5wbJM/8yDe8= -github.com/google/pprof v0.0.0-20250403155104-27863c87afa6/go.mod h1:boTsfXsheKC2y+lKOCMpSfarhxDeIzfZG1jqGcPl3cA= -github.com/google/s2a-go v0.1.8 h1:zZDs9gcbt9ZPLV0ndSyQk6Kacx2g/X+SKYovpnz3SMM= -github.com/google/s2a-go v0.1.8/go.mod h1:6iNWHTpQ+nfNRN5E00MSdfDwVesa8hhS32PhPO8deJA= +github.com/google/pprof v0.0.0-20250923004556-9e5a51aed1e8 h1:ZI8gCoCjGzPsum4L21jHdQs8shFBIQih1TM9Rd/c+EQ= +github.com/google/pprof v0.0.0-20250923004556-9e5a51aed1e8/go.mod h1:I6V7YzU0XDpsHqbsyrghnFZLO1gwK6NPTNvmetQIk9U= +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.4 h1:XYIDZApgAnrN1c855gTgghdIA6Stxb52D5RnLI1SLyw= -github.com/googleapis/enterprise-certificate-proxy v0.3.4/go.mod h1:YKe7cfqYXjKGpGvmSg28/fFvhNzinZQm8DGnaburhGA= -github.com/googleapis/gax-go/v2 v2.14.0 h1:f+jMrjBPl+DL9nI4IQzLUxMq7XrAqFYB7hBPqMNIe8o= -github.com/googleapis/gax-go/v2 v2.14.0/go.mod h1:lhBCnjdLrWRaPvLWhmc8IS24m9mr07qSYnHncrgo+zk= -github.com/gophercloud/gophercloud v1.14.1 h1:DTCNaTVGl8/cFu58O1JwWgis9gtISAFONqpMKNg/Vpw= -github.com/gophercloud/gophercloud v1.14.1/go.mod h1:aAVqcocTSXh2vYFZ1JTvx4EQmfgzxRcNupUfxZbBNDM= -github.com/gorilla/websocket v1.5.3 h1:saDtZ6Pbx/0u+bgYQ3q96pZgCzfhKXGPqt7kZ72aNNg= -github.com/gorilla/websocket v1.5.3/go.mod h1:YR8l580nyteQvAITg2hZ9XVh4b55+EU/adAjf1fMHhE= -github.com/grafana/regexp v0.0.0-20240518133315-a468a5bfb3bc h1:GN2Lv3MGO7AS6PrRoT6yV5+wkrOpcszoIsO4+4ds248= -github.com/grafana/regexp v0.0.0-20240518133315-a468a5bfb3bc/go.mod h1:+JKpmjMGhpgPL+rXZ5nsZieVzvarn86asRlBg4uNGnk= -github.com/grpc-ecosystem/grpc-gateway v1.16.0 h1:gmcG1KaJ57LophUzW0Hy8NmPhnMZb4M0+kPpLofRdBo= +github.com/googleapis/enterprise-certificate-proxy v0.3.6 h1:GW/XbdyBFQ8Qe+YAmFU9uHLo7OnF5tL52HFAgMmyrf4= +github.com/googleapis/enterprise-certificate-proxy v0.3.6/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.8.0 h1:of2+8tT6+FbEYHfYC8GBu8TXJNsXYSNm9KuvpX7Neqo= +github.com/gophercloud/gophercloud/v2 v2.8.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= +github.com/grafana/regexp v0.0.0-20250905093917-f7b3be9d1853/go.mod h1:+JKpmjMGhpgPL+rXZ5nsZieVzvarn86asRlBg4uNGnk= github.com/grpc-ecosystem/grpc-gateway/v2 v2.27.2 h1:8Tjv8EJ+pM1xP8mK6egEbD1OgnVTyacbefKhmbLhIhU= github.com/grpc-ecosystem/grpc-gateway/v2 v2.27.2/go.mod h1:pkJQ2tZHJ0aFOVEEot6oZmaVEZcRme73eIFmhiVuRWs= -github.com/hashicorp/consul/api v1.30.0 h1:ArHVMMILb1nQv8vZSGIwwQd2gtc+oSQZ6CalyiyH2XQ= -github.com/hashicorp/consul/api v1.30.0/go.mod h1:B2uGchvaXVW2JhFoS8nqTxMD5PBykr4ebY4JWHTTeLM= +github.com/hashicorp/consul/api v1.32.0 h1:5wp5u780Gri7c4OedGEPzmlUEzi0g2KyiPphSr6zjVg= +github.com/hashicorp/consul/api v1.32.0/go.mod h1:Z8YgY0eVPukT/17ejW+l+C7zJmKwgPHtjU1q16v/Y40= github.com/hashicorp/consul/sdk v0.16.1 h1:V8TxTnImoPD5cj0U9Spl0TUxcytjcbbJeADFF07KdHg= github.com/hashicorp/consul/sdk v0.16.1/go.mod h1:fSXvwxB2hmh1FMZCNl6PwX0Q/1wdWtHJcZ7Ea5tns0s= -github.com/hashicorp/cronexpr v1.1.2 h1:wG/ZYIKT+RT3QkOdgYc+xsKWVRgnxJ1OJtjjy84fJ9A= -github.com/hashicorp/cronexpr v1.1.2/go.mod h1:P4wA0KBl9C5q2hABiMO7cp6jcIg96CDh1Efb3g1PWA4= +github.com/hashicorp/cronexpr v1.1.3 h1:rl5IkxXN2m681EfivTlccqIryzYJSXRGRNa0xeG7NA4= +github.com/hashicorp/cronexpr v1.1.3/go.mod h1:P4wA0KBl9C5q2hABiMO7cp6jcIg96CDh1Efb3g1PWA4= github.com/hashicorp/errwrap v1.0.0/go.mod h1:YH+1FKiLXxHSkmPseP+kNlulaMuP3n2brvKWEqk/Jc4= github.com/hashicorp/errwrap v1.1.0 h1:OxrOeh75EUXMY8TBjag2fzXGZ40LB6IKw45YeGUDY2I= github.com/hashicorp/errwrap v1.1.0/go.mod h1:YH+1FKiLXxHSkmPseP+kNlulaMuP3n2brvKWEqk/Jc4= @@ -254,6 +308,8 @@ github.com/hashicorp/go-hclog v1.6.3/go.mod h1:W4Qnvbt70Wk/zYJryRzDRU/4r0kIg0PVH github.com/hashicorp/go-immutable-radix v1.0.0/go.mod h1:0y9vanUI8NX6FsYoO3zeMjhV/C5i9g4Q3DwcSNZ4P60= github.com/hashicorp/go-immutable-radix v1.3.1 h1:DKHmCUm2hRBK510BaiZlwvpD40f8bJFeZnpfm2KLowc= github.com/hashicorp/go-immutable-radix v1.3.1/go.mod h1:0y9vanUI8NX6FsYoO3zeMjhV/C5i9g4Q3DwcSNZ4P60= +github.com/hashicorp/go-metrics v0.5.4 h1:8mmPiIJkTPPEbAiV97IxdAGNdRdaWwVap1BU6elejKY= +github.com/hashicorp/go-metrics v0.5.4/go.mod h1:CG5yz4NZ/AI/aQt9Ucm/vdBnbh7fvmv4lxZ350i+QQI= github.com/hashicorp/go-msgpack v0.5.3/go.mod h1:ahLV/dePpqEmjfWmKiqvPkv/twdG7iPBM1vqhUKIvfM= github.com/hashicorp/go-msgpack v0.5.5 h1:i9R9JSrqIz0QVLz3sz+i3YJdT7TTSLcfLLzJi9aZTuI= github.com/hashicorp/go-msgpack v0.5.5/go.mod h1:ahLV/dePpqEmjfWmKiqvPkv/twdG7iPBM1vqhUKIvfM= @@ -284,26 +340,20 @@ github.com/hashicorp/golang-lru v0.6.0/go.mod h1:iADmTwqILo4mZ8BN3D2Q6+9jd8WM5uG github.com/hashicorp/logutils v1.0.0/go.mod h1:QIAnNjmIWmVIIkWDTG1z5v++HQmx9WQRO+LraFDTW64= github.com/hashicorp/mdns v1.0.4/go.mod h1:mtBihi+LeNXGtG8L9dX59gAEa12BDtBQSp4v/YAJqrc= github.com/hashicorp/memberlist v0.5.0/go.mod h1:yvyXLpo0QaGE59Y7hDTsTzDD25JYBZ4mHgHUZ8lrOI0= -github.com/hashicorp/memberlist v0.5.1 h1:mk5dRuzeDNis2bi6LLoQIXfMH7JQvAzt3mQD0vNZZUo= -github.com/hashicorp/memberlist v0.5.1/go.mod h1:zGDXV6AqbDTKTM6yxW0I4+JtFzZAJVoIPvss4hV8F24= -github.com/hashicorp/nomad/api v0.0.0-20241218080744-e3ac00f30eec h1:+YBzb977VrmffaCX/OBm17dEVJUcWn5dW+eqs3aIJ/A= -github.com/hashicorp/nomad/api v0.0.0-20241218080744-e3ac00f30eec/go.mod h1:svtxn6QnrQ69P23VvIWMR34tg3vmwLz4UdUzm1dSCgE= +github.com/hashicorp/memberlist v0.5.3 h1:tQ1jOCypD0WvMemw/ZhhtH+PWpzcftQvgCorLu0hndk= +github.com/hashicorp/memberlist v0.5.3/go.mod h1:h60o12SZn/ua/j0B6iKAZezA4eDaGsIuPO70eOaJ6WE= +github.com/hashicorp/nomad/api v0.0.0-20250930071859-eaa0fe0e27af h1:ScAYf8O+9xTqTJPZH8MIlUfO+ak8cb31rW1aYJgS+jE= +github.com/hashicorp/nomad/api v0.0.0-20250930071859-eaa0fe0e27af/go.mod h1:sldFTIgs+FsUeKU3LwVjviAIuksxD8TzDOn02MYwslE= 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.17.1 h1:DPi019dv0WCiECEmtcuTgc//hBvnxESb6QlJnAb4a04= -github.com/hetznercloud/hcloud-go/v2 v2.17.1/go.mod h1:6ygmBba+FdawR2lLp/d9uJljY2k0dTYthprrI8usdLw= +github.com/hetznercloud/hcloud-go/v2 v2.29.0 h1:LzNFw5XLBfftyu3WM1sdSLjOZBlWORtz2hgGydHaYV8= +github.com/hetznercloud/hcloud-go/v2 v2.29.0/go.mod h1:XBU4+EDH2KVqu2KU7Ws0+ciZcX4ygukQl/J0L5GS8P8= 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.0 h1:/lTieTH9Mo/CWm3cTlFLnK10jgxjUGkAqRffGqvPteY= -github.com/ionos-cloud/sdk-go/v6 v6.3.0/go.mod h1:SXrO9OGyWjd2rZhAhEpdYN6VUAODzzqRdqA9BCviQtI= -github.com/jarcoal/httpmock v1.3.1 h1:iUx3whfZWVf3jT01hQTO/Eo5sAYtB2/rqaUuOtpInww= -github.com/jarcoal/httpmock v1.3.1/go.mod h1:3yb8rc4BI7TCBhFY8ng0gjuLKJNquuDNiPaZjnENuYg= -github.com/jmespath/go-jmespath v0.4.1-0.20220621161143-b0104c826a24 h1:liMMTbpW34dhU4az1GN0pTPADwNmvoRSeoZ6PItiqnY= -github.com/jmespath/go-jmespath v0.4.1-0.20220621161143-b0104c826a24/go.mod h1:T8mJZnbsbmF+m6zOOFylbeCJqk5+pHWvzYPziyZiYoo= -github.com/jmespath/go-jmespath/internal/testify v1.5.1 h1:shLQSRRSCCPj3f2gpwzGwWFoC7ycTf1rcQZHOlsJ6N8= -github.com/jmespath/go-jmespath/internal/testify v1.5.1/go.mod h1:L3OGu8Wl2/fWfCI6z80xFu9LTZmf1ZRjMHUOPmWr69U= -github.com/josharian/intern v1.0.0 h1:vlS4z54oSdjm0bgjRigI+G1HpF+tI+9rE5LLzOg8HmY= -github.com/josharian/intern v1.0.0/go.mod h1:5DoeVV0s6jJacbCEi61lwdGj/aVlrQvzHFFd8Hwg//Y= +github.com/ionos-cloud/sdk-go/v6 v6.3.4 h1:jTvGl4LOF8v8OYoEIBNVwbFoqSGAFqn6vGE7sp7/BqQ= +github.com/ionos-cloud/sdk-go/v6 v6.3.4/go.mod h1:wCVwNJ/21W29FWFUv+fNawOTMlFoP1dS3L+ZuztFW48= +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= github.com/jpillora/backoff v1.0.0/go.mod h1:J/6gKK9jxlEcS3zixgDgUAsiuZ7yrSoa/FX5e0EB2j4= github.com/json-iterator/go v1.1.6/go.mod h1:+SdeFBvtyEkXs7REEP0seUULqWtbJapLOCVDaaPEHmU= @@ -311,15 +361,15 @@ github.com/json-iterator/go v1.1.9/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/u github.com/json-iterator/go v1.1.12 h1:PV8peI4a0ysnczrg+LtxykD8LfKY9ML6u2jnxaEnrnM= github.com/json-iterator/go v1.1.12/go.mod h1:e30LSqwooZae/UwlEbR2852Gd8hjQvJoHmT4TnhNGBo= github.com/julienschmidt/httprouter v1.2.0/go.mod h1:SYymIcj16QtmaHHD7aYtjjsJG7VTCxuUUipMqKk8s4w= -github.com/keybase/go-keychain v0.0.0-20231219164618-57a3676c3af6 h1:IsMZxCuZqKuao2vNdfD82fjjgPLfyHLpR41Z88viRWs= -github.com/keybase/go-keychain v0.0.0-20231219164618-57a3676c3af6/go.mod h1:3VeWNIJaW+O5xpRQbPp0Ybqu1vJd/pm7s2F473HRrkw= +github.com/keybase/go-keychain v0.0.1 h1:way+bWYa6lDppZoZcgMbYsvC7GxljxrskdNInRtuthU= +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.0 h1:c/Cqfb0r+Yi+JtIEq73FWXVkRonBlf0CRNYc8Zttxdo= -github.com/klauspost/compress v1.18.0/go.mod h1:2Pp+KzxcywXVXMr50+X0Q/Lsb43OQHYWRCY2AiWywWQ= +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.8 h1:+StwCXwm9PdpiEkPyzBXIy+M9KUb4ODm0Zarf1kS5BM= -github.com/klauspost/cpuid/v2 v2.2.8/go.mod h1:Lcz8mBdAVJIBVzewtcLocK12l3Y+JytZYpaMropDUws= +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/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= @@ -336,10 +386,8 @@ 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.43.0 h1:sGeBB3caZt7vKBoPS5p4AVzmlG4JoqQOdigIibx3egk= -github.com/linode/linodego v1.43.0/go.mod h1:n4TMFu1UVNala+icHqrTEFFaicYSF74cSAUG5zkTwfA= -github.com/mailru/easyjson v0.9.0 h1:PrnmzHw7262yW8sTBwxi1PdJA3Iw/EKBa8psRf7d9a4= -github.com/mailru/easyjson v0.9.0/go.mod h1:1+xMtQp2MRNVL/V1bOzuP3aP8VNwRW55fQUto+XFtTU= +github.com/linode/linodego v1.60.0 h1:SgsebJFRCi+lSmYy+C40wmKZeJllGGm+W12Qw4+yVdI= +github.com/linode/linodego v1.60.0/go.mod h1:1+Bt0oTz5rBnDOJbGhccxn7LYVytXTIIfAy7QYmijDs= 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= @@ -362,18 +410,20 @@ 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.62 h1:cN8OuEF1/x5Rq6Np+h1epln8OiyPWV+lROx9LxcGgIQ= -github.com/miekg/dns v1.1.62/go.mod h1:mvDlcItzm+br7MToIKqkglaGhlFMHJ9DTNNWONWXbNQ= +github.com/miekg/dns v1.1.68 h1:jsSRkNozw7G/mnmXULynzMNIsgY2dHC8LO6U6Ij2JEA= +github.com/miekg/dns v1.1.68/go.mod h1:fujopn7TB3Pu3JM69XaawiU0wqjpL9/8xGop5UrTPps= 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= -github.com/mitchellh/go-testing-interface v1.14.1 h1:jrgshOhYAUVNMAJiKbEu7EqAwgJJ2JqpQmpLJOu07cU= -github.com/mitchellh/go-testing-interface v1.14.1/go.mod h1:gfgS7OtZj6MA4U1UrDRp04twqAjfvlZyCfX3sDjEym8= github.com/mitchellh/mapstructure v0.0.0-20160808181253-ca63d7c062ee/go.mod h1:FVVH3fgwuzCH5S8UJGiWEs2h04kUh9fWfEaFds41c1Y= github.com/mitchellh/mapstructure v1.5.0 h1:jeMsZIYE/09sWLaz43PL7Gy6RuMjD2eJVyuac5Z2hdY= github.com/mitchellh/mapstructure v1.5.0/go.mod h1:bFUtVrKA4DC2yAKiSyO/QUcy7e+RRV2QTWOzhPopBRo= github.com/moby/docker-image-spec v1.3.1 h1:jMKff3w6PgbfSa69GfNg+zN/XLhfXJGnEx3Nl2EsFP0= github.com/moby/docker-image-spec v1.3.1/go.mod h1:eKmb5VW8vQEh/BAr2yvVNvuiJuY6UIocYsFu/DxxRpo= +github.com/moby/sys/atomicwriter v0.1.0 h1:kw5D/EqkBwsBFi0ss9v1VG3wIkVhzGvLklJ+w3A14Sw= +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/modern-go/concurrent v0.0.0-20180228061459-e0a39a4cb421/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q= @@ -381,8 +431,9 @@ github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd h1:TRLaZ9cD/w github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q= github.com/modern-go/reflect2 v0.0.0-20180701023420-4b7aa43c6742/go.mod h1:bx2lNnkwVCuqBIxFjflWJWanXIb3RllmbCylyMrvgv0= github.com/modern-go/reflect2 v1.0.1/go.mod h1:bx2lNnkwVCuqBIxFjflWJWanXIb3RllmbCylyMrvgv0= -github.com/modern-go/reflect2 v1.0.2 h1:xBagoLtFs94CBntxluKeaWgTMpvLxC4ur3nMaC9Gz0M= github.com/modern-go/reflect2 v1.0.2/go.mod h1:yWuevngMOJpCy52FWWMvUC8ws7m/LJsjYzDa0/r8luk= +github.com/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/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822 h1:C3w9PqII01/Oq1c1nUAm88MOHcQC9l5mIlSMApZMrHA= @@ -394,6 +445,8 @@ 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.23.4 h1:ktYTpKJAVZnDT4VjxSbiBenUjmlL/5QkBEocaWXiQus= github.com/onsi/ginkgo/v2 v2.23.4/go.mod h1:Bt66ApGPBFzHyR+JO10Zbt0Gsp4uWxu5mIOTusL46e8= github.com/onsi/gomega v1.37.0 h1:CdEG8g0S133B4OswTDC/5XPSzE1OeP29QOioj2PID2Y= @@ -402,10 +455,8 @@ github.com/opencontainers/go-digest v1.0.0 h1:apOUWs51W5PlhuyGyz9FCeeBIOUDA/6nW8 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/opentracing/opentracing-go v1.2.0 h1:uEJPy/1a5RIPAJ0Ov+OIO8OxWu77jEv+1B0VhjKrZUs= -github.com/opentracing/opentracing-go v1.2.0/go.mod h1:GxEUsuufX4nBwe+T+Wl9TAgYrxe9dPLANfrWvHYVTgc= -github.com/ovh/go-ovh v1.6.0 h1:ixLOwxQdzYDx296sXcgS35TOPEahJkpjMGtzPadCjQI= -github.com/ovh/go-ovh v1.6.0/go.mod h1:cTVDnl94z4tl8pP1uZ/8jlVxntjSIf09bNcQ5TJSC7c= +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= @@ -424,20 +475,24 @@ github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 h1:Jamvg5psRI github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= github.com/posener/complete v1.1.1/go.mod h1:em0nMJCgc9GFtwrmVmEMR/ZL6WyhyjMBndrE9hABlRI= github.com/posener/complete v1.2.3/go.mod h1:WZIdtGGp+qx0sLrYKtIRAruyNpv6hFCicSgv7Sy7s/s= -github.com/prometheus-community/prom-label-proxy v0.11.0 h1:IO02WiiFMfcIqvjhwMbCYnDJiTNcSHBrkCGRQ/7KDd0= -github.com/prometheus-community/prom-label-proxy v0.11.0/go.mod h1:lfvrG70XqsxWDrSh1843QXBG0fSg8EbIXmAo8xGsvw8= -github.com/prometheus-operator/prometheus-operator/pkg/apis/monitoring v0.81.0 h1:mSii7z+TihzdeULnGjLnNikgtDbeViY/wW8s3430rhE= -github.com/prometheus-operator/prometheus-operator/pkg/apis/monitoring v0.81.0/go.mod h1:YfnEQzw7tUQa0Sjiz8V6QFc6JUGE+i5wybsjc3EOKn8= -github.com/prometheus-operator/prometheus-operator/pkg/client v0.81.0 h1:z8ETgiD2hThJi3+3S8eKAbC9/pwPq1kGt8HkeGlDstw= -github.com/prometheus-operator/prometheus-operator/pkg/client v0.81.0/go.mod h1:EKK9z5OIxxwaCZmgaidiIfvy6mF7x8M3AJHmxwx+QB4= -github.com/prometheus/alertmanager v0.28.1 h1:BK5pCoAtaKg01BYRUJhEDV1tqJMEtYBGzPw8QdvnnvA= -github.com/prometheus/alertmanager v0.28.1/go.mod h1:0StpPUDDHi1VXeM7p2yYfeZgLVi/PPlt39vo9LQUHxM= +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.87.1 h1:zjzxO10Rv3goA/GDbE3Vgf2TNhhcOp7fZbRG0Tkm3OY= +github.com/prometheus-operator/prometheus-operator v0.87.1/go.mod h1:jGcnsZwJ/g37MEgLiVskDD81aCLrOfxWA7904WX6Tq0= +github.com/prometheus-operator/prometheus-operator/pkg/apis/monitoring v0.87.1 h1:wyKanf+IFdbIqbDNYGt+f1dabLErLWtBaxd0KaAx4aM= +github.com/prometheus-operator/prometheus-operator/pkg/apis/monitoring v0.87.1/go.mod h1:WHiLZmOWVop/MoYvRD58LfnPeyE+dcITby/jQjg83Hw= +github.com/prometheus-operator/prometheus-operator/pkg/client v0.87.1 h1:+fFT1loQULLOJrFMwxX/wwvdzIY2y0bhzmEXbzSh4ww= +github.com/prometheus-operator/prometheus-operator/pkg/client v0.87.1/go.mod h1:AD0XjHmBojNz9gv3BaFHrGoLigxCUw9Dgm3HmpkH1a8= +github.com/prometheus/alertmanager v0.29.0 h1:/ET4NmAGx2Dv9kStrXIBqBgHyiSgIk4OetY+hoZRfgc= +github.com/prometheus/alertmanager v0.29.0/go.mod h1:SjI2vhrfdWg10UaRUxTz27rgdJVG3HXrhI5WFjCdBgs= 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.0 h1:ust4zpdl9r4trLY/gSjlm07PuiBq2ynaXXlptpfy8Uc= -github.com/prometheus/client_golang v1.23.0/go.mod h1:i/o0R9ByOnHX0McrTMTyhYvKE4haaf2mW08I+jGAjEE= +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_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= @@ -445,41 +500,40 @@ github.com/prometheus/client_model v0.6.2 h1:oBsgwpGs7iVziMvrGhE53c/GrLUsZdHnqNw github.com/prometheus/client_model v0.6.2/go.mod h1:y3m2F6Gdpfy6Ut/GBsUqTWZqCUvMVzSfMLjcu6wAwpE= github.com/prometheus/common v0.4.1/go.mod h1:TNfzLD0ON7rHzMJeJkieUDPYmFC7Snx/y86RQel1bk4= github.com/prometheus/common v0.9.1/go.mod h1:yhUN8i9wzaXS3w1O07YhxHEBxD+W35wd8bs7vj7HSQ4= -github.com/prometheus/common v0.65.0 h1:QDwzd+G1twt//Kwj/Ww6E9FQq1iVMmODnILtW1t2VzE= -github.com/prometheus/common v0.65.0/go.mod h1:0gZns+BLRQ3V6NdaerOhMbwwRbNh9hkGINtQAsP5GS8= -github.com/prometheus/otlptranslator v0.0.2 h1:+1CdeLVrRQ6Psmhnobldo0kTp96Rj80DRXRd5OSnMEQ= -github.com/prometheus/otlptranslator v0.0.2/go.mod h1:P8AwMgdD7XEr6QRUJ2QWLpiAZTgTE2UYgjlu3svompI= +github.com/prometheus/common v0.67.4 h1:yR3NqWO1/UyO1w2PhUvXlGQs/PtFmoveVO0KZ4+Lvsc= +github.com/prometheus/common v0.67.4/go.mod h1:gP0fq6YjjNCLssJCQp0yk4M8W6ikLURwkdd/YKtTbyI= +github.com/prometheus/otlptranslator v1.0.0 h1:s0LJW/iN9dkIH+EnhiD3BlkkP5QVIUVEoIwkU+A6qos= +github.com/prometheus/otlptranslator v1.0.0/go.mod h1:vRYWnXvI6aWGpsdY/mOT/cbeVRBlPWtBNDb7kGR3uKM= github.com/prometheus/procfs v0.0.0-20181005140218-185b4288413d/go.mod h1:c3At6R/oaqEKCNdg8wHV1ftS6bRYblBhIjjI8uT2IGk= github.com/prometheus/procfs v0.0.2/go.mod h1:TjEm7ze935MbeOT/UhFTIMYKhuLP4wbCsTZCD3I8kEA= github.com/prometheus/procfs v0.0.8/go.mod h1:7Qr8sr6344vo1JqZ6HhLceV9o3AJ1Ff+GxbHq6oeK9A= github.com/prometheus/procfs v0.17.0 h1:FuLQ+05u4ZI+SS/w9+BWEM2TXiHKsUQ9TADiRH7DuK0= github.com/prometheus/procfs v0.17.0/go.mod h1:oPQLaDAMRbA+u8H5Pbfq+dl3VDAvHxMUOVhe0wYB2zw= -github.com/prometheus/prometheus v0.301.0 h1:0z8dgegmILivNomCd79RKvVkIols8vBGPKmcIBc7OyY= -github.com/prometheus/prometheus v0.301.0/go.mod h1:BJLjWCKNfRfjp7Q48DrAjARnCi7GhfUVvUFEAWTssZM= -github.com/prometheus/sigv4 v0.1.0 h1:FgxH+m1qf9dGQ4w8Dd6VkthmpFQfGTzUeavMoQeG1LA= -github.com/prometheus/sigv4 v0.1.0/go.mod h1:doosPW9dOitMzYe2I2BN0jZqUuBrGPbXrNsTScN18iU= -github.com/rashmichandrashekar/prometheus-operator v0.0.0-20250715221118-b55ea6d3c138 h1:S5SirW5BPl40JehmZkcayC/iiRP9/o1UHZ3ylUIDD9w= -github.com/rashmichandrashekar/prometheus-operator v0.0.0-20250715221118-b55ea6d3c138/go.mod h1:FcXmSKTP+RrJjr8SWz+ww+ijRgboNq4QUXrEYq3Jftw= -github.com/redis/go-redis/v9 v9.6.1 h1:HHDteefn6ZkTtY5fGUE8tj8uy85AHk6zP7CpzIAM0y4= -github.com/redis/go-redis/v9 v9.6.1/go.mod h1:0C0c6ycQsdpVNQpxb1njEQIqkx5UcsM8FJCQLgE9+RA= -github.com/rogpeppe/go-internal v1.13.1 h1:KvO1DLK/DRN07sQ1LQKScxyZJuNnedQ5/wKSR38lUII= -github.com/rogpeppe/go-internal v1.13.1/go.mod h1:uMEvuHeurkdAXX61udpOXGD/AzZDWNMNyH2VO9fmH0o= +github.com/prometheus/prometheus v0.308.1 h1:ApMNI/3/es3Ze90Z7CMb+wwU2BsSYur0m5VKeqHj7h4= +github.com/prometheus/prometheus v0.308.1/go.mod h1:aHjYCDz9zKRyoUXvMWvu13K9XHOkBB12XrEqibs3e0A= +github.com/prometheus/sigv4 v0.3.0 h1:QIG7nTbu0JTnNidGI1Uwl5AGVIChWUACxn2B/BQ1kms= +github.com/prometheus/sigv4 v0.3.0/go.mod h1:fKtFYDus2M43CWKMNtGvFNHGXnAJJEGZbiYCmVp/F8I= +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.30 h1:yoKAVkEVwAqbGbR8n87rHQ1dulL25rKloGadb3vm770= -github.com/scaleway/scaleway-sdk-go v1.0.0-beta.30/go.mod h1:sH0u6fq6x4R5M7WxkoQFY/o7UaiItec0o1LinLCJNq8= +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/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.7.1 h1:UJcjSAI3aUKx52kfcfhblgyhZceouhvvs3OYdWgn+PY= -github.com/shoenig/test v1.7.1/go.mod h1:UxJ6u/x2v/TNs/LoLxBNJRV9DiwBBKYxXSyczsBHFoI= +github.com/shoenig/test v1.12.2 h1:ZVT8NeIUwGWpZcKaepPmFMoNQ3sVpxvqUh/MAqwFiJI= +github.com/shoenig/test v1.12.2/go.mod h1:UxJ6u/x2v/TNs/LoLxBNJRV9DiwBBKYxXSyczsBHFoI= github.com/sirupsen/logrus v1.2.0/go.mod h1:LxeOpSwHxABJmUn/MG1IvRgCAasNZTLOkJPxbbu5VWo= github.com/sirupsen/logrus v1.4.2/go.mod h1:tLMulIdttU9McNUspp0xgXVQah82FyeX6MwdIuYE2rE= github.com/sirupsen/logrus v1.9.3 h1:dueUQJ1C2q9oE3F7wvmSGAaVtTmUizReu6fjN8uqzbQ= github.com/sirupsen/logrus v1.9.3/go.mod h1:naHLuLoDiP4jHNo9R0sCBMtWGeIprob74mVsIT4qYEQ= -github.com/spf13/cobra v1.9.1 h1:CXSaggrXdbHK9CF+8ywj8Amf7PBRmPCOJugH954Nnlo= -github.com/spf13/cobra v1.9.1/go.mod h1:nDyEzZ8ogv936Cinf6g1RU9MRY64Ir93oCnqb9wxYW0= -github.com/spf13/pflag v1.0.6 h1:jFzHGLGAlb3ruxLB8MhbI6A8+AQX/2eW4qeyNZXNp2o= -github.com/spf13/pflag v1.0.6/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg= +github.com/spf13/cobra v1.10.2 h1:DMTTonx5m65Ic0GOoRY2c16WCbHxOOw6xxezuLaBpcU= +github.com/spf13/cobra v1.10.2/go.mod h1:7C1pvHqHw5A4vrJfjNwvOdzYu0Gml16OCs2GRiTUUS4= +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.17.3 h1:GsZGmRRc/3GJLmCUnsZswirr5wfLRrwavbnL/renOqg= +github.com/stackitcloud/stackit-sdk-go/core v0.17.3/go.mod h1:HBCXJGPgdRulplDzhrmwC+Dak9B/x0nzNtmOpu+1Ahg= 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= @@ -510,12 +564,12 @@ 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.2 h1:gvZyk8352qSfzyZ2UMWcpDpMSGEr1eqE4T793SqyhzM= -go.mongodb.org/mongo-driver v1.17.2/go.mod h1:Hy04i7O2kC4RS06ZrhPRqj/u4DTYkFDAAccj+rVKqgQ= -go.opentelemetry.io/auto/sdk v1.1.0 h1:cH53jehLUN6UFLY71z+NDOiNJqDdPRaXzTel0sJySYA= -go.opentelemetry.io/auto/sdk v1.1.0/go.mod h1:3wSPjt5PWp2RhlCcmmOial7AvC4DQqZb7a7wCow3W8A= -go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.62.0 h1:Hf9xI/XLML9ElpiHVDNwvqI0hIFlzV8dgIr35kV1kRU= -go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.62.0/go.mod h1:NfchwuyNoMcZ5MLHwPrODwUF1HWCXWrL31s8gSAdIKY= +go.mongodb.org/mongo-driver v1.17.4 h1:jUorfmVzljjr0FLzYQsGP8cgN/qzzxlY9Vh0C9KFXVw= +go.mongodb.org/mongo-driver v1.17.4/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/contrib/instrumentation/net/http/otelhttp v0.63.0 h1:RbKq8BG0FI8OiXhBfcRtqqHcZcka+gU3cskNuf05R18= +go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.63.0/go.mod h1:h06DGIukJOevXaj/xrNjhi/2098RZzcLTbc0jDAUbsg= go.opentelemetry.io/otel v1.38.0 h1:RkfdswUDRimDg0m2Az18RKOsnI8UDzppJAtj01/Ymk8= go.opentelemetry.io/otel v1.38.0/go.mod h1:zcmtmQ1+YmQM9wrNsTGV/q/uyusom3P8RxwExxkZhjM= go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.38.0 h1:GqRJVj7UmLjCVyVJ3ZFLdPRmhDUp2zFmQe3RHIOsw24= @@ -544,8 +598,8 @@ 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.0 h1:aJMhYGrd5QSmlpLMr2MftRKl7t8J8PTZPA732ud/XR8= go.uber.org/zap v1.27.0/go.mod h1:GB2qFLM7cTU87MWRP2mPIjqfIDnGu+VIO4V/SdhGo2E= -go.yaml.in/yaml/v2 v2.4.2 h1:DzmwEr2rDGHl7lsFgAHxmNz/1NlQ7xLIrlN2h5d1eGI= -go.yaml.in/yaml/v2 v2.4.2/go.mod h1:081UH+NErpNdqlCXm3TtEran0rJZGxAYx9hb/ELlsPU= +go.yaml.in/yaml/v2 v2.4.3 h1:6gvOSjQoTB3vt1l+CU+tSyi/HOjfOjRLJ4YwYZGwRO0= +go.yaml.in/yaml/v2 v2.4.3/go.mod h1:zSxWcmIDjOzPXpjlTTbAsKokqkDNAVtZO0WOMiT90s8= go.yaml.in/yaml/v3 v3.0.4 h1:tfq32ie2Jv2UxXFdLJdh3jXuOzWiL1fo0bu/FbuKpbc= go.yaml.in/yaml/v3 v3.0.4/go.mod h1:DhzuOOF2ATzADvBadXxruRBLzYTpT36CKvDb3+aBEFg= golang.org/x/arch v0.0.0-20210923205945-b76863e36670/go.mod h1:5om86z9Hs0C8fWVUuoMHwpExlXzs5Tkyp9hOrfG7pp8= @@ -556,15 +610,14 @@ golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACk 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.0.0-20220829220503-c86fa9a7ed90/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4= -golang.org/x/crypto v0.41.0 h1:WKYxWedPGCTVVl5+WHSSrOBT0O8lx32+zxmHxijgXp4= -golang.org/x/crypto v0.41.0/go.mod h1:pO5AFd7FA68rFak7rOAGVuygIISepHftHnr8dr6+sUc= -golang.org/x/exp v0.0.0-20250106191152-7588d65b2ba8 h1:yqrTHse8TCMW1M1ZCP+VAR/l0kKxwaAIqN/il7x4voA= -golang.org/x/exp v0.0.0-20250106191152-7588d65b2ba8/go.mod h1:tujkw807nyEEAamNbDrEGzRav+ilXA7PCRAd6xsmwiU= +golang.org/x/crypto v0.45.0 h1:jMBrvKuj23MTlT0bQEOBcAE0mjg8mK9RXFhRH6nyF3Q= +golang.org/x/crypto v0.45.0/go.mod h1:XTGrrkGJve7CYK7J8PEww4aY7gM3qMCElcJQ8n8JdX4= +golang.org/x/exp v0.0.0-20251002181428-27f1f14c8bb9 h1:TQwNpfvNkxAVlItJf6Cr5JTsVZoC/Sj7K3OZv2Pc14A= +golang.org/x/exp v0.0.0-20251002181428-27f1f14c8bb9/go.mod h1:TwQYMMnGpvZyc+JpB/UAuTNIsVJifOlSkrZkhcvpVUk= 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.26.0 h1:EGMPT//Ezu+ylkCijjPc+f4Aih7sZvaAr+O3EHBxvZg= -golang.org/x/mod v0.26.0/go.mod h1:/j6NAhSk8iQ723BGAUyoAcn7SlD7s15Dp9Nd/SfeaFQ= +golang.org/x/mod v0.29.0 h1:HV8lRxZC4l2cr3Zq1LvtOsi/ThTgWnUk/y64QSs8GwA= +golang.org/x/mod v0.29.0/go.mod h1:NyhrlYXJ2H4eJiRy/WDBO6HMqZQ6q9nk4JzS3NuCK+w= 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= @@ -574,19 +627,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.0.0-20211112202133-69e39bad7dc2/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= -golang.org/x/net v0.43.0 h1:lat02VYK2j4aLzMzecihNvTlJNQUq316m2Mr9rnM6YE= -golang.org/x/net v0.43.0/go.mod h1:vhO1fvI4dGsIjh73sWfUVjj3N7CA9WkKJNQm2svM6Jg= -golang.org/x/oauth2 v0.30.0 h1:dnDm7JmhM45NNpd8FDDeLhK6FwqbOf4MLCM9zb1BOHI= -golang.org/x/oauth2 v0.30.0/go.mod h1:B++QgG3ZKulg6sRPGD/mqlHQs5rB3Ml9erfeDY7xKlU= +golang.org/x/net v0.47.0 h1:Mx+4dIFzqraBXUugkia1OOvlD6LemFo1ALMHjrXDOhY= +golang.org/x/net v0.47.0/go.mod h1:/jNxtkgq5yWUGYkaZGqo27cfGZ1c5Nen03aYrrKpVRU= +golang.org/x/oauth2 v0.32.0 h1:jsCblLleRMDrxMN29H3z/k1KliIvpLgCkE6R8FXXNgY= +golang.org/x/oauth2 v0.32.0/go.mod h1:lzm5WQJQwKZ3nwavOZ3IS5Aulzxi68dUSgRHujetwEA= golang.org/x/sync v0.0.0-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.16.0 h1:ycBJEhp9p4vXvUZNszeOq0kGTPghopOL8q0fq3vstxw= -golang.org/x/sync v0.16.0/go.mod h1:1dzgHSNfp02xaA81J2MS99Qcpr2w7fw1gpm99rleRqA= +golang.org/x/sync v0.18.0 h1:kr88TuHDroi+UVf+0hZnirlk8o8T+4MrK6mr60WkH/I= +golang.org/x/sync v0.18.0/go.mod h1:9KTHXmSnoGruLpwFjVSX0lNNA75CykiMECbovNTZqGI= 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= @@ -604,36 +656,33 @@ golang.org/x/sys v0.0.0-20200930185726-fdedc70b468f/go.mod h1:h1NjWce9XRLGQEsW7w golang.org/x/sys v0.0.0-20201119102817-f84b799fce68/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210303074136-134d130e1a04/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210330210617-4fbd30eecc44/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20210423082822-04245dca01da/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20210615035016-665e8c7367d1/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20210630005230-0f9fa26af87c/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= 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.5.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.35.0 h1:vz1N37gP5bs89s7He8XuIYXpyY0+QlsKmzipCbUtyxI= -golang.org/x/sys v0.35.0/go.mod h1:BJP2sWEmIv4KK5OTEluFJCKSidICx8ciO85XgH3Ak8k= +golang.org/x/sys v0.38.0 h1:3yZWxaJjBmCWXqhN1qh02AkOnCQ1poK6oF+a7xWL6Gc= +golang.org/x/sys v0.38.0/go.mod h1:OgkHotnGiDImocRcuBABYBEXf8A9a87e/uXjp9XT3ks= golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= -golang.org/x/term v0.34.0 h1:O/2T7POpk0ZZ7MAzMeWFSg6S5IpWd/RXDlM9hgM3DR4= -golang.org/x/term v0.34.0/go.mod h1:5jC53AEywhIVebHgPVeg0mj8OD3VO9OzclacVrqpaAw= +golang.org/x/term v0.37.0 h1:8EGAD0qCmHYZg6J17DvsMy9/wJ7/D/4pV/wfnld5lTU= +golang.org/x/term v0.37.0/go.mod h1:5pB4lxRNYYVZuTLmy8oR2BH8dflOR+IbTYFD8fi3254= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.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.28.0 h1:rhazDwis8INMIwQ4tpjLDzUhx6RlXqZNPEM0huQojng= -golang.org/x/text v0.28.0/go.mod h1:U8nCwOR8jO/marOQ0QbDiOngZVEBB7MAiitBuMjXiNU= -golang.org/x/time v0.9.0 h1:EsRrnYcQiGH+5FfbgvV4AP7qEZstoyrHB0DzarOQ4ZY= -golang.org/x/time v0.9.0/go.mod h1:3BpzKBy/shNhVucY/MWOyx10tF3SFh9QdLuxbVysPQM= +golang.org/x/text v0.31.0 h1:aC8ghyu4JhP8VojJ2lEHBnochRno1sgL6nEi9WGFGMM= +golang.org/x/text v0.31.0/go.mod h1:tKRAlv61yKIjGGHX/4tP1LTbc13YSec1pxVEWXzfoeM= +golang.org/x/time v0.13.0 h1:eUlYslOIt32DgYD6utsuUeHs4d7AsEYLuIAdg7FlYgI= +golang.org/x/time v0.13.0/go.mod h1:eL/Oa2bBBK0TkX57Fyni+NgnyQQN4LitPmob2Hjnqw4= 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.35.0 h1:mBffYraMEf7aa0sB+NuKnuCy8qI/9Bughn8dC2Gu5r0= -golang.org/x/tools v0.35.0/go.mod h1:NKdj5HkL/73byiZSJjqJgKn3ep7KjFkBOkR/Hps3VPw= +golang.org/x/tools v0.38.0 h1:Hx2Xv8hISq8Lm16jvBZ2VQf+RLmbd7wVUsALibYI/IQ= +golang.org/x/tools v0.38.0/go.mod h1:yEsQ/d/YK8cjh0L6rZlY8tgtlKiBNTL14pGDJPJpYQs= golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= @@ -642,23 +691,25 @@ gomodules.xyz/jsonpatch/v2 v2.4.0 h1:Ci3iUJyx9UeRx7CeFN8ARgGbkESwJK+KB9lLcWxY/Zw gomodules.xyz/jsonpatch/v2 v2.4.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.213.0 h1:KmF6KaDyFqB417T68tMPbVmmwtIXs2VB60OJKIHB0xQ= -google.golang.org/api v0.213.0/go.mod h1:V0T5ZhNUUNpYAlL306gFZPFt5F5D/IeyLoktduYYnvQ= -google.golang.org/genproto/googleapis/api v0.0.0-20250825161204-c5933d9347a5 h1:BIRfGDEjiHRrk0QKZe3Xv2ieMhtgRGeLcZQ0mIVn4EY= -google.golang.org/genproto/googleapis/api v0.0.0-20250825161204-c5933d9347a5/go.mod h1:j3QtIyytwqGr1JUDtYXwtMXWPKsEa5LtzIFN1Wn5WvE= -google.golang.org/genproto/googleapis/rpc v0.0.0-20250825161204-c5933d9347a5 h1:eaY8u2EuxbRv7c3NiGK0/NedzVsCcV6hDuU5qPX5EGE= -google.golang.org/genproto/googleapis/rpc v0.0.0-20250825161204-c5933d9347a5/go.mod h1:M4/wBTSeyLxupu3W3tJtOgB14jILAS/XWPSSa3TAlJc= -google.golang.org/grpc v1.75.0 h1:+TW+dqTd2Biwe6KKfhE5JpiYIBWq865PhKGSXiivqt4= -google.golang.org/grpc v1.75.0/go.mod h1:JtPAzKiq4v1xcAB2hydNlWI2RnF85XXcV0mhKXr2ecQ= -google.golang.org/protobuf v1.36.8 h1:xHScyCOEuuwZEc6UtSOvPbAT4zRh0xcNRYekJwfqyMc= -google.golang.org/protobuf v1.36.8/go.mod h1:fuxRtAxBytpl4zzqUh6/eyUujkJdNiuEkXntxiD/uRU= +google.golang.org/api v0.252.0 h1:xfKJeAJaMwb8OC9fesr369rjciQ704AjU/psjkKURSI= +google.golang.org/api v0.252.0/go.mod h1:dnHOv81x5RAmumZ7BWLShB/u7JZNeyalImxHmtTHxqw= +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-20250929231259-57b25ae835d4 h1:8XJ4pajGwOlasW+L13MnEGA8W4115jJySQtVfS2/IBU= +google.golang.org/genproto/googleapis/api v0.0.0-20250929231259-57b25ae835d4/go.mod h1:NnuHhy+bxcg30o7FnVAZbXsPHUDQ9qKWAQKCD7VxFtk= +google.golang.org/genproto/googleapis/rpc v0.0.0-20251006185510-65f7160b3a87 h1:WgGZrMngVRRve7T3P5gbXdmedSmUpkf8uIUu1fg+biY= +google.golang.org/genproto/googleapis/rpc v0.0.0-20251006185510-65f7160b3a87/go.mod h1:7i2o+ce6H/6BluujYR+kqX3GKH+dChPTQU19wjRPiGk= +google.golang.org/grpc v1.76.0 h1:UnVkv1+uMLYXoIz6o7chp59WfQUYA2ex/BXQ9rHZu7A= +google.golang.org/grpc v1.76.0/go.mod h1:Ju12QI8M6iQJtbcsV+awF5a4hfJMLi4X0JLo94ULZ6c= +google.golang.org/protobuf v1.36.10 h1:AYd7cD/uASjIL6Q9LiTjz8JLcrh/88q5UObnmY3aOOE= +google.golang.org/protobuf v1.36.10/go.mod h1:HTf+CrKn2C3g5S8VImy6tdcUvCska2kB7j23XfzDpco= gopkg.in/alecthomas/kingpin.v2 v2.2.6/go.mod h1:FMv+mEhP44yOT+4EoQTLFTRgOQ1FBLkstjWtayDeSgw= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= 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/evanphx/json-patch.v4 v4.12.0 h1:n6jtcsulIzXPJaxegRbvFNNrZDjbij7ny3gmSPG+6V4= -gopkg.in/evanphx/json-patch.v4 v4.12.0/go.mod h1:p8EYWUEYMpynmqDbY58zCKCFZw8pRWMG4EsWvDvM72M= +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= @@ -667,7 +718,6 @@ 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= gopkg.in/yaml.v2 v2.2.5/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= -gopkg.in/yaml.v2 v2.2.8/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= gopkg.in/yaml.v2 v2.4.0 h1:D8xgwECY7CYvx+Y2n4sBz93Jn9JRvxdiyyo8CTfuKaY= gopkg.in/yaml.v2 v2.4.0/go.mod h1:RDklbk79AGWmwhnvt/jBztapEOGDOx6ZbXqjP6csGnQ= gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= @@ -675,32 +725,31 @@ 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.32.3 h1:Hw7KqxRusq+6QSplE3NYG4MBxZw1BZnq4aP4cJVINls= -k8s.io/api v0.32.3/go.mod h1:2wEDTXADtm/HA7CCMD8D8bK4yuBUptzaRhYcYEEYA3k= -k8s.io/apiextensions-apiserver v0.32.3 h1:4D8vy+9GWerlErCwVIbcQjsWunF9SUGNu7O7hiQTyPY= -k8s.io/apiextensions-apiserver v0.32.3/go.mod h1:8YwcvVRMVzw0r1Stc7XfGAzB/SIVLunqApySV5V7Dss= -k8s.io/apimachinery v0.32.3 h1:JmDuDarhDmA/Li7j3aPrwhpNBA94Nvk5zLeOge9HH1U= -k8s.io/apimachinery v0.32.3/go.mod h1:GpHVgxoKlTxClKcteaeuF1Ul/lDVb74KpZcxcmLDElE= -k8s.io/client-go v0.32.3 h1:RKPVltzopkSgHS7aS98QdscAgtgah/+zmpAogooIqVU= -k8s.io/client-go v0.32.3/go.mod h1:3v0+3k4IcT9bXTc4V2rt+d2ZPPG700Xy6Oi0Gdl2PaY= -k8s.io/component-base v0.32.3 h1:98WJvvMs3QZ2LYHBzvltFSeJjEx7t5+8s71P7M74u8k= -k8s.io/component-base v0.32.3/go.mod h1:LWi9cR+yPAv7cu2X9rZanTiFKB2kHA+JjmhkKjCZRpI= +k8s.io/api v0.34.2 h1:fsSUNZhV+bnL6Aqrp6O7lMTy6o5x2C4XLjnh//8SLYY= +k8s.io/api v0.34.2/go.mod h1:MMBPaWlED2a8w4RSeanD76f7opUoypY8TFYkSM+3XHw= +k8s.io/apiextensions-apiserver v0.34.2 h1:WStKftnGeoKP4AZRz/BaAAEJvYp4mlZGN0UCv+uvsqo= +k8s.io/apiextensions-apiserver v0.34.2/go.mod h1:398CJrsgXF1wytdaanynDpJ67zG4Xq7yj91GrmYN2SE= +k8s.io/apimachinery v0.34.2 h1:zQ12Uk3eMHPxrsbUJgNF8bTauTVR2WgqJsTmwTE/NW4= +k8s.io/apimachinery v0.34.2/go.mod h1:/GwIlEcWuTX9zKIg2mbw0LRFIsXwrfoVxn+ef0X13lw= +k8s.io/client-go v0.34.2 h1:Co6XiknN+uUZqiddlfAjT68184/37PS4QAzYvQvDR8M= +k8s.io/client-go v0.34.2/go.mod h1:2VYDl1XXJsdcAxw7BenFslRQX28Dxz91U9MWKjX97fE= +k8s.io/component-base v0.34.2 h1:HQRqK9x2sSAsd8+R4xxRirlTjowsg6fWCPwWYeSvogQ= +k8s.io/component-base v0.34.2/go.mod h1:9xw2FHJavUHBFpiGkZoKuYZ5pdtLKe97DEByaA+hHbM= 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-20241212222426-2c72e554b1e7 h1:hcha5B1kVACrLujCKLbr8XWMxCxzQx42DY8QKYJrDLg= -k8s.io/kube-openapi v0.0.0-20241212222426-2c72e554b1e7/go.mod h1:GewRfANuJ70iYzvn+i4lezLDAFzvjxZYK1gn1lWcfas= -k8s.io/utils v0.0.0-20241210054802-24370beab758 h1:sdbE21q2nlQtFh65saZY+rRM6x6aJJI8IUa1AmH/qa0= -k8s.io/utils v0.0.0-20241210054802-24370beab758/go.mod h1:OLgZIPagt7ERELqWJFomSt595RzquPNLL48iOWgYOg0= +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-20251002143259-bc988d571ff4 h1:SjGebBtkBqHFOli+05xYbK8YF1Dzkbzn+gDM4X9T4Ck= +k8s.io/utils v0.0.0-20251002143259-bc988d571ff4/go.mod h1:OLgZIPagt7ERELqWJFomSt595RzquPNLL48iOWgYOg0= 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.20.4 h1:X3c+Odnxz+iPTRobG4tp092+CvBU9UK0t/bRf+n0DGU= -sigs.k8s.io/controller-runtime v0.20.4/go.mod h1:xg2XB0K5ShQzAgsoujxuKN4LNXR2LfwwHsPj7Iaw+XY= -sigs.k8s.io/json v0.0.0-20241014173422-cfa47c3a1cc8 h1:gBQPwqORJ8d8/YNZWEjoZs7npUVDpVXUUOFfW6CgAqE= -sigs.k8s.io/json v0.0.0-20241014173422-cfa47c3a1cc8/go.mod h1:mdzfpAEoE6DHQEN0uh9ZbOCuHbLK5wOm7dK4ctXE9Tg= -sigs.k8s.io/randfill v0.0.0-20250304075658-069ef1bbf016 h1:kXv6kKdoEtedwuqMmkqhbkgvYKeycVbC8+iPCP9j5kQ= -sigs.k8s.io/randfill v0.0.0-20250304075658-069ef1bbf016/go.mod h1:XeLlZ/jmk4i1HRopwe7/aU3H5n1zNUcX6TM94b3QxOY= -sigs.k8s.io/structured-merge-diff/v4 v4.6.0 h1:IUA9nvMmnKWcj5jl84xn+T5MnlZKThmUW1TdblaLVAc= -sigs.k8s.io/structured-merge-diff/v4 v4.6.0/go.mod h1:dDy58f92j70zLsuZVuUX5Wp9vtxXpaZnkPGWeqDfCps= -sigs.k8s.io/yaml v1.4.0/go.mod h1:Ejl7/uTz7PSA4eKMyQCUTnhZYNmLIl+5c2lQPGR2BPY= -sigs.k8s.io/yaml v1.5.0 h1:M10b2U7aEUY6hRtU870n2VTPgR5RZiL/I6Lcc2F4NUQ= -sigs.k8s.io/yaml v1.5.0/go.mod h1:wZs27Rbxoai4C0f8/9urLZtZtF3avA3gKvGyPdDqTO4= +sigs.k8s.io/controller-runtime v0.22.4 h1:GEjV7KV3TY8e+tJ2LCTxUTanW4z/FmNB7l327UfMq9A= +sigs.k8s.io/controller-runtime v0.22.4/go.mod h1:+QX1XUpTXN4mLoblf4tqr5CQcyHPAki2HLXqQMY6vh8= +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.0 h1:jTijUJbW353oVOd9oTlifJqOGEkUw2jB/fXCbTiQEco= +sigs.k8s.io/structured-merge-diff/v6 v6.3.0/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 4a6f4e428..dd67f7b40 100644 --- a/otelcollector/otel-allocator/internal/allocation/allocator_test.go +++ b/otelcollector/otel-allocator/internal/allocation/allocator_test.go @@ -165,12 +165,8 @@ func TestAllocationCollision(t *testing.T) { cols := MakeNCollectors(3, 0) allocator.SetCollectors(cols) - firstLabels := labels.Labels{ - {Name: "test", Value: "test1"}, - } - secondLabels := labels.Labels{ - {Name: "test", Value: "test2"}, - } + firstLabels := labels.New(labels.Label{Name: "test", Value: "test1"}) + secondLabels := labels.New(labels.Label{Name: "test", Value: "test2"}) firstTarget := target.NewItem("sample-name", "0.0.0.0:8000", firstLabels, "") secondTarget := target.NewItem("sample-name", "0.0.0.0:8000", secondLabels, "") diff --git a/otelcollector/otel-allocator/internal/allocation/per_node_test.go b/otelcollector/otel-allocator/internal/allocation/per_node_test.go index 2e36395a7..52cd8e930 100644 --- a/otelcollector/otel-allocator/internal/allocation/per_node_test.go +++ b/otelcollector/otel-allocator/internal/allocation/per_node_test.go @@ -32,24 +32,22 @@ func TestAllocationPerNode(t *testing.T) { cols := MakeNCollectors(4, 0) s.SetCollectors(cols) - firstLabels := labels.Labels{ - {Name: "test", Value: "test1"}, - {Name: "__meta_kubernetes_pod_node_name", Value: "node-0"}, - } - secondLabels := labels.Labels{ - {Name: "test", Value: "test2"}, - {Name: "__meta_kubernetes_node_name", Value: "node-1"}, - } + firstLabels := labels.New( + labels.Label{Name: "test", Value: "test1"}, + labels.Label{Name: "__meta_kubernetes_pod_node_name", Value: "node-0"}, + ) + secondLabels := labels.New( + labels.Label{Name: "test", Value: "test2"}, + labels.Label{Name: "__meta_kubernetes_node_name", Value: "node-1"}, + ) // no label, should be skipped - thirdLabels := labels.Labels{ - {Name: "test", Value: "test3"}, - } + thirdLabels := labels.New(labels.Label{Name: "test", Value: "test3"}) // endpointslice target kind and name - fourthLabels := labels.Labels{ - {Name: "test", Value: "test4"}, - {Name: "__meta_kubernetes_endpointslice_address_target_kind", Value: "Node"}, - {Name: "__meta_kubernetes_endpointslice_address_target_name", Value: "node-3"}, - } + fourthLabels := labels.New( + labels.Label{Name: "test", Value: "test4"}, + labels.Label{Name: "__meta_kubernetes_endpointslice_address_target_kind", Value: "Node"}, + labels.Label{Name: "__meta_kubernetes_endpointslice_address_target_name", Value: "node-3"}, + ) firstTarget := target.NewItem("sample-name", "0.0.0.0:8000", firstLabels, "") secondTarget := target.NewItem("sample-name", "0.0.0.0:8000", secondLabels, "") @@ -99,24 +97,22 @@ func TestAllocationPerNodeUsingFallback(t *testing.T) { cols := MakeNCollectors(4, 0) s.SetCollectors(cols) - firstLabels := labels.Labels{ - {Name: "test", Value: "test1"}, - {Name: "__meta_kubernetes_pod_node_name", Value: "node-0"}, - } - secondLabels := labels.Labels{ - {Name: "test", Value: "test2"}, - {Name: "__meta_kubernetes_node_name", Value: "node-1"}, - } + firstLabels := labels.New( + labels.Label{Name: "test", Value: "test1"}, + labels.Label{Name: "__meta_kubernetes_pod_node_name", Value: "node-0"}, + ) + secondLabels := labels.New( + labels.Label{Name: "test", Value: "test2"}, + labels.Label{Name: "__meta_kubernetes_node_name", Value: "node-1"}, + ) // no label, should be allocated by the fallback strategy - thirdLabels := labels.Labels{ - {Name: "test", Value: "test3"}, - } + thirdLabels := labels.New(labels.Label{Name: "test", Value: "test3"}) // endpointslice target kind and name - fourthLabels := labels.Labels{ - {Name: "test", Value: "test4"}, - {Name: "__meta_kubernetes_endpointslice_address_target_kind", Value: "Node"}, - {Name: "__meta_kubernetes_endpointslice_address_target_name", Value: "node-3"}, - } + fourthLabels := labels.New( + labels.Label{Name: "test", Value: "test4"}, + labels.Label{Name: "__meta_kubernetes_endpointslice_address_target_kind", Value: "Node"}, + labels.Label{Name: "__meta_kubernetes_endpointslice_address_target_name", Value: "node-3"}, + ) firstTarget := target.NewItem("sample-name", "0.0.0.0:8000", firstLabels, "") secondTarget := target.NewItem("sample-name", "0.0.0.0:8000", secondLabels, "") diff --git a/otelcollector/otel-allocator/internal/allocation/testutils.go b/otelcollector/otel-allocator/internal/allocation/testutils.go index 91e8762e6..f92c35dcb 100644 --- a/otelcollector/otel-allocator/internal/allocation/testutils.go +++ b/otelcollector/otel-allocator/internal/allocation/testutils.go @@ -28,10 +28,10 @@ func MakeNNewTargets(n int, numCollectors int, startingIndex int) []*target.Item toReturn := []*target.Item{} for i := startingIndex; i < n+startingIndex; i++ { collector := fmt.Sprintf("collector-%d", colIndex(i, numCollectors)) - label := labels.Labels{ - {Name: "i", Value: strconv.Itoa(i)}, - {Name: "total", Value: strconv.Itoa(n + startingIndex)}, - } + label := labels.New( + labels.Label{Name: "i", Value: strconv.Itoa(i)}, + labels.Label{Name: "total", Value: strconv.Itoa(n + startingIndex)}, + ) newTarget := target.NewItem(fmt.Sprintf("test-job-%d", i), fmt.Sprintf("test-url-%d", i), label, collector) toReturn = append(toReturn, newTarget) } @@ -54,11 +54,11 @@ func MakeNCollectors(n int, startingIndex int) map[string]*Collector { func MakeNNewTargetsWithEmptyCollectors(n int, startingIndex int) []*target.Item { toReturn := []*target.Item{} for i := startingIndex; i < n+startingIndex; i++ { - label := labels.Labels{ - {Name: "i", Value: strconv.Itoa(i)}, - {Name: "total", Value: strconv.Itoa(n + startingIndex)}, - {Name: "__meta_kubernetes_pod_node_name", Value: "node-0"}, - } + label := labels.New( + labels.Label{Name: "i", Value: strconv.Itoa(i)}, + labels.Label{Name: "total", Value: strconv.Itoa(n + startingIndex)}, + labels.Label{Name: "__meta_kubernetes_pod_node_name", Value: "node-0"}, + ) newTarget := target.NewItem(fmt.Sprintf("test-job-%d", i), fmt.Sprintf("test-url-%d", i), label, "") toReturn = append(toReturn, newTarget) } diff --git a/otelcollector/otel-allocator/internal/config/config.go b/otelcollector/otel-allocator/internal/config/config.go index 409fdac37..8bfcb4094 100644 --- a/otelcollector/otel-allocator/internal/config/config.go +++ b/otelcollector/otel-allocator/internal/config/config.go @@ -87,8 +87,10 @@ type PrometheusCRConfig struct { ScrapeConfigNamespaceSelector *metav1.LabelSelector `yaml:"scrape_config_namespace_selector,omitempty"` ProbeSelector *metav1.LabelSelector `yaml:"probe_selector,omitempty"` ProbeNamespaceSelector *metav1.LabelSelector `yaml:"probe_namespace_selector,omitempty"` - ScrapeProtocols []monitoringv1.ScrapeProtocol `yaml:"scrape_protocols,omitempty"` ScrapeInterval model.Duration `yaml:"scrape_interval,omitempty"` + EvaluationInterval model.Duration `yaml:"evaluation_interval,omitempty"` + ScrapeProtocols []monitoringv1.ScrapeProtocol `yaml:"scrape_protocols,omitempty"` + ScrapeClasses []monitoringv1.ScrapeClass `yaml:"scrape_classes,omitempty"` } type HTTPSServerConfig struct { diff --git a/otelcollector/otel-allocator/internal/config/config_test.go b/otelcollector/otel-allocator/internal/config/config_test.go index ed97b57ab..e40efeb7e 100644 --- a/otelcollector/otel-allocator/internal/config/config_test.go +++ b/otelcollector/otel-allocator/internal/config/config_test.go @@ -10,6 +10,7 @@ import ( "testing" "time" + "github.com/aws/smithy-go/ptr" commonconfig "github.com/prometheus/common/config" "github.com/prometheus/common/model" promconfig "github.com/prometheus/prometheus/config" @@ -67,22 +68,30 @@ func TestLoadFromFile(t *testing.T) { }, PromConfig: &promconfig.Config{ GlobalConfig: promconfig.GlobalConfig{ - ScrapeInterval: model.Duration(60 * time.Second), - ScrapeProtocols: promconfig.DefaultScrapeProtocols, - ScrapeTimeout: model.Duration(10 * time.Second), - EvaluationInterval: model.Duration(60 * time.Second), + ScrapeInterval: model.Duration(60 * time.Second), + ScrapeTimeout: model.Duration(10 * time.Second), + EvaluationInterval: model.Duration(60 * time.Second), + MetricNameValidationScheme: model.UTF8Validation, + MetricNameEscapingScheme: model.AllowUTF8, + ScrapeNativeHistograms: ptr.Bool(false), }, - Runtime: promconfig.DefaultRuntimeConfig, + Runtime: promconfig.DefaultRuntimeConfig, + OTLPConfig: promconfig.DefaultOTLPConfig, ScrapeConfigs: []*promconfig.ScrapeConfig{ { - JobName: "prometheus", - EnableCompression: true, - HonorTimestamps: true, - ScrapeInterval: model.Duration(60 * time.Second), - ScrapeProtocols: promconfig.DefaultScrapeProtocols, - ScrapeTimeout: model.Duration(10 * time.Second), - MetricsPath: "/metrics", - Scheme: "http", + JobName: "prometheus", + EnableCompression: true, + HonorTimestamps: true, + ScrapeInterval: model.Duration(60 * time.Second), + ScrapeProtocols: promconfig.DefaultScrapeProtocols, + ScrapeTimeout: model.Duration(10 * time.Second), + MetricNameValidationScheme: model.UTF8Validation, + MetricNameEscapingScheme: model.AllowUTF8, + AlwaysScrapeClassicHistograms: ptr.Bool(false), + ConvertClassicHistogramsToNHCB: ptr.Bool(false), + ScrapeNativeHistograms: ptr.Bool(false), + MetricsPath: "/metrics", + Scheme: "http", HTTPClientConfig: commonconfig.HTTPClientConfig{ FollowRedirects: true, EnableHTTP2: true, @@ -148,22 +157,30 @@ func TestLoadFromFile(t *testing.T) { }, PromConfig: &promconfig.Config{ GlobalConfig: promconfig.GlobalConfig{ - ScrapeInterval: model.Duration(60 * time.Second), - ScrapeProtocols: []promconfig.ScrapeProtocol{promconfig.PrometheusProto}, - ScrapeTimeout: model.Duration(10 * time.Second), - EvaluationInterval: model.Duration(60 * time.Second), + ScrapeInterval: model.Duration(60 * time.Second), + ScrapeProtocols: []promconfig.ScrapeProtocol{promconfig.PrometheusProto}, + ScrapeTimeout: model.Duration(10 * time.Second), + EvaluationInterval: model.Duration(60 * time.Second), + MetricNameValidationScheme: model.UTF8Validation, + ScrapeNativeHistograms: ptr.Bool(false), }, - Runtime: promconfig.DefaultRuntimeConfig, + Runtime: promconfig.DefaultRuntimeConfig, + OTLPConfig: promconfig.DefaultOTLPConfig, ScrapeConfigs: []*promconfig.ScrapeConfig{ { - JobName: "prometheus", - EnableCompression: true, - HonorTimestamps: true, - ScrapeInterval: model.Duration(60 * time.Second), - ScrapeProtocols: []promconfig.ScrapeProtocol{promconfig.PrometheusProto}, - ScrapeTimeout: model.Duration(10 * time.Second), - MetricsPath: "/metrics", - Scheme: "http", + JobName: "prometheus", + EnableCompression: true, + HonorTimestamps: true, + ScrapeInterval: model.Duration(60 * time.Second), + ScrapeProtocols: []promconfig.ScrapeProtocol{promconfig.PrometheusProto}, + ScrapeTimeout: model.Duration(10 * time.Second), + MetricNameValidationScheme: model.UTF8Validation, + MetricNameEscapingScheme: model.AllowUTF8, + AlwaysScrapeClassicHistograms: ptr.Bool(false), + ConvertClassicHistogramsToNHCB: ptr.Bool(false), + ScrapeNativeHistograms: ptr.Bool(false), + MetricsPath: "/metrics", + Scheme: "http", HTTPClientConfig: commonconfig.HTTPClientConfig{ FollowRedirects: true, EnableHTTP2: true, @@ -241,22 +258,30 @@ func TestLoadFromFile(t *testing.T) { }, PromConfig: &promconfig.Config{ GlobalConfig: promconfig.GlobalConfig{ - ScrapeInterval: model.Duration(60 * time.Second), - ScrapeProtocols: promconfig.DefaultScrapeProtocols, - ScrapeTimeout: model.Duration(10 * time.Second), - EvaluationInterval: model.Duration(60 * time.Second), + ScrapeInterval: model.Duration(60 * time.Second), + ScrapeTimeout: model.Duration(10 * time.Second), + EvaluationInterval: model.Duration(60 * time.Second), + MetricNameValidationScheme: model.UTF8Validation, + MetricNameEscapingScheme: model.AllowUTF8, + ScrapeNativeHistograms: ptr.Bool(false), }, - Runtime: promconfig.DefaultRuntimeConfig, + Runtime: promconfig.DefaultRuntimeConfig, + OTLPConfig: promconfig.DefaultOTLPConfig, ScrapeConfigs: []*promconfig.ScrapeConfig{ { - JobName: "prometheus", - EnableCompression: true, - HonorTimestamps: true, - ScrapeInterval: model.Duration(60 * time.Second), - ScrapeProtocols: promconfig.DefaultScrapeProtocols, - ScrapeTimeout: model.Duration(10 * time.Second), - MetricsPath: "/metrics", - Scheme: "http", + JobName: "prometheus", + EnableCompression: true, + HonorTimestamps: true, + ScrapeInterval: model.Duration(60 * time.Second), + ScrapeProtocols: promconfig.DefaultScrapeProtocols, + ScrapeTimeout: model.Duration(10 * time.Second), + MetricNameValidationScheme: model.UTF8Validation, + MetricNameEscapingScheme: model.AllowUTF8, + AlwaysScrapeClassicHistograms: ptr.Bool(false), + ConvertClassicHistogramsToNHCB: ptr.Bool(false), + ScrapeNativeHistograms: ptr.Bool(false), + MetricsPath: "/metrics", + Scheme: "http", HTTPClientConfig: commonconfig.HTTPClientConfig{ FollowRedirects: true, EnableHTTP2: true, @@ -323,22 +348,30 @@ func TestLoadFromFile(t *testing.T) { }, PromConfig: &promconfig.Config{ GlobalConfig: promconfig.GlobalConfig{ - ScrapeInterval: model.Duration(60 * time.Second), - ScrapeProtocols: promconfig.DefaultScrapeProtocols, - ScrapeTimeout: model.Duration(10 * time.Second), - EvaluationInterval: model.Duration(60 * time.Second), + ScrapeInterval: model.Duration(60 * time.Second), + ScrapeTimeout: model.Duration(10 * time.Second), + ScrapeNativeHistograms: ptr.Bool(false), + EvaluationInterval: model.Duration(60 * time.Second), + MetricNameValidationScheme: model.UTF8Validation, + MetricNameEscapingScheme: model.AllowUTF8, }, - Runtime: promconfig.DefaultRuntimeConfig, + Runtime: promconfig.DefaultRuntimeConfig, + OTLPConfig: promconfig.DefaultOTLPConfig, ScrapeConfigs: []*promconfig.ScrapeConfig{ { - JobName: "prometheus", - EnableCompression: true, - HonorTimestamps: true, - ScrapeInterval: model.Duration(60 * time.Second), - ScrapeProtocols: promconfig.DefaultScrapeProtocols, - ScrapeTimeout: model.Duration(10 * time.Second), - MetricsPath: "/metrics", - Scheme: "http", + JobName: "prometheus", + EnableCompression: true, + HonorTimestamps: true, + ScrapeInterval: model.Duration(60 * time.Second), + ScrapeProtocols: promconfig.DefaultScrapeProtocols, + ScrapeTimeout: model.Duration(10 * time.Second), + MetricNameValidationScheme: model.UTF8Validation, + MetricNameEscapingScheme: model.AllowUTF8, + AlwaysScrapeClassicHistograms: ptr.Bool(false), + ConvertClassicHistogramsToNHCB: ptr.Bool(false), + ScrapeNativeHistograms: ptr.Bool(false), + MetricsPath: "/metrics", + Scheme: "http", HTTPClientConfig: commonconfig.HTTPClientConfig{ FollowRedirects: true, EnableHTTP2: true, @@ -429,22 +462,30 @@ func TestLoadFromFile(t *testing.T) { }, PromConfig: &promconfig.Config{ GlobalConfig: promconfig.GlobalConfig{ - ScrapeInterval: model.Duration(60 * time.Second), - ScrapeProtocols: promconfig.DefaultScrapeProtocols, - ScrapeTimeout: model.Duration(10 * time.Second), - EvaluationInterval: model.Duration(60 * time.Second), + ScrapeInterval: model.Duration(60 * time.Second), + ScrapeTimeout: model.Duration(10 * time.Second), + ScrapeNativeHistograms: ptr.Bool(false), + EvaluationInterval: model.Duration(60 * time.Second), + MetricNameValidationScheme: model.UTF8Validation, + MetricNameEscapingScheme: model.AllowUTF8, }, - Runtime: promconfig.DefaultRuntimeConfig, + Runtime: promconfig.DefaultRuntimeConfig, + OTLPConfig: promconfig.DefaultOTLPConfig, ScrapeConfigs: []*promconfig.ScrapeConfig{ { - JobName: "prometheus", - EnableCompression: true, - HonorTimestamps: true, - ScrapeInterval: model.Duration(60 * time.Second), - ScrapeProtocols: promconfig.DefaultScrapeProtocols, - ScrapeTimeout: model.Duration(10 * time.Second), - MetricsPath: "/metrics", - Scheme: "http", + JobName: "prometheus", + EnableCompression: true, + HonorTimestamps: true, + ScrapeInterval: model.Duration(60 * time.Second), + ScrapeProtocols: promconfig.DefaultScrapeProtocols, + ScrapeTimeout: model.Duration(10 * time.Second), + MetricNameValidationScheme: model.UTF8Validation, + MetricNameEscapingScheme: model.AllowUTF8, + AlwaysScrapeClassicHistograms: ptr.Bool(false), + ConvertClassicHistogramsToNHCB: ptr.Bool(false), + ScrapeNativeHistograms: ptr.Bool(false), + MetricsPath: "/metrics", + Scheme: "http", HTTPClientConfig: commonconfig.HTTPClientConfig{ FollowRedirects: true, EnableHTTP2: true, @@ -535,22 +576,30 @@ func TestLoadFromFile(t *testing.T) { }, PromConfig: &promconfig.Config{ GlobalConfig: promconfig.GlobalConfig{ - ScrapeInterval: model.Duration(60 * time.Second), - ScrapeProtocols: promconfig.DefaultScrapeProtocols, - ScrapeTimeout: model.Duration(10 * time.Second), - EvaluationInterval: model.Duration(60 * time.Second), + ScrapeInterval: model.Duration(60 * time.Second), + ScrapeNativeHistograms: ptr.Bool(false), + ScrapeTimeout: model.Duration(10 * time.Second), + EvaluationInterval: model.Duration(60 * time.Second), + MetricNameValidationScheme: model.UTF8Validation, + MetricNameEscapingScheme: model.AllowUTF8, }, - Runtime: promconfig.DefaultRuntimeConfig, + Runtime: promconfig.DefaultRuntimeConfig, + OTLPConfig: promconfig.DefaultOTLPConfig, ScrapeConfigs: []*promconfig.ScrapeConfig{ { - JobName: "prometheus", - EnableCompression: true, - HonorTimestamps: true, - ScrapeInterval: model.Duration(60 * time.Second), - ScrapeProtocols: promconfig.DefaultScrapeProtocols, - ScrapeTimeout: model.Duration(10 * time.Second), - MetricsPath: "/metrics", - Scheme: "http", + JobName: "prometheus", + EnableCompression: true, + HonorTimestamps: true, + ScrapeInterval: model.Duration(60 * time.Second), + ScrapeTimeout: model.Duration(10 * time.Second), + ScrapeProtocols: promconfig.DefaultScrapeProtocols, + MetricNameValidationScheme: model.UTF8Validation, + MetricNameEscapingScheme: model.AllowUTF8, + AlwaysScrapeClassicHistograms: ptr.Bool(false), + ConvertClassicHistogramsToNHCB: ptr.Bool(false), + ScrapeNativeHistograms: ptr.Bool(false), + MetricsPath: "/metrics", + Scheme: "http", HTTPClientConfig: commonconfig.HTTPClientConfig{ FollowRedirects: true, EnableHTTP2: true, diff --git a/otelcollector/otel-allocator/internal/prehook/relabel.go b/otelcollector/otel-allocator/internal/prehook/relabel.go index f6a6c084d..508d8ae28 100644 --- a/otelcollector/otel-allocator/internal/prehook/relabel.go +++ b/otelcollector/otel-allocator/internal/prehook/relabel.go @@ -7,6 +7,7 @@ import ( "slices" "github.com/go-logr/logr" + "github.com/prometheus/prometheus/model/labels" "github.com/prometheus/prometheus/model/relabel" "github.com/open-telemetry/opentelemetry-operator/cmd/otel-allocator/internal/target" @@ -14,6 +15,7 @@ import ( const ( relabelConfigTargetFilterName = "relabel-config" + disableShardingLabelName = "__tmp_disable_sharding" ) type relabelConfigTargetFilter struct { @@ -36,19 +38,23 @@ func (tf *relabelConfigTargetFilter) Apply(targets []*target.Item) []*target.Ite return targets } + builder := labels.NewBuilder(labels.EmptyLabels()) writeIndex := 0 for _, tItem := range targets { - keepTarget := true - lset := tItem.Labels - for _, cfg := range tf.relabelCfg[tItem.JobName] { - lset, keepTarget = relabel.Process(lset, cfg) - if !keepTarget { - break // inner loop - } - } + builder.Reset(tItem.Labels) + keepTarget := relabel.ProcessBuilder(builder, tf.relabelCfg[tItem.JobName]...) if keepTarget { - targets[writeIndex] = tItem + // Compute hash immediately while we have the builder, skipping meta labels. + // This avoids materializing the filtered labels. + hash := target.HashFromBuilder(builder, tItem.JobName) + targets[writeIndex] = target.NewItem( + tItem.JobName, + tItem.TargetURL, + tItem.Labels, + tItem.CollectorName, + target.WithHash(hash), + ) writeIndex++ } } @@ -62,25 +68,27 @@ func (tf *relabelConfigTargetFilter) Apply(targets []*target.Item) []*target.Ite func (tf *relabelConfigTargetFilter) SetConfig(cfgs map[string][]*relabel.Config) { relabelCfgCopy := make(map[string][]*relabel.Config) for key, val := range cfgs { - relabelCfgCopy[key] = tf.replaceRelabelConfig(val) + relabelCfgCopy[key] = addNoShardingConfig(val) } tf.relabelCfg = relabelCfgCopy } -// See this thread [https://github.com/open-telemetry/opentelemetry-operator/pull/1124/files#r983145795] -// for why SHARD == 0 is a necessary substitution. Otherwise the keep action that uses this env variable, -// would not match the regex and all targets end up dropped. Also note, $(SHARD) will always be 0 and it -// does not make sense to read from the environment because it is never set in the allocator. -func (tf *relabelConfigTargetFilter) replaceRelabelConfig(cfg []*relabel.Config) []*relabel.Config { - for i := range cfg { - str := cfg[i].Regex.String() - if str == "$(SHARD)" { - cfg[i].Regex = relabel.MustNewRegexp("0") - } - } - - return cfg +// addNoShardingConfig adds a relabel config to disable sharding for the given job. This is needed because the scrape +// configs generated by prometheus-operator by default depend on a `SHARD` environment variable, even in non-sharded +// Prometheus deployments. We don't want to set this variable on all collector deployments, so we instead disable +// the feature. +func addNoShardingConfig(cfg []*relabel.Config) []*relabel.Config { + noShardingRelabelConfig := relabel.DefaultRelabelConfig + noShardingRelabelConfig.Replacement = "true" // the value doesn't matter, it just needs to be non-empty + noShardingRelabelConfig.TargetLabel = disableShardingLabelName + + // we need to drop the temporary label at the end + dropTmpLabelConfig := relabel.DefaultRelabelConfig + dropTmpLabelConfig.Action = relabel.LabelDrop + dropTmpLabelConfig.Regex = relabel.MustNewRegexp(disableShardingLabelName) + output := append([]*relabel.Config{&noShardingRelabelConfig}, cfg...) + return append(output, &dropTmpLabelConfig) } func (tf *relabelConfigTargetFilter) GetConfig() map[string][]*relabel.Config { diff --git a/otelcollector/otel-allocator/internal/prehook/relabel_test.go b/otelcollector/otel-allocator/internal/prehook/relabel_test.go index 51debfc37..6791f817d 100644 --- a/otelcollector/otel-allocator/internal/prehook/relabel_test.go +++ b/otelcollector/otel-allocator/internal/prehook/relabel_test.go @@ -5,12 +5,16 @@ package prehook import ( "crypto/rand" + "errors" "fmt" "math/big" "strconv" + "strings" "testing" + "time" "github.com/prometheus/common/model" + "github.com/prometheus/prometheus/config" "github.com/prometheus/prometheus/model/labels" "github.com/prometheus/prometheus/model/relabel" "github.com/stretchr/testify/assert" @@ -25,16 +29,19 @@ var ( defaultNumCollectors = 3 defaultStartIndex = 0 + checkDistinctConfigLabel = "check-distinct-label-key" + relabelConfigs = []relabelConfigObj{ { cfg: []*relabel.Config{ { - SourceLabels: model.LabelNames{"i"}, - Action: "replace", - Separator: ";", - Regex: relabel.MustNewRegexp("(.*)"), - Replacement: "$1", - TargetLabel: "foo", + SourceLabels: model.LabelNames{"i"}, + Action: "replace", + Separator: ";", + Regex: relabel.MustNewRegexp("(.*)"), + Replacement: "$1", + TargetLabel: "foo", + NameValidationScheme: model.UTF8Validation, }, }, isDrop: false, @@ -42,11 +49,12 @@ var ( { cfg: []*relabel.Config{ { - SourceLabels: model.LabelNames{"i"}, - Regex: relabel.MustNewRegexp("(.*)"), - Separator: ";", - Action: "keep", - Replacement: "$1", + SourceLabels: model.LabelNames{"i"}, + Regex: relabel.MustNewRegexp("(.*)"), + Separator: ";", + Action: "keep", + Replacement: "$1", + NameValidationScheme: model.UTF8Validation, }, }, isDrop: false, @@ -54,11 +62,12 @@ var ( { cfg: []*relabel.Config{ { - SourceLabels: model.LabelNames{"i"}, - Regex: relabel.MustNewRegexp("bad.*match"), - Action: "drop", - Separator: ";", - Replacement: "$1", + SourceLabels: model.LabelNames{"i"}, + Regex: relabel.MustNewRegexp("bad.*match"), + Action: "drop", + Separator: ";", + Replacement: "$1", + NameValidationScheme: model.UTF8Validation, }, }, isDrop: false, @@ -66,11 +75,12 @@ var ( { cfg: []*relabel.Config{ { - SourceLabels: model.LabelNames{"label_not_present"}, - Regex: relabel.MustNewRegexp("(.*)"), - Separator: ";", - Action: "keep", - Replacement: "$1", + SourceLabels: model.LabelNames{"label_not_present"}, + Regex: relabel.MustNewRegexp("(.*)"), + Separator: ";", + Action: "keep", + Replacement: "$1", + NameValidationScheme: model.UTF8Validation, }, }, isDrop: false, @@ -78,11 +88,12 @@ var ( { cfg: []*relabel.Config{ { - SourceLabels: model.LabelNames{"i"}, - Regex: relabel.MustNewRegexp("(.*)"), - Separator: ";", - Action: "drop", - Replacement: "$1", + SourceLabels: model.LabelNames{"i"}, + Regex: relabel.MustNewRegexp("(.*)"), + Separator: ";", + Action: "drop", + Replacement: "$1", + NameValidationScheme: model.UTF8Validation, }, }, isDrop: true, @@ -90,11 +101,12 @@ var ( { cfg: []*relabel.Config{ { - SourceLabels: model.LabelNames{"collector"}, - Regex: relabel.MustNewRegexp("(collector.*)"), - Separator: ";", - Action: "drop", - Replacement: "$1", + SourceLabels: model.LabelNames{"collector"}, + Regex: relabel.MustNewRegexp("(collector.*)"), + Separator: ";", + Action: "drop", + Replacement: "$1", + NameValidationScheme: model.UTF8Validation, }, }, isDrop: true, @@ -102,11 +114,12 @@ var ( { cfg: []*relabel.Config{ { - SourceLabels: model.LabelNames{"i"}, - Regex: relabel.MustNewRegexp("bad.*match"), - Separator: ";", - Action: "keep", - Replacement: "$1", + SourceLabels: model.LabelNames{"i"}, + Regex: relabel.MustNewRegexp("bad.*match"), + Separator: ";", + Action: "keep", + Replacement: "$1", + NameValidationScheme: model.UTF8Validation, }, }, isDrop: true, @@ -114,11 +127,12 @@ var ( { cfg: []*relabel.Config{ { - SourceLabels: model.LabelNames{"collector"}, - Regex: relabel.MustNewRegexp("collectors-n"), - Separator: ";", - Action: "keep", - Replacement: "$1", + SourceLabels: model.LabelNames{"collector"}, + Regex: relabel.MustNewRegexp("collectors-n"), + Separator: ";", + Action: "keep", + Replacement: "$1", + NameValidationScheme: model.UTF8Validation, }, }, isDrop: true, @@ -153,6 +167,11 @@ var ( Regex: relabel.MustNewRegexp("(.*)"), Action: "drop", } + + CheckDistinctConfig = relabel.Config{ + Regex: relabel.MustNewRegexp(checkDistinctConfigLabel), + Action: "labeldrop", + } ) type relabelConfigObj struct { @@ -167,20 +186,40 @@ func colIndex(index, numCols int) int { return index % numCols } -func makeNNewTargets(rCfgs []relabelConfigObj, n int, numCollectors int, startingIndex int) ([]*target.Item, int, []*target.Item, map[string][]*relabel.Config) { +func makeNNewTargets(rCfgs []relabelConfigObj, n int, numCollectors int, startingIndex int) ([]*target.Item, int, []*target.Item, map[string][]*relabel.Config, error) { toReturn := []*target.Item{} expected := []*target.Item{} numItemsRemaining := n relabelConfig := make(map[string][]*relabel.Config) for i := startingIndex; i < n+startingIndex; i++ { collector := fmt.Sprintf("collector-%d", colIndex(i, numCollectors)) - label := labels.Labels{ - {Name: "collector", Value: collector}, - {Name: "i", Value: strconv.Itoa(i)}, - {Name: "total", Value: strconv.Itoa(n + startingIndex)}, - } jobName := fmt.Sprintf("test-job-%d", i) - newTarget := target.NewItem(jobName, "test-url", label, collector) + label := labels.New( + labels.Label{Name: "collector", Value: collector}, + labels.Label{Name: "i", Value: strconv.Itoa(i)}, + labels.Label{Name: "total", Value: strconv.Itoa(n + startingIndex)}, + labels.Label{Name: model.MetaLabelPrefix + strconv.Itoa(i), Value: strconv.Itoa(i)}, + labels.Label{Name: model.AddressLabel, Value: "address_value"}, + // These labels are typically required for correct scraping behavior and are expected to be retained after relabeling.: + // - job + // - __scrape_interval__ + // - __scrape_timeout__ + // - __scheme__ + // - __metrics_path__ + // Prometheus adds these labels by default. Removing them via relabel_configs is considered invalid and is therefore ignored. + // For details, see: + // https://github.com/prometheus/prometheus/blob/e6cfa720fbe6280153fab13090a483dbd40bece3/scrape/target.go#L429 + labels.Label{Name: model.JobLabel, Value: jobName}, + 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" + strconv.Itoa(i)}, + + // Prometheus will automatically add the "instance" label if it is not present. + labels.Label{Name: model.InstanceLabel, Value: "address_value"}, + ) + rawTarget := target.NewItem(jobName, "test-url", label, collector) + // add a single replace, drop, or keep action as relabel_config for targets var index int ind, _ := rand.Int(rand.Reader, big.NewInt(int64(len(relabelConfigs)))) @@ -192,22 +231,28 @@ func makeNNewTargets(rCfgs []relabelConfigObj, n int, numCollectors int, startin if relabelConfigs[index].isDrop { numItemsRemaining-- } else { + newTarget, err := MakeTargetFromProm(relabelConfig[jobName], rawTarget) + if err != nil || newTarget == nil { + return nil, 0, nil, nil, fmt.Errorf("failed to create target from relabel config: %w", err) + } expected = append(expected, newTarget) } - toReturn = append(toReturn, newTarget) + toReturn = append(toReturn, rawTarget) } - return toReturn, numItemsRemaining, expected, relabelConfig + return toReturn, numItemsRemaining, expected, relabelConfig, nil } func TestApply(t *testing.T) { allocatorPrehook := New("relabel-config", logger) assert.NotNil(t, allocatorPrehook) - targets, numRemaining, expectedTargetMap, relabelCfg := makeNNewTargets(relabelConfigs, defaultNumTargets, defaultNumCollectors, defaultStartIndex) + targets, numRemaining, expectedTargetMap, relabelCfg, err := makeNNewTargets(relabelConfigs, defaultNumTargets, defaultNumCollectors, defaultStartIndex) + assert.NoError(t, err) + allocatorPrehook.SetConfig(relabelCfg) remainingItems := allocatorPrehook.Apply(targets) assert.Len(t, remainingItems, numRemaining) - assert.Equal(t, remainingItems, expectedTargetMap) + assert.Equal(t, expectedTargetMap, remainingItems) // clear out relabelCfg to test with empty values for key := range relabelCfg { @@ -227,7 +272,9 @@ func TestApplyHashmodAction(t *testing.T) { assert.NotNil(t, allocatorPrehook) hashRelabelConfigs := append(relabelConfigs, HashmodConfig) - targets, numRemaining, expectedTargetMap, relabelCfg := makeNNewTargets(hashRelabelConfigs, defaultNumTargets, defaultNumCollectors, defaultStartIndex) + targets, numRemaining, expectedTargetMap, relabelCfg, err := makeNNewTargets(hashRelabelConfigs, defaultNumTargets, defaultNumCollectors, defaultStartIndex) + assert.NoError(t, err) + allocatorPrehook.SetConfig(relabelCfg) remainingItems := allocatorPrehook.Apply(targets) assert.Len(t, remainingItems, numRemaining) @@ -239,7 +286,8 @@ func TestApplyEmptyRelabelCfg(t *testing.T) { allocatorPrehook := New("relabel-config", logger) assert.NotNil(t, allocatorPrehook) - targets, _, _, _ := makeNNewTargets(relabelConfigs, defaultNumTargets, defaultNumCollectors, defaultStartIndex) + targets, _, _, _, err := makeNNewTargets(relabelConfigs, defaultNumTargets, defaultNumCollectors, defaultStartIndex) + assert.NoError(t, err) relabelCfg := map[string][]*relabel.Config{} allocatorPrehook.SetConfig(relabelCfg) @@ -253,7 +301,186 @@ func TestSetConfig(t *testing.T) { allocatorPrehook := New("relabel-config", logger) assert.NotNil(t, allocatorPrehook) - _, _, _, relabelCfg := makeNNewTargets(relabelConfigs, defaultNumTargets, defaultNumCollectors, defaultStartIndex) + _, _, _, relabelCfg, err := makeNNewTargets(relabelConfigs, defaultNumTargets, defaultNumCollectors, defaultStartIndex) + assert.NoError(t, err) + + allocatorPrehook.SetConfig(relabelCfg) + + for k, cfg := range relabelCfg { + relabelCfg[k] = addNoShardingConfig(cfg) + } + actual := allocatorPrehook.GetConfig() + assert.Equal(t, relabelCfg, actual) +} + +func TestDistinctTarget(t *testing.T) { + allocatorPrehook := New("relabel-config", logger) + assert.NotNil(t, allocatorPrehook) + + targets, _, expectedTarget, relabelCfg, err := makeNNewTargets(relabelConfigs, 10, defaultNumCollectors, defaultStartIndex) + assert.NoError(t, err) + + duplicatedTargets := make([]*target.Item, 0, 2*len(targets)) + for _, item := range targets { + builder := labels.NewBuilder(item.Labels) + builder.Set(checkDistinctConfigLabel, "check-distinct-label-value") + ls := builder.Labels() + + duplItem := target.NewItem(item.JobName, item.TargetURL, ls, item.CollectorName) + duplicatedTargets = append(duplicatedTargets, duplItem) + } + // Append original targets after duplicated ones to preserve original labels after deduplication. + duplicatedTargets = append(duplicatedTargets, targets...) + + for k, cfg := range relabelCfg { + cfg = append(cfg, &CheckDistinctConfig) + relabelCfg[k] = cfg + } + + // The expected result after deduplication. + expectedTargetMap := make(map[target.ItemHash]*target.Item) + for _, item := range expectedTarget { + expectedTargetMap[item.Hash()] = item + } + + // The deduplicated result after Prometheus relabeling. + promTargetMap := make(map[target.ItemHash]*target.Item) + for _, item := range targets { + tfp, err := MakeTargetFromProm(relabelCfg[item.JobName], item) + assert.NoError(t, err) + // If the target is dropped by Prometheus, it will be nil. + if tfp != nil { + promTargetMap[tfp.Hash()] = tfp + } + } + + assert.Len(t, promTargetMap, len(expectedTargetMap)) + assert.Equal(t, promTargetMap, expectedTargetMap) + + // The deduplicated result after otel-allocator processing. allocatorPrehook.SetConfig(relabelCfg) - assert.Equal(t, relabelCfg, allocatorPrehook.GetConfig()) + remainingItems := allocatorPrehook.Apply(duplicatedTargets) + remainingItemsMap := make(map[target.ItemHash]*target.Item) + for _, item := range remainingItems { + remainingItemsMap[item.Hash()] = item + } + + assert.Len(t, remainingItemsMap, len(expectedTargetMap)) + assert.Equal(t, remainingItemsMap, expectedTargetMap) +} + +func MakeTargetFromProm(rCfgs []*relabel.Config, rawTarget *target.Item) (*target.Item, error) { + lb := labels.NewBuilder(rawTarget.Labels) + cfg := &config.ScrapeConfig{ + RelabelConfigs: rCfgs, + } + lset, _, err := PopulateLabels(lb, cfg) + if err != nil { + return nil, err + } + // If the lset is empty after relabeling, Prometheus drops the target. + if lset.IsEmpty() { + return nil, nil + } + + // Compute the hash from the builder, skipping meta labels + hash := target.HashFromBuilder(lb, rawTarget.JobName) + newTarget := target.NewItem( + rawTarget.JobName, + rawTarget.TargetURL, + rawTarget.Labels, + rawTarget.CollectorName, + target.WithHash(hash), + ) + return newTarget, nil +} + +// PopulateLabels is Copied from prometheus/scrape/target.go. +// Reason: "github.com/prometheus/common@0.65.0" and "github.com/prometheus/scrape@0.301.0" are incompatible (undefined: promslog.AllowedFormat). +func PopulateLabels(lb *labels.Builder, cfg *config.ScrapeConfig) (res, orig labels.Labels, err error) { + // Copy labels into the labelset for the target if they are not set already. + scrapeLabels := []labels.Label{ + {Name: model.JobLabel, Value: cfg.JobName}, + {Name: model.ScrapeIntervalLabel, Value: cfg.ScrapeInterval.String()}, + {Name: model.ScrapeTimeoutLabel, Value: cfg.ScrapeTimeout.String()}, + {Name: model.MetricsPathLabel, Value: cfg.MetricsPath}, + {Name: model.SchemeLabel, Value: cfg.Scheme}, + } + + for _, l := range scrapeLabels { + if lb.Get(l.Name) == "" { + lb.Set(l.Name, l.Value) + } + } + // Encode scrape query parameters as labels. + for k, v := range cfg.Params { + if name := model.ParamLabelPrefix + k; len(v) > 0 && lb.Get(name) == "" { + lb.Set(name, v[0]) + } + } + + preRelabelLabels := lb.Labels() + keep := relabel.ProcessBuilder(lb, cfg.RelabelConfigs...) + + // Check if the target was dropped. + if !keep { + return labels.EmptyLabels(), preRelabelLabels, nil + } + if v := lb.Get(model.AddressLabel); v == "" { + return labels.EmptyLabels(), labels.EmptyLabels(), errors.New("no address") + } + + addr := lb.Get(model.AddressLabel) + + if err = config.CheckTargetAddress(model.LabelValue(addr)); err != nil { + return labels.EmptyLabels(), labels.EmptyLabels(), err + } + + interval := lb.Get(model.ScrapeIntervalLabel) + intervalDuration, err := model.ParseDuration(interval) + if err != nil { + return labels.EmptyLabels(), labels.EmptyLabels(), fmt.Errorf("error parsing scrape interval: %w", err) + } + if time.Duration(intervalDuration) == 0 { + return labels.EmptyLabels(), labels.EmptyLabels(), errors.New("scrape interval cannot be 0") + } + + timeout := lb.Get(model.ScrapeTimeoutLabel) + timeoutDuration, err := model.ParseDuration(timeout) + if err != nil { + return labels.EmptyLabels(), labels.EmptyLabels(), fmt.Errorf("error parsing scrape timeout: %w", err) + } + if time.Duration(timeoutDuration) == 0 { + return labels.EmptyLabels(), labels.EmptyLabels(), errors.New("scrape timeout cannot be 0") + } + + if timeoutDuration > intervalDuration { + return labels.EmptyLabels(), labels.EmptyLabels(), fmt.Errorf("scrape timeout cannot be greater than scrape interval (%q > %q)", timeout, interval) + } + + // Meta labels are deleted after relabelling. Other internal labels propagate to + // the target which decides whether they will be part of their label set. + lb.Range(func(l labels.Label) { + if strings.HasPrefix(l.Name, model.MetaLabelPrefix) { + lb.Del(l.Name) + } + }) + + // Default the instance label to the target address. + if v := lb.Get(model.InstanceLabel); v == "" { + lb.Set(model.InstanceLabel, addr) + } + + res = lb.Labels() + err = res.Validate(func(l labels.Label) error { + // Check label values are valid, drop the target if not. + if !model.LabelValue(l.Value).IsValid() { + return fmt.Errorf("invalid label value for %q: %q", l.Name, l.Value) + } + return nil + }) + if err != nil { + return labels.EmptyLabels(), labels.EmptyLabels(), err + } + return res, preRelabelLabels, nil } diff --git a/otelcollector/otel-allocator/internal/server/server.go b/otelcollector/otel-allocator/internal/server/server.go index d42cde84d..7a7bc8e00 100644 --- a/otelcollector/otel-allocator/internal/server/server.go +++ b/otelcollector/otel-allocator/internal/server/server.go @@ -426,9 +426,9 @@ func (s *Server) TargetHTMLHandler(c *gin.Context) { Headers: []string{"Label", "Value"}, Rows: func() [][]Cell { var rows [][]Cell - for _, l := range target.Labels { + target.Labels.Range(func(l labels.Label) { rows = append(rows, []Cell{NewCell(l.Name), NewCell(l.Value)}) - } + }) return rows }(), }) diff --git a/otelcollector/otel-allocator/internal/server/server_test.go b/otelcollector/otel-allocator/internal/server/server_test.go index ac7adff7f..105ab6fda 100644 --- a/otelcollector/otel-allocator/internal/server/server_test.go +++ b/otelcollector/otel-allocator/internal/server/server_test.go @@ -31,13 +31,9 @@ import ( ) var ( - logger = logf.Log.WithName("server-unit-tests") - baseLabelSet = labels.Labels{ - {Name: "test_label", Value: "test-value"}, - } - testJobLabelSetTwo = labels.Labels{ - {Name: "test_label", Value: "test-value2"}, - } + logger = logf.Log.WithName("server-unit-tests") + baseLabelSet = labels.New(labels.Label{Name: "test_label", Value: "test-value"}) + testJobLabelSetTwo = labels.New(labels.Label{Name: "test_label", Value: "test-value2"}) baseTargetItem = target.NewItem("test-job", "test-url", baseLabelSet, "test-collector") secondTargetItem = target.NewItem("test-job", "test-url", baseLabelSet, "test-collector") testJobTargetItemTwo = target.NewItem("test-job", "test-url2", testJobLabelSetTwo, "test-collector2") @@ -101,9 +97,7 @@ func TestServer_TargetsHandler(t *testing.T) { items: []*targetJSON{ { TargetURL: []string{"test-url"}, - Labels: labels.Labels{ - {Name: "test_label", Value: "test-value"}, - }, + Labels: labels.New(labels.Label{Name: "test_label", Value: "test-value"}), }, }, }, @@ -123,9 +117,7 @@ func TestServer_TargetsHandler(t *testing.T) { items: []*targetJSON{ { TargetURL: []string{"test-url"}, - Labels: labels.Labels{ - {Name: "test_label", Value: "test-value"}, - }, + Labels: labels.New(labels.Label{Name: "test_label", Value: "test-value"}), }, }, }, @@ -145,15 +137,11 @@ func TestServer_TargetsHandler(t *testing.T) { items: []*targetJSON{ { TargetURL: []string{"test-url"}, - Labels: labels.Labels{ - {Name: "test_label", Value: "test-value"}, - }, + Labels: labels.New(labels.Label{Name: "test_label", Value: "test-value"}), }, { TargetURL: []string{"test-url2"}, - Labels: labels.Labels{ - {Name: "test_label", Value: "test-value2"}, - }, + Labels: labels.New(labels.Label{Name: "test_label", Value: "test-value2"}), }, }, }, @@ -568,7 +556,7 @@ func TestServer_JobHandler(t *testing.T) { { description: "one job", targetItems: map[target.ItemHash]*target.Item{ - 0: target.NewItem("job1", "", labels.Labels{}, ""), + 0: target.NewItem("job1", "", labels.New(), ""), }, expectedCode: http.StatusOK, expectedJobs: map[string]linkJSON{ @@ -578,11 +566,11 @@ func TestServer_JobHandler(t *testing.T) { { description: "multiple jobs", targetItems: map[target.ItemHash]*target.Item{ - 0: target.NewItem("job1", "", labels.Labels{}, ""), - 1: target.NewItem("job2", "", labels.Labels{}, ""), - 2: target.NewItem("job3", "", labels.Labels{}, ""), - 3: target.NewItem("job3", "", labels.Labels{}, ""), - 4: target.NewItem("job3", "", labels.Labels{}, "")}, + 0: target.NewItem("job1", "", labels.New(), ""), + 1: target.NewItem("job2", "", labels.New(), ""), + 2: target.NewItem("job3", "", labels.New(), ""), + 3: target.NewItem("job3", "", labels.New(), ""), + 4: target.NewItem("job3", "", labels.New(), "")}, expectedCode: http.StatusOK, expectedJobs: map[string]linkJSON{ "job1": newLink("job1"), @@ -635,7 +623,7 @@ func TestServer_JobsHandler_HTML(t *testing.T) { { description: "one job", targetItems: map[target.ItemHash]*target.Item{ - 0: target.NewItem("job1", "", labels.Labels{}, ""), + 0: target.NewItem("job1", "", labels.New(), ""), }, expectedCode: http.StatusOK, Golden: "jobs_one.html", @@ -643,11 +631,11 @@ func TestServer_JobsHandler_HTML(t *testing.T) { { description: "multiple jobs", targetItems: map[target.ItemHash]*target.Item{ - 0: target.NewItem("job1", "1.1.1.1:8080", labels.Labels{}, ""), - 1: target.NewItem("job2", "1.1.1.2:8080", labels.Labels{}, ""), - 2: target.NewItem("job3", "1.1.1.3:8080", labels.Labels{}, ""), - 3: target.NewItem("job3", "1.1.1.4:8080", labels.Labels{}, ""), - 4: target.NewItem("job3", "1.1.1.5:8080", labels.Labels{}, "")}, + 0: target.NewItem("job1", "1.1.1.1:8080", labels.New(), ""), + 1: target.NewItem("job2", "1.1.1.2:8080", labels.New(), ""), + 2: target.NewItem("job3", "1.1.1.3:8080", labels.New(), ""), + 3: target.NewItem("job3", "1.1.1.4:8080", labels.New(), ""), + 4: target.NewItem("job3", "1.1.1.5:8080", labels.New(), "")}, expectedCode: http.StatusOK, Golden: "jobs_multiple.html", }, diff --git a/otelcollector/otel-allocator/internal/server/testdata/collector_multiple.html b/otelcollector/otel-allocator/internal/server/testdata/collector_multiple.html index a16cf2594..a63ff645e 100644 --- a/otelcollector/otel-allocator/internal/server/testdata/collector_multiple.html +++ b/otelcollector/otel-allocator/internal/server/testdata/collector_multiple.html @@ -31,7 +31,7 @@

Collector: test-collector2

test-job - test-url + test-url diff --git a/otelcollector/otel-allocator/internal/server/testdata/collector_single.html b/otelcollector/otel-allocator/internal/server/testdata/collector_single.html index a16cf2594..a63ff645e 100644 --- a/otelcollector/otel-allocator/internal/server/testdata/collector_single.html +++ b/otelcollector/otel-allocator/internal/server/testdata/collector_single.html @@ -31,7 +31,7 @@

Collector: test-collector2

test-job - test-url + test-url diff --git a/otelcollector/otel-allocator/internal/server/testdata/targets_multiple.html b/otelcollector/otel-allocator/internal/server/testdata/targets_multiple.html index 39773ea48..0aeb92704 100644 --- a/otelcollector/otel-allocator/internal/server/testdata/targets_multiple.html +++ b/otelcollector/otel-allocator/internal/server/testdata/targets_multiple.html @@ -34,7 +34,7 @@

OpenTelemetry Target Allocator - Targets

test-job2 - test-url3 + test-url3 test-collector1 @@ -48,10 +48,10 @@

OpenTelemetry Target Allocator - Targets

test-job - test-url + test-url2 - test-collector1 + test-collector2 @@ -62,10 +62,10 @@

OpenTelemetry Target Allocator - Targets

test-job - test-url2 + test-url - test-collector2 + test-collector1 diff --git a/otelcollector/otel-allocator/internal/server/testdata/targets_single.html b/otelcollector/otel-allocator/internal/server/testdata/targets_single.html index c58933a6e..466de24d4 100644 --- a/otelcollector/otel-allocator/internal/server/testdata/targets_single.html +++ b/otelcollector/otel-allocator/internal/server/testdata/targets_single.html @@ -34,7 +34,7 @@

OpenTelemetry Target Allocator - Targets

test-job - test-url + test-url test-collector1 diff --git a/otelcollector/otel-allocator/internal/target/discovery.go b/otelcollector/otel-allocator/internal/target/discovery.go index 34da6b33d..b8a241c13 100644 --- a/otelcollector/otel-allocator/internal/target/discovery.go +++ b/otelcollector/otel-allocator/internal/target/discovery.go @@ -7,6 +7,8 @@ import ( "context" "hash" "hash/fnv" + "maps" + "slices" "sync" "time" @@ -26,6 +28,8 @@ import ( allocatorWatcher "github.com/open-telemetry/opentelemetry-operator/cmd/otel-allocator/internal/watcher" ) +const labelBuilderPreallocSize = 100 + type Discoverer struct { log logr.Logger manager *discovery.Manager @@ -199,7 +203,11 @@ func (m *Discoverer) Reload() { // processTargetGroups processes the target groups and returns a map of targets. func (m *Discoverer) processTargetGroups(jobName string, groups []*targetgroup.Group, intoTargets []*Item) { - builder := labels.NewBuilder(labels.Labels{}) + // the builder for group labels + groupBuilder := labels.NewScratchBuilder(labelBuilderPreallocSize) + + // a slice for sorting target label names, we allocate it here to avoid doing it in the hot loop + targetLabelNames := make([]string, 0, labelBuilderPreallocSize) begin := time.Now() defer func() { @@ -208,18 +216,32 @@ func (m *Discoverer) processTargetGroups(jobName string, groups []*targetgroup.G var count float64 = 0 index := 0 for _, tg := range groups { - builder.Reset(labels.EmptyLabels()) + groupBuilder.Reset() for ln, lv := range tg.Labels { - builder.Set(string(ln), string(lv)) + groupBuilder.Add(string(ln), string(lv)) } - groupLabels := builder.Labels() + groupBuilder.Sort() for _, t := range tg.Targets { count++ - builder.Reset(groupLabels) - for ln, lv := range t { - builder.Set(string(ln), string(lv)) + // ScratchBuilder is a struct containing a slice of labels. By assigning to a new variable, we get a copy + // of the struct, with a new slice pointing to the same underlying array. As long as we don't mutate the + // original slice and only append to it, we can avoid copying the group labels. + targetBuilder := groupBuilder + targetLabelNames = targetLabelNames[:0] + + // We can't sort the whole builder slice, because that would modify the underlying groupBuilder. Instead, + // we sort the labels in a separate slice. As a result, the group labels and the target labels are sorted + // subslices of the builder slice, which is in itself not sorted. This is fine, as we don't care what the + // order of labels is - just that it's consistent, so the hash is always the same. + for ln := range maps.Keys(t) { + targetLabelNames = append(targetLabelNames, string(ln)) + } + slices.Sort(targetLabelNames) + for _, ln := range targetLabelNames { + lv := t[model.LabelName(ln)] + targetBuilder.Add(ln, string(lv)) } - item := NewItem(jobName, string(t[model.AddressLabel]), builder.Labels(), "") + item := NewItem(jobName, string(t[model.AddressLabel]), targetBuilder.Labels(), "") intoTargets[index] = item index++ } diff --git a/otelcollector/otel-allocator/internal/target/discovery_test.go b/otelcollector/otel-allocator/internal/target/discovery_test.go index 23e21b25d..2695487b0 100644 --- a/otelcollector/otel-allocator/internal/target/discovery_test.go +++ b/otelcollector/otel-allocator/internal/target/discovery_test.go @@ -17,6 +17,7 @@ import ( promconfig "github.com/prometheus/prometheus/config" "github.com/prometheus/prometheus/discovery" "github.com/prometheus/prometheus/discovery/targetgroup" + "github.com/prometheus/prometheus/model/labels" "github.com/prometheus/prometheus/model/relabel" "github.com/stretchr/testify/assert" "github.com/stretchr/testify/require" @@ -501,11 +502,13 @@ func TestProcessTargetGroups_StableLabelIterationOrder(t *testing.T) { require.NoError(t, err) d.processTargetGroups("test", groups, results) - for i, l := range results[0].Labels { + i := 0 + results[0].Labels.Range(func(l labels.Label) { //nolint:gosec expected := string(rune('a' + i)) assert.Equal(t, expected, l.Name, "unexpected label key at index %d", i) assert.Equal(t, expected, l.Value, "unexpected label value at index %d", i) - } + i += 1 + }) } func BenchmarkApplyScrapeConfig(b *testing.B) { diff --git a/otelcollector/otel-allocator/internal/target/target.go b/otelcollector/otel-allocator/internal/target/target.go index c8a1ad388..961f89965 100644 --- a/otelcollector/otel-allocator/internal/target/target.go +++ b/otelcollector/otel-allocator/internal/target/target.go @@ -4,12 +4,27 @@ package target import ( + "encoding/binary" "strconv" + "strings" + "sync" "github.com/cespare/xxhash/v2" + "github.com/prometheus/common/model" "github.com/prometheus/prometheus/model/labels" ) +// seps is the separator used between label name/value pairs in hash computation. +// This matches Prometheus's label hashing approach. +var seps = []byte{'\xff'} + +// hasherPool is a pool of xxhash digesters for efficient hash computation. +var hasherPool = sync.Pool{ + New: func() any { + return xxhash.New() + }, +} + // nodeLabels are labels that are used to identify the node on which the given // target is residing. To learn more about these labels, please refer to: // https://prometheus.io/docs/prometheus/latest/configuration/configuration/#kubernetes_sd_config @@ -40,6 +55,16 @@ type Item struct { hash ItemHash } +type ItemOption func(*Item) + +// WithHash sets a precomputed hash on the item. +// Use this when the hash has been computed during relabeling to avoid recomputation. +func WithHash(hash ItemHash) ItemOption { + return func(i *Item) { + i.hash = hash + } +} + func (t *Item) Hash() ItemHash { if t.hash == 0 { t.hash = ItemHash(LabelsHashWithJobName(t.Labels, t.JobName)) @@ -47,6 +72,29 @@ func (t *Item) Hash() ItemHash { return t.hash } +// HashFromBuilder computes a hash from a labels.Builder, skipping meta labels. +// This is used during relabeling to compute the hash efficiently without materializing +// the filtered labels. +func HashFromBuilder(builder *labels.Builder, jobName string) ItemHash { + hash := hasherPool.Get().(*xxhash.Digest) + hash.Reset() + builder.Range(func(l labels.Label) { + // Skip meta labels - they are discarded after relabeling in Prometheus. + // For details, see https://github.com/prometheus/prometheus/blob/e6cfa720fbe6280153fab13090a483dbd40bece3/scrape/target.go#L534 + if strings.HasPrefix(l.Name, model.MetaLabelPrefix) { + return + } + _, _ = hash.WriteString(l.Name) + _, _ = hash.Write(seps) + _, _ = hash.WriteString(l.Value) + _, _ = hash.Write(seps) + }) + _, _ = hash.WriteString(jobName) + result := hash.Sum64() + hasherPool.Put(hash) + return ItemHash(result) +} + func (t *Item) GetNodeName() string { relevantLabels := t.Labels.MatchLabels(true, relevantLabelNames...) for _, label := range nodeLabels { @@ -71,13 +119,17 @@ func (t *Item) GetEndpointSliceName() string { // NewItem Creates a new target item. // INVARIANTS: // * Item fields must not be modified after creation. -func NewItem(jobName string, targetURL string, labels labels.Labels, collectorName string) *Item { - return &Item{ +func NewItem(jobName string, targetURL string, itemLabels labels.Labels, collectorName string, opts ...ItemOption) *Item { + item := &Item{ JobName: jobName, TargetURL: targetURL, - Labels: labels, + Labels: itemLabels, CollectorName: collectorName, } + for _, opt := range opts { + opt(item) + } + return item } // LabelsHashWithJobName computes a hash of the labels and the job name. @@ -85,35 +137,14 @@ func NewItem(jobName string, targetURL string, labels labels.Labels, collectorNa // but adds in the job name since this is not in the labelset from the discovery manager. // The scrape manager adds it later. Address is already included in the labels, so it is not needed here. func LabelsHashWithJobName(ls labels.Labels, jobName string) uint64 { - var sep byte = '\xff' - var seps = []byte{sep} - - // Use xxhash.Sum64(b) for fast path as it's faster. - b := make([]byte, 0, 1024) - - // Differs from Prometheus implementation by adding job name. - b = append(b, jobName...) - b = append(b, sep) - - for i, v := range ls { - if len(b)+len(v.Name)+len(v.Value)+2 >= cap(b) { - // If labels entry is 1KB+ do not allocate whole entry. - h := xxhash.New() - _, _ = h.Write(b) - for _, v := range ls[i:] { - _, _ = h.WriteString(v.Name) - _, _ = h.Write(seps) - _, _ = h.WriteString(v.Value) - _, _ = h.Write(seps) - } - return h.Sum64() - } - - b = append(b, v.Name...) - b = append(b, sep) - b = append(b, v.Value...) - b = append(b, sep) - } - - return xxhash.Sum64(b) + labelsHash := ls.Hash() + var labelsHashBytes [8]byte + binary.LittleEndian.PutUint64(labelsHashBytes[:], labelsHash) + hash := hasherPool.Get().(*xxhash.Digest) + hash.Reset() + _, _ = hash.Write(labelsHashBytes[:]) // nolint: errcheck // xxhash.Write can't fail + _, _ = hash.WriteString(jobName) // nolint: errcheck // xxhash.Write can't fail + result := hash.Sum64() + hasherPool.Put(hash) + return result } diff --git a/otelcollector/otel-allocator/internal/watcher/promOperator.go b/otelcollector/otel-allocator/internal/watcher/promOperator.go index fd934167f..8770cd8cd 100644 --- a/otelcollector/otel-allocator/internal/watcher/promOperator.go +++ b/otelcollector/otel-allocator/internal/watcher/promOperator.go @@ -65,6 +65,7 @@ func NewPrometheusCRWatcher( monitoringInformerFactory := informers.NewMonitoringInformerFactories(allowList, denyList, monitoringclient, allocatorconfig.DefaultResyncTime, nil) metaDataInformerFactory := informers.NewMetadataInformerFactory(allowList, denyList, mdClient, allocatorconfig.DefaultResyncTime, nil) + monitoringInformers, err := getInformers(monitoringInformerFactory, cfg.ClusterConfig, promLogger, metaDataInformerFactory) if err != nil { return nil, err @@ -73,7 +74,7 @@ func NewPrometheusCRWatcher( // we want to use endpointslices by default serviceDiscoveryRole := monitoringv1.ServiceDiscoveryRole("EndpointSlice") - // TODO: We should make these durations configurable + //no need to hardcode durations, use default if not set prom := &monitoringv1.Prometheus{ ObjectMeta: metav1.ObjectMeta{ Namespace: cfg.CollectorNamespace, @@ -91,8 +92,9 @@ func NewPrometheusCRWatcher( ProbeNamespaceSelector: cfg.PrometheusCR.ProbeNamespaceSelector, ServiceDiscoveryRole: &serviceDiscoveryRole, ScrapeProtocols: cfg.PrometheusCR.ScrapeProtocols, + ScrapeClasses: cfg.PrometheusCR.ScrapeClasses, }, - EvaluationInterval: monitoringv1.Duration("30s"), + EvaluationInterval: monitoringv1.Duration(cfg.PrometheusCR.EvaluationInterval.String()), }, } @@ -105,8 +107,9 @@ func NewPrometheusCRWatcher( store := assets.NewStoreBuilder(client.CoreV1(), client.CoreV1()) promRegisterer := prometheusgoclient.NewRegistry() operatorMetrics := operator.NewMetrics(promRegisterer) - eventRecorderFactory := operator.NewEventRecorderFactory(false) - eventRecorder := eventRecorderFactory(client, "target-allocator") + eventRecorderFactoryFactory := operator.NewEventRecorderFactory(false) + eventRecorderFactory := eventRecorderFactoryFactory(client, "target-allocator") + eventRecorder := eventRecorderFactory(prom) var nsMonInf cache.SharedIndexInformer getNamespaceInformerErr := retry.OnError(retry.DefaultRetry, @@ -315,14 +318,13 @@ func getInformers(factory informers.FactoriesForNamespaces, clusterConfig *rest. informersMap[promv1alpha1.ScrapeConfigName] = scrapeConfigInformer } - secretInformers, err := informers.NewInformersForResourceWithTransform(metaDataInformerFactory, v1.SchemeGroupVersion.WithResource(string(v1.ResourceSecrets)), informers.PartialObjectMetadataStrip) + secretInformers, err := informers.NewInformersForResourceWithTransform(metaDataInformerFactory, v1.SchemeGroupVersion.WithResource(string(v1.ResourceSecrets)), informers.PartialObjectMetadataStrip(operator.SecretGVK())) if err != nil { return nil, err } if secretInformers != nil { informersMap[string(v1.ResourceSecrets)] = secretInformers } - return informersMap, nil } @@ -415,7 +417,7 @@ func (w *PrometheusCRWatcher) Watch(upstreamEvents chan Event, upstreamErrors ch }) if !exists || err != nil { if err != nil { - w.logger.Error("unexpected store error when checking if secret exists, skipping update", secretName, "error", err) + w.logger.Error("unexpected store error when checking if secret exists, skipping update", "secret", secretName, "error", err) return } // if the secret does not exist in the store, we skip the update @@ -425,13 +427,13 @@ func (w *PrometheusCRWatcher) Watch(upstreamEvents chan Event, upstreamErrors ch newSecret, err := w.store.GetSecretClient().Secrets(secretNamespace).Get(context.Background(), secretName, metav1.GetOptions{}) if err != nil { - w.logger.Error("unexpected store error when getting updated secret - ", secretName, "error", err) + w.logger.Error("unexpected store error when getting updated secret - ", "secret", secretName, "error", err) return } w.logger.Info("Updating secret in store", "newObjName", newMeta.GetObjectMeta().GetName(), "newobjnamespace", newMeta.GetObjectMeta().GetNamespace()) if err := w.store.UpdateObject(newSecret); err != nil { - w.logger.Error("unexpected store error when updating secret - ", newMeta.GetObjectMeta().GetName(), "error", err) + w.logger.Error("unexpected store error when updating secret - ", "secret", newMeta.GetObjectMeta().GetName(), "error", err) } else { w.logger.Info( "Successfully updated store, sending update event to notifyEvents channel", @@ -463,7 +465,7 @@ func (w *PrometheusCRWatcher) Watch(upstreamEvents chan Event, upstreamErrors ch // if the secret does not exist in the store, we skip the delete if !exists || err != nil { if err != nil { - w.logger.Error("unexpected store error when checking if secret exists, skipping delete", secretMeta.GetObjectMeta().GetName(), "error", err) + w.logger.Error("unexpected store error when checking if secret exists, skipping delete", "secret", secretMeta.GetObjectMeta().GetName(), "error", err) return } // if the secret does not exist in the store, we skip the delete @@ -473,7 +475,7 @@ func (w *PrometheusCRWatcher) Watch(upstreamEvents chan Event, upstreamErrors ch // if the secret exists in the store, we delete it // and send an event notification to the notifyEvents channel if err := w.store.DeleteObject(secretObj); err != nil { - w.logger.Error("unexpected store error when deleting secret - ", secretMeta.GetObjectMeta().GetName(), "error", err) + w.logger.Error("unexpected store error when deleting secret - ", "secret", secretMeta.GetObjectMeta().GetName(), "error", err) //return } else { w.logger.Info( @@ -575,38 +577,38 @@ func (w *PrometheusCRWatcher) LoadConfig(ctx context.Context) (*promconfig.Confi // Get ServiceMonitors if the informer exists if informer, ok := w.informers[monitoringv1.ServiceMonitorName]; ok { - instances, err := w.resourceSelector.SelectServiceMonitors(ctx, informer.ListAllByNamespace) + selection, err := w.resourceSelector.SelectServiceMonitors(ctx, informer.ListAllByNamespace) if err != nil { return nil, err } - serviceMonitorInstances = instances + serviceMonitorInstances = selection.ValidResources() } // Get PodMonitors if the informer exists if informer, ok := w.informers[monitoringv1.PodMonitorName]; ok { - instances, err := w.resourceSelector.SelectPodMonitors(ctx, informer.ListAllByNamespace) + selection, err := w.resourceSelector.SelectPodMonitors(ctx, informer.ListAllByNamespace) if err != nil { return nil, err } - podMonitorInstances = instances + podMonitorInstances = selection.ValidResources() } // Get Probes if the informer exists if informer, ok := w.informers[monitoringv1.ProbeName]; ok { - instances, err := w.resourceSelector.SelectProbes(ctx, informer.ListAllByNamespace) + selection, err := w.resourceSelector.SelectProbes(ctx, informer.ListAllByNamespace) if err != nil { return nil, err } - probeInstances = instances + probeInstances = selection.ValidResources() } // Get ScrapeConfigs if the informer exists if informer, ok := w.informers[promv1alpha1.ScrapeConfigName]; ok { - instances, err := w.resourceSelector.SelectScrapeConfigs(ctx, informer.ListAllByNamespace) + selection, err := w.resourceSelector.SelectScrapeConfigs(ctx, informer.ListAllByNamespace) if err != nil { return nil, err } - scrapeConfigInstances = instances + scrapeConfigInstances = selection.ValidResources() } generatedConfig, err := w.configGenerator.GenerateServerConfiguration( diff --git a/otelcollector/otel-allocator/internal/watcher/promOperator_test.go b/otelcollector/otel-allocator/internal/watcher/promOperator_test.go index 6880afcf9..0dad5940b 100644 --- a/otelcollector/otel-allocator/internal/watcher/promOperator_test.go +++ b/otelcollector/otel-allocator/internal/watcher/promOperator_test.go @@ -44,6 +44,7 @@ func TestLoadConfig(t *testing.T) { name string serviceMonitors []*monitoringv1.ServiceMonitor podMonitors []*monitoringv1.PodMonitor + scrapeClasses []*monitoringv1.ScrapeClass scrapeConfigs []*promv1alpha1.ScrapeConfig probes []*monitoringv1.Probe want *promconfig.Config @@ -94,7 +95,7 @@ func TestLoadConfig(t *testing.T) { ScrapeConfigs: []*promconfig.ScrapeConfig{ { JobName: "serviceMonitor/test/simple/0", - ScrapeInterval: model.Duration(30 * time.Second), + ScrapeInterval: model.Duration(60 * time.Second), ScrapeProtocols: promconfig.DefaultScrapeProtocols, ScrapeTimeout: model.Duration(10 * time.Second), HonorTimestamps: true, @@ -111,12 +112,17 @@ func TestLoadConfig(t *testing.T) { HTTPClientConfig: config.DefaultHTTPClientConfig, }, }, - HTTPClientConfig: config.DefaultHTTPClientConfig, - EnableCompression: true, + HTTPClientConfig: config.DefaultHTTPClientConfig, + EnableCompression: true, + AlwaysScrapeClassicHistograms: ptr.To(false), + ConvertClassicHistogramsToNHCB: ptr.To(false), + MetricNameValidationScheme: model.UTF8Validation, + MetricNameEscapingScheme: model.AllowUTF8, + ScrapeNativeHistograms: ptr.To(false), }, { JobName: "podMonitor/test/simple/0", - ScrapeInterval: model.Duration(30 * time.Second), + ScrapeInterval: model.Duration(60 * time.Second), ScrapeProtocols: promconfig.DefaultScrapeProtocols, ScrapeTimeout: model.Duration(10 * time.Second), HonorTimestamps: true, @@ -133,8 +139,13 @@ func TestLoadConfig(t *testing.T) { HTTPClientConfig: config.DefaultHTTPClientConfig, }, }, - HTTPClientConfig: config.DefaultHTTPClientConfig, - EnableCompression: true, + HTTPClientConfig: config.DefaultHTTPClientConfig, + EnableCompression: true, + AlwaysScrapeClassicHistograms: ptr.To(false), + ConvertClassicHistogramsToNHCB: ptr.To(false), + MetricNameValidationScheme: model.UTF8Validation, + MetricNameEscapingScheme: model.AllowUTF8, + ScrapeNativeHistograms: ptr.To(false), }, }, }, @@ -187,7 +198,7 @@ func TestLoadConfig(t *testing.T) { ScrapeConfigs: []*promconfig.ScrapeConfig{ { JobName: "serviceMonitor/test/auth/0", - ScrapeInterval: model.Duration(30 * time.Second), + ScrapeInterval: model.Duration(60 * time.Second), ScrapeProtocols: promconfig.DefaultScrapeProtocols, ScrapeTimeout: model.Duration(10 * time.Second), HonorTimestamps: true, @@ -212,7 +223,12 @@ func TestLoadConfig(t *testing.T) { Password: "password", }, }, - EnableCompression: true, + EnableCompression: true, + AlwaysScrapeClassicHistograms: ptr.To(false), + ConvertClassicHistogramsToNHCB: ptr.To(false), + MetricNameValidationScheme: model.UTF8Validation, + MetricNameEscapingScheme: model.AllowUTF8, + ScrapeNativeHistograms: ptr.To(false), }, }, }, @@ -230,13 +246,15 @@ func TestLoadConfig(t *testing.T) { PodMetricsEndpoints: []monitoringv1.PodMetricsEndpoint{ { Port: &portName, - Authorization: &monitoringv1.SafeAuthorization{ - Type: "Bearer", - Credentials: &v1.SecretKeySelector{ - LocalObjectReference: v1.LocalObjectReference{ - Name: "bearer", + HTTPConfig: monitoringv1.HTTPConfig{ + Authorization: &monitoringv1.SafeAuthorization{ + Type: "Bearer", + Credentials: &v1.SecretKeySelector{ + LocalObjectReference: v1.LocalObjectReference{ + Name: "bearer", + }, + Key: "token", }, - Key: "token", }, }, }, @@ -255,7 +273,7 @@ func TestLoadConfig(t *testing.T) { ScrapeConfigs: []*promconfig.ScrapeConfig{ { JobName: "podMonitor/test/bearer/0", - ScrapeInterval: model.Duration(30 * time.Second), + ScrapeInterval: model.Duration(60 * time.Second), ScrapeProtocols: promconfig.DefaultScrapeProtocols, ScrapeTimeout: model.Duration(10 * time.Second), HonorTimestamps: true, @@ -280,7 +298,12 @@ func TestLoadConfig(t *testing.T) { Credentials: "bearer-token", }, }, - EnableCompression: true, + EnableCompression: true, + AlwaysScrapeClassicHistograms: ptr.To(false), + ConvertClassicHistogramsToNHCB: ptr.To(false), + MetricNameValidationScheme: model.UTF8Validation, + MetricNameEscapingScheme: model.AllowUTF8, + ScrapeNativeHistograms: ptr.To(false), }, }, }, @@ -351,7 +374,7 @@ func TestLoadConfig(t *testing.T) { ScrapeConfigs: []*promconfig.ScrapeConfig{ { JobName: "serviceMonitor/test/valid-sm/0", - ScrapeInterval: model.Duration(30 * time.Second), + ScrapeInterval: model.Duration(60 * time.Second), ScrapeProtocols: promconfig.DefaultScrapeProtocols, ScrapeTimeout: model.Duration(10 * time.Second), HonorTimestamps: true, @@ -368,12 +391,17 @@ func TestLoadConfig(t *testing.T) { HTTPClientConfig: config.DefaultHTTPClientConfig, }, }, - HTTPClientConfig: config.DefaultHTTPClientConfig, - EnableCompression: true, + HTTPClientConfig: config.DefaultHTTPClientConfig, + EnableCompression: true, + AlwaysScrapeClassicHistograms: ptr.To(false), + ConvertClassicHistogramsToNHCB: ptr.To(false), + MetricNameValidationScheme: model.UTF8Validation, + MetricNameEscapingScheme: model.AllowUTF8, + ScrapeNativeHistograms: ptr.To(false), }, { JobName: "podMonitor/test/valid-pm/0", - ScrapeInterval: model.Duration(30 * time.Second), + ScrapeInterval: model.Duration(60 * time.Second), ScrapeProtocols: promconfig.DefaultScrapeProtocols, ScrapeTimeout: model.Duration(10 * time.Second), HonorTimestamps: true, @@ -390,8 +418,13 @@ func TestLoadConfig(t *testing.T) { HTTPClientConfig: config.DefaultHTTPClientConfig, }, }, - HTTPClientConfig: config.DefaultHTTPClientConfig, - EnableCompression: true, + HTTPClientConfig: config.DefaultHTTPClientConfig, + EnableCompression: true, + AlwaysScrapeClassicHistograms: ptr.To(false), + ConvertClassicHistogramsToNHCB: ptr.To(false), + MetricNameValidationScheme: model.UTF8Validation, + MetricNameEscapingScheme: model.AllowUTF8, + ScrapeNativeHistograms: ptr.To(false), }, }, }, @@ -462,7 +495,7 @@ func TestLoadConfig(t *testing.T) { ScrapeConfigs: []*promconfig.ScrapeConfig{ { JobName: "serviceMonitor/test/valid-sm/0", - ScrapeInterval: model.Duration(30 * time.Second), + ScrapeInterval: model.Duration(60 * time.Second), ScrapeProtocols: promconfig.DefaultScrapeProtocols, ScrapeTimeout: model.Duration(10 * time.Second), HonorTimestamps: true, @@ -479,12 +512,17 @@ func TestLoadConfig(t *testing.T) { HTTPClientConfig: config.DefaultHTTPClientConfig, }, }, - HTTPClientConfig: config.DefaultHTTPClientConfig, - EnableCompression: true, + HTTPClientConfig: config.DefaultHTTPClientConfig, + EnableCompression: true, + AlwaysScrapeClassicHistograms: ptr.To(false), + ConvertClassicHistogramsToNHCB: ptr.To(false), + MetricNameValidationScheme: model.UTF8Validation, + MetricNameEscapingScheme: model.AllowUTF8, + ScrapeNativeHistograms: ptr.To(false), }, { JobName: "podMonitor/test/valid-pm/0", - ScrapeInterval: model.Duration(30 * time.Second), + ScrapeInterval: model.Duration(60 * time.Second), ScrapeProtocols: promconfig.DefaultScrapeProtocols, ScrapeTimeout: model.Duration(10 * time.Second), HonorTimestamps: true, @@ -501,8 +539,13 @@ func TestLoadConfig(t *testing.T) { HTTPClientConfig: config.DefaultHTTPClientConfig, }, }, - HTTPClientConfig: config.DefaultHTTPClientConfig, - EnableCompression: true, + HTTPClientConfig: config.DefaultHTTPClientConfig, + EnableCompression: true, + AlwaysScrapeClassicHistograms: ptr.To(false), + ConvertClassicHistogramsToNHCB: ptr.To(false), + MetricNameValidationScheme: model.UTF8Validation, + MetricNameEscapingScheme: model.AllowUTF8, + ScrapeNativeHistograms: ptr.To(false), }, }, }, @@ -555,7 +598,7 @@ func TestLoadConfig(t *testing.T) { ScrapeConfigs: []*promconfig.ScrapeConfig{ { JobName: "serviceMonitor/test/sm-1/0", - ScrapeInterval: model.Duration(30 * time.Second), + ScrapeInterval: model.Duration(60 * time.Second), ScrapeProtocols: promconfig.DefaultScrapeProtocols, ScrapeTimeout: model.Duration(10 * time.Second), HonorTimestamps: true, @@ -572,8 +615,13 @@ func TestLoadConfig(t *testing.T) { HTTPClientConfig: config.DefaultHTTPClientConfig, }, }, - HTTPClientConfig: config.DefaultHTTPClientConfig, - EnableCompression: true, + HTTPClientConfig: config.DefaultHTTPClientConfig, + EnableCompression: true, + AlwaysScrapeClassicHistograms: ptr.To(false), + ConvertClassicHistogramsToNHCB: ptr.To(false), + MetricNameValidationScheme: model.UTF8Validation, + MetricNameEscapingScheme: model.AllowUTF8, + ScrapeNativeHistograms: ptr.To(false), }, }, }, @@ -626,7 +674,7 @@ func TestLoadConfig(t *testing.T) { ScrapeConfigs: []*promconfig.ScrapeConfig{ { JobName: "podMonitor/test/pm-1/0", - ScrapeInterval: model.Duration(30 * time.Second), + ScrapeInterval: model.Duration(60 * time.Second), ScrapeProtocols: promconfig.DefaultScrapeProtocols, ScrapeTimeout: model.Duration(10 * time.Second), HonorTimestamps: true, @@ -643,8 +691,13 @@ func TestLoadConfig(t *testing.T) { HTTPClientConfig: config.DefaultHTTPClientConfig, }, }, - HTTPClientConfig: config.DefaultHTTPClientConfig, - EnableCompression: true, + HTTPClientConfig: config.DefaultHTTPClientConfig, + EnableCompression: true, + AlwaysScrapeClassicHistograms: ptr.To(false), + ConvertClassicHistogramsToNHCB: ptr.To(false), + MetricNameValidationScheme: model.UTF8Validation, + MetricNameEscapingScheme: model.AllowUTF8, + ScrapeNativeHistograms: ptr.To(false), }, }, }, @@ -687,7 +740,7 @@ func TestLoadConfig(t *testing.T) { ScrapeConfigs: []*promconfig.ScrapeConfig{ { JobName: "scrapeConfig/test/scrapeconfig-test-1", - ScrapeInterval: model.Duration(30 * time.Second), + ScrapeInterval: model.Duration(60 * time.Second), ScrapeProtocols: promconfig.DefaultScrapeProtocols, ScrapeTimeout: model.Duration(10 * time.Second), HonorTimestamps: true, @@ -707,8 +760,13 @@ func TestLoadConfig(t *testing.T) { }, }, }, - HTTPClientConfig: config.DefaultHTTPClientConfig, - EnableCompression: true, + HTTPClientConfig: config.DefaultHTTPClientConfig, + EnableCompression: true, + AlwaysScrapeClassicHistograms: ptr.To(false), + ConvertClassicHistogramsToNHCB: ptr.To(false), + MetricNameValidationScheme: model.UTF8Validation, + MetricNameEscapingScheme: model.AllowUTF8, + ScrapeNativeHistograms: ptr.To(false), }, }, }, @@ -751,7 +809,7 @@ func TestLoadConfig(t *testing.T) { ScrapeConfigs: []*promconfig.ScrapeConfig{ { JobName: "probe/test/probe-test-1", - ScrapeInterval: model.Duration(30 * time.Second), + ScrapeInterval: model.Duration(60 * time.Second), ScrapeProtocols: promconfig.DefaultScrapeProtocols, ScrapeTimeout: model.Duration(10 * time.Second), HonorTimestamps: true, @@ -773,8 +831,13 @@ func TestLoadConfig(t *testing.T) { }, }, }, - HTTPClientConfig: config.DefaultHTTPClientConfig, - EnableCompression: true, + HTTPClientConfig: config.DefaultHTTPClientConfig, + EnableCompression: true, + AlwaysScrapeClassicHistograms: ptr.To(false), + ConvertClassicHistogramsToNHCB: ptr.To(false), + MetricNameValidationScheme: model.UTF8Validation, + MetricNameEscapingScheme: model.AllowUTF8, + ScrapeNativeHistograms: ptr.To(false), }, }, }, @@ -826,7 +889,7 @@ func TestLoadConfig(t *testing.T) { ScrapeConfigs: []*promconfig.ScrapeConfig{ { JobName: "serviceMonitor/labellednamespace/sm-1/0", - ScrapeInterval: model.Duration(30 * time.Second), + ScrapeInterval: model.Duration(60 * time.Second), ScrapeProtocols: promconfig.DefaultScrapeProtocols, ScrapeTimeout: model.Duration(10 * time.Second), HonorTimestamps: true, @@ -843,8 +906,13 @@ func TestLoadConfig(t *testing.T) { HTTPClientConfig: config.DefaultHTTPClientConfig, }, }, - HTTPClientConfig: config.DefaultHTTPClientConfig, - EnableCompression: true, + HTTPClientConfig: config.DefaultHTTPClientConfig, + EnableCompression: true, + AlwaysScrapeClassicHistograms: ptr.To(false), + ConvertClassicHistogramsToNHCB: ptr.To(false), + MetricNameValidationScheme: model.UTF8Validation, + MetricNameEscapingScheme: model.AllowUTF8, + ScrapeNativeHistograms: ptr.To(false), }, }, }, @@ -896,7 +964,7 @@ func TestLoadConfig(t *testing.T) { ScrapeConfigs: []*promconfig.ScrapeConfig{ { JobName: "podMonitor/labellednamespace/pm-1/0", - ScrapeInterval: model.Duration(30 * time.Second), + ScrapeInterval: model.Duration(60 * time.Second), ScrapeProtocols: promconfig.DefaultScrapeProtocols, ScrapeTimeout: model.Duration(10 * time.Second), HonorTimestamps: true, @@ -913,8 +981,80 @@ func TestLoadConfig(t *testing.T) { HTTPClientConfig: config.DefaultHTTPClientConfig, }, }, - HTTPClientConfig: config.DefaultHTTPClientConfig, - EnableCompression: true, + HTTPClientConfig: config.DefaultHTTPClientConfig, + EnableCompression: true, + AlwaysScrapeClassicHistograms: ptr.To(false), + ConvertClassicHistogramsToNHCB: ptr.To(false), + MetricNameValidationScheme: model.UTF8Validation, + MetricNameEscapingScheme: model.AllowUTF8, + ScrapeNativeHistograms: ptr.To(false), + }, + }, + }, + }, + { + name: "pod monitor with referenced scrape class", + podMonitors: []*monitoringv1.PodMonitor{ + { + ObjectMeta: metav1.ObjectMeta{ + Name: "simple", + Namespace: namespace, + }, + Spec: monitoringv1.PodMonitorSpec{ + JobLabel: "test", + ScrapeClassName: ptr.To("attach-node-metadata"), + PodMetricsEndpoints: []monitoringv1.PodMetricsEndpoint{ + { + Port: &portName, + }, + }, + }, + }, + }, + cfg: allocatorconfig.Config{ + PrometheusCR: allocatorconfig.PrometheusCRConfig{ + PodMonitorSelector: &metav1.LabelSelector{}, + ScrapeClasses: []monitoringv1.ScrapeClass{ + { + Name: "attach-node-metadata", + AttachMetadata: &monitoringv1.AttachMetadata{ + Node: ptr.To(true), + }, + }, + }, + }, + }, + want: &promconfig.Config{ + ScrapeConfigs: []*promconfig.ScrapeConfig{ + { + JobName: "podMonitor/test/simple/0", + ScrapeInterval: model.Duration(60 * time.Second), + ScrapeProtocols: promconfig.DefaultScrapeProtocols, + ScrapeTimeout: model.Duration(10 * time.Second), + HonorTimestamps: true, + HonorLabels: false, + Scheme: "http", + MetricsPath: "/metrics", + ServiceDiscoveryConfigs: []discovery.Config{ + &kubeDiscovery.SDConfig{ + Role: "pod", + NamespaceDiscovery: kubeDiscovery.NamespaceDiscovery{ + Names: []string{namespace}, + IncludeOwnNamespace: false, + }, + HTTPClientConfig: config.DefaultHTTPClientConfig, + AttachMetadata: kubeDiscovery.AttachMetadataConfig{ + Node: true, // Added by scrape-class! + }, + }, + }, + HTTPClientConfig: config.DefaultHTTPClientConfig, + EnableCompression: true, + AlwaysScrapeClassicHistograms: ptr.To(false), + ConvertClassicHistogramsToNHCB: ptr.To(false), + MetricNameValidationScheme: model.UTF8Validation, + MetricNameEscapingScheme: model.AllowUTF8, + ScrapeNativeHistograms: ptr.To(false), }, }, }, @@ -1002,7 +1142,7 @@ func TestNamespaceLabelUpdate(t *testing.T) { ScrapeConfigs: []*promconfig.ScrapeConfig{ { JobName: "podMonitor/labellednamespace/pm-1/0", - ScrapeInterval: model.Duration(30 * time.Second), + ScrapeInterval: model.Duration(60 * time.Second), ScrapeProtocols: promconfig.DefaultScrapeProtocols, ScrapeTimeout: model.Duration(10 * time.Second), HonorTimestamps: true, @@ -1019,8 +1159,13 @@ func TestNamespaceLabelUpdate(t *testing.T) { HTTPClientConfig: config.DefaultHTTPClientConfig, }, }, - HTTPClientConfig: config.DefaultHTTPClientConfig, - EnableCompression: true, + HTTPClientConfig: config.DefaultHTTPClientConfig, + EnableCompression: true, + AlwaysScrapeClassicHistograms: ptr.To(false), + ConvertClassicHistogramsToNHCB: ptr.To(false), + MetricNameValidationScheme: model.UTF8Validation, + MetricNameEscapingScheme: model.AllowUTF8, + ScrapeNativeHistograms: ptr.To(false), }, }, } @@ -1065,11 +1210,11 @@ func TestNamespaceLabelUpdate(t *testing.T) { assert.EventuallyWithT(t, func(collect *assert.CollectT) { got, err = w.LoadConfig(context.Background()) - assert.NoError(t, err) + assert.NoError(collect, err) sanitizeScrapeConfigsForTest(got.ScrapeConfigs) - assert.Equal(t, want_after.ScrapeConfigs, got.ScrapeConfigs) - }, time.Second*30, time.Millisecond*100) + assert.Equal(collect, want_after.ScrapeConfigs, got.ScrapeConfigs) + }, time.Second*60, time.Millisecond*100) } func TestRateLimit(t *testing.T) { @@ -1152,6 +1297,108 @@ func TestRateLimit(t *testing.T) { assert.Less(t, eventInterval, elapsedTime) } +func TestDefaultDurations(t *testing.T) { + namespace := "test" + portName := "web" + tests := []struct { + name string + serviceMonitors []*monitoringv1.ServiceMonitor + cfg allocatorconfig.Config + expectedScrape model.Duration + expectedEval model.Duration + }{ + { + name: "custom scrape and evaluation intervals", + serviceMonitors: []*monitoringv1.ServiceMonitor{ + { + ObjectMeta: metav1.ObjectMeta{ + Name: "test-sm", + Namespace: namespace, + }, + Spec: monitoringv1.ServiceMonitorSpec{ + JobLabel: "test", + Endpoints: []monitoringv1.Endpoint{ + { + Port: portName, + }, + }, + }, + }, + }, + cfg: allocatorconfig.Config{ + PrometheusCR: allocatorconfig.PrometheusCRConfig{ + ScrapeInterval: model.Duration(120 * time.Second), + EvaluationInterval: model.Duration(120 * time.Second), + ServiceMonitorSelector: &metav1.LabelSelector{}, + }, + }, + expectedScrape: model.Duration(120 * time.Second), + expectedEval: model.Duration(120 * time.Second), + }, + { + name: "prometheus operator applies defaults when intervals nil", + serviceMonitors: []*monitoringv1.ServiceMonitor{ + { + ObjectMeta: metav1.ObjectMeta{ + Name: "test-sm", + Namespace: namespace, + }, + Spec: monitoringv1.ServiceMonitorSpec{ + JobLabel: "test", + Endpoints: []monitoringv1.Endpoint{ + { + Port: portName, + }, + }, + }, + }, + }, + cfg: allocatorconfig.Config{ + PrometheusCR: allocatorconfig.PrometheusCRConfig{ + ServiceMonitorSelector: &metav1.LabelSelector{}, + }, + }, + expectedScrape: model.Duration(60 * time.Second), + expectedEval: model.Duration(60 * time.Second), + }, + } + + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + w, _ := getTestPrometheusCRWatcher(t, namespace, tt.serviceMonitors, nil, nil, nil, tt.cfg) + defer w.Close() + + events := make(chan Event, 1) + eventInterval := 5 * time.Millisecond + w.eventInterval = eventInterval + + go func() { + watchErr := w.Watch(events, make(chan error)) + require.NoError(t, watchErr) + }() + + if success := cache.WaitForNamedCacheSync("namespace", w.stopChannel, w.nsInformer.HasSynced); !success { + require.True(t, success) + } + + for _, informer := range w.informers { + success := cache.WaitForCacheSync(w.stopChannel, informer.HasSynced) + require.True(t, success) + } + + got, err := w.LoadConfig(context.Background()) + assert.NoError(t, err) + + assert.NotEmpty(t, got.ScrapeConfigs) + + for _, sc := range got.ScrapeConfigs { + assert.Equal(t, tt.expectedScrape, sc.ScrapeInterval) + } + assert.Equal(t, tt.expectedEval, got.GlobalConfig.EvaluationInterval) + }) + } +} + // getTestPrometheusCRWatcher creates a test instance of PrometheusCRWatcher with fake clients // and test secrets. func getTestPrometheusCRWatcher( @@ -1235,7 +1482,7 @@ func getTestPrometheusCRWatcher( }, Spec: monitoringv1.PrometheusSpec{ CommonPrometheusFields: monitoringv1.CommonPrometheusFields{ - ScrapeInterval: monitoringv1.Duration("30s"), + ScrapeInterval: monitoringv1.Duration(cfg.PrometheusCR.ScrapeInterval.String()), ServiceMonitorSelector: cfg.PrometheusCR.ServiceMonitorSelector, PodMonitorSelector: cfg.PrometheusCR.PodMonitorSelector, ServiceMonitorNamespaceSelector: cfg.PrometheusCR.ServiceMonitorNamespaceSelector, @@ -1244,9 +1491,10 @@ func getTestPrometheusCRWatcher( ProbeNamespaceSelector: cfg.PrometheusCR.ProbeNamespaceSelector, ScrapeConfigSelector: cfg.PrometheusCR.ScrapeConfigSelector, ScrapeConfigNamespaceSelector: cfg.PrometheusCR.ScrapeConfigNamespaceSelector, + ScrapeClasses: cfg.PrometheusCR.ScrapeClasses, ServiceDiscoveryRole: &serviceDiscoveryRole, }, - EvaluationInterval: monitoringv1.Duration("30s"), + EvaluationInterval: monitoringv1.Duration(cfg.PrometheusCR.EvaluationInterval.String()), }, } @@ -1260,8 +1508,9 @@ func getTestPrometheusCRWatcher( store := assets.NewStoreBuilder(k8sClient.CoreV1(), k8sClient.CoreV1()) promRegisterer := prometheusgoclient.NewRegistry() operatorMetrics := operator.NewMetrics(promRegisterer) - recorderFactory := operator.NewEventRecorderFactory(false) - eventRecorder := recorderFactory(k8sClient, "target-allocator") + eventRecorderFactoryFactory := operator.NewEventRecorderFactory(false) + eventRecorderFactory := eventRecorderFactoryFactory(k8sClient, "target-allocator") + eventRecorder := eventRecorderFactory(prom) source := fcache.NewFakeControllerSource() source.Add(&v1.Namespace{ObjectMeta: metav1.ObjectMeta{Name: "test"}}) diff --git a/otelcollector/prom-config-validator-builder/components.go b/otelcollector/prom-config-validator-builder/components.go index 2057bb67a..0a79ecde4 100644 --- a/otelcollector/prom-config-validator-builder/components.go +++ b/otelcollector/prom-config-validator-builder/components.go @@ -13,6 +13,7 @@ import ( "go.opentelemetry.io/collector/processor" "go.opentelemetry.io/collector/processor/batchprocessor" "go.opentelemetry.io/collector/receiver" + "go.opentelemetry.io/collector/service/telemetry/otelconftelemetry" ) func components() (otelcol.Factories, error) { @@ -33,10 +34,11 @@ func components() (otelcol.Factories, error) { promExporter.Type(): promExporter, }, Processors: map[component.Type]processor.Factory{ - batchProcessor.Type(): batchProcessor, + batchProcessor.Type(): batchProcessor, resourceProcessor.Type(): resourceProcessor, filterProcessor.Type(): filterProcessor, }, + Telemetry: otelconftelemetry.NewFactory(), } return factories, nil diff --git a/otelcollector/prom-config-validator-builder/go.mod b/otelcollector/prom-config-validator-builder/go.mod index 3ff69008f..0fdceadb6 100644 --- a/otelcollector/prom-config-validator-builder/go.mod +++ b/otelcollector/prom-config-validator-builder/go.mod @@ -5,79 +5,81 @@ go 1.24.0 toolchain go1.24.7 require ( - github.com/open-telemetry/opentelemetry-collector-contrib/exporter/prometheusexporter v0.136.0 - github.com/open-telemetry/opentelemetry-collector-contrib/processor/filterprocessor v0.136.0 - github.com/open-telemetry/opentelemetry-collector-contrib/processor/resourceprocessor v0.136.0 - github.com/open-telemetry/opentelemetry-collector-contrib/receiver/prometheusreceiver v0.136.0 + github.com/open-telemetry/opentelemetry-collector-contrib/exporter/prometheusexporter v0.142.0 + github.com/open-telemetry/opentelemetry-collector-contrib/processor/filterprocessor v0.142.0 + github.com/open-telemetry/opentelemetry-collector-contrib/processor/resourceprocessor v0.142.0 + github.com/open-telemetry/opentelemetry-collector-contrib/receiver/prometheusreceiver v0.142.0 github.com/prometheus-collector/shared v0.0.0-00010101000000-000000000000 - go.opentelemetry.io/collector/component v1.42.0 - go.opentelemetry.io/collector/confmap v1.42.0 - go.opentelemetry.io/collector/confmap/provider/envprovider v1.42.0 - go.opentelemetry.io/collector/confmap/provider/fileprovider v1.42.0 - go.opentelemetry.io/collector/exporter v1.42.0 - go.opentelemetry.io/collector/exporter/otlpexporter v0.136.0 - go.opentelemetry.io/collector/extension v1.42.0 - go.opentelemetry.io/collector/otelcol v0.136.0 - go.opentelemetry.io/collector/processor v1.42.0 - go.opentelemetry.io/collector/processor/batchprocessor v0.136.0 - go.opentelemetry.io/collector/receiver v1.42.0 + go.opentelemetry.io/collector/component v1.48.0 + go.opentelemetry.io/collector/confmap v1.48.0 + go.opentelemetry.io/collector/confmap/provider/envprovider v1.48.0 + go.opentelemetry.io/collector/confmap/provider/fileprovider v1.48.0 + go.opentelemetry.io/collector/exporter v1.48.0 + go.opentelemetry.io/collector/exporter/otlpexporter v0.142.0 + go.opentelemetry.io/collector/extension v1.48.0 + go.opentelemetry.io/collector/otelcol v0.142.0 + go.opentelemetry.io/collector/processor v1.48.0 + go.opentelemetry.io/collector/processor/batchprocessor v0.142.0 + go.opentelemetry.io/collector/receiver v1.48.0 + go.opentelemetry.io/collector/service v0.142.0 gopkg.in/yaml.v2 v2.4.0 ) require ( - cloud.google.com/go/auth v0.16.2 // indirect + cloud.google.com/go/auth v0.17.0 // indirect cloud.google.com/go/auth/oauth2adapt v0.2.8 // indirect - cloud.google.com/go/compute/metadata v0.7.0 // indirect - github.com/Azure/azure-sdk-for-go/sdk/azcore v1.18.0 // indirect - github.com/Azure/azure-sdk-for-go/sdk/azidentity v1.10.1 // indirect - github.com/Azure/azure-sdk-for-go/sdk/internal v1.11.1 // indirect + cloud.google.com/go/compute/metadata v0.9.0 // indirect + github.com/Azure/azure-sdk-for-go/sdk/azcore v1.19.1 // indirect + github.com/Azure/azure-sdk-for-go/sdk/azidentity v1.12.0 // 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.4.2 // indirect + github.com/AzureAD/microsoft-authentication-library-for-go v1.5.0 // indirect github.com/Code-Hex/go-generics-cache v1.5.1 // indirect 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.4.4 // indirect + github.com/antchfx/xmlquery v1.5.0 // indirect github.com/antchfx/xpath v1.3.5 // indirect github.com/armon/go-metrics v0.4.1 // indirect github.com/asaskevich/govalidator v0.0.0-20230301143203-a9d515a09cc2 // indirect - github.com/aws/aws-sdk-go-v2 v1.37.0 // indirect - github.com/aws/aws-sdk-go-v2/config v1.29.14 // indirect - github.com/aws/aws-sdk-go-v2/credentials v1.17.67 // indirect - github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.16.30 // indirect - github.com/aws/aws-sdk-go-v2/internal/configsources v1.4.0 // indirect - github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.7.0 // indirect - github.com/aws/aws-sdk-go-v2/internal/ini v1.8.3 // indirect - github.com/aws/aws-sdk-go-v2/service/ec2 v1.237.0 // indirect - github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding v1.13.0 // indirect - github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.13.0 // indirect - github.com/aws/aws-sdk-go-v2/service/lightsail v1.44.0 // indirect - github.com/aws/aws-sdk-go-v2/service/sso v1.25.3 // indirect - github.com/aws/aws-sdk-go-v2/service/ssooidc v1.30.1 // indirect - github.com/aws/aws-sdk-go-v2/service/sts v1.33.19 // indirect - github.com/aws/smithy-go v1.22.5 // indirect + github.com/aws/aws-sdk-go-v2 v1.39.6 // indirect + github.com/aws/aws-sdk-go-v2/config v1.31.17 // indirect + github.com/aws/aws-sdk-go-v2/credentials v1.18.21 // indirect + github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.18.13 // indirect + github.com/aws/aws-sdk-go-v2/internal/configsources v1.4.13 // indirect + github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.7.13 // indirect + github.com/aws/aws-sdk-go-v2/internal/ini v1.8.4 // indirect + github.com/aws/aws-sdk-go-v2/service/ec2 v1.262.0 // indirect + github.com/aws/aws-sdk-go-v2/service/ecs v1.67.2 // indirect + github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding v1.13.3 // indirect + github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.13.13 // indirect + github.com/aws/aws-sdk-go-v2/service/lightsail v1.50.4 // indirect + github.com/aws/aws-sdk-go-v2/service/sso v1.30.1 // indirect + github.com/aws/aws-sdk-go-v2/service/ssooidc v1.35.5 // indirect + github.com/aws/aws-sdk-go-v2/service/sts v1.39.1 // indirect + github.com/aws/smithy-go v1.23.2 // indirect github.com/bboreham/go-loser v0.0.0-20230920113527-fcc2c21820a3 // indirect github.com/beorn7/perks v1.0.1 // 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-20250501225837-2ac532fd4443 // indirect + github.com/cncf/xds/go v0.0.0-20251022180443-0feb69152e9f // indirect github.com/containerd/errdefs v1.0.0 // indirect github.com/containerd/errdefs/pkg v0.3.0 // indirect - github.com/coreos/go-systemd/v22 v22.5.0 // indirect + github.com/coreos/go-systemd/v22 v22.6.0 // 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.157.0 // indirect + github.com/digitalocean/godo v1.168.0 // indirect github.com/distribution/reference v0.6.0 // indirect - github.com/docker/docker v28.3.3+incompatible // indirect + github.com/docker/docker v28.5.2+incompatible // indirect github.com/docker/go-connections v0.6.0 // indirect github.com/docker/go-units v0.5.0 // indirect - github.com/ebitengine/purego v0.8.4 // indirect + github.com/ebitengine/purego v0.9.1 // indirect github.com/edsrzf/mmap-go v1.2.0 // indirect github.com/elastic/go-grok v0.3.1 // indirect - github.com/elastic/lunes v0.1.0 // indirect - github.com/emicklei/go-restful/v3 v3.11.0 // indirect - github.com/envoyproxy/go-control-plane/envoy v1.32.4 // indirect + github.com/elastic/lunes v0.2.0 // indirect + github.com/emicklei/go-restful/v3 v3.12.2 // indirect + github.com/envoyproxy/go-control-plane/envoy v1.35.0 // indirect github.com/envoyproxy/protoc-gen-validate v1.2.1 // indirect github.com/expr-lang/expr v1.17.6 // indirect github.com/facette/natsort v0.0.0-20181210072756-2cd4dd1e2dcb // indirect @@ -85,19 +87,19 @@ require ( github.com/felixge/httpsnoop v1.0.4 // indirect github.com/foxboron/go-tpm-keyfiles v0.0.0-20250903184740-5d135037bd4d // indirect github.com/fsnotify/fsnotify v1.9.0 // indirect - github.com/fxamacker/cbor/v2 v2.7.0 // indirect + github.com/fxamacker/cbor/v2 v2.9.0 // indirect github.com/go-kit/log v0.2.1 // indirect github.com/go-logfmt/logfmt v0.6.0 // indirect github.com/go-logr/logr v1.4.3 // indirect github.com/go-logr/stdr v1.2.2 // indirect github.com/go-ole/go-ole v1.2.6 // indirect github.com/go-openapi/analysis v0.23.0 // indirect - github.com/go-openapi/errors v0.22.0 // indirect + github.com/go-openapi/errors v0.22.3 // indirect github.com/go-openapi/jsonpointer v0.21.0 // indirect github.com/go-openapi/jsonreference v0.21.0 // indirect github.com/go-openapi/loads v0.22.0 // indirect github.com/go-openapi/spec v0.21.0 // indirect - github.com/go-openapi/strfmt v0.23.0 // indirect + github.com/go-openapi/strfmt v0.24.0 // indirect github.com/go-openapi/swag v0.23.0 // indirect github.com/go-openapi/validate v0.24.0 // indirect github.com/go-resty/resty/v2 v2.16.5 // indirect @@ -105,27 +107,25 @@ require ( 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-yaml v1.18.0 // indirect + github.com/goccy/go-yaml v1.19.0 // indirect github.com/gogo/protobuf v1.3.2 // indirect - github.com/golang-jwt/jwt/v5 v5.2.2 // indirect + github.com/golang-jwt/jwt/v5 v5.3.0 // indirect github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da // indirect - github.com/golang/protobuf v1.5.4 // indirect github.com/golang/snappy v1.0.0 // indirect - github.com/google/gnostic-models v0.6.8 // indirect + github.com/google/gnostic-models v0.7.0 // indirect github.com/google/go-cmp v0.7.0 // indirect github.com/google/go-querystring v1.1.0 // indirect - github.com/google/go-tpm v0.9.6 // indirect - github.com/google/gofuzz v1.2.0 // indirect + github.com/google/go-tpm v0.9.7 // indirect github.com/google/s2a-go v0.1.9 // indirect github.com/google/uuid v1.6.0 // indirect github.com/googleapis/enterprise-certificate-proxy v0.3.6 // indirect - github.com/googleapis/gax-go/v2 v2.14.2 // indirect - github.com/gophercloud/gophercloud/v2 v2.7.0 // indirect - github.com/gorilla/websocket v1.5.0 // indirect - github.com/grafana/regexp v0.0.0-20240518133315-a468a5bfb3bc // indirect - github.com/grpc-ecosystem/grpc-gateway/v2 v2.27.1 // indirect + github.com/googleapis/gax-go/v2 v2.15.0 // indirect + github.com/gophercloud/gophercloud/v2 v2.8.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/grpc-ecosystem/grpc-gateway/v2 v2.27.2 // indirect github.com/hashicorp/consul/api v1.32.0 // indirect - github.com/hashicorp/cronexpr v1.1.2 // indirect + github.com/hashicorp/cronexpr v1.1.3 // indirect github.com/hashicorp/errwrap v1.1.0 // indirect github.com/hashicorp/go-cleanhttp v0.5.2 // indirect github.com/hashicorp/go-hclog v1.6.3 // indirect @@ -133,12 +133,12 @@ require ( github.com/hashicorp/go-multierror v1.1.1 // indirect github.com/hashicorp/go-retryablehttp v0.7.7 // indirect github.com/hashicorp/go-rootcerts v1.0.2 // indirect - github.com/hashicorp/go-version v1.7.0 // indirect + github.com/hashicorp/go-version v1.8.0 // indirect github.com/hashicorp/golang-lru v1.0.2 // indirect github.com/hashicorp/golang-lru/v2 v2.0.7 // indirect - github.com/hashicorp/nomad/api v0.0.0-20241218080744-e3ac00f30eec // indirect + github.com/hashicorp/nomad/api v0.0.0-20250930071859-eaa0fe0e27af // indirect github.com/hashicorp/serf v0.10.1 // indirect - github.com/hetznercloud/hcloud-go/v2 v2.21.1 // indirect + github.com/hetznercloud/hcloud-go/v2 v2.29.0 // indirect github.com/iancoleman/strcase v0.3.0 // indirect github.com/inconshreveable/mousetrap v1.1.0 // indirect github.com/ionos-cloud/sdk-go/v6 v6.3.4 // indirect @@ -146,13 +146,14 @@ 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.0 // indirect + github.com/klauspost/compress v1.18.2 // indirect + github.com/klauspost/cpuid/v2 v2.0.9 // 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.0 // indirect github.com/kolo/xmlrpc v0.0.0-20220921171641-a4b6fa1dd06b // indirect github.com/kylelemons/godebug v1.1.0 // indirect - github.com/linode/linodego v1.52.2 // indirect + github.com/linode/linodego v1.60.0 // indirect github.com/lufia/plan9stats v0.0.0-20211012122336-39d0f177ccd0 // indirect github.com/magefile/mage v1.15.0 // indirect github.com/mailru/easyjson v0.7.7 // indirect @@ -160,7 +161,7 @@ require ( github.com/mattn/go-isatty v0.0.20 // indirect github.com/mdlayher/socket v0.4.1 // indirect github.com/mdlayher/vsock v1.2.1 // indirect - github.com/miekg/dns v1.1.66 // indirect + github.com/miekg/dns v1.1.68 // indirect github.com/mitchellh/copystructure v1.2.0 // indirect github.com/mitchellh/go-homedir v1.1.0 // indirect github.com/mitchellh/mapstructure v1.5.1-0.20231216201459-8508981c8b6c // indirect @@ -173,14 +174,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.136.0 // indirect - github.com/open-telemetry/opentelemetry-collector-contrib/internal/exp/metrics v0.136.0 // indirect - github.com/open-telemetry/opentelemetry-collector-contrib/internal/filter v0.136.0 // indirect - github.com/open-telemetry/opentelemetry-collector-contrib/pkg/ottl v0.136.0 // indirect - github.com/open-telemetry/opentelemetry-collector-contrib/pkg/pdatautil v0.136.0 // indirect - github.com/open-telemetry/opentelemetry-collector-contrib/pkg/resourcetotelemetry v0.136.0 // indirect - github.com/open-telemetry/opentelemetry-collector-contrib/pkg/translator/prometheus v0.136.0 // indirect - github.com/open-telemetry/opentelemetry-collector-contrib/processor/deltatocumulativeprocessor v0.136.0 // indirect + github.com/open-telemetry/opentelemetry-collector-contrib/internal/coreinternal v0.142.0 // indirect + github.com/open-telemetry/opentelemetry-collector-contrib/internal/exp/metrics v0.142.0 // indirect + github.com/open-telemetry/opentelemetry-collector-contrib/internal/filter v0.142.0 // indirect + github.com/open-telemetry/opentelemetry-collector-contrib/pkg/ottl v0.142.0 // indirect + github.com/open-telemetry/opentelemetry-collector-contrib/pkg/pdatautil v0.142.0 // indirect + github.com/open-telemetry/opentelemetry-collector-contrib/pkg/resourcetotelemetry v0.142.0 // indirect + github.com/open-telemetry/opentelemetry-collector-contrib/pkg/translator/prometheus v0.142.0 // indirect + github.com/open-telemetry/opentelemetry-collector-contrib/processor/deltatocumulativeprocessor v0.142.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 @@ -192,146 +193,148 @@ require ( github.com/power-devops/perfstat v0.0.0-20240221224432-82ca36839d55 // indirect github.com/prometheus/alertmanager v0.28.1 // indirect github.com/prometheus/client_golang v1.23.2 // indirect + github.com/prometheus/client_golang/exp v0.0.0-20250914183048-a974e0d45e0a // indirect github.com/prometheus/client_model v0.6.2 // indirect - github.com/prometheus/common v0.66.1 // indirect + github.com/prometheus/common v0.67.4 // indirect github.com/prometheus/common/assets v0.2.0 // indirect - github.com/prometheus/exporter-toolkit v0.14.0 // indirect - github.com/prometheus/otlptranslator v0.0.2 // indirect + github.com/prometheus/exporter-toolkit v0.15.0 // indirect + github.com/prometheus/otlptranslator v1.0.0 // indirect github.com/prometheus/procfs v0.17.0 // indirect - github.com/prometheus/prometheus v0.305.1-0.20250808193045-294f36e80261 // indirect - github.com/prometheus/sigv4 v0.2.0 // indirect + github.com/prometheus/prometheus v0.308.0 // indirect + github.com/prometheus/sigv4 v0.3.0 // indirect github.com/puzpuzpuz/xsync/v3 v3.5.1 // indirect github.com/rs/cors v1.11.1 // indirect - github.com/scaleway/scaleway-sdk-go v1.0.0-beta.33 // indirect - github.com/shirou/gopsutil/v4 v4.25.8 // indirect + github.com/scaleway/scaleway-sdk-go v1.0.0-beta.35 // indirect + github.com/shirou/gopsutil/v4 v4.25.11 // indirect github.com/shurcooL/httpfs v0.0.0-20230704072500-f1e31cf0ba5c // indirect - github.com/spf13/cobra v1.10.1 // indirect + github.com/spf13/cobra v1.10.2 // indirect github.com/spf13/pflag v1.0.9 // indirect - github.com/stackitcloud/stackit-sdk-go/core v0.17.2 // indirect + github.com/stackitcloud/stackit-sdk-go/core v0.17.3 // indirect github.com/stretchr/testify v1.11.1 // indirect - github.com/tklauser/go-sysconf v0.3.15 // indirect - github.com/tklauser/numcpus v0.10.0 // indirect + github.com/tklauser/go-sysconf v0.3.16 // indirect + github.com/tklauser/numcpus v0.11.0 // indirect github.com/twmb/murmur3 v1.1.8 // indirect github.com/ua-parser/uap-go v0.0.0-20240611065828-3a4781585db6 // indirect github.com/vultr/govultr/v2 v2.17.2 // indirect github.com/x448/float16 v0.8.4 // indirect github.com/yusufpapurcu/wmi v1.2.4 // indirect - go.mongodb.org/mongo-driver v1.14.0 // indirect - go.opentelemetry.io/auto/sdk v1.1.0 // indirect - go.opentelemetry.io/collector v0.136.0 // indirect - go.opentelemetry.io/collector/client v1.42.0 // indirect - go.opentelemetry.io/collector/component/componentstatus v0.136.0 // indirect - go.opentelemetry.io/collector/component/componenttest v0.136.0 // indirect - go.opentelemetry.io/collector/config/configauth v0.136.0 // indirect - go.opentelemetry.io/collector/config/configcompression v1.42.0 // indirect - go.opentelemetry.io/collector/config/configgrpc v0.136.0 // indirect - go.opentelemetry.io/collector/config/confighttp v0.136.0 // indirect - go.opentelemetry.io/collector/config/configmiddleware v1.42.0 // indirect - go.opentelemetry.io/collector/config/confignet v1.42.0 // indirect - go.opentelemetry.io/collector/config/configopaque v1.42.0 // indirect - go.opentelemetry.io/collector/config/configoptional v0.136.0 // indirect - go.opentelemetry.io/collector/config/configretry v1.42.0 // indirect - go.opentelemetry.io/collector/config/configtelemetry v0.136.0 // indirect - go.opentelemetry.io/collector/config/configtls v1.42.0 // indirect - go.opentelemetry.io/collector/confmap/xconfmap v0.136.0 // indirect - go.opentelemetry.io/collector/connector v0.136.0 // indirect - go.opentelemetry.io/collector/connector/connectortest v0.136.0 // indirect - go.opentelemetry.io/collector/connector/xconnector v0.136.0 // indirect - go.opentelemetry.io/collector/consumer v1.42.0 // indirect - go.opentelemetry.io/collector/consumer/consumererror v0.136.0 // indirect - go.opentelemetry.io/collector/consumer/consumererror/xconsumererror v0.136.0 // indirect - go.opentelemetry.io/collector/consumer/consumertest v0.136.0 // indirect - go.opentelemetry.io/collector/consumer/xconsumer v0.136.0 // indirect - go.opentelemetry.io/collector/exporter/exporterhelper v0.136.0 // indirect - go.opentelemetry.io/collector/exporter/exporterhelper/xexporterhelper v0.136.0 // indirect - go.opentelemetry.io/collector/exporter/exportertest v0.136.0 // indirect - go.opentelemetry.io/collector/exporter/xexporter v0.136.0 // indirect - go.opentelemetry.io/collector/extension/extensionauth v1.42.0 // indirect - go.opentelemetry.io/collector/extension/extensioncapabilities v0.136.0 // indirect - go.opentelemetry.io/collector/extension/extensionmiddleware v0.136.0 // indirect - go.opentelemetry.io/collector/extension/extensiontest v0.136.0 // indirect - go.opentelemetry.io/collector/extension/xextension v0.136.0 // indirect - go.opentelemetry.io/collector/featuregate v1.42.0 // indirect - go.opentelemetry.io/collector/internal/fanoutconsumer v0.136.0 // indirect - go.opentelemetry.io/collector/internal/telemetry v0.136.0 // indirect - go.opentelemetry.io/collector/pdata v1.42.0 // indirect - go.opentelemetry.io/collector/pdata/pprofile v0.136.0 // indirect - go.opentelemetry.io/collector/pdata/testdata v0.136.0 // indirect - go.opentelemetry.io/collector/pdata/xpdata v0.136.0 // indirect - go.opentelemetry.io/collector/pipeline v1.42.0 // indirect - go.opentelemetry.io/collector/pipeline/xpipeline v0.136.0 // indirect - go.opentelemetry.io/collector/processor/processorhelper v0.136.0 // indirect - go.opentelemetry.io/collector/processor/processorhelper/xprocessorhelper v0.136.0 // indirect - go.opentelemetry.io/collector/processor/processortest v0.136.0 // indirect - go.opentelemetry.io/collector/processor/xprocessor v0.136.0 // indirect - go.opentelemetry.io/collector/receiver/receiverhelper v0.136.0 // indirect - go.opentelemetry.io/collector/receiver/receivertest v0.136.0 // indirect - go.opentelemetry.io/collector/receiver/xreceiver v0.136.0 // indirect + github.com/zeebo/xxh3 v1.0.2 // indirect + go.mongodb.org/mongo-driver v1.17.4 // indirect + go.opentelemetry.io/auto/sdk v1.2.1 // indirect + go.opentelemetry.io/collector v0.142.0 // indirect + go.opentelemetry.io/collector/client v1.48.0 // indirect + go.opentelemetry.io/collector/component/componentstatus v0.142.0 // indirect + go.opentelemetry.io/collector/component/componenttest v0.142.0 // indirect + go.opentelemetry.io/collector/config/configauth v1.48.0 // indirect + go.opentelemetry.io/collector/config/configcompression v1.48.0 // indirect + go.opentelemetry.io/collector/config/configgrpc v0.142.0 // indirect + go.opentelemetry.io/collector/config/confighttp v0.142.0 // indirect + go.opentelemetry.io/collector/config/configmiddleware v1.48.0 // indirect + go.opentelemetry.io/collector/config/confignet v1.48.0 // indirect + go.opentelemetry.io/collector/config/configopaque v1.48.0 // indirect + go.opentelemetry.io/collector/config/configoptional v1.48.0 // indirect + go.opentelemetry.io/collector/config/configretry v1.48.0 // indirect + go.opentelemetry.io/collector/config/configtelemetry v0.142.0 // indirect + go.opentelemetry.io/collector/config/configtls v1.48.0 // indirect + go.opentelemetry.io/collector/confmap/xconfmap v0.142.0 // indirect + go.opentelemetry.io/collector/connector v0.142.0 // indirect + go.opentelemetry.io/collector/connector/connectortest v0.142.0 // indirect + go.opentelemetry.io/collector/connector/xconnector v0.142.0 // indirect + go.opentelemetry.io/collector/consumer v1.48.0 // indirect + go.opentelemetry.io/collector/consumer/consumererror v0.142.0 // indirect + go.opentelemetry.io/collector/consumer/consumererror/xconsumererror v0.142.0 // indirect + go.opentelemetry.io/collector/consumer/consumertest v0.142.0 // indirect + go.opentelemetry.io/collector/consumer/xconsumer v0.142.0 // indirect + go.opentelemetry.io/collector/exporter/exporterhelper v0.142.0 // indirect + go.opentelemetry.io/collector/exporter/exporterhelper/xexporterhelper v0.142.0 // indirect + go.opentelemetry.io/collector/exporter/exportertest v0.142.0 // indirect + go.opentelemetry.io/collector/exporter/xexporter v0.142.0 // indirect + go.opentelemetry.io/collector/extension/extensionauth v1.48.0 // indirect + go.opentelemetry.io/collector/extension/extensioncapabilities v0.142.0 // indirect + go.opentelemetry.io/collector/extension/extensionmiddleware v0.142.0 // indirect + go.opentelemetry.io/collector/extension/extensiontest v0.142.0 // indirect + go.opentelemetry.io/collector/extension/xextension v0.142.0 // indirect + go.opentelemetry.io/collector/featuregate v1.48.0 // indirect + go.opentelemetry.io/collector/internal/fanoutconsumer v0.142.0 // indirect + go.opentelemetry.io/collector/internal/telemetry v0.142.0 // indirect + go.opentelemetry.io/collector/pdata v1.48.0 // indirect + go.opentelemetry.io/collector/pdata/pprofile v0.142.0 // indirect + go.opentelemetry.io/collector/pdata/testdata v0.142.0 // indirect + go.opentelemetry.io/collector/pdata/xpdata v0.142.0 // indirect + go.opentelemetry.io/collector/pipeline v1.48.0 // indirect + go.opentelemetry.io/collector/pipeline/xpipeline v0.142.0 // indirect + go.opentelemetry.io/collector/processor/processorhelper v0.142.0 // indirect + go.opentelemetry.io/collector/processor/processorhelper/xprocessorhelper v0.142.0 // indirect + go.opentelemetry.io/collector/processor/processortest v0.142.0 // indirect + go.opentelemetry.io/collector/processor/xprocessor v0.142.0 // indirect + go.opentelemetry.io/collector/receiver/receiverhelper v0.142.0 // indirect + go.opentelemetry.io/collector/receiver/receivertest v0.142.0 // indirect + go.opentelemetry.io/collector/receiver/xreceiver v0.142.0 // indirect go.opentelemetry.io/collector/semconv v0.128.1-0.20250610090210-188191247685 // indirect - go.opentelemetry.io/collector/service v0.136.0 // indirect - go.opentelemetry.io/collector/service/hostcapabilities v0.136.0 // indirect - go.opentelemetry.io/contrib/bridges/otelzap v0.12.0 // indirect - go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.62.0 // indirect - go.opentelemetry.io/contrib/instrumentation/net/http/httptrace/otelhttptrace v0.61.0 // indirect - go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.63.0 // indirect - go.opentelemetry.io/contrib/otelconf v0.16.0 // indirect - go.opentelemetry.io/contrib/propagators/b3 v1.37.0 // indirect - go.opentelemetry.io/otel v1.38.0 // indirect - go.opentelemetry.io/otel/exporters/otlp/otlplog/otlploggrpc v0.13.0 // indirect - go.opentelemetry.io/otel/exporters/otlp/otlplog/otlploghttp v0.13.0 // indirect - go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetricgrpc v1.37.0 // indirect - go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetrichttp v1.37.0 // indirect - go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.37.0 // indirect - go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.37.0 // indirect - go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp v1.37.0 // indirect + go.opentelemetry.io/collector/service/hostcapabilities v0.142.0 // indirect + go.opentelemetry.io/contrib/bridges/otelzap v0.13.0 // indirect + go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.63.0 // indirect + go.opentelemetry.io/contrib/instrumentation/net/http/httptrace/otelhttptrace v0.63.0 // indirect + go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.64.0 // indirect + go.opentelemetry.io/contrib/otelconf v0.18.0 // indirect + go.opentelemetry.io/contrib/propagators/b3 v1.38.0 // indirect + go.opentelemetry.io/otel v1.39.0 // indirect + go.opentelemetry.io/otel/exporters/otlp/otlplog/otlploggrpc v0.14.0 // indirect + go.opentelemetry.io/otel/exporters/otlp/otlplog/otlploghttp v0.14.0 // indirect + go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetricgrpc v1.38.0 // indirect + go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetrichttp v1.38.0 // indirect + go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.38.0 // indirect + go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.38.0 // indirect + go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp v1.38.0 // indirect go.opentelemetry.io/otel/exporters/prometheus v0.60.0 // indirect - go.opentelemetry.io/otel/exporters/stdout/stdoutlog v0.13.0 // indirect - go.opentelemetry.io/otel/exporters/stdout/stdoutmetric v1.37.0 // indirect - go.opentelemetry.io/otel/exporters/stdout/stdouttrace v1.37.0 // indirect - go.opentelemetry.io/otel/log v0.14.0 // indirect - go.opentelemetry.io/otel/metric v1.38.0 // indirect - go.opentelemetry.io/otel/sdk v1.38.0 // indirect - go.opentelemetry.io/otel/sdk/log v0.13.0 // indirect - go.opentelemetry.io/otel/sdk/metric v1.38.0 // indirect - go.opentelemetry.io/otel/trace v1.38.0 // indirect - go.opentelemetry.io/proto/otlp v1.7.0 // indirect + go.opentelemetry.io/otel/exporters/stdout/stdoutlog v0.14.0 // indirect + go.opentelemetry.io/otel/exporters/stdout/stdoutmetric v1.38.0 // indirect + go.opentelemetry.io/otel/exporters/stdout/stdouttrace v1.38.0 // indirect + go.opentelemetry.io/otel/log v0.15.0 // indirect + go.opentelemetry.io/otel/metric v1.39.0 // indirect + go.opentelemetry.io/otel/sdk v1.39.0 // indirect + go.opentelemetry.io/otel/sdk/log v0.14.0 // indirect + go.opentelemetry.io/otel/sdk/metric v1.39.0 // indirect + go.opentelemetry.io/otel/trace v1.39.0 // indirect + go.opentelemetry.io/proto/otlp v1.7.1 // indirect go.uber.org/atomic v1.11.0 // indirect go.uber.org/goleak v1.3.0 // indirect go.uber.org/multierr v1.11.0 // indirect - go.uber.org/zap v1.27.0 // indirect + go.uber.org/zap v1.27.1 // indirect go.uber.org/zap/exp v0.3.0 // indirect - go.yaml.in/yaml/v2 v2.4.2 // indirect + go.yaml.in/yaml/v2 v2.4.3 // indirect go.yaml.in/yaml/v3 v3.0.4 // indirect - golang.org/x/crypto v0.42.0 // indirect - golang.org/x/exp v0.0.0-20250106191152-7588d65b2ba8 // indirect - golang.org/x/mod v0.27.0 // indirect - golang.org/x/net v0.44.0 // indirect - golang.org/x/oauth2 v0.30.0 // indirect - golang.org/x/sync v0.17.0 // indirect - golang.org/x/sys v0.36.0 // indirect - golang.org/x/term v0.35.0 // indirect - golang.org/x/text v0.29.0 // indirect - golang.org/x/time v0.12.0 // indirect - golang.org/x/tools v0.36.0 // indirect + golang.org/x/crypto v0.46.0 // indirect + golang.org/x/exp v0.0.0-20250808145144-a408d31f581a // indirect + golang.org/x/mod v0.30.0 // indirect + golang.org/x/net v0.48.0 // indirect + golang.org/x/oauth2 v0.32.0 // indirect + golang.org/x/sync v0.19.0 // indirect + golang.org/x/sys v0.39.0 // indirect + golang.org/x/term v0.38.0 // indirect + golang.org/x/text v0.32.0 // indirect + golang.org/x/time v0.13.0 // indirect + golang.org/x/tools v0.39.0 // indirect gonum.org/v1/gonum v0.16.0 // indirect - google.golang.org/api v0.239.0 // indirect - google.golang.org/genproto/googleapis/api v0.0.0-20250707201910-8d1bb00bc6a7 // indirect - google.golang.org/genproto/googleapis/rpc v0.0.0-20250707201910-8d1bb00bc6a7 // indirect - google.golang.org/grpc v1.75.1 // indirect - google.golang.org/protobuf v1.36.9 // indirect + google.golang.org/api v0.252.0 // indirect + google.golang.org/genproto/googleapis/api v0.0.0-20251022142026-3a174f9686a8 // indirect + google.golang.org/genproto/googleapis/rpc v0.0.0-20251022142026-3a174f9686a8 // indirect + google.golang.org/grpc v1.77.0 // indirect + google.golang.org/protobuf v1.36.10 // indirect gopkg.in/evanphx/json-patch.v4 v4.12.0 // indirect gopkg.in/inf.v0 v0.9.1 // indirect gopkg.in/ini.v1 v1.67.0 // indirect gopkg.in/yaml.v3 v3.0.1 // indirect - k8s.io/api v0.32.3 // indirect - k8s.io/apimachinery v0.32.3 // indirect - k8s.io/client-go v0.32.3 // indirect + k8s.io/api v0.34.1 // indirect + k8s.io/apimachinery v0.34.1 // indirect + k8s.io/client-go v0.34.1 // indirect k8s.io/klog/v2 v2.130.1 // indirect - k8s.io/kube-openapi v0.0.0-20241105132330-32ad38e42d3f // indirect - k8s.io/utils v0.0.0-20241104100929-3ea5e8cea738 // indirect - sigs.k8s.io/json v0.0.0-20241010143419-9aa6b5e7a4b3 // indirect - sigs.k8s.io/structured-merge-diff/v4 v4.6.0 // indirect - sigs.k8s.io/yaml v1.5.0 // indirect + k8s.io/kube-openapi v0.0.0-20250710124328-f3f2b991d03b // indirect + k8s.io/utils v0.0.0-20250604170112-4c0f3b243397 // indirect + sigs.k8s.io/json v0.0.0-20241014173422-cfa47c3a1cc8 // indirect + sigs.k8s.io/randfill v1.0.0 // indirect + sigs.k8s.io/structured-merge-diff/v6 v6.3.0 // indirect + sigs.k8s.io/yaml v1.6.0 // indirect ) replace github.com/open-telemetry/opentelemetry-collector-contrib/receiver/prometheusreceiver => ../prometheusreceiver diff --git a/otelcollector/prom-config-validator-builder/go.sum b/otelcollector/prom-config-validator-builder/go.sum index e46ba1034..e6643144a 100644 --- a/otelcollector/prom-config-validator-builder/go.sum +++ b/otelcollector/prom-config-validator-builder/go.sum @@ -1,19 +1,19 @@ -cloud.google.com/go/auth v0.16.2 h1:QvBAGFPLrDeoiNjyfVunhQ10HKNYuOwZ5noee0M5df4= -cloud.google.com/go/auth v0.16.2/go.mod h1:sRBas2Y1fB1vZTdurouM0AzuYQBMZinrUYL8EufhtEA= +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/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.7.0 h1:PBWF+iiAerVNe8UCHxdOt6eHLVc3ydFeOCw78U8ytSU= -cloud.google.com/go/compute/metadata v0.7.0/go.mod h1:j5MvL9PprKL39t166CoB1uVHfQMs4tFQZZcKwksXUjo= -dario.cat/mergo v1.0.1 h1:Ra4+bf83h2ztPIQYNP99R6m+Y7KfnARDfID+a+vLl4s= -dario.cat/mergo v1.0.1/go.mod h1:uNxQE+84aUszobStD9th8a29P2fMDhsBdgRYvZOxGmk= -github.com/Azure/azure-sdk-for-go/sdk/azcore v1.18.0 h1:Gt0j3wceWMwPmiazCa8MzMA0MfhmPIz0Qp0FJ6qcM0U= -github.com/Azure/azure-sdk-for-go/sdk/azcore v1.18.0/go.mod h1:Ot/6aikWnKWi4l9QB7qVSwa8iMphQNqkWALMoNT3rzM= -github.com/Azure/azure-sdk-for-go/sdk/azidentity v1.10.1 h1:B+blDbyVIG3WaikNxPnhPiJ1MThR03b3vKGtER95TP4= -github.com/Azure/azure-sdk-for-go/sdk/azidentity v1.10.1/go.mod h1:JdM5psgjfBf5fo2uWOZhflPWyDBZ/O/CNAH9CtsuZE4= +cloud.google.com/go/compute/metadata v0.9.0 h1:pDUj4QMoPejqq20dK0Pg2N4yG9zIkYGdBtwLoEkH9Zs= +cloud.google.com/go/compute/metadata v0.9.0/go.mod h1:E0bWwX5wTnLPedCKqk3pJmVgCBSM6qQI1yTBdEb3C10= +dario.cat/mergo v1.0.2 h1:85+piFYR1tMbRrLcDwR18y4UKJ3aH1Tbzi24VRW1TK8= +dario.cat/mergo v1.0.2/go.mod h1:E/hbnu0NxMFBjpMIE34DRGLWqDy0g5FuKDhCb31ngxA= +github.com/Azure/azure-sdk-for-go/sdk/azcore v1.19.1 h1:5YTBM8QDVIBN3sxBil89WfdAAqDZbyJTgh688DSxX5w= +github.com/Azure/azure-sdk-for-go/sdk/azcore v1.19.1/go.mod h1:YD5h/ldMsG0XiIw7PdyNhLxaM317eFh5yNLccNfGdyw= +github.com/Azure/azure-sdk-for-go/sdk/azidentity v1.12.0 h1:wL5IEG5zb7BVv1Kv0Xm92orq+5hB5Nipn3B5tn4Rqfk= +github.com/Azure/azure-sdk-for-go/sdk/azidentity v1.12.0/go.mod h1:J7MUC/wtRpfGVbQ5sIItY5/FuVWmvzlY21WAOfQnq/I= github.com/Azure/azure-sdk-for-go/sdk/azidentity/cache v0.3.2 h1:yz1bePFlP5Vws5+8ez6T3HWXPmwOK7Yvq8QxDBD3SKY= github.com/Azure/azure-sdk-for-go/sdk/azidentity/cache v0.3.2/go.mod h1:Pa9ZNPuoNu/GztvBSKk9J1cDJW6vk/n0zLtV4mgd8N8= -github.com/Azure/azure-sdk-for-go/sdk/internal v1.11.1 h1:FPKJS1T+clwv+OLGt13a8UjqeRuh0O4SJ3lUriThc+4= -github.com/Azure/azure-sdk-for-go/sdk/internal v1.11.1/go.mod h1:j2chePtV91HrC22tGoRX3sGY42uF13WzmmV80/OdVAA= +github.com/Azure/azure-sdk-for-go/sdk/internal v1.11.2 h1:9iefClla7iYpfYWdzPCRDozdmndjTm8DXdpCzPajMgA= +github.com/Azure/azure-sdk-for-go/sdk/internal v1.11.2/go.mod h1:XtLgD3ZD34DAaVIIAyG3objl5DynM3CQ/vMcbBNJZGI= github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/compute/armcompute/v5 v5.7.0 h1:LkHbJbgF3YyvC53aqYGR+wWQDn2Rdp9AQdGndf9QvY4= github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/compute/armcompute/v5 v5.7.0/go.mod h1:QyiQdW4f4/BIfB8ZutZ2s+28RAgfa/pT+zS++ZHyM1I= github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/internal/v2 v2.0.0 h1:PTFGRSlMKCQelWwxUyYVEUqseBJVemLyqWJjvMyt0do= @@ -26,8 +26,8 @@ github.com/Azure/go-ansiterm v0.0.0-20250102033503-faa5f7b0171c h1:udKWzYgxTojEK github.com/Azure/go-ansiterm v0.0.0-20250102033503-faa5f7b0171c/go.mod h1:xomTg63KZ2rFqZQzSB4Vz2SUXa1BpHTVz9L5PTmPC4E= github.com/AzureAD/microsoft-authentication-extensions-for-go/cache v0.1.1 h1:WJTmL004Abzc5wDB5VtZG2PJk5ndYDgVacGqfirKxjM= github.com/AzureAD/microsoft-authentication-extensions-for-go/cache v0.1.1/go.mod h1:tCcJZ0uHAmvjsVYzEFivsRTN00oz5BEsRgQHu5JZ9WE= -github.com/AzureAD/microsoft-authentication-library-for-go v1.4.2 h1:oygO0locgZJe7PpYPXT5A29ZkwJaPqcva7BVeemZOZs= -github.com/AzureAD/microsoft-authentication-library-for-go v1.4.2/go.mod h1:wP83P5OoQ5p6ip3ScPr0BAq0BvuPAvacpEuSzyouqAI= +github.com/AzureAD/microsoft-authentication-library-for-go v1.5.0 h1:XkkQbfMyuH2jTSjQjSoihryI8GINRcs4xp8lNawg0FI= +github.com/AzureAD/microsoft-authentication-library-for-go v1.5.0/go.mod h1:HKpQxkWaGLJ+D/5H8QRpyQXA1eKjxkFlOMwck5+33Jk= github.com/Code-Hex/go-generics-cache v1.5.1 h1:6vhZGc5M7Y/YD8cIUcY8kcuQLB4cHR7U+0KMqAA0KcU= github.com/Code-Hex/go-generics-cache v1.5.1/go.mod h1:qxcC9kRVrct9rHeiYpFWSoW1vxyillCVzX13KZG8dl4= github.com/DataDog/datadog-go v3.2.0+incompatible/go.mod h1:LButxg5PwREeZtORoXG3tL4fMGNddJ+vMq1mwgfaqoQ= @@ -45,9 +45,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.4.4 h1:mxMEkdYP3pjKSftxss4nUHfjBhnMk4imGoR96FRY2dg= -github.com/antchfx/xmlquery v1.4.4/go.mod h1:AEPEEPYE9GnA2mj5Ur2L5Q5/2PycJ0N9Fusrx9b12fc= -github.com/antchfx/xpath v1.3.3/go.mod h1:i54GszH55fYfBmoZXapTHN8T8tkcHfRgLyVwwqzXNcs= +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 h1:PqbXLC3TkfeZyakF5eeh3NTWEbYl4VHNVeufANzDbKQ= github.com/antchfx/xpath v1.3.5/go.mod h1:i54GszH55fYfBmoZXapTHN8T8tkcHfRgLyVwwqzXNcs= github.com/armon/circbuf v0.0.0-20150827004946-bbbad097214e/go.mod h1:3U/XgcO3hCbHZ8TKRvWD2dDTCfh9M9ya+I9JpbB7O8o= @@ -58,36 +57,38 @@ github.com/armon/go-radix v0.0.0-20180808171621-7fddfc383310/go.mod h1:ufUuZ+zHj github.com/armon/go-radix v1.0.0/go.mod h1:ufUuZ+zHj4x4TnLV4JWEpy2hxWSpsRywHrMgIH9cCH8= github.com/asaskevich/govalidator v0.0.0-20230301143203-a9d515a09cc2 h1:DklsrG3dyBCFEj5IhUbnKptjxatkF07cF2ak3yi77so= github.com/asaskevich/govalidator v0.0.0-20230301143203-a9d515a09cc2/go.mod h1:WaHUgvxTVq04UNunO+XhnAqY/wQc+bxr74GqbsZ/Jqw= -github.com/aws/aws-sdk-go-v2 v1.37.0 h1:YtCOESR/pN4j5oA7cVHSfOwIcuh/KwHC4DOSXFbv5F0= -github.com/aws/aws-sdk-go-v2 v1.37.0/go.mod h1:9Q0OoGQoboYIAJyslFyF1f5K1Ryddop8gqMhWx/n4Wg= -github.com/aws/aws-sdk-go-v2/config v1.29.14 h1:f+eEi/2cKCg9pqKBoAIwRGzVb70MRKqWX4dg1BDcSJM= -github.com/aws/aws-sdk-go-v2/config v1.29.14/go.mod h1:wVPHWcIFv3WO89w0rE10gzf17ZYy+UVS1Geq8Iei34g= -github.com/aws/aws-sdk-go-v2/credentials v1.17.67 h1:9KxtdcIA/5xPNQyZRgUSpYOE6j9Bc4+D7nZua0KGYOM= -github.com/aws/aws-sdk-go-v2/credentials v1.17.67/go.mod h1:p3C44m+cfnbv763s52gCqrjaqyPikj9Sg47kUVaNZQQ= -github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.16.30 h1:x793wxmUWVDhshP8WW2mlnXuFrO4cOd3HLBroh1paFw= -github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.16.30/go.mod h1:Jpne2tDnYiFascUEs2AWHJL9Yp7A5ZVy3TNyxaAjD6M= -github.com/aws/aws-sdk-go-v2/internal/configsources v1.4.0 h1:H2iZoqW/v2Jnrh1FnU725Bq6KJ0k2uP63yH+DcY+HUI= -github.com/aws/aws-sdk-go-v2/internal/configsources v1.4.0/go.mod h1:L0FqLbwMXHvNC/7crWV1iIxUlOKYZUE8KuTIA+TozAI= -github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.7.0 h1:EDped/rNzAhFPhVY0sDGbtD16OKqksfA8OjF/kLEgw8= -github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.7.0/go.mod h1:uUI335jvzpZRPpjYx6ODc/wg1qH+NnoSTK/FwVeK0C0= -github.com/aws/aws-sdk-go-v2/internal/ini v1.8.3 h1:bIqFDwgGXXN1Kpp99pDOdKMTTb5d2KyU5X/BZxjOkRo= -github.com/aws/aws-sdk-go-v2/internal/ini v1.8.3/go.mod h1:H5O/EsxDWyU+LP/V8i5sm8cxoZgc2fdNR9bxlOFrQTo= -github.com/aws/aws-sdk-go-v2/service/ec2 v1.237.0 h1:XHE2G+yaDQql32FZt19QmQt4WuisqQJIkMUSCxeCUl8= -github.com/aws/aws-sdk-go-v2/service/ec2 v1.237.0/go.mod h1:t11/j/nH9i6bbsPH9xc04BJOsV2nVPUqrB67/TLDsyM= -github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding v1.13.0 h1:6+lZi2JeGKtCraAj1rpoZfKqnQ9SptseRZioejfUOLM= -github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding v1.13.0/go.mod h1:eb3gfbVIxIoGgJsi9pGne19dhCBpK6opTYpQqAmdy44= -github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.13.0 h1:eRhU3Sh8dGbaniI6B+I48XJMrTPRkK4DKo+vqIxziOU= -github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.13.0/go.mod h1:paNLV18DZ6FnWE/bd06RIKPDIFpjuvCkGKWTG/GDBeM= -github.com/aws/aws-sdk-go-v2/service/lightsail v1.44.0 h1:QiiCqpKy0prxq+92uWfESzcb7/8Y9JAamcMOzVYLEoM= -github.com/aws/aws-sdk-go-v2/service/lightsail v1.44.0/go.mod h1:ESppxYqXQCpCY+KWl3BdkQjmsQX6zxKP39SnDtRDoU0= -github.com/aws/aws-sdk-go-v2/service/sso v1.25.3 h1:1Gw+9ajCV1jogloEv1RRnvfRFia2cL6c9cuKV2Ps+G8= -github.com/aws/aws-sdk-go-v2/service/sso v1.25.3/go.mod h1:qs4a9T5EMLl/Cajiw2TcbNt2UNo/Hqlyp+GiuG4CFDI= -github.com/aws/aws-sdk-go-v2/service/ssooidc v1.30.1 h1:hXmVKytPfTy5axZ+fYbR5d0cFmC3JvwLm5kM83luako= -github.com/aws/aws-sdk-go-v2/service/ssooidc v1.30.1/go.mod h1:MlYRNmYu/fGPoxBQVvBYr9nyr948aY/WLUvwBMBJubs= -github.com/aws/aws-sdk-go-v2/service/sts v1.33.19 h1:1XuUZ8mYJw9B6lzAkXhqHlJd/XvaX32evhproijJEZY= -github.com/aws/aws-sdk-go-v2/service/sts v1.33.19/go.mod h1:cQnB8CUnxbMU82JvlqjKR2HBOm3fe9pWorWBza6MBJ4= -github.com/aws/smithy-go v1.22.5 h1:P9ATCXPMb2mPjYBgueqJNCA5S9UfktsW0tTxi+a7eqw= -github.com/aws/smithy-go v1.22.5/go.mod h1:t1ufH5HMublsJYulve2RKmHDC15xu1f26kHCp/HgceI= +github.com/aws/aws-sdk-go-v2 v1.39.6 h1:2JrPCVgWJm7bm83BDwY5z8ietmeJUbh3O2ACnn+Xsqk= +github.com/aws/aws-sdk-go-v2 v1.39.6/go.mod h1:c9pm7VwuW0UPxAEYGyTmyurVcNrbF6Rt/wixFqDhcjE= +github.com/aws/aws-sdk-go-v2/config v1.31.17 h1:QFl8lL6RgakNK86vusim14P2k8BFSxjvUkcWLDjgz9Y= +github.com/aws/aws-sdk-go-v2/config v1.31.17/go.mod h1:V8P7ILjp/Uef/aX8TjGk6OHZN6IKPM5YW6S78QnRD5c= +github.com/aws/aws-sdk-go-v2/credentials v1.18.21 h1:56HGpsgnmD+2/KpG0ikvvR8+3v3COCwaF4r+oWwOeNA= +github.com/aws/aws-sdk-go-v2/credentials v1.18.21/go.mod h1:3YELwedmQbw7cXNaII2Wywd+YY58AmLPwX4LzARgmmA= +github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.18.13 h1:T1brd5dR3/fzNFAQch/iBKeX07/ffu/cLu+q+RuzEWk= +github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.18.13/go.mod h1:Peg/GBAQ6JDt+RoBf4meB1wylmAipb7Kg2ZFakZTlwk= +github.com/aws/aws-sdk-go-v2/internal/configsources v1.4.13 h1:a+8/MLcWlIxo1lF9xaGt3J/u3yOZx+CdSveSNwjhD40= +github.com/aws/aws-sdk-go-v2/internal/configsources v1.4.13/go.mod h1:oGnKwIYZ4XttyU2JWxFrwvhF6YKiK/9/wmE3v3Iu9K8= +github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.7.13 h1:HBSI2kDkMdWz4ZM7FjwE7e/pWDEZ+nR95x8Ztet1ooY= +github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.7.13/go.mod h1:YE94ZoDArI7awZqJzBAZ3PDD2zSfuP7w6P2knOzIn8M= +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.262.0 h1:5qBb1XV/D18qtCHd3bmmxoVglI+fZ4QWuS/EB8kIXYQ= +github.com/aws/aws-sdk-go-v2/service/ec2 v1.262.0/go.mod h1:NDdDLLW5PtLLXN661gKcvJvqAH5OBXsfhMlmKVu1/pY= +github.com/aws/aws-sdk-go-v2/service/ecs v1.67.2 h1:oeICOX/+D0XXV1aMYJPXVe3CO37zYr7fB6HFgxchleU= +github.com/aws/aws-sdk-go-v2/service/ecs v1.67.2/go.mod h1:rrhqfkXfa2DSNq0RyFhnnFEAyI+yJB4+2QlZKeJvMjs= +github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding v1.13.3 h1:x2Ibm/Af8Fi+BH+Hsn9TXGdT+hKbDd5XOTZxTMxDk7o= +github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding v1.13.3/go.mod h1:IW1jwyrQgMdhisceG8fQLmQIydcT/jWY21rFhzgaKwo= +github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.13.13 h1:kDqdFvMY4AtKoACfzIGD8A0+hbT41KTKF//gq7jITfM= +github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.13.13/go.mod h1:lmKuogqSU3HzQCwZ9ZtcqOc5XGMqtDK7OIc2+DxiUEg= +github.com/aws/aws-sdk-go-v2/service/lightsail v1.50.4 h1:/1o2AYwHJojUDeMvQNyJiKZwcWCc3e4kQuTXqRLuThc= +github.com/aws/aws-sdk-go-v2/service/lightsail v1.50.4/go.mod h1:Nn2xx6HojGuNMtUFxxz/nyNLSS+tHMRsMhe3+W3wB5k= +github.com/aws/aws-sdk-go-v2/service/sso v1.30.1 h1:0JPwLz1J+5lEOfy/g0SURC9cxhbQ1lIMHMa+AHZSzz0= +github.com/aws/aws-sdk-go-v2/service/sso v1.30.1/go.mod h1:fKvyjJcz63iL/ftA6RaM8sRCtN4r4zl4tjL3qw5ec7k= +github.com/aws/aws-sdk-go-v2/service/ssooidc v1.35.5 h1:OWs0/j2UYR5LOGi88sD5/lhN6TDLG6SfA7CqsQO9zF0= +github.com/aws/aws-sdk-go-v2/service/ssooidc v1.35.5/go.mod h1:klO+ejMvYsB4QATfEOIXk8WAEwN4N0aBfJpvC+5SZBo= +github.com/aws/aws-sdk-go-v2/service/sts v1.39.1 h1:mLlUgHn02ue8whiR4BmxxGJLR2gwU6s6ZzJ5wDamBUs= +github.com/aws/aws-sdk-go-v2/service/sts v1.39.1/go.mod h1:E19xDjpzPZC7LS2knI9E6BaRFDK43Eul7vd6rSq2HWk= +github.com/aws/smithy-go v1.23.2 h1:Crv0eatJUQhaManss33hS5r40CG3ZFH+21XSkqMrIUM= +github.com/aws/smithy-go v1.23.2/go.mod h1:LEj2LM3rBRQJxPZTB4KuzZkaZYnZPnvgIhb4pu07mx0= 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= @@ -104,8 +105,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/cncf/xds/go v0.0.0-20250501225837-2ac532fd4443 h1:aQ3y1lwWyqYPiWZThqv1aFbZMiM9vblcSArJRf2Irls= -github.com/cncf/xds/go v0.0.0-20250501225837-2ac532fd4443/go.mod h1:W+zGtBO5Y1IgJhy4+A9GOqVhqLpfZi+vwmdNXUehLA8= +github.com/cncf/xds/go v0.0.0-20251022180443-0feb69152e9f h1:Y8xYupdHxryycyPlc9Y+bSQAYZnetRJ70VMVKm5CKI0= +github.com/cncf/xds/go v0.0.0-20251022180443-0feb69152e9f/go.mod h1:HlzOvOjVBOfTGSRXRyY0OiCS/3J1akRGQQpRO/7zyF4= github.com/containerd/errdefs v1.0.0 h1:tg5yIfIlQIrxYtu9ajqY42W3lpS19XqdxRQeEwYG8PI= github.com/containerd/errdefs v1.0.0/go.mod h1:+YBYIdtsnF4Iw6nWZhJcqGSg/dwvV7tyJ/kCkyJ2k+M= github.com/containerd/errdefs/pkg v0.3.0 h1:9IKJ06FvyNlexW690DXuQNx2KA2cUJXx151Xdx3ZPPE= @@ -114,8 +115,8 @@ github.com/containerd/log v0.1.0 h1:TCJt7ioM2cr/tfR8GPbGf9/VRAX8D2B4PjzCpfX540I= github.com/containerd/log v0.1.0/go.mod h1:VRRf09a7mHDIRezVKTRCrOq78v577GXq3bSa3EhrzVo= github.com/containerd/platforms v0.2.1 h1:zvwtM3rz2YHPQsF2CHYM8+KtB5dvhISiXh5ZpSBQv6A= github.com/containerd/platforms v0.2.1/go.mod h1:XHCb+2/hzowdiut9rkudds9bE5yJ7npe7dG/wG+uFPw= -github.com/coreos/go-systemd/v22 v22.5.0 h1:RrqgGjYQKalulkV8NGVIfkXQf6YYmOyiJKk8iXXhfZs= -github.com/coreos/go-systemd/v22 v22.5.0/go.mod h1:Y58oyj3AT4RCenI/lSvhwexgC+NSVTIJ3seZv2GcEnc= +github.com/coreos/go-systemd/v22 v22.6.0 h1:aGVa/v8B7hpb0TKl0MWoAavPDmHvobFe5R5zn0bCJWo= +github.com/coreos/go-systemd/v22 v22.6.0/go.mod h1:iG+pp635Fo7ZmV/j14KUcmEyWF+0X7Lua8rrTWzYgWU= github.com/cpuguy83/dockercfg v0.3.2 h1:DlJTyZGBDlXqUZ2Dk2Q3xHs/FtnooJJVaad2S9GKorA= github.com/cpuguy83/dockercfg v0.3.2/go.mod h1:sugsbF4//dDlL/i+S+rtpIWp+5h0BHJHfjj5/jFyUJc= github.com/cpuguy83/go-md2man/v2 v2.0.6/go.mod h1:oOW0eioCTA6cOiMLiUPZOpcVxMig6NIQQ7OS05n1F4g= @@ -125,32 +126,30 @@ 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/dgryski/go-rendezvous v0.0.0-20200823014737-9f7001d12a5f h1:lO4WD4F/rVNCu3HqELle0jiPLLBs70cWOduZpkS1E78= -github.com/dgryski/go-rendezvous v0.0.0-20200823014737-9f7001d12a5f/go.mod h1:cuUVRXasLTGF7a8hSLbxyZXjz+1KgoB3wDUb6vlszIc= -github.com/digitalocean/godo v1.157.0 h1:ReELaS6FxXNf8gryUiVH0wmyUmZN8/NCmBX4gXd3F0o= -github.com/digitalocean/godo v1.157.0/go.mod h1:tYeiWY5ZXVpU48YaFv0M5irUFHXGorZpDNm7zzdWMzM= +github.com/digitalocean/godo v1.168.0 h1:mlORtUcPD91LQeJoznrH3XvfvgK3t8Wvrpph9giUT/Q= +github.com/digitalocean/godo v1.168.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.3.3+incompatible h1:Dypm25kh4rmk49v1eiVbsAtpAsYURjYkaKubwuBdxEI= -github.com/docker/docker v28.3.3+incompatible/go.mod h1:eEKB0N0r5NX/I1kEveEz05bcu8tLC/8azJZsviup8Sk= +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.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/ebitengine/purego v0.8.4 h1:CF7LEKg5FFOsASUj0+QwaXf8Ht6TlFxg09+S9wz0omw= -github.com/ebitengine/purego v0.8.4/go.mod h1:iIjxzd6CiRiOG0UyXP+V1+jWqUXVjPKLAI0mRfJZTmQ= +github.com/ebitengine/purego v0.9.1 h1:a/k2f2HQU3Pi399RPW1MOaZyhKJL9w/xFpKAg4q1s0A= +github.com/ebitengine/purego v0.9.1/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/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.1.0 h1:amRtLPjwkWtzDF/RKzcEPMvSsSseLDLW+bnhfNSLRe4= -github.com/elastic/lunes v0.1.0/go.mod h1:xGphYIt3XdZRtyWosHQTErsQTd4OP1p9wsbVoHelrd4= -github.com/emicklei/go-restful/v3 v3.11.0 h1:rAQeMHw1c7zTmncogyy8VvRZwtkmkZ4FxERmMY4rD+g= -github.com/emicklei/go-restful/v3 v3.11.0/go.mod h1:6n3XBCmQQb25CM2LCACGz8ukIrRry+4bhvbpWn3mrbc= -github.com/envoyproxy/go-control-plane/envoy v1.32.4 h1:jb83lalDRZSpPWW2Z7Mck/8kXZ5CQAFYVjQcdVIr83A= -github.com/envoyproxy/go-control-plane/envoy v1.32.4/go.mod h1:Gzjc5k8JcJswLjAx1Zm+wSYE20UrLtt7JZMWiWQXQEw= +github.com/elastic/lunes v0.2.0 h1:WI3bsdOTuaYXVe2DS1KbqA7u7FOHN4o8qJw80ZyZoQs= +github.com/elastic/lunes v0.2.0/go.mod h1:u3W/BdONWTrh0JjNZ21C907dDc+cUZttZrGa625nf2k= +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.35.0 h1:ixjkELDE+ru6idPxcHLj8LBVc2bFP7iBytj353BoHUo= +github.com/envoyproxy/go-control-plane/envoy v1.35.0/go.mod h1:09qwbGVuSWWAyN5t/b3iyVfz5+z8QWGrzkoqm/8SbEs= github.com/envoyproxy/protoc-gen-validate v1.2.1 h1:DEo3O99U8j4hBFwbJfrz9VtgcDfUKS7KJ7spH3d86P8= github.com/envoyproxy/protoc-gen-validate v1.2.1/go.mod h1:d/C80l/jxXLdfEIhX1W2TmLfsJ31lvEjwamM4DxlWXU= github.com/expr-lang/expr v1.17.6 h1:1h6i8ONk9cexhDmowO/A64VPxHScu7qfSl2k8OlINec= @@ -170,8 +169,8 @@ github.com/foxboron/swtpm_test v0.0.0-20230726224112-46aaafdf7006 h1:50sW4r0Pcvl github.com/foxboron/swtpm_test v0.0.0-20230726224112-46aaafdf7006/go.mod h1:eIXCMsMYCaqq9m1KSSxXwQG11krpuNPGP3k0uaWrbas= github.com/fsnotify/fsnotify v1.9.0 h1:2Ml+OJNzbYCTzsxtv8vKSFD9PbJjmhYF14k/jKC7S9k= github.com/fsnotify/fsnotify v1.9.0/go.mod h1:8jBTzvmWwFyi3Pb8djgCCO5IBqzKJ/Jwo8TRcHyHii0= -github.com/fxamacker/cbor/v2 v2.7.0 h1:iM5WgngdRBanHcxugY4JySA0nk1wZorNOpTgCMedv5E= -github.com/fxamacker/cbor/v2 v2.7.0/go.mod h1:pxXPTn3joSm21Gbwsv0w9OSA2y1HFR9qXEeXQVeNoDQ= +github.com/fxamacker/cbor/v2 v2.9.0 h1:NpKPmjDBgUfBms6tr6JZkTHtfFGcMKsw3eGcmD/sapM= +github.com/fxamacker/cbor/v2 v2.9.0/go.mod h1:vM4b+DJCtHn+zz7h3FFp/hDAI9WNWCsZj23V5ytsSxQ= github.com/go-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= @@ -189,8 +188,8 @@ github.com/go-ole/go-ole v1.2.6 h1:/Fpf6oFPoeFik9ty7siob0G6Ke8QvQEuVcuChpwXzpY= github.com/go-ole/go-ole v1.2.6/go.mod h1:pprOEPIfldk/42T2oK7lQ4v4JSDwmV0As9GaiUsvbm0= github.com/go-openapi/analysis v0.23.0 h1:aGday7OWupfMs+LbmLZG4k0MYXIANxcuBTYUC03zFCU= github.com/go-openapi/analysis v0.23.0/go.mod h1:9mz9ZWaSlV8TvjQHLl2mUW2PbZtemkE8yA5v22ohupo= -github.com/go-openapi/errors v0.22.0 h1:c4xY/OLxUBSTiepAg3j/MHuAv5mJhnf53LLMWFB+u/w= -github.com/go-openapi/errors v0.22.0/go.mod h1:J3DmZScxCDufmIMsdOuDHxJbdOGC0xtUynjIx092vXE= +github.com/go-openapi/errors v0.22.3 h1:k6Hxa5Jg1TUyZnOwV2Lh81j8ayNw5VVYLvKrp4zFKFs= +github.com/go-openapi/errors v0.22.3/go.mod h1:+WvbaBBULWCOna//9B9TbLNGSFOfF8lY9dw4hGiEiKQ= github.com/go-openapi/jsonpointer v0.21.0 h1:YgdVicSA9vH5RiHs9TZW5oyafXZFc6+2Vc1rr/O9oNQ= github.com/go-openapi/jsonpointer v0.21.0/go.mod h1:IUyH9l/+uyhIYQ/PXVA41Rexl+kOkAPDdXEYns6fzUY= github.com/go-openapi/jsonreference v0.21.0 h1:Rs+Y7hSXT83Jacb7kFyjn4ijOuVGSvOdF2+tg1TRrwQ= @@ -199,8 +198,8 @@ github.com/go-openapi/loads v0.22.0 h1:ECPGd4jX1U6NApCGG1We+uEozOAvXvJSF4nnwHZ8A github.com/go-openapi/loads v0.22.0/go.mod h1:yLsaTCS92mnSAZX5WWoxszLj0u+Ojl+Zs5Stn1oF+rs= github.com/go-openapi/spec v0.21.0 h1:LTVzPc3p/RzRnkQqLRndbAzjY0d0BCL72A6j3CdL9ZY= github.com/go-openapi/spec v0.21.0/go.mod h1:78u6VdPw81XU44qEWGhtr982gJ5BWg2c0I5XwVMotYk= -github.com/go-openapi/strfmt v0.23.0 h1:nlUS6BCqcnAk0pyhi9Y+kdDVZdZMHfEKQiS4HaMgO/c= -github.com/go-openapi/strfmt v0.23.0/go.mod h1:NrtIpfKtWIygRkKVsxh7XQMDQW5HKQl6S5ik2elW+K4= +github.com/go-openapi/strfmt v0.24.0 h1:dDsopqbI3wrrlIzeXRbqMihRNnjzGC+ez4NQaAAJLuc= +github.com/go-openapi/strfmt v0.24.0/go.mod h1:Lnn1Bk9rZjXxU9VMADbEEOo7D7CDyKGLsSKekhFr7s4= github.com/go-openapi/swag v0.23.0 h1:vsEVJDUo2hPJ2tu0/Xc+4noaxyEffXNIs3cOULZ+GrE= github.com/go-openapi/swag v0.23.0/go.mod h1:esZ8ITTYEsH1V2trKHjAN8Ai7xHb8RV+YSZ577vPjgQ= github.com/go-openapi/validate v0.24.0 h1:LdfDKwNbpB6Vn40xhTdNZAnfLECL81w+VX3BumrGD58= @@ -218,14 +217,13 @@ github.com/gobwas/glob v0.2.3 h1:A4xDbljILXROh+kObIiy5kIaPYD8e96x1tgBhUI5J+Y= github.com/gobwas/glob v0.2.3/go.mod h1:d3Ez4x06l9bZtSvzIay5+Yzi0fmZzPgnTbPcKjJAkT8= github.com/goccy/go-json v0.10.5 h1:Fq85nIqj+gXn/S5ahsiTlK3TmC85qgirsdTP/+DeaC4= github.com/goccy/go-json v0.10.5/go.mod h1:oq7eo15ShAhp70Anwd5lgX2pLfOS3QCiwU/PULtXL6M= -github.com/goccy/go-yaml v1.18.0 h1:8W7wMFS12Pcas7KU+VVkaiCng+kG8QiFeFwzFb+rwuw= -github.com/goccy/go-yaml v1.18.0/go.mod h1:XBurs7gK8ATbW4ZPGKgcbrY1Br56PdM69F7LkFRi1kA= -github.com/godbus/dbus/v5 v5.0.4/go.mod h1:xhWf0FNVPg57R7Z0UbKHbJfkEywrmjJnf7w5xrFpKfA= +github.com/goccy/go-yaml v1.19.0 h1:EmkZ9RIsX+Uq4DYFowegAuJo8+xdX3T/2dwNPXbxEYE= +github.com/goccy/go-yaml v1.19.0/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.2.2 h1:Rl4B7itRWVtYIHFrSNd7vhTiz9UpLdi6gZhZ3wEeDy8= -github.com/golang-jwt/jwt/v5 v5.2.2/go.mod h1:pqrtFR0X4osieyHYxtmOUWsAWrfe1Q5UVIyoH402zdk= +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/groupcache v0.0.0-20210331224755-41bb18bfe9da h1:oI5xCqsCo564l8iNU+DwB5epxmsaqB+rhGL0m5jtYqE= github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= github.com/golang/protobuf v1.2.0/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= @@ -236,51 +234,48 @@ github.com/golang/protobuf v1.5.4/go.mod h1:lnTiLA8Wa4RWRcIUkrtSVa5nRhsEGBg48fD6 github.com/golang/snappy v1.0.0 h1:Oy607GVXHs7RtbggtPBnr2RmDArIsAefDwvrdWvRhGs= github.com/golang/snappy v1.0.0/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q= github.com/google/btree v0.0.0-20180813153112-4030bb1f1f0c/go.mod h1:lNA+9X1NB3Zf8V7Ke586lFgjr2dZNuvo3lPJSGZ5JPQ= -github.com/google/btree v1.0.1 h1:gK4Kx5IaGY9CD5sPJ36FHiBJ6ZXl0kilRiiCj+jdYp4= -github.com/google/btree v1.0.1/go.mod h1:xXMiIv4Fb/0kKde4SpL7qlzvu5cMJDRkFDxJfI9uaxA= -github.com/google/gnostic-models v0.6.8 h1:yo/ABAfM5IMRsS1VnXjTBvUb61tFIHozhlYvRgGre9I= -github.com/google/gnostic-models v0.6.8/go.mod h1:5n7qKqH0f5wFt+aWF8CW6pZLLNOfYuF5OpfBSENuI8U= +github.com/google/btree v1.1.3 h1:CVpQJjYgC4VbzxeGVHfvZrv1ctoYCAI8vbl07Fcxlyg= +github.com/google/btree v1.1.3/go.mod h1:qOPhT0dTNdNzV6Z/lhRX0YXUafgPLFUh+gZMl761Gm4= +github.com/google/gnostic-models v0.7.0 h1:qwTtogB15McXDaNqTZdzPJRHvaVJlAl+HVQnLmJEJxo= +github.com/google/gnostic-models v0.7.0/go.mod h1:whL5G0m6dmc5cPxKc5bdKdEN3UjI7OUGxBlw57miDrQ= github.com/google/go-cmp v0.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.5.6/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= -github.com/google/go-cmp v0.5.9/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY= 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-tpm v0.9.6 h1:Ku42PT4LmjDu1H5C5ISWLlpI1mj+Zq7sPGKoRw2XROA= -github.com/google/go-tpm v0.9.6/go.mod h1:h9jEsEECg7gtLis0upRBQU+GhYVH6jMjrFxI8u6bVUY= +github.com/google/go-tpm v0.9.7 h1:u89J4tUUeDTlH8xxC3CTW7OHZjbjKoHdQ9W7gCUhtxA= +github.com/google/go-tpm v0.9.7/go.mod h1:h9jEsEECg7gtLis0upRBQU+GhYVH6jMjrFxI8u6bVUY= github.com/google/go-tpm-tools v0.4.4 h1:oiQfAIkc6xTy9Fl5NKTeTJkBTlXdHsxAofmQyxBKY98= github.com/google/go-tpm-tools v0.4.4/go.mod h1:T8jXkp2s+eltnCDIsXR84/MTcVU9Ja7bh3Mit0pa4AY= 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-20250607225305-033d6d78b36a h1://KbezygeMJZCSHH+HgUZiTeSoiuFspbMg1ge+eFj18= -github.com/google/pprof v0.0.0-20250607225305-033d6d78b36a/go.mod h1:5hDyRhoBCxViHszMt12TnOpEI4VVi+U8Gm9iphldiMA= +github.com/google/pprof v0.0.0-20250923004556-9e5a51aed1e8 h1:ZI8gCoCjGzPsum4L21jHdQs8shFBIQih1TM9Rd/c+EQ= +github.com/google/pprof v0.0.0-20250923004556-9e5a51aed1e8/go.mod h1:I6V7YzU0XDpsHqbsyrghnFZLO1gwK6NPTNvmetQIk9U= 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.6 h1:GW/XbdyBFQ8Qe+YAmFU9uHLo7OnF5tL52HFAgMmyrf4= github.com/googleapis/enterprise-certificate-proxy v0.3.6/go.mod h1:MkHOF77EYAE7qfSuSS9PU6g4Nt4e11cnsDUowfwewLA= -github.com/googleapis/gax-go/v2 v2.14.2 h1:eBLnkZ9635krYIPD+ag1USrOAI0Nr0QYF3+/3GqO0k0= -github.com/googleapis/gax-go/v2 v2.14.2/go.mod h1:ON64QhlJkhVtSqp4v1uaK92VyZ2gmvDQsweuyLV+8+w= -github.com/gophercloud/gophercloud/v2 v2.7.0 h1:o0m4kgVcPgHlcXiWAjoVxGd8QCmvM5VU+YM71pFbn0E= -github.com/gophercloud/gophercloud/v2 v2.7.0/go.mod h1:Ki/ILhYZr/5EPebrPL9Ej+tUg4lqx71/YH2JWVeU+Qk= -github.com/gorilla/websocket v1.5.0 h1:PPwGk2jz7EePpoHN/+ClbZu8SPxiqlu12wZP/3sWmnc= -github.com/gorilla/websocket v1.5.0/go.mod h1:YR8l580nyteQvAITg2hZ9XVh4b55+EU/adAjf1fMHhE= -github.com/grafana/regexp v0.0.0-20240518133315-a468a5bfb3bc h1:GN2Lv3MGO7AS6PrRoT6yV5+wkrOpcszoIsO4+4ds248= -github.com/grafana/regexp v0.0.0-20240518133315-a468a5bfb3bc/go.mod h1:+JKpmjMGhpgPL+rXZ5nsZieVzvarn86asRlBg4uNGnk= -github.com/grpc-ecosystem/grpc-gateway/v2 v2.27.1 h1:X5VWvz21y3gzm9Nw/kaUeku/1+uBhcekkmy4IkffJww= -github.com/grpc-ecosystem/grpc-gateway/v2 v2.27.1/go.mod h1:Zanoh4+gvIgluNqcfMVTJueD4wSS5hT7zTt4Mrutd90= +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.8.0 h1:of2+8tT6+FbEYHfYC8GBu8TXJNsXYSNm9KuvpX7Neqo= +github.com/gophercloud/gophercloud/v2 v2.8.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= +github.com/grafana/regexp v0.0.0-20250905093917-f7b3be9d1853/go.mod h1:+JKpmjMGhpgPL+rXZ5nsZieVzvarn86asRlBg4uNGnk= +github.com/grpc-ecosystem/grpc-gateway/v2 v2.27.2 h1:8Tjv8EJ+pM1xP8mK6egEbD1OgnVTyacbefKhmbLhIhU= +github.com/grpc-ecosystem/grpc-gateway/v2 v2.27.2/go.mod h1:pkJQ2tZHJ0aFOVEEot6oZmaVEZcRme73eIFmhiVuRWs= github.com/hashicorp/consul/api v1.32.0 h1:5wp5u780Gri7c4OedGEPzmlUEzi0g2KyiPphSr6zjVg= github.com/hashicorp/consul/api v1.32.0/go.mod h1:Z8YgY0eVPukT/17ejW+l+C7zJmKwgPHtjU1q16v/Y40= github.com/hashicorp/consul/sdk v0.16.1 h1:V8TxTnImoPD5cj0U9Spl0TUxcytjcbbJeADFF07KdHg= github.com/hashicorp/consul/sdk v0.16.1/go.mod h1:fSXvwxB2hmh1FMZCNl6PwX0Q/1wdWtHJcZ7Ea5tns0s= -github.com/hashicorp/cronexpr v1.1.2 h1:wG/ZYIKT+RT3QkOdgYc+xsKWVRgnxJ1OJtjjy84fJ9A= -github.com/hashicorp/cronexpr v1.1.2/go.mod h1:P4wA0KBl9C5q2hABiMO7cp6jcIg96CDh1Efb3g1PWA4= +github.com/hashicorp/cronexpr v1.1.3 h1:rl5IkxXN2m681EfivTlccqIryzYJSXRGRNa0xeG7NA4= +github.com/hashicorp/cronexpr v1.1.3/go.mod h1:P4wA0KBl9C5q2hABiMO7cp6jcIg96CDh1Efb3g1PWA4= github.com/hashicorp/errwrap v1.0.0/go.mod h1:YH+1FKiLXxHSkmPseP+kNlulaMuP3n2brvKWEqk/Jc4= github.com/hashicorp/errwrap v1.1.0 h1:OxrOeh75EUXMY8TBjag2fzXGZ40LB6IKw45YeGUDY2I= github.com/hashicorp/errwrap v1.1.0/go.mod h1:YH+1FKiLXxHSkmPseP+kNlulaMuP3n2brvKWEqk/Jc4= @@ -314,8 +309,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.7.0 h1:5tqGy27NaOTB8yJKUZELlFAS/LTKJkrmONwQKeRZfjY= -github.com/hashicorp/go-version v1.7.0/go.mod h1:fltr4n8CU8Ke44wwGCBoEymUuxUHl09ZGVZPK5anwXA= +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/golang-lru v0.5.0/go.mod h1:/m3WP610KZHVQ1SGc6re/UDhFvYD7pJ4Ao+sR/qLZy8= github.com/hashicorp/golang-lru v0.5.4/go.mod h1:iADmTwqILo4mZ8BN3D2Q6+9jd8WM5uGBxy+E8yxSoD4= github.com/hashicorp/golang-lru v1.0.2 h1:dV3g9Z/unq5DpblPpw+Oqcv4dU/1omnb4Ok8iPY6p1c= @@ -327,12 +322,12 @@ 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.1 h1:mk5dRuzeDNis2bi6LLoQIXfMH7JQvAzt3mQD0vNZZUo= github.com/hashicorp/memberlist v0.5.1/go.mod h1:zGDXV6AqbDTKTM6yxW0I4+JtFzZAJVoIPvss4hV8F24= -github.com/hashicorp/nomad/api v0.0.0-20241218080744-e3ac00f30eec h1:+YBzb977VrmffaCX/OBm17dEVJUcWn5dW+eqs3aIJ/A= -github.com/hashicorp/nomad/api v0.0.0-20241218080744-e3ac00f30eec/go.mod h1:svtxn6QnrQ69P23VvIWMR34tg3vmwLz4UdUzm1dSCgE= +github.com/hashicorp/nomad/api v0.0.0-20250930071859-eaa0fe0e27af h1:ScAYf8O+9xTqTJPZH8MIlUfO+ak8cb31rW1aYJgS+jE= +github.com/hashicorp/nomad/api v0.0.0-20250930071859-eaa0fe0e27af/go.mod h1:sldFTIgs+FsUeKU3LwVjviAIuksxD8TzDOn02MYwslE= 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.21.1 h1:IH3liW8/cCRjfJ4cyqYvw3s1ek+KWP8dl1roa0lD8JM= -github.com/hetznercloud/hcloud-go/v2 v2.21.1/go.mod h1:XOaYycZJ3XKMVWzmqQ24/+1V7ormJHmPdck/kxrNnQA= +github.com/hetznercloud/hcloud-go/v2 v2.29.0 h1:LzNFw5XLBfftyu3WM1sdSLjOZBlWORtz2hgGydHaYV8= +github.com/hetznercloud/hcloud-go/v2 v2.29.0/go.mod h1:XBU4+EDH2KVqu2KU7Ws0+ciZcX4ygukQl/J0L5GS8P8= github.com/hexops/gotextdiff v1.0.3 h1:gitA9+qJrrTCsiCl7+kh75nPqQt1cx4ZkudSTLoUqJM= github.com/hexops/gotextdiff v1.0.3/go.mod h1:pSWU5MAI3yDq+fZBTazCSJysOMbxWL1BSow5/V2vxeg= github.com/iancoleman/strcase v0.3.0 h1:nTXanmYxhfFAMjZL34Ov6gkzEsSJZ5DbhxWjvSASxEI= @@ -341,8 +336,8 @@ github.com/inconshreveable/mousetrap v1.1.0 h1:wN+x4NVGpMsO7ErUn/mUI3vEoE6Jt13X2 github.com/inconshreveable/mousetrap v1.1.0/go.mod h1:vpF70FUmC8bwa3OWnCshd2FqLfsEA9PFc4w1p2J65bw= github.com/ionos-cloud/sdk-go/v6 v6.3.4 h1:jTvGl4LOF8v8OYoEIBNVwbFoqSGAFqn6vGE7sp7/BqQ= github.com/ionos-cloud/sdk-go/v6 v6.3.4/go.mod h1:wCVwNJ/21W29FWFUv+fNawOTMlFoP1dS3L+ZuztFW48= -github.com/jarcoal/httpmock v1.4.0 h1:BvhqnH0JAYbNudL2GMJKgOHe2CtKlzJ/5rWKyp+hc2k= -github.com/jarcoal/httpmock v1.4.0/go.mod h1:ftW1xULwo+j0R0JJkJIIi7UKigZUXCLLanykgjwBXL0= +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/josharian/intern v1.0.0 h1:vlS4z54oSdjm0bgjRigI+G1HpF+tI+9rE5LLzOg8HmY= github.com/josharian/intern v1.0.0/go.mod h1:5DoeVV0s6jJacbCEi61lwdGj/aVlrQvzHFFd8Hwg//Y= github.com/jpillora/backoff v1.0.0 h1:uvFg412JmmHBHw7iwprIxkPMI+sGQ4kzOWsMeHnm2EA= @@ -358,8 +353,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.0 h1:c/Cqfb0r+Yi+JtIEq73FWXVkRonBlf0CRNYc8Zttxdo= -github.com/klauspost/compress v1.18.0/go.mod h1:2Pp+KzxcywXVXMr50+X0Q/Lsb43OQHYWRCY2AiWywWQ= +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 h1:lgaqFMSdTdQYdZ04uHyN2d/eKdOMyi2YLSvlQIBFYa4= +github.com/klauspost/cpuid/v2 v2.0.9/go.mod h1:FInQzS24/EEf25PyTYn52gqo7WaD8xa0213Md/qVLRg= 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= @@ -379,8 +376,8 @@ github.com/kr/text v0.2.0 h1:5Nx0Ya0ZqY2ygV366QzturHI13Jq95ApcVaJBhpS+AY= github.com/kr/text v0.2.0/go.mod h1:eLer722TekiGuMkidMxC/pM04lWEeraHUUmBw8l2grE= github.com/kylelemons/godebug v1.1.0 h1:RPNrshWIDI6G2gRW9EHilWtl7Z6Sb1BR0xunSBf0SNc= github.com/kylelemons/godebug v1.1.0/go.mod h1:9/0rRGxNHcop5bhtWyNeEfOS8JIWk580+fNqagV/RAw= -github.com/linode/linodego v1.52.2 h1:N9ozU27To1LMSrDd8WvJZ5STSz1eGYdyLnxhAR/dIZg= -github.com/linode/linodego v1.52.2/go.mod h1:bI949fZaVchjWyKIA08hNyvAcV6BAS+PM2op3p7PAWA= +github.com/linode/linodego v1.60.0 h1:SgsebJFRCi+lSmYy+C40wmKZeJllGGm+W12Qw4+yVdI= +github.com/linode/linodego v1.60.0/go.mod h1:1+Bt0oTz5rBnDOJbGhccxn7LYVytXTIIfAy7QYmijDs= github.com/lufia/plan9stats v0.0.0-20211012122336-39d0f177ccd0 h1:6E+4a0GO5zZEnZ81pIr0yLvtUWk2if982qA3F3QD6H4= github.com/lufia/plan9stats v0.0.0-20211012122336-39d0f177ccd0/go.mod h1:zJYVVT2jmtg6P3p1VtQj7WsuWi/y4VnjVBn7F8KPB3I= github.com/magefile/mage v1.15.0 h1:BvGheCMAsG3bWUDbZ8AyXXpCNwU9u5CB6sM+HNb9HYg= @@ -413,15 +410,13 @@ github.com/mdlayher/vsock v1.2.1 h1:pC1mTJTvjo1r9n9fbm7S1j04rCgCzhCOS5DY0zqHlnQ= github.com/mdlayher/vsock v1.2.1/go.mod h1:NRfCibel++DgeMD8z/hP+PPTjlNJsdPOmxcnENvE+SE= 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.66 h1:FeZXOS3VCVsKnEAd+wBkjMC3D2K+ww66Cq3VnCINuJE= -github.com/miekg/dns v1.1.66/go.mod h1:jGFzBsSNbJw6z1HYut1RKBKHA9PBdxeHrZG8J+gC2WE= +github.com/miekg/dns v1.1.68 h1:jsSRkNozw7G/mnmXULynzMNIsgY2dHC8LO6U6Ij2JEA= +github.com/miekg/dns v1.1.68/go.mod h1:fujopn7TB3Pu3JM69XaawiU0wqjpL9/8xGop5UrTPps= github.com/mitchellh/cli v1.1.0/go.mod h1:xcISNoH86gajksDmfB23e/pu+B+GeFRMYmoHXxx3xhI= github.com/mitchellh/copystructure v1.2.0 h1:vpKXTN4ewci03Vljg/q9QvCGUDttBOGBIa15WveJJGw= github.com/mitchellh/copystructure v1.2.0/go.mod h1:qLl+cE2AmVv+CoeAwDPye/v+N2HKCj9FbZEVFJRxO9s= github.com/mitchellh/go-homedir v1.1.0 h1:lukF9ziXFxDFPkA1vsr5zpc1XuPDn/wFntq5mG+4E0Y= github.com/mitchellh/go-homedir v1.1.0/go.mod h1:SfyaCUpYCn1Vlf4IUYiD9fPX4A5wJrkLzIz1N1q0pr0= -github.com/mitchellh/go-testing-interface v1.14.1 h1:jrgshOhYAUVNMAJiKbEu7EqAwgJJ2JqpQmpLJOu07cU= -github.com/mitchellh/go-testing-interface v1.14.1/go.mod h1:gfgS7OtZj6MA4U1UrDRp04twqAjfvlZyCfX3sDjEym8= github.com/mitchellh/mapstructure v0.0.0-20160808181253-ca63d7c062ee/go.mod h1:FVVH3fgwuzCH5S8UJGiWEs2h04kUh9fWfEaFds41c1Y= github.com/mitchellh/mapstructure v1.5.1-0.20231216201459-8508981c8b6c h1:cqn374mizHuIWj+OSJCajGr/phAmuMug9qIX3l9CflE= github.com/mitchellh/mapstructure v1.5.1-0.20231216201459-8508981c8b6c/go.mod h1:bFUtVrKA4DC2yAKiSyO/QUcy7e+RRV2QTWOzhPopBRo= @@ -468,38 +463,38 @@ github.com/onsi/ginkgo/v2 v2.21.0 h1:7rg/4f3rB88pb5obDgNZrNHrQ4e6WpjonchcpuBRnZM github.com/onsi/ginkgo/v2 v2.21.0/go.mod h1:7Du3c42kxCUegi0IImZ1wUQzMBVecgIHjR1C+NkhLQo= github.com/onsi/gomega v1.35.1 h1:Cwbd75ZBPxFSuZ6T+rN/WCb/gOc6YgFBXLlZLhC7Ds4= github.com/onsi/gomega v1.35.1/go.mod h1:PvZbdDc8J6XJEpDK4HCuRBm8a6Fzp9/DmhC9C7yFlog= -github.com/open-telemetry/opentelemetry-collector-contrib/exporter/prometheusexporter v0.136.0 h1:pVhDE2Ju3y5kojjRJ0qElBKrfhICXFzMzwcIA2rwerc= -github.com/open-telemetry/opentelemetry-collector-contrib/exporter/prometheusexporter v0.136.0/go.mod h1:978Wrtzu0OJbrfW6rpuBLfvl671rKqcjV3/Y0sOC8Fs= -github.com/open-telemetry/opentelemetry-collector-contrib/exporter/prometheusremotewriteexporter v0.136.0 h1:jgNOzBqIkRvh5jTEaWjwtqbgP2DIYdjb3JgcVu3Hg2s= -github.com/open-telemetry/opentelemetry-collector-contrib/exporter/prometheusremotewriteexporter v0.136.0/go.mod h1:ND2gE9ky7XdVCPvJL/uH3Upzdq2Wp1+HZZDNLDh++Tc= -github.com/open-telemetry/opentelemetry-collector-contrib/internal/common v0.136.0 h1:ofSNZonHS44OCPgi/rPoNkNxC1v8nHxPNWa5TAtK6Cs= -github.com/open-telemetry/opentelemetry-collector-contrib/internal/common v0.136.0/go.mod h1:Loh7TRQEfeJ+N3KvPBjIE+7ewhtKtk58ac5B/eEcXhE= -github.com/open-telemetry/opentelemetry-collector-contrib/internal/coreinternal v0.136.0 h1:iw305OKkyu6xYgHA/zV4HvEpU6w9fzg5COEh5bMhor4= -github.com/open-telemetry/opentelemetry-collector-contrib/internal/coreinternal v0.136.0/go.mod h1:LqKBsP+TSqiaMlOv9lQ731roP0JTjCUekw0rcm0sghE= -github.com/open-telemetry/opentelemetry-collector-contrib/internal/exp/metrics v0.136.0 h1:OuR81KyWJaEXOoPT/qa9B8RJsUEPyniZwJwANPPdEvk= -github.com/open-telemetry/opentelemetry-collector-contrib/internal/exp/metrics v0.136.0/go.mod h1:rHQxv7q4gR8ZKk6rzPhXsjlXDY3o54SC6stTpgYw8q8= -github.com/open-telemetry/opentelemetry-collector-contrib/internal/filter v0.136.0 h1:mKELU5kjXPclcITDvCwy7xZ9za6J7sCIiVj2DlEMqng= -github.com/open-telemetry/opentelemetry-collector-contrib/internal/filter v0.136.0/go.mod h1:ZCfcimdENbhW1A/ubn6KHgVn2PRoeZ3DDy0vrH4uvGA= -github.com/open-telemetry/opentelemetry-collector-contrib/pkg/golden v0.136.0 h1:QUOaiK3ur0645Ivt/sbIHZpmPEWBj0Gbv05Q4mRgBCE= -github.com/open-telemetry/opentelemetry-collector-contrib/pkg/golden v0.136.0/go.mod h1:Vhkv+ColKVM57X6VXnrwQN22XvvZZ052pA5ghpQPH2Y= -github.com/open-telemetry/opentelemetry-collector-contrib/pkg/ottl v0.136.0 h1:EYLhEj1o8j/FhMPm3zMY+PsSsMPGCV6HK/9owsVhOQw= -github.com/open-telemetry/opentelemetry-collector-contrib/pkg/ottl v0.136.0/go.mod h1:8MyCN0t5LHRe6Y1nOhpZkUBl7FPGJY8gQZaUHOQClUU= -github.com/open-telemetry/opentelemetry-collector-contrib/pkg/pdatatest v0.136.0 h1:lDLdXA9WIvFCK4P6dFdsYJSDDNgaacj+afw7dOBIel8= -github.com/open-telemetry/opentelemetry-collector-contrib/pkg/pdatatest v0.136.0/go.mod h1:q15PuRASnJ6doVHWTt6ug2VvB0rSeUf39CjqKKVqFlU= -github.com/open-telemetry/opentelemetry-collector-contrib/pkg/pdatautil v0.136.0 h1:gp2AYLP2yL5O0RTiKpyORvxqjSEypMSH/6laB5bh0l4= -github.com/open-telemetry/opentelemetry-collector-contrib/pkg/pdatautil v0.136.0/go.mod h1:5mPPRoLAp4uhg7tV+OLR+HmHyYtALSGZ0oMVHgMAfL8= -github.com/open-telemetry/opentelemetry-collector-contrib/pkg/resourcetotelemetry v0.136.0 h1:GqXklBwfz5soY4wRzYrMTljPOSgGwtGZUFeJ377v2CU= -github.com/open-telemetry/opentelemetry-collector-contrib/pkg/resourcetotelemetry v0.136.0/go.mod h1:t7VtqzYX3cQXcELIaoYzAAQ4fMVzMJxYP6eQmi5FFWI= -github.com/open-telemetry/opentelemetry-collector-contrib/pkg/translator/prometheus v0.136.0 h1:u8SJhb+BmHukyg0DszoYMpsBLJ0ZUuRjKqLOcjnczhE= -github.com/open-telemetry/opentelemetry-collector-contrib/pkg/translator/prometheus v0.136.0/go.mod h1:HIPCM9JaZ31QUfkEUJY7SYdmfH3zWuhcNt0PoOlBWKE= -github.com/open-telemetry/opentelemetry-collector-contrib/pkg/translator/prometheusremotewrite v0.136.0 h1:7mLIozG1dsFkT4bN9AjY24RsESWddOAxwcMLsGcVdkU= -github.com/open-telemetry/opentelemetry-collector-contrib/pkg/translator/prometheusremotewrite v0.136.0/go.mod h1:ZsTpEnxDR6VFCnx6o2vBW1bSd7kJwjEgTjdgp0/Fbmw= -github.com/open-telemetry/opentelemetry-collector-contrib/processor/deltatocumulativeprocessor v0.136.0 h1:3m1GQBFf8xRXjozuuyJD97122Rh81KiSR4HAMaN4Xfk= -github.com/open-telemetry/opentelemetry-collector-contrib/processor/deltatocumulativeprocessor v0.136.0/go.mod h1:5LdAGh7nkcym4+EzmzCDNK9Qdp7mL1TPzzQpdPEJtds= -github.com/open-telemetry/opentelemetry-collector-contrib/processor/filterprocessor v0.136.0 h1:Z+pxuXaNWM34xoS5ktUHkI55uBDBrA3D6XZU3vDCQFA= -github.com/open-telemetry/opentelemetry-collector-contrib/processor/filterprocessor v0.136.0/go.mod h1:nMaiQG/zpgLmKqIDitLUZNMM9JGbHu75udMeEQ96Zc4= -github.com/open-telemetry/opentelemetry-collector-contrib/processor/resourceprocessor v0.136.0 h1:GHAl/v04NITgEg4PB/eJELVVMKcL/JJ6rnwmFWOMvEU= -github.com/open-telemetry/opentelemetry-collector-contrib/processor/resourceprocessor v0.136.0/go.mod h1:/F1/oNY6fOPsS7z73MWCn6dIeA0oQiCMtlP3EqBAuK0= +github.com/open-telemetry/opentelemetry-collector-contrib/exporter/prometheusexporter v0.142.0 h1:xOLDVjNd6psVtXPukDaplTdurhEO3Mcs782v6v7T5Co= +github.com/open-telemetry/opentelemetry-collector-contrib/exporter/prometheusexporter v0.142.0/go.mod h1:gZP+QFBEa+43Np6/QQzL0rWfB53zpzzY9V/DyMVNm8g= +github.com/open-telemetry/opentelemetry-collector-contrib/exporter/prometheusremotewriteexporter v0.142.0 h1:/T6fRgyEL7oVPICdAxxS95WZoXIs1UT5d7zh+Zx7nfc= +github.com/open-telemetry/opentelemetry-collector-contrib/exporter/prometheusremotewriteexporter v0.142.0/go.mod h1:1sMRncHXhSR+oH62WhjSkE1xFBqlqdpg6ljqydCXZ7w= +github.com/open-telemetry/opentelemetry-collector-contrib/internal/common v0.142.0 h1:fC1yPxjl8bwbKaCXMw49E2xPNBTD5BcPAXvLxwonLVs= +github.com/open-telemetry/opentelemetry-collector-contrib/internal/common v0.142.0/go.mod h1:jg0mIqL3FJEGt53DZNx2jTeklKRjVfV4rgb2LEojNM8= +github.com/open-telemetry/opentelemetry-collector-contrib/internal/coreinternal v0.142.0 h1:opPgnpecX14LQ+5FQPjnh3J4kE5BL+0YYyG6I9HTUTI= +github.com/open-telemetry/opentelemetry-collector-contrib/internal/coreinternal v0.142.0/go.mod h1:CQ0QNfzurkpqCDtbDpXYJoDa3/RvmNfQc8NPtkmwV0Y= +github.com/open-telemetry/opentelemetry-collector-contrib/internal/exp/metrics v0.142.0 h1:agYk41V3eIfV6aIMxIeRQ7SFhfaW5k2O96HEebpmPwM= +github.com/open-telemetry/opentelemetry-collector-contrib/internal/exp/metrics v0.142.0/go.mod h1:ZmMdcBia20ih8NYia5b4dNhfNLT68xHgaqF+fNW+TLM= +github.com/open-telemetry/opentelemetry-collector-contrib/internal/filter v0.142.0 h1:fAl09gr9B7LyZBvhBVsvNYMdm8sofMT4lgb3MHjfuRM= +github.com/open-telemetry/opentelemetry-collector-contrib/internal/filter v0.142.0/go.mod h1:TL+PKrQbFZw9z5N/2egn0bV/UmOFWUnKq4m9Vh86IoM= +github.com/open-telemetry/opentelemetry-collector-contrib/pkg/golden v0.142.0 h1:N5J6TArF3DZr8xibVA3vht5onHGjevWYc1mhBi3kmBI= +github.com/open-telemetry/opentelemetry-collector-contrib/pkg/golden v0.142.0/go.mod h1:zNkIEuXEi5nOcKE2RUbWwFcGZ+S7eHhsVf0kG+KB6O4= +github.com/open-telemetry/opentelemetry-collector-contrib/pkg/ottl v0.142.0 h1:+ECJBHPtMabbUgv1UhtALEbFeVLT5TMky3GNppGbJVc= +github.com/open-telemetry/opentelemetry-collector-contrib/pkg/ottl v0.142.0/go.mod h1:CQAv2XJaKey12eJm8Vlj/07+p89+cdgwhBMds6VW6GM= +github.com/open-telemetry/opentelemetry-collector-contrib/pkg/pdatatest v0.142.0 h1:yVQdTECRBDF31YbIS3B2KI1fQLP+COgSnexg6SQlHxM= +github.com/open-telemetry/opentelemetry-collector-contrib/pkg/pdatatest v0.142.0/go.mod h1:Wu/4rn2sFzW3u3DyHrkrq3l+A98hvjJ3Yt8cyZo8lBM= +github.com/open-telemetry/opentelemetry-collector-contrib/pkg/pdatautil v0.142.0 h1:bLp+Ii1UQ9cNr+Dm1jKzbcklhd0eBnPuIFQY6NPzkZ0= +github.com/open-telemetry/opentelemetry-collector-contrib/pkg/pdatautil v0.142.0/go.mod h1:6N36UrFd9Yiz2aYpXM5xiK7Eqp2RyAr3O8lUE+wK2Y8= +github.com/open-telemetry/opentelemetry-collector-contrib/pkg/resourcetotelemetry v0.142.0 h1:67xG97ED3JHXlPsjVUOiH8u3U5LBXPU4vKgPkgzYGm4= +github.com/open-telemetry/opentelemetry-collector-contrib/pkg/resourcetotelemetry v0.142.0/go.mod h1:kS1cJS2m9ECyrRmEDlhN0nQM+QuUovHRYTF6sUPvb1U= +github.com/open-telemetry/opentelemetry-collector-contrib/pkg/translator/prometheus v0.142.0 h1:lRM1vdTLNlf5zdzcyVnBvT+BQudM75W+eFpA6PJKjk0= +github.com/open-telemetry/opentelemetry-collector-contrib/pkg/translator/prometheus v0.142.0/go.mod h1:KkTsTXx2Da0ejZkh3ldivRJlw2dljQbf8NIHxYWRQSo= +github.com/open-telemetry/opentelemetry-collector-contrib/pkg/translator/prometheusremotewrite v0.142.0 h1:bRAZfr1JqTVg4zA8fWfGtzoc+fIeWuVSCPGNXgTPqvg= +github.com/open-telemetry/opentelemetry-collector-contrib/pkg/translator/prometheusremotewrite v0.142.0/go.mod h1:vqrxUspQ5sYFuy8ccbX7PXVe64AEXJV9oh9mtTagPHE= +github.com/open-telemetry/opentelemetry-collector-contrib/processor/deltatocumulativeprocessor v0.142.0 h1:fL8LBVeje+nbts2VIInvRa4T5LlsC0BZCI60wNGoS+Y= +github.com/open-telemetry/opentelemetry-collector-contrib/processor/deltatocumulativeprocessor v0.142.0/go.mod h1:fSnKuTN91I68Ou1Lgfwe3Mt6BGl9kcA8PYCpnGkPnsY= +github.com/open-telemetry/opentelemetry-collector-contrib/processor/filterprocessor v0.142.0 h1:4EdL6RK8VTCPyop0EZoG/lpidlDQqS5BIyAnhSG8E2k= +github.com/open-telemetry/opentelemetry-collector-contrib/processor/filterprocessor v0.142.0/go.mod h1:w972rpLwATEI4AI7h6h5tbMRGRkEicaxxbgOTH9O/0Q= +github.com/open-telemetry/opentelemetry-collector-contrib/processor/resourceprocessor v0.142.0 h1:bKXAt6YhBQrOb73kDARUPf1QgaMU0aD9DpfDunp1kVA= +github.com/open-telemetry/opentelemetry-collector-contrib/processor/resourceprocessor v0.142.0/go.mod h1:GBb0jZpICfzzsJMmZAW/tDYQyaRrmNlOUvQVOOO3tk4= 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= @@ -534,6 +529,8 @@ github.com/prometheus/client_golang v1.0.0/go.mod h1:db9x61etRT2tGnBNRi70OPL5Fsn github.com/prometheus/client_golang v1.4.0/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-20250914183048-a974e0d45e0a h1:RF1vfKM34/3DbGNis22BGd6sDDY3XBi0eM7pYqmOEO0= +github.com/prometheus/client_golang/exp v0.0.0-20250914183048-a974e0d45e0a/go.mod h1:FGJuwvfcPY0V5enm+w8zF1RNS062yugQtPPQp1c4Io4= 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= @@ -541,53 +538,51 @@ github.com/prometheus/client_model v0.6.2 h1:oBsgwpGs7iVziMvrGhE53c/GrLUsZdHnqNw github.com/prometheus/client_model v0.6.2/go.mod h1:y3m2F6Gdpfy6Ut/GBsUqTWZqCUvMVzSfMLjcu6wAwpE= github.com/prometheus/common v0.4.1/go.mod h1:TNfzLD0ON7rHzMJeJkieUDPYmFC7Snx/y86RQel1bk4= github.com/prometheus/common v0.9.1/go.mod h1:yhUN8i9wzaXS3w1O07YhxHEBxD+W35wd8bs7vj7HSQ4= -github.com/prometheus/common v0.66.1 h1:h5E0h5/Y8niHc5DlaLlWLArTQI7tMrsfQjHV+d9ZoGs= -github.com/prometheus/common v0.66.1/go.mod h1:gcaUsgf3KfRSwHY4dIMXLPV0K/Wg1oZ8+SbZk/HH/dA= +github.com/prometheus/common v0.67.4 h1:yR3NqWO1/UyO1w2PhUvXlGQs/PtFmoveVO0KZ4+Lvsc= +github.com/prometheus/common v0.67.4/go.mod h1:gP0fq6YjjNCLssJCQp0yk4M8W6ikLURwkdd/YKtTbyI= github.com/prometheus/common/assets v0.2.0 h1:0P5OrzoHrYBOSM1OigWL3mY8ZvV2N4zIE/5AahrSrfM= github.com/prometheus/common/assets v0.2.0/go.mod h1:D17UVUE12bHbim7HzwUvtqm6gwBEaDQ0F+hIGbFbccI= -github.com/prometheus/exporter-toolkit v0.14.0 h1:NMlswfibpcZZ+H0sZBiTjrA3/aBFHkNZqE+iCj5EmRg= -github.com/prometheus/exporter-toolkit v0.14.0/go.mod h1:Gu5LnVvt7Nr/oqTBUC23WILZepW0nffNo10XdhQcwWA= -github.com/prometheus/otlptranslator v0.0.2 h1:+1CdeLVrRQ6Psmhnobldo0kTp96Rj80DRXRd5OSnMEQ= -github.com/prometheus/otlptranslator v0.0.2/go.mod h1:P8AwMgdD7XEr6QRUJ2QWLpiAZTgTE2UYgjlu3svompI= +github.com/prometheus/exporter-toolkit v0.15.0 h1:Pcle5sSViwR1x0gdPd0wtYrPQENBieQAM7TmT0qtb2U= +github.com/prometheus/exporter-toolkit v0.15.0/go.mod h1:OyRWd2iTo6Xge9Kedvv0IhCrJSBu36JCfJ2yVniRIYk= +github.com/prometheus/otlptranslator v1.0.0 h1:s0LJW/iN9dkIH+EnhiD3BlkkP5QVIUVEoIwkU+A6qos= +github.com/prometheus/otlptranslator v1.0.0/go.mod h1:vRYWnXvI6aWGpsdY/mOT/cbeVRBlPWtBNDb7kGR3uKM= github.com/prometheus/procfs v0.0.0-20181005140218-185b4288413d/go.mod h1:c3At6R/oaqEKCNdg8wHV1ftS6bRYblBhIjjI8uT2IGk= github.com/prometheus/procfs v0.0.2/go.mod h1:TjEm7ze935MbeOT/UhFTIMYKhuLP4wbCsTZCD3I8kEA= github.com/prometheus/procfs v0.0.8/go.mod h1:7Qr8sr6344vo1JqZ6HhLceV9o3AJ1Ff+GxbHq6oeK9A= github.com/prometheus/procfs v0.17.0 h1:FuLQ+05u4ZI+SS/w9+BWEM2TXiHKsUQ9TADiRH7DuK0= github.com/prometheus/procfs v0.17.0/go.mod h1:oPQLaDAMRbA+u8H5Pbfq+dl3VDAvHxMUOVhe0wYB2zw= -github.com/prometheus/prometheus v0.305.1-0.20250808193045-294f36e80261 h1:EtTzzd5UW9TXf9C8BUHv66RgdjG51efqGKWmlxMqjgs= -github.com/prometheus/prometheus v0.305.1-0.20250808193045-294f36e80261/go.mod h1:KMw//femth6oNhcWeCrh4Er45VNPkNac87cTK6er/dA= -github.com/prometheus/sigv4 v0.2.0 h1:qDFKnHYFswJxdzGeRP63c4HlH3Vbn1Yf/Ao2zabtVXk= -github.com/prometheus/sigv4 v0.2.0/go.mod h1:D04rqmAaPPEUkjRQxGqjoxdyJuyCh6E0M18fZr0zBiE= +github.com/prometheus/prometheus v0.308.0 h1:kVh/5m1n6m4cSK9HYTDEbMxzuzCWyEdPdKSxFRxXj04= +github.com/prometheus/prometheus v0.308.0/go.mod h1:xXYKzScyqyFHihpS0UsXpC2F3RA/CygOs7wb4mpdusE= +github.com/prometheus/sigv4 v0.3.0 h1:QIG7nTbu0JTnNidGI1Uwl5AGVIChWUACxn2B/BQ1kms= +github.com/prometheus/sigv4 v0.3.0/go.mod h1:fKtFYDus2M43CWKMNtGvFNHGXnAJJEGZbiYCmVp/F8I= github.com/puzpuzpuz/xsync/v3 v3.5.1 h1:GJYJZwO6IdxN/IKbneznS6yPkVC+c3zyY/j19c++5Fg= github.com/puzpuzpuz/xsync/v3 v3.5.1/go.mod h1:VjzYrABPabuM4KyBh1Ftq6u8nhwY5tBPKP9jpmh0nnA= -github.com/redis/go-redis/v9 v9.8.0 h1:q3nRvjrlge/6UD7eTu/DSg2uYiU2mCL0G/uzBWqhicI= -github.com/redis/go-redis/v9 v9.8.0/go.mod h1:huWgSWd8mW6+m0VPhJjSSQ+d6Nh1VICQ6Q5lHuCH/Iw= -github.com/rogpeppe/go-internal v1.13.1 h1:KvO1DLK/DRN07sQ1LQKScxyZJuNnedQ5/wKSR38lUII= -github.com/rogpeppe/go-internal v1.13.1/go.mod h1:uMEvuHeurkdAXX61udpOXGD/AzZDWNMNyH2VO9fmH0o= +github.com/rogpeppe/go-internal v1.14.1 h1:UQB4HGPB6osV0SQTLymcB4TgvyWu6ZyliaW0tI/otEQ= +github.com/rogpeppe/go-internal v1.14.1/go.mod h1:MaRKkUm5W0goXpeCfT7UZI6fk/L7L7so1lCWt35ZSgc= github.com/rs/cors v1.11.1 h1:eU3gRzXLRK57F5rKMGMZURNdIG4EoAmX8k94r9wXWHA= github.com/rs/cors v1.11.1/go.mod h1:XyqrcTp5zjWr1wsJ8PIRZssZ8b/WMcMf71DJnit4EMU= github.com/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.33 h1:KhF0WejiUTDbL5X55nXowP7zNopwpowa6qaMAWyIE+0= -github.com/scaleway/scaleway-sdk-go v1.0.0-beta.33/go.mod h1:792k1RTU+5JeMXm35/e2Wgp71qPH/DmDoZrRc+EFZDk= +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/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/shirou/gopsutil/v4 v4.25.8 h1:NnAsw9lN7587WHxjJA9ryDnqhJpFH6A+wagYWTOH970= -github.com/shirou/gopsutil/v4 v4.25.8/go.mod h1:q9QdMmfAOVIw7a+eF86P7ISEU6ka+NLgkUxlopV4RwI= -github.com/shoenig/test v1.7.1 h1:UJcjSAI3aUKx52kfcfhblgyhZceouhvvs3OYdWgn+PY= -github.com/shoenig/test v1.7.1/go.mod h1:UxJ6u/x2v/TNs/LoLxBNJRV9DiwBBKYxXSyczsBHFoI= +github.com/shirou/gopsutil/v4 v4.25.11 h1:X53gB7muL9Gnwwo2evPSE+SfOrltMoR6V3xJAXZILTY= +github.com/shirou/gopsutil/v4 v4.25.11/go.mod h1:EivAfP5x2EhLp2ovdpKSozecVXn1TmuG7SMzs/Wh4PU= +github.com/shoenig/test v1.12.2 h1:ZVT8NeIUwGWpZcKaepPmFMoNQ3sVpxvqUh/MAqwFiJI= +github.com/shoenig/test v1.12.2/go.mod h1:UxJ6u/x2v/TNs/LoLxBNJRV9DiwBBKYxXSyczsBHFoI= github.com/shurcooL/httpfs v0.0.0-20230704072500-f1e31cf0ba5c h1:aqg5Vm5dwtvL+YgDpBcK1ITf3o96N/K7/wsRXQnUTEs= github.com/shurcooL/httpfs v0.0.0-20230704072500-f1e31cf0ba5c/go.mod h1:owqhoLW1qZoYLZzLnBw+QkPP9WZnjlSWihhxAJC1+/M= github.com/sirupsen/logrus v1.2.0/go.mod h1:LxeOpSwHxABJmUn/MG1IvRgCAasNZTLOkJPxbbu5VWo= github.com/sirupsen/logrus v1.4.2/go.mod h1:tLMulIdttU9McNUspp0xgXVQah82FyeX6MwdIuYE2rE= github.com/sirupsen/logrus v1.9.3 h1:dueUQJ1C2q9oE3F7wvmSGAaVtTmUizReu6fjN8uqzbQ= github.com/sirupsen/logrus v1.9.3/go.mod h1:naHLuLoDiP4jHNo9R0sCBMtWGeIprob74mVsIT4qYEQ= -github.com/spf13/cobra v1.10.1 h1:lJeBwCfmrnXthfAupyUTzJ/J4Nc1RsHC/mSRU2dll/s= -github.com/spf13/cobra v1.10.1/go.mod h1:7SmJGaTHFVBY0jW4NXGluQoLvhqFQM+6XSKD+P4XaB0= +github.com/spf13/cobra v1.10.2 h1:DMTTonx5m65Ic0GOoRY2c16WCbHxOOw6xxezuLaBpcU= +github.com/spf13/cobra v1.10.2/go.mod h1:7C1pvHqHw5A4vrJfjNwvOdzYu0Gml16OCs2GRiTUUS4= github.com/spf13/pflag v1.0.9 h1:9exaQaMOCwffKiiiYk6/BndUBv+iRViNW+4lEMi0PvY= github.com/spf13/pflag v1.0.9/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg= -github.com/stackitcloud/stackit-sdk-go/core v0.17.2 h1:jPyn+i8rkp2hM80+hOg0B/1EVRbMt778Tr5RWyK1m2E= -github.com/stackitcloud/stackit-sdk-go/core v0.17.2/go.mod h1:8KIw3czdNJ9sdil9QQimxjR6vHjeINFrRv0iZ67wfn0= +github.com/stackitcloud/stackit-sdk-go/core v0.17.3 h1:GsZGmRRc/3GJLmCUnsZswirr5wfLRrwavbnL/renOqg= +github.com/stackitcloud/stackit-sdk-go/core v0.17.3/go.mod h1:HBCXJGPgdRulplDzhrmwC+Dak9B/x0nzNtmOpu+1Ahg= 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= @@ -604,8 +599,8 @@ github.com/stretchr/testify v1.8.4/go.mod h1:sz/lmYIOXD/1dqDmKjjqLyZ2RngseejIcXl github.com/stretchr/testify v1.9.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/testcontainers/testcontainers-go v0.38.0 h1:d7uEapLcv2P8AvH8ahLqDMMxda2W9gQN1nRbHS28HBw= -github.com/testcontainers/testcontainers-go v0.38.0/go.mod h1:C52c9MoHpWO+C4aqmgSU+hxlR5jlEayWtgYrb8Pzz1w= +github.com/testcontainers/testcontainers-go v0.40.0 h1:pSdJYLOVgLE8YdUY2FHQ1Fxu+aMnb6JfVz1mxk7OeMU= +github.com/testcontainers/testcontainers-go v0.40.0/go.mod h1:FSXV5KQtX2HAMlm7U3APNyLkkap35zNLxukw9oBi/MY= github.com/tidwall/gjson v1.10.2 h1:APbLGOM0rrEkd8WBw9C24nllro4ajFuJu0Sc9hRz8Bo= github.com/tidwall/gjson v1.10.2/go.mod h1:/wbyibRr2FHMks5tjHJ5F8dMZh3AcwJEMf5vlfC0lxk= github.com/tidwall/match v1.1.1 h1:+Ho715JplO36QYgwN9PGYNhgZvoUSc9X2c80KVTi+GA= @@ -616,10 +611,10 @@ github.com/tidwall/tinylru v1.1.0 h1:XY6IUfzVTU9rpwdhKUF6nQdChgCdGjkMfLzbWyiau6I github.com/tidwall/tinylru v1.1.0/go.mod h1:3+bX+TJ2baOLMWTnlyNWHh4QMnFyARg2TLTQ6OFbzw8= github.com/tidwall/wal v1.2.1 h1:xQvwnRF3e+xBC4NvFvl1mPGJHU0aH5zNzlUKnKGIImA= github.com/tidwall/wal v1.2.1/go.mod h1:r6lR1j27W9EPalgHiB7zLJDYu3mzW5BQP5KrzBpYY/E= -github.com/tklauser/go-sysconf v0.3.15 h1:VE89k0criAymJ/Os65CSn1IXaol+1wrsFHEB8Ol49K4= -github.com/tklauser/go-sysconf v0.3.15/go.mod h1:Dmjwr6tYFIseJw7a3dRLJfsHAMXZ3nEnL/aZY+0IuI4= -github.com/tklauser/numcpus v0.10.0 h1:18njr6LDBk1zuna922MgdjQuJFjrdppsZG60sHGfjso= -github.com/tklauser/numcpus v0.10.0/go.mod h1:BiTKazU708GQTYF4mB+cmlpT2Is1gLk7XVuEeem8LsQ= +github.com/tklauser/go-sysconf v0.3.16 h1:frioLaCQSsF5Cy1jgRBrzr6t502KIIwQ0MArYICU0nA= +github.com/tklauser/go-sysconf v0.3.16/go.mod h1:/qNL9xxDhc7tx3HSRsLWNnuzbVfh3e7gh/BmM179nYI= +github.com/tklauser/numcpus v0.11.0 h1:nSTwhKH5e1dMNsCdVBukSZrURJRoHbSEQjdEbY+9RXw= +github.com/tklauser/numcpus v0.11.0/go.mod h1:z+LwcLq54uWZTX0u/bGobaV34u6V7KNlTZejzM6/3MQ= github.com/tv42/httpunix v0.0.0-20150427012821-b75d8614f926/go.mod h1:9ESjWnEqriFuLhtthL60Sar/7RFoluCcXsuvEwTV5KM= github.com/twmb/murmur3 v1.1.8 h1:8Yt9taO/WN3l08xErzjeschgZU2QSrwm1kclYq+0aRg= github.com/twmb/murmur3 v1.1.8/go.mod h1:Qq/R7NUyOfr65zD+6Q5IHKsJLwP7exErjN6lyyq3OSQ= @@ -634,218 +629,224 @@ github.com/yuin/goldmark v1.2.1/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9dec github.com/yuin/goldmark v1.4.13/go.mod h1:6yULJ656Px+3vBD8DxQVa3kxgyrAnzto9xy5taEt/CY= github.com/yusufpapurcu/wmi v1.2.4 h1:zFUKzehAFReQwLys1b/iSMl+JQGSCSjtVqQn9bBrPo0= github.com/yusufpapurcu/wmi v1.2.4/go.mod h1:SBZ9tNy3G9/m5Oi98Zks0QjeHVDvuK0qfxQmPyzfmi0= -go.mongodb.org/mongo-driver v1.14.0 h1:P98w8egYRjYe3XDjxhYJagTokP/H6HzlsnojRgZRd80= -go.mongodb.org/mongo-driver v1.14.0/go.mod h1:Vzb0Mk/pa7e6cWw85R4F/endUC3u0U9jGcNU603k65c= -go.opentelemetry.io/auto/sdk v1.1.0 h1:cH53jehLUN6UFLY71z+NDOiNJqDdPRaXzTel0sJySYA= -go.opentelemetry.io/auto/sdk v1.1.0/go.mod h1:3wSPjt5PWp2RhlCcmmOial7AvC4DQqZb7a7wCow3W8A= -go.opentelemetry.io/collector v0.136.0 h1:fEXsiNTa7itOD2SCspqBep6fnULa7mglLlNyhSizqok= -go.opentelemetry.io/collector v0.136.0/go.mod h1:m7YjwJ3xAzGIWa+vyHOE48R6pTKgh90vnlXjFhoB5+A= -go.opentelemetry.io/collector/client v1.42.0 h1:oBEWwd0ZgC9OLlIKZX7vo8PLXuUFoXuy3k0CuzLiKcM= -go.opentelemetry.io/collector/client v1.42.0/go.mod h1:GbBP2Ztn1xeeaAX6hIus0NOH/J0HcRgHP7SU8VDxwP0= -go.opentelemetry.io/collector/component v1.42.0 h1:on4XJ/NT1oPnuCVKDEtlpcr3GGPAS9taWBe8woHSTmY= -go.opentelemetry.io/collector/component v1.42.0/go.mod h1:mehIbkABLhEEs3kmAqer2GRmLwcQLoeF7C48CR6lxP0= -go.opentelemetry.io/collector/component/componentstatus v0.136.0 h1:MOD0t//ZYi23kIpjUm3Cqbp48xoNXPgFL8JBXp/kKaY= -go.opentelemetry.io/collector/component/componentstatus v0.136.0/go.mod h1:rwy++UVZJmymzltlvdYZptTvfxqLC4Vn9jMcM9X8U1c= -go.opentelemetry.io/collector/component/componenttest v0.136.0 h1:24U54okKfUl7tSApQ+84joz8KXgZicWgH+O7UB4fgNI= -go.opentelemetry.io/collector/component/componenttest v0.136.0/go.mod h1:diUZ4BjPMz0PJ/ur5BO9jSBWd8qebvOWMxVrEAoT6dQ= -go.opentelemetry.io/collector/config/configauth v0.136.0 h1:Xpi7zmpvidot/RRAcWN+8xkx87947+Ec1xMDGOLd+l4= -go.opentelemetry.io/collector/config/configauth v0.136.0/go.mod h1:WzZxFZqlc7pxbQxeto+kkV2zXFiEm5NA14fkjDp5kKU= -go.opentelemetry.io/collector/config/configcompression v1.42.0 h1:vznptUF452U526FHHp/fhGL9KgFCLb3sZ+iq4PXQYII= -go.opentelemetry.io/collector/config/configcompression v1.42.0/go.mod h1:ZlnKaXFYL3HVMUNWVAo/YOLYoxNZo7h8SrQp3l7GV00= -go.opentelemetry.io/collector/config/configgrpc v0.136.0 h1:JutKKrIa44ec6VSrE8/0K/hPewJ4H69QbkYs3Gh3/k4= -go.opentelemetry.io/collector/config/configgrpc v0.136.0/go.mod h1:yxJgGrmH9jW/hPUvLlpGLsNRiQcOgK67r5RL4dvvdDE= -go.opentelemetry.io/collector/config/confighttp v0.136.0 h1:7wnmvlm4mZOnF4LD9Q0FIU35EW2z0KB94HRBqM0S0Xw= -go.opentelemetry.io/collector/config/confighttp v0.136.0/go.mod h1:F6zKdR0MagtYZ8NBJOgw9VqPbY+BwkWmO9UYE5mODGU= -go.opentelemetry.io/collector/config/configmiddleware v1.42.0 h1:11LMjkIPnNirc5okrcjO8CEbJ+2Xo7WM/CJqv6J97+M= -go.opentelemetry.io/collector/config/configmiddleware v1.42.0/go.mod h1:v45dyG4WvLxC0Yfw80NvjSFzngTUJdH9zzZOTAXenjg= -go.opentelemetry.io/collector/config/confignet v1.42.0 h1:K2tHmUzCOQiIYr84K+dxugkxQ0jVvYEyHxAhMU7CR0Y= -go.opentelemetry.io/collector/config/confignet v1.42.0/go.mod h1:4jJWdoe1MmpqxMzxrIILcS5FK2JPocXYZGUvv5ZQVKE= -go.opentelemetry.io/collector/config/configopaque v1.42.0 h1:AffFfB6FMKrgvgeSHCsOo+Q1cR4I2kqM3nRwEr/iHyk= -go.opentelemetry.io/collector/config/configopaque v1.42.0/go.mod h1:9uzLyGsWX0FtPWkomQXqLtblmSHgJFaM4T0gMBrCma0= -go.opentelemetry.io/collector/config/configoptional v0.136.0 h1:DwrduTAWbPwOW/k4GPcYUFB7DLruLvs+Zg2/RAHJ2DI= -go.opentelemetry.io/collector/config/configoptional v0.136.0/go.mod h1:hFcVjh2DqKIVMA9mbb2ctSW8d0SRN2UrNim33WxZM4o= -go.opentelemetry.io/collector/config/configretry v1.42.0 h1:iCm6gr8V7+J1ZI6fiHHeDqMzvFvJ9xKMlZt5DC2M5Vw= -go.opentelemetry.io/collector/config/configretry v1.42.0/go.mod h1:ZSTYqAJCq4qf+/4DGoIxCElDIl5yHt8XxEbcnpWBbMM= -go.opentelemetry.io/collector/config/configtelemetry v0.136.0 h1:d5So8zVG6gRl7I3v2Trvk9kPkzSO6kubrcEUZ+wrasw= -go.opentelemetry.io/collector/config/configtelemetry v0.136.0/go.mod h1:Xjw2+DpNLjYtx596EHSWBy0dNQRiJ2H+BlWU907lO40= -go.opentelemetry.io/collector/config/configtls v1.42.0 h1:gACpOXSmxBeo+M8qjSxt7AU04B0qWzjqg2ZLvMA8Sdo= -go.opentelemetry.io/collector/config/configtls v1.42.0/go.mod h1:SJNnptQLBW+nO4CgTtNI1di8nAHNOIl2gclu9GsmK8g= -go.opentelemetry.io/collector/confmap v1.42.0 h1:Hdeqq1RkGBBWbmDpa96aC5LchklzUzCu4aSRRoPicng= -go.opentelemetry.io/collector/confmap v1.42.0/go.mod h1:KW/l4uXBGnl5OM8WYi3gTg6PeG+y24nlIMS71KwWQjk= -go.opentelemetry.io/collector/confmap/provider/envprovider v1.42.0 h1:I4ijuuEUBtePNu7v3C8S/uwEwcXsQnos6d/lvCKby6k= -go.opentelemetry.io/collector/confmap/provider/envprovider v1.42.0/go.mod h1:Nd5diM9jWG9sg6d6eHvR3sIuYgnU9PptExuCgELKTIs= -go.opentelemetry.io/collector/confmap/provider/fileprovider v1.42.0 h1:BGejutI9811qBuzlV9jUI0vOLLR/6P/yprn4HqrQkh4= -go.opentelemetry.io/collector/confmap/provider/fileprovider v1.42.0/go.mod h1:tT2TNx//LDPh5vxKg07kW07n5lPRJmbKkT3oISTdBa4= -go.opentelemetry.io/collector/confmap/provider/yamlprovider v1.42.0 h1:M0Vo2jp1LJrtudwGO4jdhNGKnRxh3D0NsJV/pY6Nnwk= -go.opentelemetry.io/collector/confmap/provider/yamlprovider v1.42.0/go.mod h1:SJLJgZ7Q21O+MXOQnoNhliEjmk1Wr3DDRf3MTeB3Dlk= -go.opentelemetry.io/collector/confmap/xconfmap v0.136.0 h1:eC14gN+NL5HxmOmN9Aa4SkAnJhmUgmYP5cgEjCdz0sw= -go.opentelemetry.io/collector/confmap/xconfmap v0.136.0/go.mod h1:bDvQo42iyxLGR/Nl4eKP//F/jpDcD52JCb7uLGKA3lc= -go.opentelemetry.io/collector/connector v0.136.0 h1:q697P3BcHJcuqT+GE/Am5bqXGpAvCTf5gSlLL2HZ2iM= -go.opentelemetry.io/collector/connector v0.136.0/go.mod h1:zCKUihQzRDkAkszDPXg9RqTc/NcpRNGBbILySFaZ6zA= -go.opentelemetry.io/collector/connector/connectortest v0.136.0 h1:NQgEvJvAJKcswQ/5GQmo57gVgJQqYFvvLpYEpFCptaE= -go.opentelemetry.io/collector/connector/connectortest v0.136.0/go.mod h1:kBPRa9qDsuH7MGvgBwWxV4mLP7yG4fnLwxdBG2jigAA= -go.opentelemetry.io/collector/connector/xconnector v0.136.0 h1:7kEvmi1pARTHqGsBkmoi/IpG5xpAU7PMKDaWfLF18ps= -go.opentelemetry.io/collector/connector/xconnector v0.136.0/go.mod h1:+adB64pX2hOcDxgYmFN6gN6B5oLwKgnczzCqffrSiaE= -go.opentelemetry.io/collector/consumer v1.42.0 h1:RhdoAXrLODs4cnh1m/ihWfHTyWzGO1jL0X+E7wETzUE= -go.opentelemetry.io/collector/consumer v1.42.0/go.mod h1:jKcMYx9LXWMK4dupP2NhiAuHK063JiVMlyAC+ZMqlD0= -go.opentelemetry.io/collector/consumer/consumererror v0.136.0 h1:lYnTR/fJ8gBfVZ813sKPWXmj9a8+TajhrHBfqKwrWvQ= -go.opentelemetry.io/collector/consumer/consumererror v0.136.0/go.mod h1:DIivxQ3sy3mDZLaEcXdwZvEFLILpcyHxRiqEaPkHRFU= -go.opentelemetry.io/collector/consumer/consumererror/xconsumererror v0.136.0 h1:0p5xkXuvCKMKwGdTeuzy1Vz04XJyk4cVdyebtGr/PFI= -go.opentelemetry.io/collector/consumer/consumererror/xconsumererror v0.136.0/go.mod h1:e8DN9AXPONTtXKO9ycYSWKrvj7I9hHIlCg2mIu2cUlc= -go.opentelemetry.io/collector/consumer/consumertest v0.136.0 h1:zzO47GjzIg2X3uVW+lwtqS6S0vRm5qMx5O4zmQznCME= -go.opentelemetry.io/collector/consumer/consumertest v0.136.0/go.mod h1:gTdRvUiJSmzmWp2Ndlh0N0yQ3hPnmTYul2DWuy31/D0= -go.opentelemetry.io/collector/consumer/xconsumer v0.136.0 h1:7GczvR8x75lTyP9M+oWHQyGRDIRJ+QjY7IiJkucgOo4= -go.opentelemetry.io/collector/consumer/xconsumer v0.136.0/go.mod h1:sXw0lOF6D1iKhLy2xorJ8D3PysDXT0egmHJZu8TY0lE= -go.opentelemetry.io/collector/exporter v1.42.0 h1:YMWMSAfaMu3lgy+lgaJDszdAOsg0lRh4EvIyA974Uuw= -go.opentelemetry.io/collector/exporter v1.42.0/go.mod h1:is8qnDQ1NLFMGNagY986ASIJJRIeHJZ+d1hDdOY6u1w= -go.opentelemetry.io/collector/exporter/exporterhelper v0.136.0 h1:fJuA2u4Ls5+OWqcrXYSC6m8hpC4fFDI8kwNjYn4O34w= -go.opentelemetry.io/collector/exporter/exporterhelper v0.136.0/go.mod h1:1F2UKZ68AQaWkjxlk6rtQ/oehL83O2AoDEex9+lEasg= -go.opentelemetry.io/collector/exporter/exporterhelper/xexporterhelper v0.136.0 h1:XkUU01WC9ZGYwD0DJgeeEsfmVK7qZOcEbC+1Y6UcqxA= -go.opentelemetry.io/collector/exporter/exporterhelper/xexporterhelper v0.136.0/go.mod h1:VFewDMp0wztsEXHXF4Hc7QaFoYPSo8vY+S9c0zFOT2k= -go.opentelemetry.io/collector/exporter/exportertest v0.136.0 h1:VIXgWzwok1bfQtAryfAZa5yEomzKEbhobjiHgKWuPmw= -go.opentelemetry.io/collector/exporter/exportertest v0.136.0/go.mod h1:aZkv1l+97E/onJ1rnlMzO/PEDFDfVtgIFvNJB0/EmXI= -go.opentelemetry.io/collector/exporter/otlpexporter v0.136.0 h1:mDHEYBDZ4SzziMq2PlqE0gwZax/t9zLmt/9Flaj0lks= -go.opentelemetry.io/collector/exporter/otlpexporter v0.136.0/go.mod h1:KY5693AbBX4IYfBlCTRPFlFjJTkzYlr5+XpPZR+VwwM= -go.opentelemetry.io/collector/exporter/xexporter v0.136.0 h1:7ELBwU8sSnUMAWr+jQHDNM0+o878BTk++DiW0KA7Dr4= -go.opentelemetry.io/collector/exporter/xexporter v0.136.0/go.mod h1:W4e+GmyokpCt6+d5pvCA17b7oU1fm968t5fDwW4zQv0= -go.opentelemetry.io/collector/extension v1.42.0 h1:+9pK5AGHyV3LpWcF8ez45O/6QwOnxXBRS06a7hokLVg= -go.opentelemetry.io/collector/extension v1.42.0/go.mod h1:mS3Ucj0UQw4Qy9KmXtTkdQTQxan+LbGeH4stPuTYofU= -go.opentelemetry.io/collector/extension/extensionauth v1.42.0 h1:Re0wxZOplHtdV8YaypVaktHYPiaWPwVDt+hrBFXHEoI= -go.opentelemetry.io/collector/extension/extensionauth v1.42.0/go.mod h1:m8A4ZoWKvE91c5fF7HFvnZvwxbXtPJiNSoreGYoXt6A= -go.opentelemetry.io/collector/extension/extensionauth/extensionauthtest v0.136.0 h1:yx0474FuJHinlSbAXU/IZov6TXc5LPSGRPsQRiMGRG4= -go.opentelemetry.io/collector/extension/extensionauth/extensionauthtest v0.136.0/go.mod h1:etBi3U/UCSa9x5Lao6CRcj7CmuULJbkxqXUoaSDeLOA= -go.opentelemetry.io/collector/extension/extensioncapabilities v0.136.0 h1:hFqIp1TiXdIDlGJRMlV+Xm4GwTxRO6Wmaxe/uYH6U7E= -go.opentelemetry.io/collector/extension/extensioncapabilities v0.136.0/go.mod h1:cwa7CHOF39Oqq5SFiYOs1bsjgKmDUFzYysfQ45RPT88= -go.opentelemetry.io/collector/extension/extensionmiddleware v0.136.0 h1:H+c3QyaN5tL3VmX3rSbV9Che5cpokLThJxZmJXed6cE= -go.opentelemetry.io/collector/extension/extensionmiddleware v0.136.0/go.mod h1:Vxtt+KlwwO4mpPEFyUMb/92BlMqOZc4Jk8RNjM99vcU= -go.opentelemetry.io/collector/extension/extensionmiddleware/extensionmiddlewaretest v0.136.0 h1:0Mqxievpq+Lu7nd7/Y7LSW30cgTYyJIpOg48+0XTRcI= -go.opentelemetry.io/collector/extension/extensionmiddleware/extensionmiddlewaretest v0.136.0/go.mod h1:Rd+mz0JkBudg+RYZuETiJpx4aByF5CyV+15mBf+1SJA= -go.opentelemetry.io/collector/extension/extensiontest v0.136.0 h1:BkL2AC38Xa/WU71YfEKdjYGl/pjALmJDtHZIm5gzEzk= -go.opentelemetry.io/collector/extension/extensiontest v0.136.0/go.mod h1:XxRKblTb56a6zkrb8i9qowl7mY9ebW2NnOvCIXgxjZM= -go.opentelemetry.io/collector/extension/xextension v0.136.0 h1:Ykw3UUAKugGDLTz+Secowj6pL9Mg6H/V+pezeQKhTJY= -go.opentelemetry.io/collector/extension/xextension v0.136.0/go.mod h1:BLED8xk0WmkZ0bfjl/WwQ7jk4cJnnrHlo3MHsdhtr/U= -go.opentelemetry.io/collector/extension/zpagesextension v0.136.0 h1:acfmAXEGmvLlM2N6KtieLVKXBvJ/dmkOfOFDftZFFXg= -go.opentelemetry.io/collector/extension/zpagesextension v0.136.0/go.mod h1:fXFm8bNm6QegoFjFk3QINvSXUDyBSy/3r/mv366xQ5A= -go.opentelemetry.io/collector/featuregate v1.42.0 h1:uCVwumVBVex46DsG/fvgiTGuf9f53bALra7vGyKaqFI= -go.opentelemetry.io/collector/featuregate v1.42.0/go.mod h1:d0tiRzVYrytB6LkcYgz2ESFTv7OktRPQe0QEQcPt1L4= -go.opentelemetry.io/collector/internal/fanoutconsumer v0.136.0 h1:GxjQ+9q6M7PwE3QnA3VVBLt5aHVnk4z7wQLo+J+0tho= -go.opentelemetry.io/collector/internal/fanoutconsumer v0.136.0/go.mod h1:DOvL5ZalQk/zmYBjKZok52dXIxUOK0JoOoQfm5qjbhM= -go.opentelemetry.io/collector/internal/telemetry v0.136.0 h1:3TcnxyUFs6jJZeLo5ju3fMWS4lRmIApl9To2XWk922M= -go.opentelemetry.io/collector/internal/telemetry v0.136.0/go.mod h1:dTykH9zv/zOnlyUvqfGIqpaQZhmayW7NssD7TPU4paE= -go.opentelemetry.io/collector/otelcol v0.136.0 h1:1QpVMUxPmrJ2HmrKFPXWEfQYALEC1kDmHp2YtzqjlPE= -go.opentelemetry.io/collector/otelcol v0.136.0/go.mod h1:TscxAyGfBSss2Rre6NMvJX6q6CU9kzaucSBOf5f+QKY= -go.opentelemetry.io/collector/pdata v1.42.0 h1:XEzisp/SNfKDcY4aRU6qrHeLzGypRUdYHjbBqkDFOO4= -go.opentelemetry.io/collector/pdata v1.42.0/go.mod h1:nnOmgf+RI/D5xYWgFPZ5nKuhf2E0Qy9Nx/mxoTvIq3k= -go.opentelemetry.io/collector/pdata/pprofile v0.136.0 h1:ysyWnVnEzAwUH+MAhEuu7X0y/YnTtjEY1gC7aj05QzA= -go.opentelemetry.io/collector/pdata/pprofile v0.136.0/go.mod h1:vAvrFj+xpwlSH85QFYGKYQ4xc0Lym5pWNRh1hMUH3TY= -go.opentelemetry.io/collector/pdata/testdata v0.136.0 h1:amivoDBK7ALqhwwCkSOYqfT95t1+o/TS6MHycseNs80= -go.opentelemetry.io/collector/pdata/testdata v0.136.0/go.mod h1:KlNRkMO7MZdbGjNJGFS0+yc2gpuraJg6F6gkuqaqA8Y= -go.opentelemetry.io/collector/pdata/xpdata v0.136.0 h1:KAYBx6+aS5rYUlwJ85QM9pxHq0VdftC9lTyXIzv1oM4= -go.opentelemetry.io/collector/pdata/xpdata v0.136.0/go.mod h1:bSnwXzg3wKjaKc8FgMZ23OmcodD6eDNyntUZdtlxPeU= -go.opentelemetry.io/collector/pipeline v1.42.0 h1:jqn1lPwUdCn+lsyNubCtwzXZLEm+R3kRWxLpDkhlvvs= -go.opentelemetry.io/collector/pipeline v1.42.0/go.mod h1:xUrAqiebzYbrgxyoXSkk6/Y3oi5Sy3im2iCA51LwUAI= -go.opentelemetry.io/collector/pipeline/xpipeline v0.136.0 h1:dvzL/yfXUjBxcCqtl4ifvQqi5cIeYAmFdZz1OPE2gXA= -go.opentelemetry.io/collector/pipeline/xpipeline v0.136.0/go.mod h1:0trVl/7QYhPyIohE+n+hL0F0DdiceghKPG2olvZqipc= -go.opentelemetry.io/collector/processor v1.42.0 h1:JVMaRA8QkiOJHAswCVAugMaFhDbNedat2XRKjlsNv2A= -go.opentelemetry.io/collector/processor v1.42.0/go.mod h1:O9uYN7VeC4gnD2qsaXaM50rvO8tt2zJS/9bnzucJ+N8= -go.opentelemetry.io/collector/processor/batchprocessor v0.136.0 h1:8IIzCdjD7WyLb1Rbg6t/UPXMJl8rdSbdvkP+fYvY4FE= -go.opentelemetry.io/collector/processor/batchprocessor v0.136.0/go.mod h1:te1bnTdwdQNYxHBHJJSZMAWLWyX+ZB0JKO43zKc6bck= -go.opentelemetry.io/collector/processor/processorhelper v0.136.0 h1:LxQhJuOkhkrZjTlabAaCW+KVv3BlOXaf8F13k/ze3dQ= -go.opentelemetry.io/collector/processor/processorhelper v0.136.0/go.mod h1:atZGpAhMdMtu0jF8jGUdRKj0V1i+DKaZ+q7xsH0+q/0= -go.opentelemetry.io/collector/processor/processorhelper/xprocessorhelper v0.136.0 h1:tqdeDvJiMc16r3s1QOhk5MVCMo6UApWWh/5tJCnL6u4= -go.opentelemetry.io/collector/processor/processorhelper/xprocessorhelper v0.136.0/go.mod h1:NT4ntzR9UA8XPI7EQIjW3D+9bvF6DMQ1GUU7FS/kvos= -go.opentelemetry.io/collector/processor/processortest v0.136.0 h1:lQC435oZdDmLnSczmQ7Cdoca+y7SBpLQ0m/fVsd8pJY= -go.opentelemetry.io/collector/processor/processortest v0.136.0/go.mod h1:uWH1oXGiCzvnWuLyvzyqm8a/g6dGyfJWgAj2yEhhrWg= -go.opentelemetry.io/collector/processor/xprocessor v0.136.0 h1:/Ee8JT9pM3moxPDM18NbNYQzVzzg+80ewTOFyVUmOd0= -go.opentelemetry.io/collector/processor/xprocessor v0.136.0/go.mod h1:RtmNJHS/MS6XO7gBdjiDWep1TN1vMlrcH5qQr1MOWxM= -go.opentelemetry.io/collector/receiver v1.42.0 h1:wdR3SShnOUj6PQFNOHJl8amKDaMrY6gnnU7oh7z61rQ= -go.opentelemetry.io/collector/receiver v1.42.0/go.mod h1:ts8UqHPKm+fP3/nsPrLizbUClqpL8JO3HM5Rd9UQEWA= -go.opentelemetry.io/collector/receiver/receiverhelper v0.136.0 h1:Le0/Ow1GIvRRo4XwDjf/xERzWJf1JkoJEUjqHVPIXr8= -go.opentelemetry.io/collector/receiver/receiverhelper v0.136.0/go.mod h1:N8MEtYYYJncGC9PQ+YdRN7WkHpYNTh3MAxPLVLf7cn8= -go.opentelemetry.io/collector/receiver/receivertest v0.136.0 h1:xPhvg2K72Iy+bqzMwz+q4CmudYKy/Vq+dS1x2ETojP0= -go.opentelemetry.io/collector/receiver/receivertest v0.136.0/go.mod h1:DgPO43LjdtRXJ7BnXU2gGKak74cvGOie9qSdb7D/UWg= -go.opentelemetry.io/collector/receiver/xreceiver v0.136.0 h1:eb2DLzWewhJMJU34mgmL8WxgoYim44+Ry6/AMrjfY8E= -go.opentelemetry.io/collector/receiver/xreceiver v0.136.0/go.mod h1:k/j2K4krExMopkkOBFyPyDSgkrnQSN1fXHqLCvh8O5g= +github.com/zeebo/assert v1.3.0 h1:g7C04CbJuIDKNPFHmsk4hwZDO5O+kntRxzaUoNXj+IQ= +github.com/zeebo/assert v1.3.0/go.mod h1:Pq9JiuJQpG8JLJdtkwrJESF0Foym2/D9XMU5ciN/wJ0= +github.com/zeebo/xxh3 v1.0.2 h1:xZmwmqxHZA8AI603jOQ0tMqmBr9lPeFwGg6d+xy9DC0= +github.com/zeebo/xxh3 v1.0.2/go.mod h1:5NWz9Sef7zIDm2JHfFlcQvNekmcEl9ekUZQQKCYaDcA= +go.mongodb.org/mongo-driver v1.17.4 h1:jUorfmVzljjr0FLzYQsGP8cgN/qzzxlY9Vh0C9KFXVw= +go.mongodb.org/mongo-driver v1.17.4/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.142.0 h1:1PFBnYwphCN7wWXU85/G5SN08hzRua8AkEI1yPIvVMk= +go.opentelemetry.io/collector v0.142.0/go.mod h1:etSWqFxETgvoEjTINqGu+B/Lm+EbJiu3PZGW+bemo1A= +go.opentelemetry.io/collector/client v1.48.0 h1:/ycTq3gsP5NJ5ymDDkEWhem2z+7rH7cUMzifRGal6uQ= +go.opentelemetry.io/collector/client v1.48.0/go.mod h1:ySz+QB/uo8zWI3lGVKOfLqyPP/NZj6oB+j0EjIPsF14= +go.opentelemetry.io/collector/component v1.48.0 h1:0hZKOvT6fIlXoE+6t40UXbXOH7r/h9jyE3eIt0W19Qg= +go.opentelemetry.io/collector/component v1.48.0/go.mod h1:Kmc9Z2CT53M2oRRf+WXHUHHgjCC+ADbiqfPO5mgZe3g= +go.opentelemetry.io/collector/component/componentstatus v0.142.0 h1:a1KkLCtShI5SfhO2ga75VqWjjBRGgrerelt/2JXWLBI= +go.opentelemetry.io/collector/component/componentstatus v0.142.0/go.mod h1:IRWKvFcUrFrkz1gJEV+cKAdE2ZBT128gk1sHt0OzKI4= +go.opentelemetry.io/collector/component/componenttest v0.142.0 h1:a8XclEutO5dv4AnzThHK8dfqR4lDWjJKLtRNM2aVUFM= +go.opentelemetry.io/collector/component/componenttest v0.142.0/go.mod h1:JhX/zKaEbjhFcsiV2ha2spzo24A6RL/jqNBS0svURD0= +go.opentelemetry.io/collector/config/configauth v1.48.0 h1:WYXQLzW7VeUXGOEKXkIVaBe02m01h3qiyIMULygz4o4= +go.opentelemetry.io/collector/config/configauth v1.48.0/go.mod h1:kewLALUSiJfa8Kr0/BkObqO/Wuu5PWLqozKuLrxq7Dc= +go.opentelemetry.io/collector/config/configcompression v1.48.0 h1:fsJCQ6NHsD6QOaa9dUlW9KzoPh505cXZApg7gTs8UQA= +go.opentelemetry.io/collector/config/configcompression v1.48.0/go.mod h1:ZlnKaXFYL3HVMUNWVAo/YOLYoxNZo7h8SrQp3l7GV00= +go.opentelemetry.io/collector/config/configgrpc v0.142.0 h1:CV0W6Sh8rZJMH/aJoAHc/WH3isk35dGoUtiiCkWURnA= +go.opentelemetry.io/collector/config/configgrpc v0.142.0/go.mod h1:WVaqPqwoF1ZdanMlVgdzZK/WdDLKB5judYkref2l2xI= +go.opentelemetry.io/collector/config/confighttp v0.142.0 h1:FastUGaVj1X2ThqYil2kMtnpPij4fps+Ic8gYH6U0Zw= +go.opentelemetry.io/collector/config/confighttp v0.142.0/go.mod h1:wNo/bNY8VDWfU1zXOHzCmb9JDH5UAlmtgkZMK2MjHo4= +go.opentelemetry.io/collector/config/configmiddleware v1.48.0 h1:8b4f8NOI2Mr2QaWHcYlVekac8eoKraogzqHI587eWAs= +go.opentelemetry.io/collector/config/configmiddleware v1.48.0/go.mod h1:pUiX9YcS0oWBLx+BbtmCk44bGeXV+6QY2ik8iTgdHuc= +go.opentelemetry.io/collector/config/confignet v1.48.0 h1:17KMNfj9W39BOtAG1ICvg7SyMncTn1opVynhwWuYn+c= +go.opentelemetry.io/collector/config/confignet v1.48.0/go.mod h1:4jJWdoe1MmpqxMzxrIILcS5FK2JPocXYZGUvv5ZQVKE= +go.opentelemetry.io/collector/config/configopaque v1.48.0 h1:ST/hdVf8RsIfuxSbfYi2PTYdrwQgC6+4HubX4yKpkXI= +go.opentelemetry.io/collector/config/configopaque v1.48.0/go.mod h1:QUbIsaQUTrfkx258rZcrvuBBx7JEA5aywnhRG2g1Zps= +go.opentelemetry.io/collector/config/configoptional v1.48.0 h1:BjqC8qjg5A8QNHpQE9XdRnnXHw0EpRG9wzIN3SKtxHs= +go.opentelemetry.io/collector/config/configoptional v1.48.0/go.mod h1:SrGxQQO3GABGHPvKG0eeSKNJKD2ECxewkFSTBVSoWlE= +go.opentelemetry.io/collector/config/configretry v1.48.0 h1:tH4fU4nWv3PTUDU82fhMCG0tt33p2/wCkjmQcznLpPU= +go.opentelemetry.io/collector/config/configretry v1.48.0/go.mod h1:ZSTYqAJCq4qf+/4DGoIxCElDIl5yHt8XxEbcnpWBbMM= +go.opentelemetry.io/collector/config/configtelemetry v0.142.0 h1:hidlUz9WXTYhrcS1O1RtN4o8WKtYDAELiTCP4P453EI= +go.opentelemetry.io/collector/config/configtelemetry v0.142.0/go.mod h1:Xjw2+DpNLjYtx596EHSWBy0dNQRiJ2H+BlWU907lO40= +go.opentelemetry.io/collector/config/configtls v1.48.0 h1:+099UpRcmp1H+Y+kekr/WYDfZw9yWBGRfD84xA0+J+g= +go.opentelemetry.io/collector/config/configtls v1.48.0/go.mod h1:qSbIUUcstn7Hsj//rBWdN4/sxurjl0970OcUQW2tBho= +go.opentelemetry.io/collector/confmap v1.48.0 h1:vGhg25NEUX5DiYziJEw2siwdzsvtXBRZVuYyLVinFR8= +go.opentelemetry.io/collector/confmap v1.48.0/go.mod h1:8tJHJowmvUkJ8AHzZ6SaH61dcWbdfRE9Sd/hwsKLgRE= +go.opentelemetry.io/collector/confmap/provider/envprovider v1.48.0 h1:TeKwB3r/bCmwhIgiiCA80GNGfUNk1qhN2kRb8/hIw5k= +go.opentelemetry.io/collector/confmap/provider/envprovider v1.48.0/go.mod h1:7cJK4GoBjyMdiBlS4fYRj+rPOaJ5VTyU3OQcLYqgnaw= +go.opentelemetry.io/collector/confmap/provider/fileprovider v1.48.0 h1:lGcgMXsucIvYbZCuW51lB/7cNQ2/ASk7KUa8noxV4QQ= +go.opentelemetry.io/collector/confmap/provider/fileprovider v1.48.0/go.mod h1:tRy+5rXYYHzDCDSpxdYHi3w35kY9n7y3rhPVn1uenAE= +go.opentelemetry.io/collector/confmap/xconfmap v0.142.0 h1:SNfuFP8TA0PmUkx6ryY63uNjLN2HMh5VeGO++IYdPgA= +go.opentelemetry.io/collector/confmap/xconfmap v0.142.0/go.mod h1:FXuX6B8b7Ub7qkLqloWKanmPhADL18EEkaFptcd4eDQ= +go.opentelemetry.io/collector/connector v0.142.0 h1:8IHsthuYBhOgdwdIsoc4X4/jyK2qcY/NmjH6w+iq0cw= +go.opentelemetry.io/collector/connector v0.142.0/go.mod h1:GHxeYzlWol0ZYJRtcSU5JGwdeahaUpmtF/hjE67gjoE= +go.opentelemetry.io/collector/connector/connectortest v0.142.0 h1:Cpvef+XP4wa8mWQVYzmYfc6iqcouS1hJE+TJ71yQEWk= +go.opentelemetry.io/collector/connector/connectortest v0.142.0/go.mod h1:pweTOYtLDKdxaLXNoejLYxn5HW32zAac3WWey2D8LTU= +go.opentelemetry.io/collector/connector/xconnector v0.142.0 h1:O0E9sDIN4A2ppydNzYNy9YjQ8L5C9y6anO6tgUpv8IA= +go.opentelemetry.io/collector/connector/xconnector v0.142.0/go.mod h1:j7xWw0WEJO7QSWW/v1RxD9Qn8RDyqKGvgDM8S3xM8y8= +go.opentelemetry.io/collector/consumer v1.48.0 h1:g1uroz2AA0cqnEsjqFTSZG+y8uH1gQBqqyzk8kd3QiM= +go.opentelemetry.io/collector/consumer v1.48.0/go.mod h1:lC6PnVXBwI456SV5WtvJqE7vjCNN6DAUc8xjFQ9wUV4= +go.opentelemetry.io/collector/consumer/consumererror v0.142.0 h1:2QnxUNL8ZQ42fz5uB1O1OKtfmVH/NcBYHIZ9gt/xqRE= +go.opentelemetry.io/collector/consumer/consumererror v0.142.0/go.mod h1:/nrPOD+za/pWOiL13QzyqHSUNpY8IrHKE6cXQIK2p7k= +go.opentelemetry.io/collector/consumer/consumererror/xconsumererror v0.142.0 h1:LzURVB3Yz1ByWpkH8ZJR8j9PbJzth15UJnCaOpsxuCY= +go.opentelemetry.io/collector/consumer/consumererror/xconsumererror v0.142.0/go.mod h1:ol4kw1OqsjuGLyU2MIh18mGIBVIgY0OqNoNUJJ+V7j4= +go.opentelemetry.io/collector/consumer/consumertest v0.142.0 h1:TRt8zR57Vk1PTjtqjHOwOAMbIl+IeloHxWAuF8sWdRw= +go.opentelemetry.io/collector/consumer/consumertest v0.142.0/go.mod h1:yq2dhMxFUlCFkRN7LES3fzsTmUDw9VaunyRAka2TEaY= +go.opentelemetry.io/collector/consumer/xconsumer v0.142.0 h1:qOoQnLZXQ9sRLexTkkmBx3qfaOmEgco9VBPmryg5UhA= +go.opentelemetry.io/collector/consumer/xconsumer v0.142.0/go.mod h1:oPN0yJzEpovwlWvmSaiYgtDqGuOmMMLmmg352sqZdsE= +go.opentelemetry.io/collector/exporter v1.48.0 h1:2NQ4VlkGdPTO+tw2cFdjElKzivWAtXm2zOIEjoTyvno= +go.opentelemetry.io/collector/exporter v1.48.0/go.mod h1:AOcXxccg8g3R5khMm0DHLmKrr0pWOoGfr9uMbtOPJrg= +go.opentelemetry.io/collector/exporter/exporterhelper v0.142.0 h1:7v8drPONUqXv7tXEFiy5OD1av3ruMsJ+XD62OU/U21E= +go.opentelemetry.io/collector/exporter/exporterhelper v0.142.0/go.mod h1:8qsCgTqRzqIy0d9vFJPHqx14MkZZHTmHenlqxPepMyY= +go.opentelemetry.io/collector/exporter/exporterhelper/xexporterhelper v0.142.0 h1:0IMYuAC1LdoLXVLEFrlmwn8Y1k0WbhcQWResYmwV/C0= +go.opentelemetry.io/collector/exporter/exporterhelper/xexporterhelper v0.142.0/go.mod h1:f/v34PDtqDebl8lPHZn8RvH/m0hkMQEF9duvcKH7ldE= +go.opentelemetry.io/collector/exporter/exportertest v0.142.0 h1:Qy/vEkgIwrsajKlrCgt/NXV/aoof0dPhBJcvz39l03A= +go.opentelemetry.io/collector/exporter/exportertest v0.142.0/go.mod h1:HKitP6nu1DJDmic18t7HxhkBb3Is7nGnbSw4G1pLNNo= +go.opentelemetry.io/collector/exporter/otlpexporter v0.142.0 h1:Upr0K8fHSg5iCV5swa3VO/MpMBNiFwd1dCIuDMGqzpQ= +go.opentelemetry.io/collector/exporter/otlpexporter v0.142.0/go.mod h1:KFm2q64edLBppQFkP6ZQKe4qHpYH/dPkB8+Htc0+2Ms= +go.opentelemetry.io/collector/exporter/xexporter v0.142.0 h1:AcToj72FFKtHvVaY43HYsPb0kI/cpsH+UHd16qd6kHk= +go.opentelemetry.io/collector/exporter/xexporter v0.142.0/go.mod h1:jRGzj6P1jfpCxEl0VC0KZZv0ylhy7naJjl7VgBdxJBU= +go.opentelemetry.io/collector/extension v1.48.0 h1:Q8Av/8Ap59eOzlX1fBSw5TcH5qzqtZOA1qlKbigIkt8= +go.opentelemetry.io/collector/extension v1.48.0/go.mod h1:mKPlW1m7W3s8aRgkZk6ocukkBc4FnIc6GmikteazFXs= +go.opentelemetry.io/collector/extension/extensionauth v1.48.0 h1:MU72qUj04g77Mjbp4H7XKBbwRM7L5gNwu1MDF2192Yo= +go.opentelemetry.io/collector/extension/extensionauth v1.48.0/go.mod h1:CtNVU6ivNIAcJoCL7GRxDGpuvSgWVpgmrRiGD7FQAyY= +go.opentelemetry.io/collector/extension/extensionauth/extensionauthtest v0.142.0 h1:IFQ7tIUd4rr+HG7OtRmAGqfLu7u+59Aq6owfQ8wlZto= +go.opentelemetry.io/collector/extension/extensionauth/extensionauthtest v0.142.0/go.mod h1:eOAU/g111TZ9K2A+QJAHnwfCtCtfR/Tlcl09sfB1/n4= +go.opentelemetry.io/collector/extension/extensioncapabilities v0.142.0 h1:a8CdWl6JI5zVrdT5O55193d75uGSPdG6mrlPOML9EJU= +go.opentelemetry.io/collector/extension/extensioncapabilities v0.142.0/go.mod h1:lJ2TAjbqCAy8FQfUPtm9f+rXCsxLOTQqq1q4G+7rZOw= +go.opentelemetry.io/collector/extension/extensionmiddleware v0.142.0 h1:/PlrYC8ITEKJnhRwij9nvWWehfT1TbDvrv7xqz5Y12E= +go.opentelemetry.io/collector/extension/extensionmiddleware v0.142.0/go.mod h1:rdpsumcbndkZ00eDBaLL4Q5PNWYBOXqt4YR9wtk2sH0= +go.opentelemetry.io/collector/extension/extensionmiddleware/extensionmiddlewaretest v0.142.0 h1:veAJV0RIIkNUz2t9LEV/ockN4+OfwerdwDuAMBz2FG8= +go.opentelemetry.io/collector/extension/extensionmiddleware/extensionmiddlewaretest v0.142.0/go.mod h1:6WPuxGTBY+YlpWXIw7qMcvRqRowj685VwaMqWaiME+g= +go.opentelemetry.io/collector/extension/extensiontest v0.142.0 h1:QfArQ1Pd2VpcYBljan/MLT1XUUMZmxmgTYA25R0ZILg= +go.opentelemetry.io/collector/extension/extensiontest v0.142.0/go.mod h1:en+IIu8wEHpKeZ5O7FjcG0/vWK+OfPYaLSLLJq3GXYY= +go.opentelemetry.io/collector/extension/xextension v0.142.0 h1:0h0nRM0XxCPFqsSJ/V9ZcwW3C3MznBVta+ROFyGOrIY= +go.opentelemetry.io/collector/extension/xextension v0.142.0/go.mod h1:FI1aksqUe6meQJD02jBLRWOFxJRVVZB/SlGY/VUV8bU= +go.opentelemetry.io/collector/extension/zpagesextension v0.142.0 h1:iDhkwn+vo8dE4kxivefZkojL/PdBRQhwPDcB23YNGzQ= +go.opentelemetry.io/collector/extension/zpagesextension v0.142.0/go.mod h1:B+PGlULxRejmP3ArfLQc+Eh7MXqSVG60sxrejqqSd4M= +go.opentelemetry.io/collector/featuregate v1.48.0 h1:jiGRcl93yzUFgZVDuskMAftFraE21jANdxXTQfSQScc= +go.opentelemetry.io/collector/featuregate v1.48.0/go.mod h1:/1bclXgP91pISaEeNulRxzzmzMTm4I5Xih2SnI4HRSo= +go.opentelemetry.io/collector/internal/fanoutconsumer v0.142.0 h1:eLGLhIj5UBg5wQfCUE8QUW2s34/z2OkHt00CT3ALunY= +go.opentelemetry.io/collector/internal/fanoutconsumer v0.142.0/go.mod h1:xCrK+o5Pzy5J7fytpEgtrPUMzZdgxv9z20p1no+Qs54= +go.opentelemetry.io/collector/internal/telemetry v0.142.0 h1:ALK9O2AYWuptSGSFzNW0BL6hFq7sf2lxwTrGQa45Nic= +go.opentelemetry.io/collector/internal/telemetry v0.142.0/go.mod h1:Nuf7neseGamZJQjpf8f6yk4qrvb0YrSnuSzh5u0GwbQ= +go.opentelemetry.io/collector/internal/testutil v0.142.0 h1:MHnAVRimQdsfYqYHC3YuJRkIUap4VmSpJkkIT2N7jJA= +go.opentelemetry.io/collector/internal/testutil v0.142.0/go.mod h1:YAD9EAkwh/l5asZNbEBEUCqEjoL1OKMjAMoPjPqH76c= +go.opentelemetry.io/collector/otelcol v0.142.0 h1:duJ0gjAL9tqclYqVDYnNuthcWzunJQ5nsPoea6EIEGI= +go.opentelemetry.io/collector/otelcol v0.142.0/go.mod h1:ZE2NblF9dAq/xKbMPeEcsBXkbfoQHyPe3m5nM7WDsO0= +go.opentelemetry.io/collector/pdata v1.48.0 h1:CKZ+9v/lGTX/cTGx2XVp8kp0E8R//60kHFCBdZudrTg= +go.opentelemetry.io/collector/pdata v1.48.0/go.mod h1:jaf2JQGpfUreD1TOtGBPsq00ecOqM66NG15wALmdxKA= +go.opentelemetry.io/collector/pdata/pprofile v0.142.0 h1:Ivyw7WY8SIIWqzXsnNmjEgz3ysVs/OkIf0KIpJUnuuo= +go.opentelemetry.io/collector/pdata/pprofile v0.142.0/go.mod h1:94GAph54K4WDpYz9xirhroHB3ptNLuPiY02k8fyoNUI= +go.opentelemetry.io/collector/pdata/testdata v0.142.0 h1:+jf9RyLWl8WyhIVjpg7yuH+bRdQH4mW20cPtCMlY1cI= +go.opentelemetry.io/collector/pdata/testdata v0.142.0/go.mod h1:kgAu5ZLEcVuPH3RFiHDg23RGitgm1M0cUAVwiGX4SB8= +go.opentelemetry.io/collector/pdata/xpdata v0.142.0 h1:xRpmhY12JnJ89E2kM2maOjG7C9QK6dSnTr03Ce8qfPA= +go.opentelemetry.io/collector/pdata/xpdata v0.142.0/go.mod h1:0e/FY0Stzxx4M2sqELIRrXzeoTsAwjVPKT9mQvL4hmc= +go.opentelemetry.io/collector/pipeline v1.48.0 h1:E4zyQ7+4FTGvdGS4pruUnItuyRTGhN0Qqk1CN71lfW0= +go.opentelemetry.io/collector/pipeline v1.48.0/go.mod h1:xUrAqiebzYbrgxyoXSkk6/Y3oi5Sy3im2iCA51LwUAI= +go.opentelemetry.io/collector/pipeline/xpipeline v0.142.0 h1:/Sj6qgwWUJtGmxiq6k1AqauxXjJYzRIJxQtUamAApPI= +go.opentelemetry.io/collector/pipeline/xpipeline v0.142.0/go.mod h1:wDQUlMZLs57CNTfmoxQgiw+mwoqj8ZUChmwI6Ck6KCs= +go.opentelemetry.io/collector/processor v1.48.0 h1:3Kttw79mnrf463QKJGoGZzFfiNzQuMWK0p2nHuvOhaQ= +go.opentelemetry.io/collector/processor v1.48.0/go.mod h1:A3OsW6ga+a48J1mrnVNH5L5kB0v+n9nVFlmOQB5/Jwk= +go.opentelemetry.io/collector/processor/batchprocessor v0.142.0 h1:7db0TbGwVaBQ2xNjr1JfTOGJiWEois5G0CwMkXo95D8= +go.opentelemetry.io/collector/processor/batchprocessor v0.142.0/go.mod h1:dKn4oFvzxO/LOIF8cmnkwA2VJ4Z6BHQKcmPyQ0iB8CY= +go.opentelemetry.io/collector/processor/processorhelper v0.142.0 h1:FNQv56skQ7R5se8cyuU8zc4hSvU7ZUyRYmp0XxOjIpU= +go.opentelemetry.io/collector/processor/processorhelper v0.142.0/go.mod h1:31wwl1zprOZEf5c9mWPq2j0XMtHOSZuhC5c8o6lQ/PY= +go.opentelemetry.io/collector/processor/processorhelper/xprocessorhelper v0.142.0 h1:0m6+vPZD5ji4xcVHbJRRPIDfrfGn1FwM8ofK1ZgQ1fY= +go.opentelemetry.io/collector/processor/processorhelper/xprocessorhelper v0.142.0/go.mod h1:cpij0FM0F4mc7EWvTLAqidh8pXW4S8LrphdDlVh8kvE= +go.opentelemetry.io/collector/processor/processortest v0.142.0 h1:wQnJeXDejBL6r8ov66AYAGf8Q0/JspjuqAjPVBdCUoI= +go.opentelemetry.io/collector/processor/processortest v0.142.0/go.mod h1:QU5SWj0L+92MSvQxZDjwWCsKssNDm+nD6SHn7IvviUE= +go.opentelemetry.io/collector/processor/xprocessor v0.142.0 h1:7a1Crxrd5iBMVnebTxkcqxVkRHAlOBUUmNTUVUTnlCU= +go.opentelemetry.io/collector/processor/xprocessor v0.142.0/go.mod h1:LY/GS2DiJILJKS3ynU3eOLLWSP8CmN1FtdpAMsVV8AU= +go.opentelemetry.io/collector/receiver v1.48.0 h1:2xGdkrHE98WPxnmhevsEz3n66yWj0O/cO0AzbUgtN8A= +go.opentelemetry.io/collector/receiver v1.48.0/go.mod h1:fD0sfx2mTFlz5slMYao4zFcELz2g+FoF6ISF6elUIRk= +go.opentelemetry.io/collector/receiver/receiverhelper v0.142.0 h1:GfoWfdCyILpRq7vgBGra0qR1eOS8f52+QLBVMh658Gc= +go.opentelemetry.io/collector/receiver/receiverhelper v0.142.0/go.mod h1:yN7WC8y4HFA3FNQ6h1gKF+AkucJBivLw51Jo/4wFU/I= +go.opentelemetry.io/collector/receiver/receivertest v0.142.0 h1:g8o86xp8hi3Uq4gkxMWmGuxOtm8H0tSVP0G9KLEwqpE= +go.opentelemetry.io/collector/receiver/receivertest v0.142.0/go.mod h1:3y3gCAMiaLlXULJxHRxI9LeVF7rkAq5M2K1XGNiqDWY= +go.opentelemetry.io/collector/receiver/xreceiver v0.142.0 h1:hrKh3IqPcgQHfbdcphsT0Rf4W3rCLOI+DAGyYbk74Q8= +go.opentelemetry.io/collector/receiver/xreceiver v0.142.0/go.mod h1:8UWwgjW0ksDu29+oQEBSnSIstN263IhJbpwaEUiDuJw= go.opentelemetry.io/collector/semconv v0.128.1-0.20250610090210-188191247685 h1:XCN7qkZRNzRYfn6chsMZkbFZxoFcW6fZIsZs2aCzcbc= go.opentelemetry.io/collector/semconv v0.128.1-0.20250610090210-188191247685/go.mod h1:OPXer4l43X23cnjLXIZnRj/qQOjSuq4TgBLI76P9hns= -go.opentelemetry.io/collector/service v0.136.0 h1:NvGStX9kN1KrcKO1aJjB4LFLRCBcPERzhlOiOxrFcG4= -go.opentelemetry.io/collector/service v0.136.0/go.mod h1:xE6YQmPW5/5g4I/R3PTRBdaGr2Epc2NxkMAAEttJo1k= -go.opentelemetry.io/collector/service/hostcapabilities v0.136.0 h1:YxOwlA7mmKVQq/+vbOs37WpZ2yRZGkKmC0qKrPQwlCY= -go.opentelemetry.io/collector/service/hostcapabilities v0.136.0/go.mod h1:mONVgs/2Sw/h/fjqURBKGTB22B+7KXL9TSWNX/37LCA= -go.opentelemetry.io/contrib/bridges/otelzap v0.12.0 h1:FGre0nZh5BSw7G73VpT3xs38HchsfPsa2aZtMp0NPOs= -go.opentelemetry.io/contrib/bridges/otelzap v0.12.0/go.mod h1:X2PYPViI2wTPIMIOBjG17KNybTzsrATnvPJ02kkz7LM= -go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.62.0 h1:rbRJ8BBoVMsQShESYZ0FkvcITu8X8QNwJogcLUmDNNw= -go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.62.0/go.mod h1:ru6KHrNtNHxM4nD/vd6QrLVWgKhxPYgblq4VAtNawTQ= -go.opentelemetry.io/contrib/instrumentation/net/http/httptrace/otelhttptrace v0.61.0 h1:lREC4C0ilyP4WibDhQ7Gg2ygAQFP8oR07Fst/5cafwI= -go.opentelemetry.io/contrib/instrumentation/net/http/httptrace/otelhttptrace v0.61.0/go.mod h1:HfvuU0kW9HewH14VCOLImqKvUgONodURG7Alj/IrnGI= -go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.63.0 h1:RbKq8BG0FI8OiXhBfcRtqqHcZcka+gU3cskNuf05R18= -go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.63.0/go.mod h1:h06DGIukJOevXaj/xrNjhi/2098RZzcLTbc0jDAUbsg= -go.opentelemetry.io/contrib/otelconf v0.16.0 h1:mTYGRlZtpc/zDaTaUQSnsZ1hyoRONaS4Od/Ny5++lhE= -go.opentelemetry.io/contrib/otelconf v0.16.0/go.mod h1:gnsljuyDyVDg39vUvXKj0BVCiVaokN3b8N5BL/ab8fQ= -go.opentelemetry.io/contrib/propagators/b3 v1.37.0 h1:0aGKdIuVhy5l4GClAjl72ntkZJhijf2wg1S7b5oLoYA= -go.opentelemetry.io/contrib/propagators/b3 v1.37.0/go.mod h1:nhyrxEJEOQdwR15zXrCKI6+cJK60PXAkJ/jRyfhr2mg= -go.opentelemetry.io/contrib/zpages v0.62.0 h1:9fUYTLmrK0x/lweM2uM+BOx069jLx8PxVqWhegGJ9Bo= -go.opentelemetry.io/contrib/zpages v0.62.0/go.mod h1:C8kXoiC1Ytvereztus2R+kqdSa6W/MZ8FfS8Zwj+LiM= -go.opentelemetry.io/otel v1.38.0 h1:RkfdswUDRimDg0m2Az18RKOsnI8UDzppJAtj01/Ymk8= -go.opentelemetry.io/otel v1.38.0/go.mod h1:zcmtmQ1+YmQM9wrNsTGV/q/uyusom3P8RxwExxkZhjM= -go.opentelemetry.io/otel/exporters/otlp/otlplog/otlploggrpc v0.13.0 h1:z6lNIajgEBVtQZHjfw2hAccPEBDs+nx58VemmXWa2ec= -go.opentelemetry.io/otel/exporters/otlp/otlplog/otlploggrpc v0.13.0/go.mod h1:+kyc3bRx/Qkq05P6OCu3mTEIOxYRYzoIg+JsUp5X+PM= -go.opentelemetry.io/otel/exporters/otlp/otlplog/otlploghttp v0.13.0 h1:zUfYw8cscHHLwaY8Xz3fiJu+R59xBnkgq2Zr1lwmK/0= -go.opentelemetry.io/otel/exporters/otlp/otlplog/otlploghttp v0.13.0/go.mod h1:514JLMCcFLQFS8cnTepOk6I09cKWJ5nGHBxHrMJ8Yfg= -go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetricgrpc v1.37.0 h1:zG8GlgXCJQd5BU98C0hZnBbElszTmUgCNCfYneaDL0A= -go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetricgrpc v1.37.0/go.mod h1:hOfBCz8kv/wuq73Mx2H2QnWokh/kHZxkh6SNF2bdKtw= -go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetrichttp v1.37.0 h1:9PgnL3QNlj10uGxExowIDIZu66aVBwWhXmbOp1pa6RA= -go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetrichttp v1.37.0/go.mod h1:0ineDcLELf6JmKfuo0wvvhAVMuxWFYvkTin2iV4ydPQ= -go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.37.0 h1:Ahq7pZmv87yiyn3jeFz/LekZmPLLdKejuO3NcK9MssM= -go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.37.0/go.mod h1:MJTqhM0im3mRLw1i8uGHnCvUEeS7VwRyxlLC78PA18M= -go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.37.0 h1:EtFWSnwW9hGObjkIdmlnWSydO+Qs8OwzfzXLUPg4xOc= -go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.37.0/go.mod h1:QjUEoiGCPkvFZ/MjK6ZZfNOS6mfVEVKYE99dFhuN2LI= -go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp v1.37.0 h1:bDMKF3RUSxshZ5OjOTi8rsHGaPKsAt76FaqgvIUySLc= -go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp v1.37.0/go.mod h1:dDT67G/IkA46Mr2l9Uj7HsQVwsjASyV9SjGofsiUZDA= +go.opentelemetry.io/collector/service v0.142.0 h1:3p2V3E3v97bmjJB591VkHlZQ+ez/PjGDHDF247jImLo= +go.opentelemetry.io/collector/service v0.142.0/go.mod h1:n75a5MCGU/xz3iAhM/tZYxAXCIkpWvN7QQftO0f9ulI= +go.opentelemetry.io/collector/service/hostcapabilities v0.142.0 h1:/l/T3kWNrxy18pV+VfTKIRBw0JwPHiDVH4lPOyKjI78= +go.opentelemetry.io/collector/service/hostcapabilities v0.142.0/go.mod h1:1Rm5SgOnwBKllAWBlPVcEDCBEtiHe7dv2Pfr4/HaiWo= +go.opentelemetry.io/collector/service/telemetry/telemetrytest v0.142.0 h1:vl9QQPsPZVYzIn7sRjqNpScP+hEOAaoX+C3iGF7CkOM= +go.opentelemetry.io/collector/service/telemetry/telemetrytest v0.142.0/go.mod h1:Sf8FQY4ig/+jIC9eGKOMcw97yCB2rR0aUGgchWM4tIo= +go.opentelemetry.io/contrib/bridges/otelzap v0.13.0 h1:aBKdhLVieqvwWe9A79UHI/0vgp2t/s2euY8X59pGRlw= +go.opentelemetry.io/contrib/bridges/otelzap v0.13.0/go.mod h1:SYqtxLQE7iINgh6WFuVi2AI70148B8EI35DSk0Wr8m4= +go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.63.0 h1:YH4g8lQroajqUwWbq/tr2QX1JFmEXaDLgG+ew9bLMWo= +go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.63.0/go.mod h1:fvPi2qXDqFs8M4B4fmJhE92TyQs9Ydjlg3RvfUp+NbQ= +go.opentelemetry.io/contrib/instrumentation/net/http/httptrace/otelhttptrace v0.63.0 h1:2pn7OzMewmYRiNtv1doZnLo3gONcnMHlFnmOR8Vgt+8= +go.opentelemetry.io/contrib/instrumentation/net/http/httptrace/otelhttptrace v0.63.0/go.mod h1:rjbQTDEPQymPE0YnRQp9/NuPwwtL0sesz/fnqRW/v84= +go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.64.0 h1:ssfIgGNANqpVFCndZvcuyKbl0g+UAVcbBcqGkG28H0Y= +go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.64.0/go.mod h1:GQ/474YrbE4Jx8gZ4q5I4hrhUzM6UPzyrqJYV2AqPoQ= +go.opentelemetry.io/contrib/otelconf v0.18.0 h1:ciF2Gf00BWs0DnexKFZXcxg9kJ8r3SUW1LOzW3CsKA8= +go.opentelemetry.io/contrib/otelconf v0.18.0/go.mod h1:FcP7k+JLwBLdOxS6qY6VQ/4b5VBntI6L6o80IMwhAeI= +go.opentelemetry.io/contrib/propagators/b3 v1.38.0 h1:uHsCCOSKl0kLrV2dLkFK+8Ywk9iKa/fptkytc6aFFEo= +go.opentelemetry.io/contrib/propagators/b3 v1.38.0/go.mod h1:wMRSZJZcY8ya9mApLLhwIMjqmApy2o/Ml+62lhvxyHU= +go.opentelemetry.io/contrib/zpages v0.63.0 h1:TppOKuZGbqXMgsfjqq3i09N5Vbo1JLtLImUqiTPGnX4= +go.opentelemetry.io/contrib/zpages v0.63.0/go.mod h1:5F8uugz75ay/MMhRRhxAXY33FuaI8dl7jTxefrIy5qk= +go.opentelemetry.io/otel v1.39.0 h1:8yPrr/S0ND9QEfTfdP9V+SiwT4E0G7Y5MO7p85nis48= +go.opentelemetry.io/otel v1.39.0/go.mod h1:kLlFTywNWrFyEdH0oj2xK0bFYZtHRYUdv1NklR/tgc8= +go.opentelemetry.io/otel/exporters/otlp/otlplog/otlploggrpc v0.14.0 h1:OMqPldHt79PqWKOMYIAQs3CxAi7RLgPxwfFSwr4ZxtM= +go.opentelemetry.io/otel/exporters/otlp/otlplog/otlploggrpc v0.14.0/go.mod h1:1biG4qiqTxKiUCtoWDPpL3fB3KxVwCiGw81j3nKMuHE= +go.opentelemetry.io/otel/exporters/otlp/otlplog/otlploghttp v0.14.0 h1:QQqYw3lkrzwVsoEX0w//EhH/TCnpRdEenKBOOEIMjWc= +go.opentelemetry.io/otel/exporters/otlp/otlplog/otlploghttp v0.14.0/go.mod h1:gSVQcr17jk2ig4jqJ2DX30IdWH251JcNAecvrqTxH1s= +go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetricgrpc v1.38.0 h1:vl9obrcoWVKp/lwl8tRE33853I8Xru9HFbw/skNeLs8= +go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetricgrpc v1.38.0/go.mod h1:GAXRxmLJcVM3u22IjTg74zWBrRCKq8BnOqUVLodpcpw= +go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetrichttp v1.38.0 h1:Oe2z/BCg5q7k4iXC3cqJxKYg0ieRiOqF0cecFYdPTwk= +go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetrichttp v1.38.0/go.mod h1:ZQM5lAJpOsKnYagGg/zV2krVqTtaVdYdDkhMoX6Oalg= +go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.38.0 h1:GqRJVj7UmLjCVyVJ3ZFLdPRmhDUp2zFmQe3RHIOsw24= +go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.38.0/go.mod h1:ri3aaHSmCTVYu2AWv44YMauwAQc0aqI9gHKIcSbI1pU= +go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.38.0 h1:lwI4Dc5leUqENgGuQImwLo4WnuXFPetmPpkLi2IrX54= +go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.38.0/go.mod h1:Kz/oCE7z5wuyhPxsXDuaPteSWqjSBD5YaSdbxZYGbGk= +go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp v1.38.0 h1:aTL7F04bJHUlztTsNGJ2l+6he8c+y/b//eR0jjjemT4= +go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp v1.38.0/go.mod h1:kldtb7jDTeol0l3ewcmd8SDvx3EmIE7lyvqbasU3QC4= go.opentelemetry.io/otel/exporters/prometheus v0.60.0 h1:cGtQxGvZbnrWdC2GyjZi0PDKVSLWP/Jocix3QWfXtbo= go.opentelemetry.io/otel/exporters/prometheus v0.60.0/go.mod h1:hkd1EekxNo69PTV4OWFGZcKQiIqg0RfuWExcPKFvepk= -go.opentelemetry.io/otel/exporters/stdout/stdoutlog v0.13.0 h1:yEX3aC9KDgvYPhuKECHbOlr5GLwH6KTjLJ1sBSkkxkc= -go.opentelemetry.io/otel/exporters/stdout/stdoutlog v0.13.0/go.mod h1:/GXR0tBmmkxDaCUGahvksvp66mx4yh5+cFXgSlhg0vQ= -go.opentelemetry.io/otel/exporters/stdout/stdoutmetric v1.37.0 h1:6VjV6Et+1Hd2iLZEPtdV7vie80Yyqf7oikJLjQ/myi0= -go.opentelemetry.io/otel/exporters/stdout/stdoutmetric v1.37.0/go.mod h1:u8hcp8ji5gaM/RfcOo8z9NMnf1pVLfVY7lBY2VOGuUU= -go.opentelemetry.io/otel/exporters/stdout/stdouttrace v1.37.0 h1:SNhVp/9q4Go/XHBkQ1/d5u9P/U+L1yaGPoi0x+mStaI= -go.opentelemetry.io/otel/exporters/stdout/stdouttrace v1.37.0/go.mod h1:tx8OOlGH6R4kLV67YaYO44GFXloEjGPZuMjEkaaqIp4= -go.opentelemetry.io/otel/log v0.14.0 h1:2rzJ+pOAZ8qmZ3DDHg73NEKzSZkhkGIua9gXtxNGgrM= -go.opentelemetry.io/otel/log v0.14.0/go.mod h1:5jRG92fEAgx0SU/vFPxmJvhIuDU9E1SUnEQrMlJpOno= +go.opentelemetry.io/otel/exporters/stdout/stdoutlog v0.14.0 h1:B/g+qde6Mkzxbry5ZZag0l7QrQBCtVm7lVjaLgmpje8= +go.opentelemetry.io/otel/exporters/stdout/stdoutlog v0.14.0/go.mod h1:mOJK8eMmgW6ocDJn6Bn11CcZ05gi3P8GylBXEkZtbgA= +go.opentelemetry.io/otel/exporters/stdout/stdoutmetric v1.38.0 h1:wm/Q0GAAykXv83wzcKzGGqAnnfLFyFe7RslekZuv+VI= +go.opentelemetry.io/otel/exporters/stdout/stdoutmetric v1.38.0/go.mod h1:ra3Pa40+oKjvYh+ZD3EdxFZZB0xdMfuileHAm4nNN7w= +go.opentelemetry.io/otel/exporters/stdout/stdouttrace v1.38.0 h1:kJxSDN4SgWWTjG/hPp3O7LCGLcHXFlvS2/FFOrwL+SE= +go.opentelemetry.io/otel/exporters/stdout/stdouttrace v1.38.0/go.mod h1:mgIOzS7iZeKJdeB8/NYHrJ48fdGc71Llo5bJ1J4DWUE= +go.opentelemetry.io/otel/log v0.15.0 h1:0VqVnc3MgyYd7QqNVIldC3dsLFKgazR6P3P3+ypkyDY= +go.opentelemetry.io/otel/log v0.15.0/go.mod h1:9c/G1zbyZfgu1HmQD7Qj84QMmwTp2QCQsZH1aeoWDE4= go.opentelemetry.io/otel/log/logtest v0.14.0 h1:BGTqNeluJDK2uIHAY8lRqxjVAYfqgcaTbVk1n3MWe5A= go.opentelemetry.io/otel/log/logtest v0.14.0/go.mod h1:IuguGt8XVP4XA4d2oEEDMVDBBCesMg8/tSGWDjuKfoA= -go.opentelemetry.io/otel/metric v1.38.0 h1:Kl6lzIYGAh5M159u9NgiRkmoMKjvbsKtYRwgfrA6WpA= -go.opentelemetry.io/otel/metric v1.38.0/go.mod h1:kB5n/QoRM8YwmUahxvI3bO34eVtQf2i4utNVLr9gEmI= -go.opentelemetry.io/otel/sdk v1.38.0 h1:l48sr5YbNf2hpCUj/FoGhW9yDkl+Ma+LrVl8qaM5b+E= -go.opentelemetry.io/otel/sdk v1.38.0/go.mod h1:ghmNdGlVemJI3+ZB5iDEuk4bWA3GkTpW+DOoZMYBVVg= -go.opentelemetry.io/otel/sdk/log v0.13.0 h1:I3CGUszjM926OphK8ZdzF+kLqFvfRY/IIoFq/TjwfaQ= -go.opentelemetry.io/otel/sdk/log v0.13.0/go.mod h1:lOrQyCCXmpZdN7NchXb6DOZZa1N5G1R2tm5GMMTpDBw= -go.opentelemetry.io/otel/sdk/log/logtest v0.13.0 h1:9yio6AFZ3QD9j9oqshV1Ibm9gPLlHNxurno5BreMtIA= -go.opentelemetry.io/otel/sdk/log/logtest v0.13.0/go.mod h1:QOGiAJHl+fob8Nu85ifXfuQYmJTFAvcrxL6w5/tu168= -go.opentelemetry.io/otel/sdk/metric v1.38.0 h1:aSH66iL0aZqo//xXzQLYozmWrXxyFkBJ6qT5wthqPoM= -go.opentelemetry.io/otel/sdk/metric v1.38.0/go.mod h1:dg9PBnW9XdQ1Hd6ZnRz689CbtrUp0wMMs9iPcgT9EZA= -go.opentelemetry.io/otel/trace v1.38.0 h1:Fxk5bKrDZJUH+AMyyIXGcFAPah0oRcT+LuNtJrmcNLE= -go.opentelemetry.io/otel/trace v1.38.0/go.mod h1:j1P9ivuFsTceSWe1oY+EeW3sc+Pp42sO++GHkg4wwhs= -go.opentelemetry.io/proto/otlp v1.7.0 h1:jX1VolD6nHuFzOYso2E73H85i92Mv8JQYk0K9vz09os= -go.opentelemetry.io/proto/otlp v1.7.0/go.mod h1:fSKjH6YJ7HDlwzltzyMj036AJ3ejJLCgCSHGj4efDDo= -go.opentelemetry.io/proto/slim/otlp v1.8.0 h1:afcLwp2XOeCbGrjufT1qWyruFt+6C9g5SOuymrSPUXQ= -go.opentelemetry.io/proto/slim/otlp v1.8.0/go.mod h1:Yaa5fjYm1SMCq0hG0x/87wV1MP9H5xDuG/1+AhvBcsI= -go.opentelemetry.io/proto/slim/otlp/collector/profiles/v1development v0.1.0 h1:Uc+elixz922LHx5colXGi1ORbsW8DTIGM+gg+D9V7HE= -go.opentelemetry.io/proto/slim/otlp/collector/profiles/v1development v0.1.0/go.mod h1:VyU6dTWBWv6h9w/+DYgSZAPMabWbPTFTuxp25sM8+s0= -go.opentelemetry.io/proto/slim/otlp/profiles/v1development v0.1.0 h1:i8YpvWGm/Uq1koL//bnbJ/26eV3OrKWm09+rDYo7keU= -go.opentelemetry.io/proto/slim/otlp/profiles/v1development v0.1.0/go.mod h1:pQ70xHY/ZVxNUBPn+qUWPl8nwai87eWdqL3M37lNi9A= +go.opentelemetry.io/otel/metric v1.39.0 h1:d1UzonvEZriVfpNKEVmHXbdf909uGTOQjA0HF0Ls5Q0= +go.opentelemetry.io/otel/metric v1.39.0/go.mod h1:jrZSWL33sD7bBxg1xjrqyDjnuzTUB0x1nBERXd7Ftcs= +go.opentelemetry.io/otel/sdk v1.39.0 h1:nMLYcjVsvdui1B/4FRkwjzoRVsMK8uL/cj0OyhKzt18= +go.opentelemetry.io/otel/sdk v1.39.0/go.mod h1:vDojkC4/jsTJsE+kh+LXYQlbL8CgrEcwmt1ENZszdJE= +go.opentelemetry.io/otel/sdk/log v0.14.0 h1:JU/U3O7N6fsAXj0+CXz21Czg532dW2V4gG1HE/e8Zrg= +go.opentelemetry.io/otel/sdk/log v0.14.0/go.mod h1:imQvII+0ZylXfKU7/wtOND8Hn4OpT3YUoIgqJVksUkM= +go.opentelemetry.io/otel/sdk/log/logtest v0.14.0 h1:Ijbtz+JKXl8T2MngiwqBlPaHqc4YCaP/i13Qrow6gAM= +go.opentelemetry.io/otel/sdk/log/logtest v0.14.0/go.mod h1:dCU8aEL6q+L9cYTqcVOk8rM9Tp8WdnHOPLiBgp0SGOA= +go.opentelemetry.io/otel/sdk/metric v1.39.0 h1:cXMVVFVgsIf2YL6QkRF4Urbr/aMInf+2WKg+sEJTtB8= +go.opentelemetry.io/otel/sdk/metric v1.39.0/go.mod h1:xq9HEVH7qeX69/JnwEfp6fVq5wosJsY1mt4lLfYdVew= +go.opentelemetry.io/otel/trace v1.39.0 h1:2d2vfpEDmCJ5zVYz7ijaJdOF59xLomrvj7bjt6/qCJI= +go.opentelemetry.io/otel/trace v1.39.0/go.mod h1:88w4/PnZSazkGzz/w84VHpQafiU4EtqqlVdxWy+rNOA= +go.opentelemetry.io/proto/otlp v1.7.1 h1:gTOMpGDb0WTBOP8JaO72iL3auEZhVmAQg4ipjOVAtj4= +go.opentelemetry.io/proto/otlp v1.7.1/go.mod h1:b2rVh6rfI/s2pHWNlB7ILJcRALpcNDzKhACevjI+ZnE= +go.opentelemetry.io/proto/slim/otlp v1.9.0 h1:fPVMv8tP3TrsqlkH1HWYUpbCY9cAIemx184VGkS6vlE= +go.opentelemetry.io/proto/slim/otlp v1.9.0/go.mod h1:xXdeJJ90Gqyll+orzUkY4bOd2HECo5JofeoLpymVqdI= +go.opentelemetry.io/proto/slim/otlp/collector/profiles/v1development v0.2.0 h1:o13nadWDNkH/quoDomDUClnQBpdQQ2Qqv0lQBjIXjE8= +go.opentelemetry.io/proto/slim/otlp/collector/profiles/v1development v0.2.0/go.mod h1:Gyb6Xe7FTi/6xBHwMmngGoHqL0w29Y4eW8TGFzpefGA= +go.opentelemetry.io/proto/slim/otlp/profiles/v1development v0.2.0 h1:EiUYvtwu6PMrMHVjcPfnsG3v+ajPkbUeH+IL93+QYyk= +go.opentelemetry.io/proto/slim/otlp/profiles/v1development v0.2.0/go.mod h1:mUUHKFiN2SST3AhJ8XhJxEoeVW12oqfXog0Bo8W3Ec4= 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/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.0 h1:aJMhYGrd5QSmlpLMr2MftRKl7t8J8PTZPA732ud/XR8= -go.uber.org/zap v1.27.0/go.mod h1:GB2qFLM7cTU87MWRP2mPIjqfIDnGu+VIO4V/SdhGo2E= +go.uber.org/zap v1.27.1 h1:08RqriUEv8+ArZRYSTXy1LeBScaMpVSTBhCeaZYfMYc= +go.uber.org/zap v1.27.1/go.mod h1:GB2qFLM7cTU87MWRP2mPIjqfIDnGu+VIO4V/SdhGo2E= go.uber.org/zap/exp v0.3.0 h1:6JYzdifzYkGmTdRR59oYH+Ng7k49H9qVpWwNSsGJj3U= go.uber.org/zap/exp v0.3.0/go.mod h1:5I384qq7XGxYyByIhHm6jg5CHkGY0nsTfbDLgDDlgJQ= -go.yaml.in/yaml/v2 v2.4.2 h1:DzmwEr2rDGHl7lsFgAHxmNz/1NlQ7xLIrlN2h5d1eGI= -go.yaml.in/yaml/v2 v2.4.2/go.mod h1:081UH+NErpNdqlCXm3TtEran0rJZGxAYx9hb/ELlsPU= +go.yaml.in/yaml/v2 v2.4.3 h1:6gvOSjQoTB3vt1l+CU+tSyi/HOjfOjRLJ4YwYZGwRO0= +go.yaml.in/yaml/v2 v2.4.3/go.mod h1:zSxWcmIDjOzPXpjlTTbAsKokqkDNAVtZO0WOMiT90s8= go.yaml.in/yaml/v3 v3.0.4 h1:tfq32ie2Jv2UxXFdLJdh3jXuOzWiL1fo0bu/FbuKpbc= go.yaml.in/yaml/v3 v3.0.4/go.mod h1:DhzuOOF2ATzADvBadXxruRBLzYTpT36CKvDb3+aBEFg= golang.org/x/crypto v0.0.0-20180904163835-0709b304e793/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= @@ -858,10 +859,10 @@ 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.42.0 h1:chiH31gIWm57EkTXpwnqf8qeuMUi0yekh6mT2AvFlqI= -golang.org/x/crypto v0.42.0/go.mod h1:4+rDnOTJhQCx2q7/j6rAN5XDw8kPjeaXEUR2eL94ix8= -golang.org/x/exp v0.0.0-20250106191152-7588d65b2ba8 h1:yqrTHse8TCMW1M1ZCP+VAR/l0kKxwaAIqN/il7x4voA= -golang.org/x/exp v0.0.0-20250106191152-7588d65b2ba8/go.mod h1:tujkw807nyEEAamNbDrEGzRav+ilXA7PCRAd6xsmwiU= +golang.org/x/crypto v0.46.0 h1:cKRW/pmt1pKAfetfu+RCEvjvZkA9RimPbh7bhFjGVBU= +golang.org/x/crypto v0.46.0/go.mod h1:Evb/oLKmMraqjZ2iQTwDwvCtJkczlDuTmdJXoZVzqU0= +golang.org/x/exp v0.0.0-20250808145144-a408d31f581a h1:Y+7uR/b1Mw2iSXZ3G//1haIiSElDQZ8KWh0h+sZPG90= +golang.org/x/exp v0.0.0-20250808145144-a408d31f581a/go.mod h1:rT6SFzZ7oxADUDx58pcaKFTcZ+inxAa9fTrYx/uVYwg= 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= @@ -869,8 +870,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.27.0 h1:kb+q2PyFnEADO2IEF935ehFUXlWiNjJWtRNgBLSfbxQ= -golang.org/x/mod v0.27.0/go.mod h1:rWI627Fq0DEoudcK+MBkNkCe0EetEaDSwJJkCcjpazc= +golang.org/x/mod v0.30.0 h1:fDEXFVZ/fmCKProc/yAXXUijritrDzahmwwefnjoPFk= +golang.org/x/mod v0.30.0/go.mod h1:lAsf5O2EvJeSFMiBxXDki7sCgAxEUcZHXoXMKT4GJKc= 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= @@ -887,10 +888,10 @@ 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.44.0 h1:evd8IRDyfNBMBTTY5XRF1vaZlD+EmWx6x8PkhR04H/I= -golang.org/x/net v0.44.0/go.mod h1:ECOoLqd5U3Lhyeyo/QDCEVQ4sNgYsqvCZ722XogGieY= -golang.org/x/oauth2 v0.30.0 h1:dnDm7JmhM45NNpd8FDDeLhK6FwqbOf4MLCM9zb1BOHI= -golang.org/x/oauth2 v0.30.0/go.mod h1:B++QgG3ZKulg6sRPGD/mqlHQs5rB3Ml9erfeDY7xKlU= +golang.org/x/net v0.48.0 h1:zyQRTTrjc33Lhh0fBgT/H3oZq9WuvRR5gPC70xpDiQU= +golang.org/x/net v0.48.0/go.mod h1:+ndRgGjkh8FGtu1w1FGbEC31if4VrNVMuKTgcAAnQRY= +golang.org/x/oauth2 v0.32.0 h1:jsCblLleRMDrxMN29H3z/k1KliIvpLgCkE6R8FXXNgY= +golang.org/x/oauth2 v0.32.0/go.mod h1:lzm5WQJQwKZ3nwavOZ3IS5Aulzxi68dUSgRHujetwEA= golang.org/x/sync v0.0.0-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= @@ -903,8 +904,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.17.0 h1:l60nONMj9l5drqw6jlhIELNv9I0A4OFgRsG9k2oT9Ug= -golang.org/x/sync v0.17.0/go.mod h1:9KTHXmSnoGruLpwFjVSX0lNNA75CykiMECbovNTZqGI= +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/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= @@ -940,8 +941,8 @@ golang.org/x/sys v0.12.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.17.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= golang.org/x/sys v0.20.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= golang.org/x/sys v0.28.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= -golang.org/x/sys v0.36.0 h1:KVRy2GtZBrk1cBYA7MKu5bEZFxQk4NIDV6RLVcC8o0k= -golang.org/x/sys v0.36.0/go.mod h1:OgkHotnGiDImocRcuBABYBEXf8A9a87e/uXjp9XT3ks= +golang.org/x/sys v0.39.0 h1:CvCKL8MeisomCi6qNZ+wbb0DN9E5AATixKsvNtMoMFk= +golang.org/x/sys v0.39.0/go.mod h1:OgkHotnGiDImocRcuBABYBEXf8A9a87e/uXjp9XT3ks= golang.org/x/telemetry v0.0.0-20240228155512-f48c80bd79b2/go.mod h1:TeRTkGYfJXctD9OcfyVLyj2J3IxLnKwHJR8f4D8a3YE= golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8= @@ -951,8 +952,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.35.0 h1:bZBVKBudEyhRcajGcNc3jIfWPqV4y/Kt2XcoigOWtDQ= -golang.org/x/term v0.35.0/go.mod h1:TPGtkTLesOwf2DE8CgVYiZinHAOuy5AYUYT1lENIZnA= +golang.org/x/term v0.38.0 h1:PQ5pkm/rLO6HnxFR7N2lJHOZX6Kez5Y1gDSJla6jo7Q= +golang.org/x/term v0.38.0/go.mod h1:bSEAKrOT1W+VSu9TSCMtoGEOUcKxOKgl3LE5QEF/xVg= 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= @@ -964,10 +965,10 @@ 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.29.0 h1:1neNs90w9YzJ9BocxfsQNHKuAT4pkghyXc4nhZ6sJvk= -golang.org/x/text v0.29.0/go.mod h1:7MhJOA9CD2qZyOKYazxdYMF85OwPdEr9jTtBpO7ydH4= -golang.org/x/time v0.12.0 h1:ScB/8o8olJvc+CQPWrK3fPZNfh7qgwCrY0zJmoEQLSE= -golang.org/x/time v0.12.0/go.mod h1:CDIdPxbZBQxdj6cxyCIdrNogrJKMJ7pr37NYpMcMDSg= +golang.org/x/text v0.32.0 h1:ZD01bjUt1FQ9WJ0ClOL5vxgxOI/sVCNgX1YtKwcY0mU= +golang.org/x/text v0.32.0/go.mod h1:o/rUWzghvpD5TXrTIBuJU77MTaN0ljMWE47kxGJQ7jY= +golang.org/x/time v0.13.0 h1:eUlYslOIt32DgYD6utsuUeHs4d7AsEYLuIAdg7FlYgI= +golang.org/x/time v0.13.0/go.mod h1:eL/Oa2bBBK0TkX57Fyni+NgnyQQN4LitPmob2Hjnqw4= 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= @@ -977,26 +978,28 @@ 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.36.0 h1:kWS0uv/zsvHEle1LbV5LE8QujrxB3wfQyxHfhOk0Qkg= -golang.org/x/tools v0.36.0/go.mod h1:WBDiHKJK8YgLHlcQPYQzNCkUxUypCaa5ZegCVutKm+s= +golang.org/x/tools v0.39.0 h1:ik4ho21kwuQln40uelmciQPp9SipgNDdrafrYA4TmQQ= +golang.org/x/tools v0.39.0/go.mod h1:JnefbkDPyD8UU2kI5fuf8ZX4/yUeh9W877ZeBONxUqQ= +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= golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= gonum.org/v1/gonum v0.16.0 h1:5+ul4Swaf3ESvrOnidPp4GZbzf0mxVQpDCYUQE7OJfk= gonum.org/v1/gonum v0.16.0/go.mod h1:fef3am4MQ93R2HHpKnLk4/Tbh/s0+wqD5nfa6Pnwy4E= -google.golang.org/api v0.239.0 h1:2hZKUnFZEy81eugPs4e2XzIJ5SOwQg0G82bpXD65Puo= -google.golang.org/api v0.239.0/go.mod h1:cOVEm2TpdAGHL2z+UwyS+kmlGr3bVWQQ6sYEqkKje50= -google.golang.org/genproto v0.0.0-20250505200425-f936aa4a68b2 h1:1tXaIXCracvtsRxSBsYDiSBN0cuJvM7QYW+MrpIRY78= -google.golang.org/genproto v0.0.0-20250505200425-f936aa4a68b2/go.mod h1:49MsLSx0oWMOZqcpB3uL8ZOkAh1+TndpJ8ONoCBWiZk= -google.golang.org/genproto/googleapis/api v0.0.0-20250707201910-8d1bb00bc6a7 h1:FiusG7LWj+4byqhbvmB+Q93B/mOxJLN2DTozDuZm4EU= -google.golang.org/genproto/googleapis/api v0.0.0-20250707201910-8d1bb00bc6a7/go.mod h1:kXqgZtrWaf6qS3jZOCnCH7WYfrvFjkC51bM8fz3RsCA= -google.golang.org/genproto/googleapis/rpc v0.0.0-20250707201910-8d1bb00bc6a7 h1:pFyd6EwwL2TqFf8emdthzeX+gZE1ElRq3iM8pui4KBY= -google.golang.org/genproto/googleapis/rpc v0.0.0-20250707201910-8d1bb00bc6a7/go.mod h1:qQ0YXyHHx3XkvlzUtpXDkS29lDSafHMZBAZDc03LQ3A= -google.golang.org/grpc v1.75.1 h1:/ODCNEuf9VghjgO3rqLcfg8fiOP0nSluljWFlDxELLI= -google.golang.org/grpc v1.75.1/go.mod h1:JtPAzKiq4v1xcAB2hydNlWI2RnF85XXcV0mhKXr2ecQ= -google.golang.org/protobuf v1.36.9 h1:w2gp2mA27hUeUzj9Ex9FBjsBm40zfaDtEWow293U7Iw= -google.golang.org/protobuf v1.36.9/go.mod h1:fuxRtAxBytpl4zzqUh6/eyUujkJdNiuEkXntxiD/uRU= +google.golang.org/api v0.252.0 h1:xfKJeAJaMwb8OC9fesr369rjciQ704AjU/psjkKURSI= +google.golang.org/api v0.252.0/go.mod h1:dnHOv81x5RAmumZ7BWLShB/u7JZNeyalImxHmtTHxqw= +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-20251022142026-3a174f9686a8 h1:mepRgnBZa07I4TRuomDE4sTIYieg/osKmzIf4USdWS4= +google.golang.org/genproto/googleapis/api v0.0.0-20251022142026-3a174f9686a8/go.mod h1:fDMmzKV90WSg1NbozdqrE64fkuTv6mlq2zxo9ad+3yo= +google.golang.org/genproto/googleapis/rpc v0.0.0-20251022142026-3a174f9686a8 h1:M1rk8KBnUsBDg1oPGHNCxG4vc1f49epmTO7xscSajMk= +google.golang.org/genproto/googleapis/rpc v0.0.0-20251022142026-3a174f9686a8/go.mod h1:7i2o+ce6H/6BluujYR+kqX3GKH+dChPTQU19wjRPiGk= +google.golang.org/grpc v1.77.0 h1:wVVY6/8cGA6vvffn+wWK5ToddbgdU3d8MNENr4evgXM= +google.golang.org/grpc v1.77.0/go.mod h1:z0BY1iVj0q8E1uSQCjL9cppRj+gnZjzDnzV0dHhrNig= +google.golang.org/protobuf v1.36.10 h1:AYd7cD/uASjIL6Q9LiTjz8JLcrh/88q5UObnmY3aOOE= +google.golang.org/protobuf v1.36.10/go.mod h1:HTf+CrKn2C3g5S8VImy6tdcUvCska2kB7j23XfzDpco= gopkg.in/alecthomas/kingpin.v2 v2.2.6/go.mod h1:FMv+mEhP44yOT+4EoQTLFTRgOQ1FBLkstjWtayDeSgw= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/check.v1 v1.0.0-20190902080502-41f04d3bba15/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= @@ -1019,24 +1022,23 @@ 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.0.3 h1:4AuOwCGf4lLR9u3YOe2awrHygurzhO/HeQ6laiA6Sx0= gotest.tools/v3 v3.0.3/go.mod h1:Z7Lb0S5l+klDB31fvDQX8ss/FlKDxtlFlw3Oa8Ymbl8= -k8s.io/api v0.32.3 h1:Hw7KqxRusq+6QSplE3NYG4MBxZw1BZnq4aP4cJVINls= -k8s.io/api v0.32.3/go.mod h1:2wEDTXADtm/HA7CCMD8D8bK4yuBUptzaRhYcYEEYA3k= -k8s.io/apimachinery v0.32.3 h1:JmDuDarhDmA/Li7j3aPrwhpNBA94Nvk5zLeOge9HH1U= -k8s.io/apimachinery v0.32.3/go.mod h1:GpHVgxoKlTxClKcteaeuF1Ul/lDVb74KpZcxcmLDElE= -k8s.io/client-go v0.32.3 h1:RKPVltzopkSgHS7aS98QdscAgtgah/+zmpAogooIqVU= -k8s.io/client-go v0.32.3/go.mod h1:3v0+3k4IcT9bXTc4V2rt+d2ZPPG700Xy6Oi0Gdl2PaY= +k8s.io/api v0.34.1 h1:jC+153630BMdlFukegoEL8E/yT7aLyQkIVuwhmwDgJM= +k8s.io/api v0.34.1/go.mod h1:SB80FxFtXn5/gwzCoN6QCtPD7Vbu5w2n1S0J5gFfTYk= +k8s.io/apimachinery v0.34.1 h1:dTlxFls/eikpJxmAC7MVE8oOeP1zryV7iRyIjB0gky4= +k8s.io/apimachinery v0.34.1/go.mod h1:/GwIlEcWuTX9zKIg2mbw0LRFIsXwrfoVxn+ef0X13lw= +k8s.io/client-go v0.34.1 h1:ZUPJKgXsnKwVwmKKdPfw4tB58+7/Ik3CrjOEhsiZ7mY= +k8s.io/client-go v0.34.1/go.mod h1:kA8v0FP+tk6sZA0yKLRG67LWjqufAoSHA2xVGKw9Of8= 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-20241105132330-32ad38e42d3f h1:GA7//TjRY9yWGy1poLzYYJJ4JRdzg3+O6e8I+e+8T5Y= -k8s.io/kube-openapi v0.0.0-20241105132330-32ad38e42d3f/go.mod h1:R/HEjbvWI0qdfb8viZUeVZm0X6IZnxAydC7YU42CMw4= -k8s.io/utils v0.0.0-20241104100929-3ea5e8cea738 h1:M3sRQVHv7vB20Xc2ybTt7ODCeFj6JSWYFzOFnYeS6Ro= -k8s.io/utils v0.0.0-20241104100929-3ea5e8cea738/go.mod h1:OLgZIPagt7ERELqWJFomSt595RzquPNLL48iOWgYOg0= -sigs.k8s.io/json v0.0.0-20241010143419-9aa6b5e7a4b3 h1:/Rv+M11QRah1itp8VhT6HoVx1Ray9eB4DBr+K+/sCJ8= -sigs.k8s.io/json v0.0.0-20241010143419-9aa6b5e7a4b3/go.mod h1:18nIHnGi6636UCz6m8i4DhaJ65T6EruyzmoQqI2BVDo= -sigs.k8s.io/randfill v0.0.0-20250304075658-069ef1bbf016 h1:kXv6kKdoEtedwuqMmkqhbkgvYKeycVbC8+iPCP9j5kQ= -sigs.k8s.io/randfill v0.0.0-20250304075658-069ef1bbf016/go.mod h1:XeLlZ/jmk4i1HRopwe7/aU3H5n1zNUcX6TM94b3QxOY= -sigs.k8s.io/structured-merge-diff/v4 v4.6.0 h1:IUA9nvMmnKWcj5jl84xn+T5MnlZKThmUW1TdblaLVAc= -sigs.k8s.io/structured-merge-diff/v4 v4.6.0/go.mod h1:dDy58f92j70zLsuZVuUX5Wp9vtxXpaZnkPGWeqDfCps= -sigs.k8s.io/yaml v1.4.0/go.mod h1:Ejl7/uTz7PSA4eKMyQCUTnhZYNmLIl+5c2lQPGR2BPY= -sigs.k8s.io/yaml v1.5.0 h1:M10b2U7aEUY6hRtU870n2VTPgR5RZiL/I6Lcc2F4NUQ= -sigs.k8s.io/yaml v1.5.0/go.mod h1:wZs27Rbxoai4C0f8/9urLZtZtF3avA3gKvGyPdDqTO4= +k8s.io/kube-openapi v0.0.0-20250710124328-f3f2b991d03b h1:MloQ9/bdJyIu9lb1PzujOPolHyvO06MXG5TUIj2mNAA= +k8s.io/kube-openapi v0.0.0-20250710124328-f3f2b991d03b/go.mod h1:UZ2yyWbFTpuhSbFhv24aGNOdoRdJZgsIObGBUaYVsts= +k8s.io/utils v0.0.0-20250604170112-4c0f3b243397 h1:hwvWFiBzdWw1FhfY1FooPn3kzWuJ8tmbZBHi4zVsl1Y= +k8s.io/utils v0.0.0-20250604170112-4c0f3b243397/go.mod h1:OLgZIPagt7ERELqWJFomSt595RzquPNLL48iOWgYOg0= +sigs.k8s.io/json v0.0.0-20241014173422-cfa47c3a1cc8 h1:gBQPwqORJ8d8/YNZWEjoZs7npUVDpVXUUOFfW6CgAqE= +sigs.k8s.io/json v0.0.0-20241014173422-cfa47c3a1cc8/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.0 h1:jTijUJbW353oVOd9oTlifJqOGEkUw2jB/fXCbTiQEco= +sigs.k8s.io/structured-merge-diff/v6 v6.3.0/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/prometheus-ui/go.mod b/otelcollector/prometheus-ui/go.mod index 7114be300..cd799dee4 100644 --- a/otelcollector/prometheus-ui/go.mod +++ b/otelcollector/prometheus-ui/go.mod @@ -1,21 +1,25 @@ module prometheus-collector/otelcollector/prometheus-ui -go 1.23.8 +go 1.24.0 + +toolchain go1.24.11 require ( - github.com/prometheus/common v0.66.1 + github.com/prometheus/common v0.67.4 github.com/prometheus/common/assets v0.2.0 - github.com/prometheus/exporter-toolkit v0.14.0 - go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.63.0 + github.com/prometheus/exporter-toolkit v0.15.0 + go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.64.0 ) require ( github.com/beorn7/perks v1.0.1 // indirect github.com/cespare/xxhash/v2 v2.3.0 // indirect - github.com/coreos/go-systemd/v22 v22.5.0 // indirect + github.com/coreos/go-systemd/v22 v22.6.0 // indirect github.com/felixge/httpsnoop v1.0.4 // indirect github.com/go-logr/logr v1.4.3 // indirect github.com/go-logr/stdr v1.2.2 // indirect + github.com/golang-jwt/jwt/v5 v5.3.0 // indirect + github.com/google/uuid v1.6.0 // indirect github.com/jpillora/backoff v1.0.0 // indirect github.com/julienschmidt/httprouter v1.3.0 // indirect github.com/mdlayher/socket v0.4.1 // indirect @@ -25,17 +29,17 @@ require ( 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 - go.opentelemetry.io/auto/sdk v1.1.0 // indirect - go.opentelemetry.io/otel v1.38.0 // indirect - go.opentelemetry.io/otel/metric v1.38.0 // indirect - go.opentelemetry.io/otel/trace v1.38.0 // indirect - go.yaml.in/yaml/v2 v2.4.2 // indirect - golang.org/x/crypto v0.41.0 // indirect - golang.org/x/net v0.43.0 // indirect - golang.org/x/oauth2 v0.30.0 // indirect - golang.org/x/sync v0.16.0 // indirect - golang.org/x/sys v0.35.0 // indirect - golang.org/x/text v0.28.0 // indirect - google.golang.org/protobuf v1.36.8 // indirect - gopkg.in/yaml.v2 v2.4.0 // indirect + go.opentelemetry.io/auto/sdk v1.2.1 // indirect + go.opentelemetry.io/otel v1.39.0 // indirect + go.opentelemetry.io/otel/metric v1.39.0 // indirect + go.opentelemetry.io/otel/trace v1.39.0 // indirect + go.yaml.in/yaml/v2 v2.4.3 // indirect + golang.org/x/crypto v0.43.0 // indirect + golang.org/x/net v0.46.0 // indirect + golang.org/x/oauth2 v0.32.0 // indirect + golang.org/x/sync v0.17.0 // indirect + golang.org/x/sys v0.39.0 // indirect + golang.org/x/text v0.30.0 // indirect + golang.org/x/time v0.13.0 // indirect + google.golang.org/protobuf v1.36.10 // indirect ) diff --git a/otelcollector/prometheus-ui/go.sum b/otelcollector/prometheus-ui/go.sum index 6358731b5..844a697ae 100644 --- a/otelcollector/prometheus-ui/go.sum +++ b/otelcollector/prometheus-ui/go.sum @@ -2,8 +2,8 @@ github.com/beorn7/perks v1.0.1 h1:VlbKKnNfV8bJzeqoa4cOKqO6bYr3WgKZxO8Z16+hsOM= github.com/beorn7/perks v1.0.1/go.mod h1:G2ZrVWU2WbWT9wwq4/hrbKbnv/1ERSJQ0ibhJ6rlkpw= github.com/cespare/xxhash/v2 v2.3.0 h1:UL815xU9SqsFlibzuggzjXhog7bL6oX9BbNZnL2UFvs= github.com/cespare/xxhash/v2 v2.3.0/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs= -github.com/coreos/go-systemd/v22 v22.5.0 h1:RrqgGjYQKalulkV8NGVIfkXQf6YYmOyiJKk8iXXhfZs= -github.com/coreos/go-systemd/v22 v22.5.0/go.mod h1:Y58oyj3AT4RCenI/lSvhwexgC+NSVTIJ3seZv2GcEnc= +github.com/coreos/go-systemd/v22 v22.6.0 h1:aGVa/v8B7hpb0TKl0MWoAavPDmHvobFe5R5zn0bCJWo= +github.com/coreos/go-systemd/v22 v22.6.0/go.mod h1:iG+pp635Fo7ZmV/j14KUcmEyWF+0X7Lua8rrTWzYgWU= github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c= github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/felixge/httpsnoop v1.0.4 h1:NFTV2Zj1bL4mc9sqWACXbQFVBBg2W3GPvqp8/ESS2Wg= @@ -13,7 +13,8 @@ github.com/go-logr/logr v1.4.3 h1:CjnDlHq8ikf6E492q6eKboGOC0T8CDaOvkHCIg8idEI= github.com/go-logr/logr v1.4.3/go.mod h1:9T104GzyrTigFIr8wt5mBrctHMim0Nb2HLGrmQ40KvY= github.com/go-logr/stdr v1.2.2 h1:hSWxHoqTgW2S2qGc0LTAI563KZ5YKYRhT3MFKZMbjag= github.com/go-logr/stdr v1.2.2/go.mod h1:mMo/vtBO5dYbehREoey6XUKy/eSumjCCveDpRre4VKE= -github.com/godbus/dbus/v5 v5.0.4/go.mod h1:xhWf0FNVPg57R7Z0UbKHbJfkEywrmjJnf7w5xrFpKfA= +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/google/go-cmp v0.7.0 h1:wk8382ETsv4JYUZwIsn6YpYiWiBsYLSJiTsyBybVuN8= github.com/google/go-cmp v0.7.0/go.mod h1:pXiqmnSA92OHEEa9HXL2W4E7lf9JzCmGVUdgjX3N/iU= github.com/google/uuid v1.6.0 h1:NIvaJDMOsjHA8n1jAhLSgzrAzy1Hgr+hNrb57e+94F0= @@ -42,52 +43,52 @@ github.com/prometheus/client_golang v1.20.4 h1:Tgh3Yr67PaOv/uTqloMsCEdeuFTatm5zI github.com/prometheus/client_golang v1.20.4/go.mod h1:PIEt8X02hGcP8JWbeHyeZ53Y/jReSnHgO035n//V5WE= github.com/prometheus/client_model v0.6.2 h1:oBsgwpGs7iVziMvrGhE53c/GrLUsZdHnqNwqPLxwZyk= github.com/prometheus/client_model v0.6.2/go.mod h1:y3m2F6Gdpfy6Ut/GBsUqTWZqCUvMVzSfMLjcu6wAwpE= -github.com/prometheus/common v0.66.1 h1:h5E0h5/Y8niHc5DlaLlWLArTQI7tMrsfQjHV+d9ZoGs= -github.com/prometheus/common v0.66.1/go.mod h1:gcaUsgf3KfRSwHY4dIMXLPV0K/Wg1oZ8+SbZk/HH/dA= +github.com/prometheus/common v0.67.4 h1:yR3NqWO1/UyO1w2PhUvXlGQs/PtFmoveVO0KZ4+Lvsc= +github.com/prometheus/common v0.67.4/go.mod h1:gP0fq6YjjNCLssJCQp0yk4M8W6ikLURwkdd/YKtTbyI= github.com/prometheus/common/assets v0.2.0 h1:0P5OrzoHrYBOSM1OigWL3mY8ZvV2N4zIE/5AahrSrfM= github.com/prometheus/common/assets v0.2.0/go.mod h1:D17UVUE12bHbim7HzwUvtqm6gwBEaDQ0F+hIGbFbccI= -github.com/prometheus/exporter-toolkit v0.14.0 h1:NMlswfibpcZZ+H0sZBiTjrA3/aBFHkNZqE+iCj5EmRg= -github.com/prometheus/exporter-toolkit v0.14.0/go.mod h1:Gu5LnVvt7Nr/oqTBUC23WILZepW0nffNo10XdhQcwWA= +github.com/prometheus/exporter-toolkit v0.15.0 h1:Pcle5sSViwR1x0gdPd0wtYrPQENBieQAM7TmT0qtb2U= +github.com/prometheus/exporter-toolkit v0.15.0/go.mod h1:OyRWd2iTo6Xge9Kedvv0IhCrJSBu36JCfJ2yVniRIYk= github.com/prometheus/procfs v0.15.1 h1:YagwOFzUgYfKKHX6Dr+sHT7km/hxC76UB0learggepc= github.com/prometheus/procfs v0.15.1/go.mod h1:fB45yRUv8NstnjriLhBQLuOUt+WW4BsoGhij/e3PBqk= -github.com/rogpeppe/go-internal v1.13.1 h1:KvO1DLK/DRN07sQ1LQKScxyZJuNnedQ5/wKSR38lUII= -github.com/rogpeppe/go-internal v1.13.1/go.mod h1:uMEvuHeurkdAXX61udpOXGD/AzZDWNMNyH2VO9fmH0o= +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/stretchr/testify v1.11.1 h1:7s2iGBzp5EwR7/aIZr8ao5+dra3wiQyKjjFuvgVKu7U= github.com/stretchr/testify v1.11.1/go.mod h1:wZwfW3scLgRK+23gO65QZefKpKQRnfz6sD981Nm4B6U= -go.opentelemetry.io/auto/sdk v1.1.0 h1:cH53jehLUN6UFLY71z+NDOiNJqDdPRaXzTel0sJySYA= -go.opentelemetry.io/auto/sdk v1.1.0/go.mod h1:3wSPjt5PWp2RhlCcmmOial7AvC4DQqZb7a7wCow3W8A= -go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.63.0 h1:RbKq8BG0FI8OiXhBfcRtqqHcZcka+gU3cskNuf05R18= -go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.63.0/go.mod h1:h06DGIukJOevXaj/xrNjhi/2098RZzcLTbc0jDAUbsg= -go.opentelemetry.io/otel v1.38.0 h1:RkfdswUDRimDg0m2Az18RKOsnI8UDzppJAtj01/Ymk8= -go.opentelemetry.io/otel v1.38.0/go.mod h1:zcmtmQ1+YmQM9wrNsTGV/q/uyusom3P8RxwExxkZhjM= -go.opentelemetry.io/otel/metric v1.38.0 h1:Kl6lzIYGAh5M159u9NgiRkmoMKjvbsKtYRwgfrA6WpA= -go.opentelemetry.io/otel/metric v1.38.0/go.mod h1:kB5n/QoRM8YwmUahxvI3bO34eVtQf2i4utNVLr9gEmI= -go.opentelemetry.io/otel/sdk v1.38.0 h1:l48sr5YbNf2hpCUj/FoGhW9yDkl+Ma+LrVl8qaM5b+E= -go.opentelemetry.io/otel/sdk v1.38.0/go.mod h1:ghmNdGlVemJI3+ZB5iDEuk4bWA3GkTpW+DOoZMYBVVg= -go.opentelemetry.io/otel/sdk/metric v1.38.0 h1:aSH66iL0aZqo//xXzQLYozmWrXxyFkBJ6qT5wthqPoM= -go.opentelemetry.io/otel/sdk/metric v1.38.0/go.mod h1:dg9PBnW9XdQ1Hd6ZnRz689CbtrUp0wMMs9iPcgT9EZA= -go.opentelemetry.io/otel/trace v1.38.0 h1:Fxk5bKrDZJUH+AMyyIXGcFAPah0oRcT+LuNtJrmcNLE= -go.opentelemetry.io/otel/trace v1.38.0/go.mod h1:j1P9ivuFsTceSWe1oY+EeW3sc+Pp42sO++GHkg4wwhs= -go.yaml.in/yaml/v2 v2.4.2 h1:DzmwEr2rDGHl7lsFgAHxmNz/1NlQ7xLIrlN2h5d1eGI= -go.yaml.in/yaml/v2 v2.4.2/go.mod h1:081UH+NErpNdqlCXm3TtEran0rJZGxAYx9hb/ELlsPU= -golang.org/x/crypto v0.41.0 h1:WKYxWedPGCTVVl5+WHSSrOBT0O8lx32+zxmHxijgXp4= -golang.org/x/crypto v0.41.0/go.mod h1:pO5AFd7FA68rFak7rOAGVuygIISepHftHnr8dr6+sUc= -golang.org/x/net v0.43.0 h1:lat02VYK2j4aLzMzecihNvTlJNQUq316m2Mr9rnM6YE= -golang.org/x/net v0.43.0/go.mod h1:vhO1fvI4dGsIjh73sWfUVjj3N7CA9WkKJNQm2svM6Jg= -golang.org/x/oauth2 v0.30.0 h1:dnDm7JmhM45NNpd8FDDeLhK6FwqbOf4MLCM9zb1BOHI= -golang.org/x/oauth2 v0.30.0/go.mod h1:B++QgG3ZKulg6sRPGD/mqlHQs5rB3Ml9erfeDY7xKlU= -golang.org/x/sync v0.16.0 h1:ycBJEhp9p4vXvUZNszeOq0kGTPghopOL8q0fq3vstxw= -golang.org/x/sync v0.16.0/go.mod h1:1dzgHSNfp02xaA81J2MS99Qcpr2w7fw1gpm99rleRqA= -golang.org/x/sys v0.35.0 h1:vz1N37gP5bs89s7He8XuIYXpyY0+QlsKmzipCbUtyxI= -golang.org/x/sys v0.35.0/go.mod h1:BJP2sWEmIv4KK5OTEluFJCKSidICx8ciO85XgH3Ak8k= -golang.org/x/text v0.28.0 h1:rhazDwis8INMIwQ4tpjLDzUhx6RlXqZNPEM0huQojng= -golang.org/x/text v0.28.0/go.mod h1:U8nCwOR8jO/marOQ0QbDiOngZVEBB7MAiitBuMjXiNU= -google.golang.org/protobuf v1.36.8 h1:xHScyCOEuuwZEc6UtSOvPbAT4zRh0xcNRYekJwfqyMc= -google.golang.org/protobuf v1.36.8/go.mod h1:fuxRtAxBytpl4zzqUh6/eyUujkJdNiuEkXntxiD/uRU= +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.64.0 h1:ssfIgGNANqpVFCndZvcuyKbl0g+UAVcbBcqGkG28H0Y= +go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.64.0/go.mod h1:GQ/474YrbE4Jx8gZ4q5I4hrhUzM6UPzyrqJYV2AqPoQ= +go.opentelemetry.io/otel v1.39.0 h1:8yPrr/S0ND9QEfTfdP9V+SiwT4E0G7Y5MO7p85nis48= +go.opentelemetry.io/otel v1.39.0/go.mod h1:kLlFTywNWrFyEdH0oj2xK0bFYZtHRYUdv1NklR/tgc8= +go.opentelemetry.io/otel/metric v1.39.0 h1:d1UzonvEZriVfpNKEVmHXbdf909uGTOQjA0HF0Ls5Q0= +go.opentelemetry.io/otel/metric v1.39.0/go.mod h1:jrZSWL33sD7bBxg1xjrqyDjnuzTUB0x1nBERXd7Ftcs= +go.opentelemetry.io/otel/sdk v1.39.0 h1:nMLYcjVsvdui1B/4FRkwjzoRVsMK8uL/cj0OyhKzt18= +go.opentelemetry.io/otel/sdk v1.39.0/go.mod h1:vDojkC4/jsTJsE+kh+LXYQlbL8CgrEcwmt1ENZszdJE= +go.opentelemetry.io/otel/sdk/metric v1.39.0 h1:cXMVVFVgsIf2YL6QkRF4Urbr/aMInf+2WKg+sEJTtB8= +go.opentelemetry.io/otel/sdk/metric v1.39.0/go.mod h1:xq9HEVH7qeX69/JnwEfp6fVq5wosJsY1mt4lLfYdVew= +go.opentelemetry.io/otel/trace v1.39.0 h1:2d2vfpEDmCJ5zVYz7ijaJdOF59xLomrvj7bjt6/qCJI= +go.opentelemetry.io/otel/trace v1.39.0/go.mod h1:88w4/PnZSazkGzz/w84VHpQafiU4EtqqlVdxWy+rNOA= +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= +golang.org/x/crypto v0.43.0 h1:dduJYIi3A3KOfdGOHX8AVZ/jGiyPa3IbBozJ5kNuE04= +golang.org/x/crypto v0.43.0/go.mod h1:BFbav4mRNlXJL4wNeejLpWxB7wMbc79PdRGhWKncxR0= +golang.org/x/net v0.46.0 h1:giFlY12I07fugqwPuWJi68oOnpfqFnJIJzaIIm2JVV4= +golang.org/x/net v0.46.0/go.mod h1:Q9BGdFy1y4nkUwiLvT5qtyhAnEHgnQ/zd8PfU6nc210= +golang.org/x/oauth2 v0.32.0 h1:jsCblLleRMDrxMN29H3z/k1KliIvpLgCkE6R8FXXNgY= +golang.org/x/oauth2 v0.32.0/go.mod h1:lzm5WQJQwKZ3nwavOZ3IS5Aulzxi68dUSgRHujetwEA= +golang.org/x/sync v0.17.0 h1:l60nONMj9l5drqw6jlhIELNv9I0A4OFgRsG9k2oT9Ug= +golang.org/x/sync v0.17.0/go.mod h1:9KTHXmSnoGruLpwFjVSX0lNNA75CykiMECbovNTZqGI= +golang.org/x/sys v0.39.0 h1:CvCKL8MeisomCi6qNZ+wbb0DN9E5AATixKsvNtMoMFk= +golang.org/x/sys v0.39.0/go.mod h1:OgkHotnGiDImocRcuBABYBEXf8A9a87e/uXjp9XT3ks= +golang.org/x/text v0.30.0 h1:yznKA/E9zq54KzlzBEAWn1NXSQ8DIp/NYMy88xJjl4k= +golang.org/x/text v0.30.0/go.mod h1:yDdHFIX9t+tORqspjENWgzaCVXgk0yYnYuSZ8UzzBVM= +golang.org/x/time v0.13.0 h1:eUlYslOIt32DgYD6utsuUeHs4d7AsEYLuIAdg7FlYgI= +golang.org/x/time v0.13.0/go.mod h1:eL/Oa2bBBK0TkX57Fyni+NgnyQQN4LitPmob2Hjnqw4= +google.golang.org/protobuf v1.36.10 h1:AYd7cD/uASjIL6Q9LiTjz8JLcrh/88q5UObnmY3aOOE= +google.golang.org/protobuf v1.36.10/go.mod h1:HTf+CrKn2C3g5S8VImy6tdcUvCska2kB7j23XfzDpco= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c h1:Hei/4ADfdWqJk1ZMxUNpqntNwaWcugrBjAiHlqqRiVk= gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c/go.mod h1:JHkPIbrfpd72SG/EVd6muEfDQjcINNoR0C8j2r3qZ4Q= -gopkg.in/yaml.v2 v2.4.0 h1:D8xgwECY7CYvx+Y2n4sBz93Jn9JRvxdiyyo8CTfuKaY= -gopkg.in/yaml.v2 v2.4.0/go.mod h1:RDklbk79AGWmwhnvt/jBztapEOGDOx6ZbXqjP6csGnQ= gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA= gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= diff --git a/otelcollector/prometheusreceiver/README.md b/otelcollector/prometheusreceiver/README.md index 928f8e89b..744243f8a 100644 --- a/otelcollector/prometheusreceiver/README.md +++ b/otelcollector/prometheusreceiver/README.md @@ -21,10 +21,10 @@ Receives metric data in [Prometheus](https://prometheus.io/) format. See the ## ⚠️ Warning Note: This component is currently work in progress. It has several limitations -and please don't use it if the following limitations is a concern: +and please don't use it if the following limitations are a concern: * Collector cannot auto-scale the scraping yet when multiple replicas of the - collector is run. + collector are run. * When running multiple replicas of the collector with the same config, it will scrape the targets multiple times. * Users need to configure each replica with different scraping configuration @@ -86,9 +86,9 @@ receivers: The prometheus receiver also supports additional top-level options: - **trim_metric_suffixes**: [**Experimental**] When set to true, this enables trimming unit and some counter type suffixes from metric names. For example, it would cause `singing_duration_seconds_total` to be trimmed to `singing_duration`. This can be useful when trying to restore the original metric names used in OpenTelemetry instrumentation. Defaults to false. -- **use_start_time_metric**: When set to true, this enables retrieving the start time of all counter metrics from the process_start_time_seconds metric. This is only correct if all counters on that endpoint started after the process start time, and the process is the only actor exporting the metric after the process started. It should not be used in "exporters" which export counters that may have started before the process itself. Use only if you know what you are doing, as this may result in incorrect rate calculations. Defaults to false. -- **start_time_metric_regex**: The regular expression for the start time metric, and is only applied when use_start_time_metric is enabled. Defaults to process_start_time_seconds. -- **report_extra_scrape_metrics**: Extra Prometheus scrape metrics can be reported by setting this parameter to `true` +- **use_start_time_metric**: When set to true, this enables retrieving the start time of all counter metrics from the process_start_time_seconds metric. This is only correct if all counters on that endpoint started after the process start time, and the process is the only actor exporting the metric after the process started. It should not be used in "exporters" which export counters that may have started before the process itself. Use only if you know what you are doing, as this may result in incorrect rate calculations. Defaults to false. Deprecated; use metricstarttime processor instead. +- **start_time_metric_regex**: The regular expression for the start time metric, and is only applied when use_start_time_metric is enabled. Defaults to process_start_time_seconds. Deprecated; use metricstarttime processor instead. +- **report_extra_scrape_metrics**: Extra Prometheus scrape metrics can be reported by setting this parameter to `true`. Deprecated; use the feature gate `receiver.prometheusreceiver.EnableReportExtraScrapeMetrics` instead. Example configuration: @@ -96,9 +96,6 @@ Example configuration: receivers: prometheus: trim_metric_suffixes: true - use_start_time_metric: true - report_extra_scrape_metrics: true - start_time_metric_regex: foo_bar_.* config: scrape_configs: - job_name: 'otel-collector' @@ -107,20 +104,90 @@ receivers: - targets: ['0.0.0.0:8888'] ``` +## Complete Configuration Example + +The following example demonstrates a complete end-to-end configuration showing how to use the Prometheus receiver with processors and exporters in a service pipeline: + +```yaml +receivers: + prometheus: + config: + scrape_configs: + - job_name: 'my-service' + scrape_interval: 5s + static_configs: + - targets: ['localhost:9090'] + # Filter metrics to keep only those matching the regex pattern + metric_relabel_configs: + - source_labels: [__name__] + regex: 'http_request_duration_seconds.*' + action: keep + +processors: + batch: + timeout: 10s + send_batch_size: 1000 + resource: + attributes: + # Note: service.name is automatically set by the prometheus receiver from job_name + - key: deployment.environment + value: production + action: upsert + +exporters: + otlp: + endpoint: otel-collector:4317 + tls: + insecure: true + prometheusremotewrite: + endpoint: https://prometheus:9090/api/v1/write + +service: + pipelines: + metrics: + receivers: [prometheus] + processors: [resource, batch] + exporters: [otlp, prometheusremotewrite] +``` + +This configuration: +- Scrapes metrics from a service running on `localhost:9090` every 5 seconds +- Filters metrics to keep only those matching `http_request_duration_seconds.*` using `metric_relabel_configs` +- Adds resource attributes (`deployment.environment`) to all metrics (note: `service.name` is automatically set from the job name) +- Batches metrics before exporting to improve efficiency when multiple scrapes occur +- Exports metrics to both an OTLP endpoint and Prometheus remote write endpoint + ## Prometheus native histograms -Native histograms are an experimental [feature](https://prometheus.io/docs/prometheus/latest/feature_flags/#native-histograms) of Prometheus. +Native histograms are a data type in Prometheus, for more information see the [specification](https://prometheus.io/docs/specs/native_histograms/). -To start scraping native histograms, set `config.global.scrape_protocols` to `[ PrometheusProto, OpenMetricsText1.0.0, OpenMetricsText0.0.1, PrometheusText0.0.4 ]` -in the receiver configuration. This requirement will be lifted once Prometheus can scrape native histograms over text formats. +The Prometheus receiver automatically converts native histograms to OpenTelemetry exponential histograms. To enable scraping and ingestion of native histograms, you need to configure two things in your Prometheus scrape config: -To enable converting native histograms to OpenTelemetry exponential histograms, enable the feature gate `receiver.prometheusreceiver.EnableNativeHistograms`. -The feature is considered experimental. +1. **Enable native histogram scraping**: Set `scrape_native_histograms: true` (globally or per-job) +2. **Use the protobuf scrape protocol**: Include `PrometheusProto` in `scrape_protocols` (required until Prometheus supports native histograms over text formats) -This feature applies to the most common integer counter histograms, gauge histograms are dropped. +```yaml +receivers: + prometheus: + config: + global: + # Required: Include PrometheusProto to scrape native histograms + scrape_protocols: [ PrometheusProto, OpenMetricsText1.0.0, OpenMetricsText0.0.1, PrometheusText0.0.4 ] + # Enable native histogram scraping globally + scrape_native_histograms: true + scrape_configs: + - job_name: 'my-app' + # Per-job setting takes precedence over global + # scrape_native_histograms: true + static_configs: + - targets: ['localhost:8080'] +``` + + +This feature applies to the most common integer counter histograms; gauge histograms are dropped. In case a metric has both the conventional (aka classic) buckets and also native histogram buckets, only the native histogram buckets will be taken into account to create the corresponding exponential histogram. To scrape the classic buckets instead use the -[scrape option](https://prometheus.io/docs/prometheus/latest/configuration/configuration/#scrape_config) `scrape_classic_histograms`. +[scrape option](https://prometheus.io/docs/prometheus/latest/configuration/configuration/#scrape_config) `always_scrape_classic_histograms`. ## OpenTelemetry Operator Additional to this static job definitions this receiver allows to query a list of jobs from the @@ -182,6 +249,14 @@ More info about querying `/api/v1/` and the data format that is returned can be ## Feature gates +- `receiver.prometheusreceiver.EnableReportExtraScrapeMetrics`: Extra Prometheus scrape metrics + can be reported by setting this feature gate option. This replaces the deprecated + `report_extra_scrape_metrics` configuration flag: + +```shell +"--feature-gates=receiver.prometheusreceiver.EnableReportExtraScrapeMetrics" +``` + - `receiver.prometheusreceiver.UseCreatedMetric`: Start time for Summary, Histogram and Sum metrics can be retrieved from `_created` metrics. Currently, this behaviour is disabled by default. To enable it, use the following feature gate option: @@ -205,14 +280,5 @@ More info about querying `/api/v1/` and the data format that is returned can be ```shell "--feature-gates=receiver.prometheusreceiver.UseCollectorStartTimeFallback" ``` -- `receiver.prometheusreceiver.EnableNativeHistograms`: process and turn native histogram metrics into OpenTelemetry exponential histograms. For more details consult the [Prometheus native histograms](#prometheus-native-histograms) section. +- `receiver.prometheusreceiver.EnableNativeHistograms` (Stable, enabled by default): Converts scraped native histogram metrics into OpenTelemetry exponential histograms. **Note:** You still need to configure `scrape_native_histograms: true` in your Prometheus scrape config to actually scrape native histograms. For more details consult the [Prometheus native histograms](#prometheus-native-histograms) section. -```shell -"--feature-gates=receiver.prometheusreceiver.EnableNativeHistograms" -``` - -- `receiver.prometheusreceiver.RemoveStartTimeAdjustment`: If enabled, the prometheus receiver no longer sets the start timestamp of metrics if it is not known. Use the `metricstarttime` processor instead if you need this functionality. - -```shell -"--feature-gates=receiver.prometheusreceiver.RemoveStartTimeAdjustment" -``` diff --git a/otelcollector/prometheusreceiver/apiserver/manager.go b/otelcollector/prometheusreceiver/apiserver/manager.go index bfcffc9d3..9d81b2f76 100644 --- a/otelcollector/prometheusreceiver/apiserver/manager.go +++ b/otelcollector/prometheusreceiver/apiserver/manager.go @@ -184,6 +184,8 @@ func (m *Manager) Start(ctx context.Context, host component.Host, scrapeManager o.CTZeroIngestionEnabled, 5*time.Minute, // LookbackDelta - Using the default value of 5 minutes o.EnableTypeAndUnitLabels, + o.AppendMetadata, + nil, ) // 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 @@ -215,7 +217,7 @@ func (m *Manager) Start(ctx context.Context, host component.Host, scrapeManager spanNameFormatter := otelhttp.WithSpanNameFormatter(func(_ string, r *http.Request) string { return fmt.Sprintf("%s %s", r.Method, r.URL.Path) }) - m.server, err = m.cfg.ServerConfig.ToServer(ctx, host, m.settings.TelemetrySettings, otelhttp.NewHandler(mux, "", spanNameFormatter)) + m.server, err = m.cfg.ServerConfig.ToServer(ctx, host.GetExtensions(), m.settings.TelemetrySettings, otelhttp.NewHandler(mux, "", spanNameFormatter)) if err != nil { return err } diff --git a/otelcollector/prometheusreceiver/config.go b/otelcollector/prometheusreceiver/config.go index 7bb0fbff4..41afdeb92 100644 --- a/otelcollector/prometheusreceiver/config.go +++ b/otelcollector/prometheusreceiver/config.go @@ -18,11 +18,12 @@ import ( "github.com/prometheus/prometheus/discovery" "github.com/prometheus/prometheus/discovery/kubernetes" "github.com/prometheus/prometheus/discovery/targetgroup" + "go.opentelemetry.io/collector/config/confighttp" "go.opentelemetry.io/collector/config/configoptional" "go.opentelemetry.io/collector/confmap" - "github.com/open-telemetry/opentelemetry-collector-contrib/receiver/prometheusreceiver/apiserver" - "github.com/open-telemetry/opentelemetry-collector-contrib/receiver/prometheusreceiver/targetallocator" + + "github.com/open-telemetry/opentelemetry-collector-contrib/receiver/prometheusreceiver/internal/targetallocator" ) // Config defines configuration for Prometheus receiver. @@ -35,10 +36,14 @@ type Config struct { // the process started. It should not be used in "exporters" which export counters that may have // started before the process itself. Use only if you know what you are doing, as this may result // in incorrect rate calculations. + // + // Deprecated: use the metricstarttime processor instead. UseStartTimeMetric bool `mapstructure:"use_start_time_metric"` StartTimeMetricRegex string `mapstructure:"start_time_metric_regex"` // 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"` @@ -47,6 +52,9 @@ type Config struct { // 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"` + + // For testing only. + ignoreMetadata bool } // Validate checks the receiver configuration is valid. @@ -184,7 +192,7 @@ func reloadPromConfig(dst *PromConfig, src any) error { yamlOut, err := yaml.MarshalWithOptions( src, yaml.CustomMarshaler(func(s commonconfig.Secret) ([]byte, error) { - return []byte(s), nil + return yaml.Marshal(string(s)) }), ) if err != nil { @@ -231,3 +239,20 @@ func checkTLSConfig(tlsConfig commonconfig.TLSConfig) error { } return nil } + +type APIServer struct { + Enabled bool `mapstructure:"enabled"` + ServerConfig confighttp.ServerConfig `mapstructure:"server_config"` +} + +func (cfg *APIServer) Validate() error { + if !cfg.Enabled { + return nil + } + + if cfg.ServerConfig.Endpoint == "" { + return errors.New("if api_server is enabled, it requires a non-empty server_config endpoint") + } + + return nil +} diff --git a/otelcollector/prometheusreceiver/config_test.go b/otelcollector/prometheusreceiver/config_test.go index 50fb56de3..2f0b403d3 100644 --- a/otelcollector/prometheusreceiver/config_test.go +++ b/otelcollector/prometheusreceiver/config_test.go @@ -467,6 +467,75 @@ scrape_configs: assert.Equal(t, "Bearer", scrapeConfig.HTTPClientConfig.Authorization.Type) }, }, + { + name: "oauth2 client credentials secret preservation", + configYAML: ` +scrape_configs: + - job_name: "test-client-secredentialscret-auth" + oauth2: + client_id: "id-1" + client_secret: "mySuperSecretClientSecret" + token_url: "https://auth.example.com/token" + static_configs: + - targets: ["localhost:8080"] +`, + checkFn: func(t *testing.T, dst *PromConfig) { + require.Len(t, dst.ScrapeConfigs, 1) + scrapeConfig := dst.ScrapeConfigs[0] + assert.Equal(t, "test-client-secredentialscret-auth", scrapeConfig.JobName) + + // The critical check: ensure the client_secret is not "" + require.NotNil(t, scrapeConfig.HTTPClientConfig.OAuth2, "basic auth should be configured") + secret := string(scrapeConfig.HTTPClientConfig.OAuth2.ClientSecret) + assert.Equal(t, "mySuperSecretClientSecret", secret, "client_secret should preserve original value") + }, + }, + { + name: "oauth2 jwt-bearer certificate preservation", + configYAML: ` +scrape_configs: + - job_name: "test-jwt-bearer-auth" + oauth2: + client_id: "id-1" + client_certificate_key: "mySuperSecretCertificateKey" + token_url: "https://auth.example.com/token" + grant_type: "urn:ietf:params:oauth:grant-type:jwt-bearer" + static_configs: + - targets: ["localhost:8080"] +`, + checkFn: func(t *testing.T, dst *PromConfig) { + require.Len(t, dst.ScrapeConfigs, 1) + scrapeConfig := dst.ScrapeConfigs[0] + assert.Equal(t, "test-jwt-bearer-auth", scrapeConfig.JobName) + + // The critical check: ensure the client_certificate_key is not "" + require.NotNil(t, scrapeConfig.HTTPClientConfig.OAuth2, "basic auth should be configured") + key := string(scrapeConfig.HTTPClientConfig.OAuth2.ClientCertificateKey) + assert.Equal(t, "mySuperSecretCertificateKey", key, "client_certificate_key should preserve original value") + }, + }, + { + name: "basic auth password starting with %", + configYAML: ` +scrape_configs: + - job_name: "foo" + basic_auth: + username: "user" + password: "%password" + static_configs: + - targets: ["target:8000"] +`, + checkFn: func(t *testing.T, dst *PromConfig) { + require.Len(t, dst.ScrapeConfigs, 1) + scrapeConfig := dst.ScrapeConfigs[0] + assert.Equal(t, "foo", scrapeConfig.JobName) + + // Ensure basic_auth is present + require.NotNil(t, scrapeConfig.HTTPClientConfig.BasicAuth, "basic auth should be configured") + password := string(scrapeConfig.HTTPClientConfig.BasicAuth.Password) + assert.Equal(t, "%password", password, "password should preserve original value with leading %") + }, + }, } for _, tt := range tests { diff --git a/otelcollector/prometheusreceiver/factory.go b/otelcollector/prometheusreceiver/factory.go index cfcf2e7dc..5cbfe6f2b 100644 --- a/otelcollector/prometheusreceiver/factory.go +++ b/otelcollector/prometheusreceiver/factory.go @@ -18,19 +18,22 @@ import ( ) // This file implements config for Prometheus receiver. -var useCreatedMetricGate = featuregate.GlobalRegistry().MustRegister( +var _ = featuregate.GlobalRegistry().MustRegister( "receiver.prometheusreceiver.UseCreatedMetric", - featuregate.StageAlpha, + featuregate.StageDeprecated, + featuregate.WithRegisterToVersion("v0.141.0"), featuregate.WithRegisterDescription("When enabled, the Prometheus receiver will"+ " retrieve the start time for Summary, Histogram and Sum metrics from _created metric"), ) -var enableNativeHistogramsGate = featuregate.GlobalRegistry().MustRegister( +var _ = featuregate.GlobalRegistry().MustRegister( "receiver.prometheusreceiver.EnableNativeHistograms", - featuregate.StageAlpha, - featuregate.WithRegisterDescription("When enabled, the Prometheus receiver will convert"+ - " Prometheus native histograms to OTEL exponential histograms and ignore"+ - " those Prometheus classic histograms that have a native histogram alternative"), + featuregate.StageStable, + featuregate.WithRegisterDescription("The Prometheus receiver converts Prometheus native histograms "+ + "to OTEL exponential histograms. To scrape native histograms, configure 'scrape_native_histograms: true' "+ + "in your Prometheus scrape config (per-job or global). Mixed histograms will prefer native over classic."), + featuregate.WithRegisterFromVersion("v0.142.0"), + featuregate.WithRegisterToVersion("v0.145.0"), ) var enableCreatedTimestampZeroIngestionGate = featuregate.GlobalRegistry().MustRegister( @@ -40,6 +43,13 @@ var enableCreatedTimestampZeroIngestionGate = featuregate.GlobalRegistry().MustR " Created timestamps are injected as 0 valued samples when appropriate."), ) +var enableReportExtraScrapeMetricsGate = featuregate.GlobalRegistry().MustRegister( + "receiver.prometheusreceiver.EnableReportExtraScrapeMetrics", + featuregate.StageAlpha, + featuregate.WithRegisterDescription("Enables reporting of extra scrape metrics."+ + " Extra scrape metrics are metrics that are not scraped by Prometheus but are reported by the Prometheus server."), +) + // NewFactory creates a new Prometheus receiver factory. func NewFactory() receiver.Factory { return receiver.NewFactory( diff --git a/otelcollector/prometheusreceiver/go.mod b/otelcollector/prometheusreceiver/go.mod index 43f324f70..fd8449111 100644 --- a/otelcollector/prometheusreceiver/go.mod +++ b/otelcollector/prometheusreceiver/go.mod @@ -5,146 +5,145 @@ go 1.24.0 require ( github.com/cenkalti/backoff/v5 v5.0.3 github.com/go-kit/log v0.2.1 - github.com/goccy/go-yaml v1.18.0 + github.com/goccy/go-yaml v1.19.0 github.com/gogo/protobuf v1.3.2 github.com/golang/snappy v1.0.0 - github.com/grafana/regexp v0.0.0-20240518133315-a468a5bfb3bc + 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.136.0 - github.com/open-telemetry/opentelemetry-collector-contrib/internal/common v0.136.0 - github.com/open-telemetry/opentelemetry-collector-contrib/internal/coreinternal v0.136.0 - github.com/open-telemetry/opentelemetry-collector-contrib/pkg/pdatatest v0.136.0 - github.com/open-telemetry/opentelemetry-collector-contrib/pkg/pdatautil v0.136.0 - github.com/open-telemetry/opentelemetry-collector-contrib/pkg/translator/prometheus v0.136.0 + github.com/open-telemetry/opentelemetry-collector-contrib/exporter/prometheusremotewriteexporter v0.142.0 + github.com/open-telemetry/opentelemetry-collector-contrib/internal/common v0.142.0 + github.com/open-telemetry/opentelemetry-collector-contrib/internal/coreinternal v0.142.0 + github.com/open-telemetry/opentelemetry-collector-contrib/pkg/pdatatest v0.142.0 + github.com/open-telemetry/opentelemetry-collector-contrib/pkg/translator/prometheus v0.142.0 github.com/prometheus/client_golang v1.23.2 - github.com/prometheus/common v0.66.1 - github.com/prometheus/exporter-toolkit v0.14.0 - github.com/prometheus/prometheus v0.305.1-0.20250808193045-294f36e80261 + github.com/prometheus/common v0.67.4 + github.com/prometheus/exporter-toolkit v0.15.0 + github.com/prometheus/prometheus v0.308.0 github.com/stretchr/testify v1.11.1 - go.opentelemetry.io/collector/component v1.42.0 - go.opentelemetry.io/collector/component/componentstatus v0.136.0 - go.opentelemetry.io/collector/component/componenttest v0.136.0 - go.opentelemetry.io/collector/config/confighttp v0.136.0 - go.opentelemetry.io/collector/config/configopaque v1.42.0 - go.opentelemetry.io/collector/config/configoptional v0.136.0 - go.opentelemetry.io/collector/config/configtls v1.42.0 - go.opentelemetry.io/collector/confmap v1.42.0 - go.opentelemetry.io/collector/confmap/provider/fileprovider v1.42.0 - go.opentelemetry.io/collector/confmap/xconfmap v0.136.0 - go.opentelemetry.io/collector/consumer v1.42.0 - go.opentelemetry.io/collector/consumer/consumertest v0.136.0 - go.opentelemetry.io/collector/exporter v1.42.0 - go.opentelemetry.io/collector/featuregate v1.42.0 - go.opentelemetry.io/collector/otelcol v0.136.0 - go.opentelemetry.io/collector/pdata v1.42.0 - go.opentelemetry.io/collector/processor v1.42.0 - go.opentelemetry.io/collector/processor/batchprocessor v0.136.0 - go.opentelemetry.io/collector/receiver v1.42.0 - go.opentelemetry.io/collector/receiver/receiverhelper v0.136.0 - go.opentelemetry.io/collector/receiver/receivertest v0.136.0 - go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.63.0 - go.opentelemetry.io/otel v1.38.0 + go.opentelemetry.io/collector/component v1.48.0 + go.opentelemetry.io/collector/component/componentstatus v0.142.0 + go.opentelemetry.io/collector/component/componenttest v0.142.0 + go.opentelemetry.io/collector/config/confighttp v0.142.0 + go.opentelemetry.io/collector/config/configopaque v1.48.0 + go.opentelemetry.io/collector/config/configoptional v1.48.0 + go.opentelemetry.io/collector/config/configtls v1.48.0 + go.opentelemetry.io/collector/confmap v1.48.0 + go.opentelemetry.io/collector/confmap/provider/fileprovider v1.48.0 + go.opentelemetry.io/collector/confmap/xconfmap v0.142.0 + go.opentelemetry.io/collector/consumer v1.48.0 + go.opentelemetry.io/collector/consumer/consumertest v0.142.0 + go.opentelemetry.io/collector/exporter v1.48.0 + go.opentelemetry.io/collector/featuregate v1.48.0 + go.opentelemetry.io/collector/otelcol v0.142.0 + go.opentelemetry.io/collector/pdata v1.48.0 + go.opentelemetry.io/collector/processor v1.48.0 + go.opentelemetry.io/collector/processor/batchprocessor v0.142.0 + go.opentelemetry.io/collector/receiver v1.48.0 + go.opentelemetry.io/collector/receiver/receiverhelper v0.142.0 + go.opentelemetry.io/collector/receiver/receivertest v0.142.0 + go.opentelemetry.io/collector/service v0.142.0 + go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.64.0 + go.opentelemetry.io/otel v1.39.0 go.uber.org/goleak v1.3.0 - go.uber.org/zap v1.27.0 + go.uber.org/zap v1.27.1 go.uber.org/zap/exp v0.3.0 - golang.org/x/net v0.44.0 - google.golang.org/protobuf v1.36.9 + golang.org/x/net v0.48.0 + google.golang.org/protobuf v1.36.10 ) require ( - cloud.google.com/go/auth v0.16.2 // indirect + cloud.google.com/go/auth v0.17.0 // indirect cloud.google.com/go/auth/oauth2adapt v0.2.8 // indirect - cloud.google.com/go/compute/metadata v0.7.0 // indirect - dario.cat/mergo v1.0.1 // indirect - github.com/Azure/azure-sdk-for-go/sdk/azcore v1.18.0 // indirect - github.com/Azure/azure-sdk-for-go/sdk/azidentity v1.10.1 // indirect - github.com/Azure/azure-sdk-for-go/sdk/internal v1.11.1 // indirect + cloud.google.com/go/compute/metadata v0.9.0 // indirect + dario.cat/mergo v1.0.2 // indirect + github.com/Azure/azure-sdk-for-go/sdk/azcore v1.19.1 // indirect + github.com/Azure/azure-sdk-for-go/sdk/azidentity v1.12.0 // 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/Azure/go-ansiterm v0.0.0-20250102033503-faa5f7b0171c // indirect - github.com/AzureAD/microsoft-authentication-library-for-go v1.4.2 // indirect + github.com/AzureAD/microsoft-authentication-library-for-go v1.5.0 // indirect github.com/Code-Hex/go-generics-cache v1.5.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/aws/aws-sdk-go-v2 v1.37.0 // indirect - github.com/aws/aws-sdk-go-v2/config v1.29.14 // indirect - github.com/aws/aws-sdk-go-v2/credentials v1.17.67 // indirect - github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.16.30 // indirect - github.com/aws/aws-sdk-go-v2/internal/configsources v1.4.0 // indirect - github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.7.0 // indirect - github.com/aws/aws-sdk-go-v2/internal/ini v1.8.3 // indirect - github.com/aws/aws-sdk-go-v2/service/ec2 v1.237.0 // indirect - github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding v1.13.0 // indirect - github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.13.0 // indirect - github.com/aws/aws-sdk-go-v2/service/lightsail v1.44.0 // indirect - github.com/aws/aws-sdk-go-v2/service/sso v1.25.3 // indirect - github.com/aws/aws-sdk-go-v2/service/ssooidc v1.30.1 // indirect - github.com/aws/aws-sdk-go-v2/service/sts v1.33.19 // indirect - github.com/aws/smithy-go v1.22.5 // indirect + github.com/aws/aws-sdk-go-v2 v1.39.6 // indirect + github.com/aws/aws-sdk-go-v2/config v1.31.17 // indirect + github.com/aws/aws-sdk-go-v2/credentials v1.18.21 // indirect + github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.18.13 // indirect + github.com/aws/aws-sdk-go-v2/internal/configsources v1.4.13 // indirect + github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.7.13 // indirect + github.com/aws/aws-sdk-go-v2/internal/ini v1.8.4 // indirect + github.com/aws/aws-sdk-go-v2/service/ec2 v1.262.0 // indirect + github.com/aws/aws-sdk-go-v2/service/ecs v1.67.2 // indirect + github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding v1.13.3 // indirect + github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.13.13 // indirect + github.com/aws/aws-sdk-go-v2/service/lightsail v1.50.4 // indirect + github.com/aws/aws-sdk-go-v2/service/sso v1.30.1 // indirect + github.com/aws/aws-sdk-go-v2/service/ssooidc v1.35.5 // indirect + github.com/aws/aws-sdk-go-v2/service/sts v1.39.1 // indirect + github.com/aws/smithy-go v1.23.2 // indirect github.com/bboreham/go-loser v0.0.0-20230920113527-fcc2c21820a3 // indirect github.com/beorn7/perks v1.0.1 // 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-20250501225837-2ac532fd4443 // indirect + github.com/cncf/xds/go v0.0.0-20251022180443-0feb69152e9f // indirect github.com/containerd/errdefs v1.0.0 // indirect github.com/containerd/errdefs/pkg v0.3.0 // indirect github.com/containerd/log v0.1.0 // indirect github.com/containerd/platforms v0.2.1 // indirect - github.com/coreos/go-systemd/v22 v22.5.0 // indirect + github.com/coreos/go-systemd/v22 v22.6.0 // indirect github.com/cpuguy83/dockercfg v0.3.2 // 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.157.0 // indirect + github.com/digitalocean/godo v1.168.0 // indirect github.com/distribution/reference v0.6.0 // indirect - github.com/docker/docker v28.3.3+incompatible // indirect + github.com/docker/docker v28.5.2+incompatible // indirect github.com/docker/go-connections v0.6.0 // indirect github.com/docker/go-units v0.5.0 // indirect - github.com/ebitengine/purego v0.8.4 // indirect + github.com/ebitengine/purego v0.9.1 // indirect github.com/edsrzf/mmap-go v1.2.0 // indirect - github.com/emicklei/go-restful/v3 v3.11.0 // indirect - github.com/envoyproxy/go-control-plane/envoy v1.32.4 // indirect + github.com/emicklei/go-restful/v3 v3.12.2 // indirect + github.com/envoyproxy/go-control-plane/envoy v1.35.0 // indirect github.com/envoyproxy/protoc-gen-validate v1.2.1 // indirect github.com/facette/natsort v0.0.0-20181210072756-2cd4dd1e2dcb // indirect github.com/fatih/color v1.16.0 // indirect github.com/felixge/httpsnoop v1.0.4 // indirect github.com/foxboron/go-tpm-keyfiles v0.0.0-20250903184740-5d135037bd4d // indirect github.com/fsnotify/fsnotify v1.9.0 // indirect - github.com/fxamacker/cbor/v2 v2.7.0 // indirect + github.com/fxamacker/cbor/v2 v2.9.0 // indirect github.com/go-logfmt/logfmt v0.6.0 // indirect github.com/go-logr/logr v1.4.3 // indirect github.com/go-logr/stdr v1.2.2 // indirect github.com/go-ole/go-ole v1.2.6 // indirect github.com/go-openapi/analysis v0.23.0 // indirect - github.com/go-openapi/errors v0.22.0 // indirect + github.com/go-openapi/errors v0.22.3 // indirect github.com/go-openapi/jsonpointer v0.21.0 // indirect github.com/go-openapi/jsonreference v0.21.0 // indirect github.com/go-openapi/loads v0.22.0 // indirect github.com/go-openapi/spec v0.21.0 // indirect - github.com/go-openapi/strfmt v0.23.0 // indirect + github.com/go-openapi/strfmt v0.24.0 // indirect github.com/go-openapi/swag v0.23.0 // indirect github.com/go-openapi/validate v0.24.0 // indirect github.com/go-resty/resty/v2 v2.16.5 // indirect github.com/go-viper/mapstructure/v2 v2.4.0 // indirect github.com/go-zookeeper/zk v1.0.4 // indirect github.com/gobwas/glob v0.2.3 // indirect - github.com/golang-jwt/jwt/v5 v5.2.2 // indirect - github.com/golang/protobuf v1.5.4 // indirect - github.com/google/gnostic-models v0.6.8 // indirect + github.com/golang-jwt/jwt/v5 v5.3.0 // indirect + github.com/google/gnostic-models v0.7.0 // indirect github.com/google/go-cmp v0.7.0 // indirect github.com/google/go-querystring v1.1.0 // indirect - github.com/google/go-tpm v0.9.6 // indirect - github.com/google/gofuzz v1.2.0 // indirect + github.com/google/go-tpm v0.9.7 // indirect github.com/google/s2a-go v0.1.9 // indirect github.com/google/uuid v1.6.0 // indirect github.com/googleapis/enterprise-certificate-proxy v0.3.6 // indirect - github.com/googleapis/gax-go/v2 v2.14.2 // indirect - github.com/gophercloud/gophercloud/v2 v2.7.0 // indirect - github.com/gorilla/websocket v1.5.0 // indirect - github.com/grpc-ecosystem/grpc-gateway/v2 v2.27.1 // indirect + github.com/googleapis/gax-go/v2 v2.15.0 // indirect + github.com/gophercloud/gophercloud/v2 v2.8.0 // indirect + github.com/gorilla/websocket v1.5.4-0.20250319132907-e064f32e3674 // indirect + github.com/grpc-ecosystem/grpc-gateway/v2 v2.27.2 // indirect github.com/hashicorp/consul/api v1.32.0 // indirect - github.com/hashicorp/cronexpr v1.1.2 // indirect + github.com/hashicorp/cronexpr v1.1.3 // indirect github.com/hashicorp/errwrap v1.1.0 // indirect github.com/hashicorp/go-cleanhttp v0.5.2 // indirect github.com/hashicorp/go-hclog v1.6.3 // indirect @@ -152,24 +151,24 @@ require ( github.com/hashicorp/go-multierror v1.1.1 // indirect github.com/hashicorp/go-retryablehttp v0.7.7 // indirect github.com/hashicorp/go-rootcerts v1.0.2 // indirect - github.com/hashicorp/go-version v1.7.0 // indirect + github.com/hashicorp/go-version v1.8.0 // indirect github.com/hashicorp/golang-lru v1.0.2 // indirect - github.com/hashicorp/nomad/api v0.0.0-20241218080744-e3ac00f30eec // indirect + github.com/hashicorp/nomad/api v0.0.0-20250930071859-eaa0fe0e27af // indirect github.com/hashicorp/serf v0.10.1 // indirect - github.com/hetznercloud/hcloud-go/v2 v2.21.1 // indirect + github.com/hetznercloud/hcloud-go/v2 v2.29.0 // indirect github.com/inconshreveable/mousetrap v1.1.0 // indirect github.com/ionos-cloud/sdk-go/v6 v6.3.4 // indirect github.com/josharian/intern v1.0.0 // indirect 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.0 // indirect + github.com/klauspost/compress v1.18.2 // 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.0 // indirect github.com/kolo/xmlrpc v0.0.0-20220921171641-a4b6fa1dd06b // indirect github.com/kylelemons/godebug v1.1.0 // indirect - github.com/linode/linodego v1.52.2 // indirect + github.com/linode/linodego v1.60.0 // indirect github.com/lufia/plan9stats v0.0.0-20211012122336-39d0f177ccd0 // indirect github.com/magiconair/properties v1.8.10 // indirect github.com/mailru/easyjson v0.7.7 // indirect @@ -177,7 +176,7 @@ require ( github.com/mattn/go-isatty v0.0.20 // indirect github.com/mdlayher/socket v0.4.1 // indirect github.com/mdlayher/vsock v1.2.1 // indirect - github.com/miekg/dns v1.1.66 // indirect + github.com/miekg/dns v1.1.68 // indirect github.com/mitchellh/copystructure v1.2.0 // indirect github.com/mitchellh/go-homedir v1.1.0 // indirect github.com/mitchellh/mapstructure v1.5.1-0.20231216201459-8508981c8b6c // indirect @@ -195,11 +194,12 @@ require ( github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822 // 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.136.0 // indirect - github.com/open-telemetry/opentelemetry-collector-contrib/pkg/golden v0.136.0 // indirect - github.com/open-telemetry/opentelemetry-collector-contrib/pkg/resourcetotelemetry v0.136.0 // indirect - github.com/open-telemetry/opentelemetry-collector-contrib/pkg/translator/prometheusremotewrite v0.136.0 // indirect - github.com/open-telemetry/opentelemetry-collector-contrib/processor/deltatocumulativeprocessor v0.136.0 // indirect + github.com/open-telemetry/opentelemetry-collector-contrib/internal/exp/metrics v0.142.0 // indirect + github.com/open-telemetry/opentelemetry-collector-contrib/pkg/golden v0.142.0 // indirect + github.com/open-telemetry/opentelemetry-collector-contrib/pkg/pdatautil v0.142.0 // indirect + github.com/open-telemetry/opentelemetry-collector-contrib/pkg/resourcetotelemetry v0.142.0 // indirect + github.com/open-telemetry/opentelemetry-collector-contrib/pkg/translator/prometheusremotewrite v0.142.0 // indirect + github.com/open-telemetry/opentelemetry-collector-contrib/processor/deltatocumulativeprocessor v0.142.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 @@ -210,121 +210,120 @@ require ( github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 // indirect github.com/power-devops/perfstat v0.0.0-20240221224432-82ca36839d55 // indirect github.com/prometheus/alertmanager v0.28.1 // indirect + github.com/prometheus/client_golang/exp v0.0.0-20250914183048-a974e0d45e0a // indirect github.com/prometheus/client_model v0.6.2 // indirect github.com/prometheus/common/assets v0.2.0 // indirect - github.com/prometheus/otlptranslator v0.0.2 // indirect + github.com/prometheus/otlptranslator v1.0.0 // indirect github.com/prometheus/procfs v0.17.0 // indirect - github.com/prometheus/sigv4 v0.2.0 // indirect + github.com/prometheus/sigv4 v0.3.0 // indirect github.com/puzpuzpuz/xsync/v3 v3.5.1 // indirect github.com/rs/cors v1.11.1 // indirect - github.com/scaleway/scaleway-sdk-go v1.0.0-beta.33 // indirect - github.com/shirou/gopsutil/v4 v4.25.8 // indirect + github.com/scaleway/scaleway-sdk-go v1.0.0-beta.35 // indirect + github.com/shirou/gopsutil/v4 v4.25.11 // indirect github.com/shurcooL/httpfs v0.0.0-20230704072500-f1e31cf0ba5c // indirect github.com/sirupsen/logrus v1.9.3 // indirect - github.com/spf13/cobra v1.10.1 // indirect + github.com/spf13/cobra v1.10.2 // indirect github.com/spf13/pflag v1.0.9 // indirect - github.com/stackitcloud/stackit-sdk-go/core v0.17.2 // indirect - github.com/testcontainers/testcontainers-go v0.38.0 // indirect + github.com/stackitcloud/stackit-sdk-go/core v0.17.3 // indirect + github.com/testcontainers/testcontainers-go v0.40.0 // indirect github.com/tidwall/gjson v1.10.2 // indirect github.com/tidwall/match v1.1.1 // indirect github.com/tidwall/pretty v1.2.0 // indirect github.com/tidwall/tinylru v1.1.0 // indirect github.com/tidwall/wal v1.2.1 // indirect - github.com/tklauser/go-sysconf v0.3.15 // indirect - github.com/tklauser/numcpus v0.10.0 // indirect + github.com/tklauser/go-sysconf v0.3.16 // indirect + github.com/tklauser/numcpus v0.11.0 // indirect github.com/vultr/govultr/v2 v2.17.2 // indirect github.com/x448/float16 v0.8.4 // indirect github.com/yusufpapurcu/wmi v1.2.4 // indirect - go.mongodb.org/mongo-driver v1.14.0 // indirect - go.opentelemetry.io/auto/sdk v1.1.0 // indirect - go.opentelemetry.io/collector/client v1.42.0 // indirect - go.opentelemetry.io/collector/config/configauth v0.136.0 // indirect - go.opentelemetry.io/collector/config/configcompression v1.42.0 // indirect - go.opentelemetry.io/collector/config/configmiddleware v1.42.0 // indirect - go.opentelemetry.io/collector/config/configretry v1.42.0 // indirect - go.opentelemetry.io/collector/config/configtelemetry v0.136.0 // indirect - go.opentelemetry.io/collector/connector v0.136.0 // indirect - go.opentelemetry.io/collector/connector/connectortest v0.136.0 // indirect - go.opentelemetry.io/collector/connector/xconnector v0.136.0 // indirect - go.opentelemetry.io/collector/consumer/consumererror v0.136.0 // indirect - go.opentelemetry.io/collector/consumer/xconsumer v0.136.0 // indirect - go.opentelemetry.io/collector/exporter/exporterhelper v0.136.0 // indirect - go.opentelemetry.io/collector/exporter/exportertest v0.136.0 // indirect - go.opentelemetry.io/collector/exporter/xexporter v0.136.0 // indirect - go.opentelemetry.io/collector/extension v1.42.0 // indirect - go.opentelemetry.io/collector/extension/extensionauth v1.42.0 // indirect - go.opentelemetry.io/collector/extension/extensioncapabilities v0.136.0 // indirect - go.opentelemetry.io/collector/extension/extensionmiddleware v0.136.0 // indirect - go.opentelemetry.io/collector/extension/extensiontest v0.136.0 // indirect - go.opentelemetry.io/collector/extension/xextension v0.136.0 // indirect - go.opentelemetry.io/collector/internal/fanoutconsumer v0.136.0 // indirect - go.opentelemetry.io/collector/internal/telemetry v0.136.0 // indirect - go.opentelemetry.io/collector/pdata/pprofile v0.136.0 // indirect - go.opentelemetry.io/collector/pdata/testdata v0.136.0 // indirect - go.opentelemetry.io/collector/pdata/xpdata v0.136.0 // indirect - go.opentelemetry.io/collector/pipeline v1.42.0 // indirect - go.opentelemetry.io/collector/pipeline/xpipeline v0.136.0 // indirect - go.opentelemetry.io/collector/processor/processortest v0.136.0 // indirect - go.opentelemetry.io/collector/processor/xprocessor v0.136.0 // indirect - go.opentelemetry.io/collector/receiver/xreceiver v0.136.0 // indirect + go.mongodb.org/mongo-driver v1.17.4 // indirect + go.opentelemetry.io/auto/sdk v1.2.1 // indirect + go.opentelemetry.io/collector/client v1.48.0 // indirect + go.opentelemetry.io/collector/config/configauth v1.48.0 // indirect + go.opentelemetry.io/collector/config/configcompression v1.48.0 // indirect + go.opentelemetry.io/collector/config/configmiddleware v1.48.0 // indirect + go.opentelemetry.io/collector/config/configretry v1.48.0 // indirect + go.opentelemetry.io/collector/config/configtelemetry v0.142.0 // indirect + go.opentelemetry.io/collector/connector v0.142.0 // indirect + go.opentelemetry.io/collector/connector/connectortest v0.142.0 // indirect + go.opentelemetry.io/collector/connector/xconnector v0.142.0 // indirect + go.opentelemetry.io/collector/consumer/consumererror v0.142.0 // indirect + go.opentelemetry.io/collector/consumer/xconsumer v0.142.0 // indirect + go.opentelemetry.io/collector/exporter/exporterhelper v0.142.0 // indirect + go.opentelemetry.io/collector/exporter/exportertest v0.142.0 // indirect + go.opentelemetry.io/collector/exporter/xexporter v0.142.0 // indirect + go.opentelemetry.io/collector/extension v1.48.0 // indirect + go.opentelemetry.io/collector/extension/extensionauth v1.48.0 // indirect + go.opentelemetry.io/collector/extension/extensioncapabilities v0.142.0 // indirect + go.opentelemetry.io/collector/extension/extensionmiddleware v0.142.0 // indirect + go.opentelemetry.io/collector/extension/extensiontest v0.142.0 // indirect + go.opentelemetry.io/collector/extension/xextension v0.142.0 // indirect + go.opentelemetry.io/collector/internal/fanoutconsumer v0.142.0 // indirect + go.opentelemetry.io/collector/internal/telemetry v0.142.0 // indirect + go.opentelemetry.io/collector/pdata/pprofile v0.142.0 // indirect + go.opentelemetry.io/collector/pdata/testdata v0.142.0 // indirect + go.opentelemetry.io/collector/pdata/xpdata v0.142.0 // indirect + go.opentelemetry.io/collector/pipeline v1.48.0 // indirect + go.opentelemetry.io/collector/pipeline/xpipeline v0.142.0 // indirect + go.opentelemetry.io/collector/processor/processortest v0.142.0 // indirect + go.opentelemetry.io/collector/processor/xprocessor v0.142.0 // indirect + go.opentelemetry.io/collector/receiver/xreceiver v0.142.0 // indirect go.opentelemetry.io/collector/semconv v0.128.1-0.20250610090210-188191247685 // indirect - go.opentelemetry.io/collector/service v0.136.0 // indirect - go.opentelemetry.io/collector/service/hostcapabilities v0.136.0 // indirect - go.opentelemetry.io/contrib/bridges/otelzap v0.12.0 // indirect - go.opentelemetry.io/contrib/instrumentation/net/http/httptrace/otelhttptrace v0.61.0 // indirect - go.opentelemetry.io/contrib/otelconf v0.16.0 // indirect - go.opentelemetry.io/contrib/propagators/b3 v1.37.0 // indirect - go.opentelemetry.io/otel/exporters/otlp/otlplog/otlploggrpc v0.13.0 // indirect - go.opentelemetry.io/otel/exporters/otlp/otlplog/otlploghttp v0.13.0 // indirect - go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetricgrpc v1.37.0 // indirect - go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetrichttp v1.37.0 // indirect - go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.37.0 // indirect - go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.37.0 // indirect - go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp v1.37.0 // indirect + go.opentelemetry.io/collector/service/hostcapabilities v0.142.0 // indirect + go.opentelemetry.io/contrib/instrumentation/net/http/httptrace/otelhttptrace v0.63.0 // indirect + go.opentelemetry.io/contrib/otelconf v0.18.0 // indirect + go.opentelemetry.io/otel/exporters/otlp/otlplog/otlploggrpc v0.14.0 // indirect + go.opentelemetry.io/otel/exporters/otlp/otlplog/otlploghttp v0.14.0 // indirect + go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetricgrpc v1.38.0 // indirect + go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetrichttp v1.38.0 // indirect + go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.38.0 // indirect + go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.38.0 // indirect + go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp v1.38.0 // indirect go.opentelemetry.io/otel/exporters/prometheus v0.60.0 // indirect - go.opentelemetry.io/otel/exporters/stdout/stdoutlog v0.13.0 // indirect - go.opentelemetry.io/otel/exporters/stdout/stdoutmetric v1.37.0 // indirect - go.opentelemetry.io/otel/exporters/stdout/stdouttrace v1.37.0 // indirect - go.opentelemetry.io/otel/log v0.14.0 // indirect - go.opentelemetry.io/otel/metric v1.38.0 // indirect - go.opentelemetry.io/otel/sdk v1.38.0 // indirect - go.opentelemetry.io/otel/sdk/log v0.13.0 // indirect - go.opentelemetry.io/otel/sdk/metric v1.38.0 // indirect - go.opentelemetry.io/otel/trace v1.38.0 // indirect - go.opentelemetry.io/proto/otlp v1.7.0 // indirect + go.opentelemetry.io/otel/exporters/stdout/stdoutlog v0.14.0 // indirect + go.opentelemetry.io/otel/exporters/stdout/stdoutmetric v1.38.0 // indirect + go.opentelemetry.io/otel/exporters/stdout/stdouttrace v1.38.0 // indirect + go.opentelemetry.io/otel/log v0.15.0 // indirect + go.opentelemetry.io/otel/metric v1.39.0 // indirect + go.opentelemetry.io/otel/sdk v1.39.0 // indirect + go.opentelemetry.io/otel/sdk/log v0.14.0 // indirect + go.opentelemetry.io/otel/sdk/metric v1.39.0 // indirect + go.opentelemetry.io/otel/trace v1.39.0 // indirect + go.opentelemetry.io/proto/otlp v1.7.1 // indirect go.uber.org/atomic v1.11.0 // indirect go.uber.org/multierr v1.11.0 // indirect - go.yaml.in/yaml/v2 v2.4.2 // indirect + go.yaml.in/yaml/v2 v2.4.3 // indirect go.yaml.in/yaml/v3 v3.0.4 // indirect - golang.org/x/crypto v0.42.0 // indirect - golang.org/x/exp v0.0.0-20250106191152-7588d65b2ba8 // indirect - golang.org/x/mod v0.27.0 // indirect - golang.org/x/oauth2 v0.30.0 // indirect - golang.org/x/sync v0.17.0 // indirect - golang.org/x/sys v0.36.0 // indirect - golang.org/x/term v0.35.0 // indirect - golang.org/x/text v0.29.0 // indirect - golang.org/x/time v0.12.0 // indirect - golang.org/x/tools v0.36.0 // indirect + golang.org/x/crypto v0.46.0 // indirect + golang.org/x/exp v0.0.0-20250808145144-a408d31f581a // indirect + golang.org/x/mod v0.30.0 // indirect + golang.org/x/oauth2 v0.32.0 // indirect + golang.org/x/sync v0.19.0 // indirect + golang.org/x/sys v0.39.0 // indirect + golang.org/x/term v0.38.0 // indirect + golang.org/x/text v0.32.0 // indirect + golang.org/x/time v0.13.0 // indirect + golang.org/x/tools v0.39.0 // indirect gonum.org/v1/gonum v0.16.0 // indirect - google.golang.org/api v0.239.0 // indirect - google.golang.org/genproto/googleapis/api v0.0.0-20250707201910-8d1bb00bc6a7 // indirect - google.golang.org/genproto/googleapis/rpc v0.0.0-20250707201910-8d1bb00bc6a7 // indirect - google.golang.org/grpc v1.75.1 // indirect + google.golang.org/api v0.252.0 // indirect + google.golang.org/genproto/googleapis/api v0.0.0-20251022142026-3a174f9686a8 // indirect + google.golang.org/genproto/googleapis/rpc v0.0.0-20251022142026-3a174f9686a8 // indirect + google.golang.org/grpc v1.77.0 // indirect gopkg.in/evanphx/json-patch.v4 v4.12.0 // indirect gopkg.in/inf.v0 v0.9.1 // indirect gopkg.in/ini.v1 v1.67.0 // indirect gopkg.in/yaml.v2 v2.4.0 // indirect gopkg.in/yaml.v3 v3.0.1 // indirect - k8s.io/api v0.32.3 // indirect - k8s.io/apimachinery v0.32.3 // indirect - k8s.io/client-go v0.32.3 // indirect + k8s.io/api v0.34.1 // indirect + k8s.io/apimachinery v0.34.1 // indirect + k8s.io/client-go v0.34.1 // indirect k8s.io/klog/v2 v2.130.1 // indirect - k8s.io/kube-openapi v0.0.0-20241105132330-32ad38e42d3f // indirect - k8s.io/utils v0.0.0-20241104100929-3ea5e8cea738 // indirect - sigs.k8s.io/json v0.0.0-20241010143419-9aa6b5e7a4b3 // indirect - sigs.k8s.io/structured-merge-diff/v4 v4.4.2 // indirect - sigs.k8s.io/yaml v1.5.0 // indirect + k8s.io/kube-openapi v0.0.0-20250710124328-f3f2b991d03b // indirect + k8s.io/utils v0.0.0-20250604170112-4c0f3b243397 // indirect + sigs.k8s.io/json v0.0.0-20241014173422-cfa47c3a1cc8 // indirect + sigs.k8s.io/randfill v1.0.0 // indirect + sigs.k8s.io/structured-merge-diff/v6 v6.3.0 // indirect + sigs.k8s.io/yaml v1.6.0 // indirect ) diff --git a/otelcollector/prometheusreceiver/go.sum b/otelcollector/prometheusreceiver/go.sum index a6a1b5e21..12adfb586 100644 --- a/otelcollector/prometheusreceiver/go.sum +++ b/otelcollector/prometheusreceiver/go.sum @@ -1,21 +1,21 @@ -cloud.google.com/go/auth v0.16.2 h1:QvBAGFPLrDeoiNjyfVunhQ10HKNYuOwZ5noee0M5df4= -cloud.google.com/go/auth v0.16.2/go.mod h1:sRBas2Y1fB1vZTdurouM0AzuYQBMZinrUYL8EufhtEA= +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/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.7.0 h1:PBWF+iiAerVNe8UCHxdOt6eHLVc3ydFeOCw78U8ytSU= -cloud.google.com/go/compute/metadata v0.7.0/go.mod h1:j5MvL9PprKL39t166CoB1uVHfQMs4tFQZZcKwksXUjo= -dario.cat/mergo v1.0.1 h1:Ra4+bf83h2ztPIQYNP99R6m+Y7KfnARDfID+a+vLl4s= -dario.cat/mergo v1.0.1/go.mod h1:uNxQE+84aUszobStD9th8a29P2fMDhsBdgRYvZOxGmk= +cloud.google.com/go/compute/metadata v0.9.0 h1:pDUj4QMoPejqq20dK0Pg2N4yG9zIkYGdBtwLoEkH9Zs= +cloud.google.com/go/compute/metadata v0.9.0/go.mod h1:E0bWwX5wTnLPedCKqk3pJmVgCBSM6qQI1yTBdEb3C10= +dario.cat/mergo v1.0.2 h1:85+piFYR1tMbRrLcDwR18y4UKJ3aH1Tbzi24VRW1TK8= +dario.cat/mergo v1.0.2/go.mod h1:E/hbnu0NxMFBjpMIE34DRGLWqDy0g5FuKDhCb31ngxA= github.com/AdaLogics/go-fuzz-headers v0.0.0-20240806141605-e8a1dd7889d6 h1:He8afgbRMd7mFxO99hRNu+6tazq8nFF9lIwo9JFroBk= github.com/AdaLogics/go-fuzz-headers v0.0.0-20240806141605-e8a1dd7889d6/go.mod h1:8o94RPi1/7XTJvwPpRSzSUedZrtlirdB3r9Z20bi2f8= -github.com/Azure/azure-sdk-for-go/sdk/azcore v1.18.0 h1:Gt0j3wceWMwPmiazCa8MzMA0MfhmPIz0Qp0FJ6qcM0U= -github.com/Azure/azure-sdk-for-go/sdk/azcore v1.18.0/go.mod h1:Ot/6aikWnKWi4l9QB7qVSwa8iMphQNqkWALMoNT3rzM= -github.com/Azure/azure-sdk-for-go/sdk/azidentity v1.10.1 h1:B+blDbyVIG3WaikNxPnhPiJ1MThR03b3vKGtER95TP4= -github.com/Azure/azure-sdk-for-go/sdk/azidentity v1.10.1/go.mod h1:JdM5psgjfBf5fo2uWOZhflPWyDBZ/O/CNAH9CtsuZE4= +github.com/Azure/azure-sdk-for-go/sdk/azcore v1.19.1 h1:5YTBM8QDVIBN3sxBil89WfdAAqDZbyJTgh688DSxX5w= +github.com/Azure/azure-sdk-for-go/sdk/azcore v1.19.1/go.mod h1:YD5h/ldMsG0XiIw7PdyNhLxaM317eFh5yNLccNfGdyw= +github.com/Azure/azure-sdk-for-go/sdk/azidentity v1.12.0 h1:wL5IEG5zb7BVv1Kv0Xm92orq+5hB5Nipn3B5tn4Rqfk= +github.com/Azure/azure-sdk-for-go/sdk/azidentity v1.12.0/go.mod h1:J7MUC/wtRpfGVbQ5sIItY5/FuVWmvzlY21WAOfQnq/I= github.com/Azure/azure-sdk-for-go/sdk/azidentity/cache v0.3.2 h1:yz1bePFlP5Vws5+8ez6T3HWXPmwOK7Yvq8QxDBD3SKY= github.com/Azure/azure-sdk-for-go/sdk/azidentity/cache v0.3.2/go.mod h1:Pa9ZNPuoNu/GztvBSKk9J1cDJW6vk/n0zLtV4mgd8N8= -github.com/Azure/azure-sdk-for-go/sdk/internal v1.11.1 h1:FPKJS1T+clwv+OLGt13a8UjqeRuh0O4SJ3lUriThc+4= -github.com/Azure/azure-sdk-for-go/sdk/internal v1.11.1/go.mod h1:j2chePtV91HrC22tGoRX3sGY42uF13WzmmV80/OdVAA= +github.com/Azure/azure-sdk-for-go/sdk/internal v1.11.2 h1:9iefClla7iYpfYWdzPCRDozdmndjTm8DXdpCzPajMgA= +github.com/Azure/azure-sdk-for-go/sdk/internal v1.11.2/go.mod h1:XtLgD3ZD34DAaVIIAyG3objl5DynM3CQ/vMcbBNJZGI= github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/compute/armcompute/v5 v5.7.0 h1:LkHbJbgF3YyvC53aqYGR+wWQDn2Rdp9AQdGndf9QvY4= github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/compute/armcompute/v5 v5.7.0/go.mod h1:QyiQdW4f4/BIfB8ZutZ2s+28RAgfa/pT+zS++ZHyM1I= github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/internal/v2 v2.0.0 h1:PTFGRSlMKCQelWwxUyYVEUqseBJVemLyqWJjvMyt0do= @@ -28,8 +28,8 @@ github.com/Azure/go-ansiterm v0.0.0-20250102033503-faa5f7b0171c h1:udKWzYgxTojEK github.com/Azure/go-ansiterm v0.0.0-20250102033503-faa5f7b0171c/go.mod h1:xomTg63KZ2rFqZQzSB4Vz2SUXa1BpHTVz9L5PTmPC4E= github.com/AzureAD/microsoft-authentication-extensions-for-go/cache v0.1.1 h1:WJTmL004Abzc5wDB5VtZG2PJk5ndYDgVacGqfirKxjM= github.com/AzureAD/microsoft-authentication-extensions-for-go/cache v0.1.1/go.mod h1:tCcJZ0uHAmvjsVYzEFivsRTN00oz5BEsRgQHu5JZ9WE= -github.com/AzureAD/microsoft-authentication-library-for-go v1.4.2 h1:oygO0locgZJe7PpYPXT5A29ZkwJaPqcva7BVeemZOZs= -github.com/AzureAD/microsoft-authentication-library-for-go v1.4.2/go.mod h1:wP83P5OoQ5p6ip3ScPr0BAq0BvuPAvacpEuSzyouqAI= +github.com/AzureAD/microsoft-authentication-library-for-go v1.5.0 h1:XkkQbfMyuH2jTSjQjSoihryI8GINRcs4xp8lNawg0FI= +github.com/AzureAD/microsoft-authentication-library-for-go v1.5.0/go.mod h1:HKpQxkWaGLJ+D/5H8QRpyQXA1eKjxkFlOMwck5+33Jk= github.com/Code-Hex/go-generics-cache v1.5.1 h1:6vhZGc5M7Y/YD8cIUcY8kcuQLB4cHR7U+0KMqAA0KcU= github.com/Code-Hex/go-generics-cache v1.5.1/go.mod h1:qxcC9kRVrct9rHeiYpFWSoW1vxyillCVzX13KZG8dl4= github.com/DataDog/datadog-go v3.2.0+incompatible/go.mod h1:LButxg5PwREeZtORoXG3tL4fMGNddJ+vMq1mwgfaqoQ= @@ -49,36 +49,38 @@ github.com/armon/go-radix v0.0.0-20180808171621-7fddfc383310/go.mod h1:ufUuZ+zHj github.com/armon/go-radix v1.0.0/go.mod h1:ufUuZ+zHj4x4TnLV4JWEpy2hxWSpsRywHrMgIH9cCH8= github.com/asaskevich/govalidator v0.0.0-20230301143203-a9d515a09cc2 h1:DklsrG3dyBCFEj5IhUbnKptjxatkF07cF2ak3yi77so= github.com/asaskevich/govalidator v0.0.0-20230301143203-a9d515a09cc2/go.mod h1:WaHUgvxTVq04UNunO+XhnAqY/wQc+bxr74GqbsZ/Jqw= -github.com/aws/aws-sdk-go-v2 v1.37.0 h1:YtCOESR/pN4j5oA7cVHSfOwIcuh/KwHC4DOSXFbv5F0= -github.com/aws/aws-sdk-go-v2 v1.37.0/go.mod h1:9Q0OoGQoboYIAJyslFyF1f5K1Ryddop8gqMhWx/n4Wg= -github.com/aws/aws-sdk-go-v2/config v1.29.14 h1:f+eEi/2cKCg9pqKBoAIwRGzVb70MRKqWX4dg1BDcSJM= -github.com/aws/aws-sdk-go-v2/config v1.29.14/go.mod h1:wVPHWcIFv3WO89w0rE10gzf17ZYy+UVS1Geq8Iei34g= -github.com/aws/aws-sdk-go-v2/credentials v1.17.67 h1:9KxtdcIA/5xPNQyZRgUSpYOE6j9Bc4+D7nZua0KGYOM= -github.com/aws/aws-sdk-go-v2/credentials v1.17.67/go.mod h1:p3C44m+cfnbv763s52gCqrjaqyPikj9Sg47kUVaNZQQ= -github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.16.30 h1:x793wxmUWVDhshP8WW2mlnXuFrO4cOd3HLBroh1paFw= -github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.16.30/go.mod h1:Jpne2tDnYiFascUEs2AWHJL9Yp7A5ZVy3TNyxaAjD6M= -github.com/aws/aws-sdk-go-v2/internal/configsources v1.4.0 h1:H2iZoqW/v2Jnrh1FnU725Bq6KJ0k2uP63yH+DcY+HUI= -github.com/aws/aws-sdk-go-v2/internal/configsources v1.4.0/go.mod h1:L0FqLbwMXHvNC/7crWV1iIxUlOKYZUE8KuTIA+TozAI= -github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.7.0 h1:EDped/rNzAhFPhVY0sDGbtD16OKqksfA8OjF/kLEgw8= -github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.7.0/go.mod h1:uUI335jvzpZRPpjYx6ODc/wg1qH+NnoSTK/FwVeK0C0= -github.com/aws/aws-sdk-go-v2/internal/ini v1.8.3 h1:bIqFDwgGXXN1Kpp99pDOdKMTTb5d2KyU5X/BZxjOkRo= -github.com/aws/aws-sdk-go-v2/internal/ini v1.8.3/go.mod h1:H5O/EsxDWyU+LP/V8i5sm8cxoZgc2fdNR9bxlOFrQTo= -github.com/aws/aws-sdk-go-v2/service/ec2 v1.237.0 h1:XHE2G+yaDQql32FZt19QmQt4WuisqQJIkMUSCxeCUl8= -github.com/aws/aws-sdk-go-v2/service/ec2 v1.237.0/go.mod h1:t11/j/nH9i6bbsPH9xc04BJOsV2nVPUqrB67/TLDsyM= -github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding v1.13.0 h1:6+lZi2JeGKtCraAj1rpoZfKqnQ9SptseRZioejfUOLM= -github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding v1.13.0/go.mod h1:eb3gfbVIxIoGgJsi9pGne19dhCBpK6opTYpQqAmdy44= -github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.13.0 h1:eRhU3Sh8dGbaniI6B+I48XJMrTPRkK4DKo+vqIxziOU= -github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.13.0/go.mod h1:paNLV18DZ6FnWE/bd06RIKPDIFpjuvCkGKWTG/GDBeM= -github.com/aws/aws-sdk-go-v2/service/lightsail v1.44.0 h1:QiiCqpKy0prxq+92uWfESzcb7/8Y9JAamcMOzVYLEoM= -github.com/aws/aws-sdk-go-v2/service/lightsail v1.44.0/go.mod h1:ESppxYqXQCpCY+KWl3BdkQjmsQX6zxKP39SnDtRDoU0= -github.com/aws/aws-sdk-go-v2/service/sso v1.25.3 h1:1Gw+9ajCV1jogloEv1RRnvfRFia2cL6c9cuKV2Ps+G8= -github.com/aws/aws-sdk-go-v2/service/sso v1.25.3/go.mod h1:qs4a9T5EMLl/Cajiw2TcbNt2UNo/Hqlyp+GiuG4CFDI= -github.com/aws/aws-sdk-go-v2/service/ssooidc v1.30.1 h1:hXmVKytPfTy5axZ+fYbR5d0cFmC3JvwLm5kM83luako= -github.com/aws/aws-sdk-go-v2/service/ssooidc v1.30.1/go.mod h1:MlYRNmYu/fGPoxBQVvBYr9nyr948aY/WLUvwBMBJubs= -github.com/aws/aws-sdk-go-v2/service/sts v1.33.19 h1:1XuUZ8mYJw9B6lzAkXhqHlJd/XvaX32evhproijJEZY= -github.com/aws/aws-sdk-go-v2/service/sts v1.33.19/go.mod h1:cQnB8CUnxbMU82JvlqjKR2HBOm3fe9pWorWBza6MBJ4= -github.com/aws/smithy-go v1.22.5 h1:P9ATCXPMb2mPjYBgueqJNCA5S9UfktsW0tTxi+a7eqw= -github.com/aws/smithy-go v1.22.5/go.mod h1:t1ufH5HMublsJYulve2RKmHDC15xu1f26kHCp/HgceI= +github.com/aws/aws-sdk-go-v2 v1.39.6 h1:2JrPCVgWJm7bm83BDwY5z8ietmeJUbh3O2ACnn+Xsqk= +github.com/aws/aws-sdk-go-v2 v1.39.6/go.mod h1:c9pm7VwuW0UPxAEYGyTmyurVcNrbF6Rt/wixFqDhcjE= +github.com/aws/aws-sdk-go-v2/config v1.31.17 h1:QFl8lL6RgakNK86vusim14P2k8BFSxjvUkcWLDjgz9Y= +github.com/aws/aws-sdk-go-v2/config v1.31.17/go.mod h1:V8P7ILjp/Uef/aX8TjGk6OHZN6IKPM5YW6S78QnRD5c= +github.com/aws/aws-sdk-go-v2/credentials v1.18.21 h1:56HGpsgnmD+2/KpG0ikvvR8+3v3COCwaF4r+oWwOeNA= +github.com/aws/aws-sdk-go-v2/credentials v1.18.21/go.mod h1:3YELwedmQbw7cXNaII2Wywd+YY58AmLPwX4LzARgmmA= +github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.18.13 h1:T1brd5dR3/fzNFAQch/iBKeX07/ffu/cLu+q+RuzEWk= +github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.18.13/go.mod h1:Peg/GBAQ6JDt+RoBf4meB1wylmAipb7Kg2ZFakZTlwk= +github.com/aws/aws-sdk-go-v2/internal/configsources v1.4.13 h1:a+8/MLcWlIxo1lF9xaGt3J/u3yOZx+CdSveSNwjhD40= +github.com/aws/aws-sdk-go-v2/internal/configsources v1.4.13/go.mod h1:oGnKwIYZ4XttyU2JWxFrwvhF6YKiK/9/wmE3v3Iu9K8= +github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.7.13 h1:HBSI2kDkMdWz4ZM7FjwE7e/pWDEZ+nR95x8Ztet1ooY= +github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.7.13/go.mod h1:YE94ZoDArI7awZqJzBAZ3PDD2zSfuP7w6P2knOzIn8M= +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.262.0 h1:5qBb1XV/D18qtCHd3bmmxoVglI+fZ4QWuS/EB8kIXYQ= +github.com/aws/aws-sdk-go-v2/service/ec2 v1.262.0/go.mod h1:NDdDLLW5PtLLXN661gKcvJvqAH5OBXsfhMlmKVu1/pY= +github.com/aws/aws-sdk-go-v2/service/ecs v1.67.2 h1:oeICOX/+D0XXV1aMYJPXVe3CO37zYr7fB6HFgxchleU= +github.com/aws/aws-sdk-go-v2/service/ecs v1.67.2/go.mod h1:rrhqfkXfa2DSNq0RyFhnnFEAyI+yJB4+2QlZKeJvMjs= +github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding v1.13.3 h1:x2Ibm/Af8Fi+BH+Hsn9TXGdT+hKbDd5XOTZxTMxDk7o= +github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding v1.13.3/go.mod h1:IW1jwyrQgMdhisceG8fQLmQIydcT/jWY21rFhzgaKwo= +github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.13.13 h1:kDqdFvMY4AtKoACfzIGD8A0+hbT41KTKF//gq7jITfM= +github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.13.13/go.mod h1:lmKuogqSU3HzQCwZ9ZtcqOc5XGMqtDK7OIc2+DxiUEg= +github.com/aws/aws-sdk-go-v2/service/lightsail v1.50.4 h1:/1o2AYwHJojUDeMvQNyJiKZwcWCc3e4kQuTXqRLuThc= +github.com/aws/aws-sdk-go-v2/service/lightsail v1.50.4/go.mod h1:Nn2xx6HojGuNMtUFxxz/nyNLSS+tHMRsMhe3+W3wB5k= +github.com/aws/aws-sdk-go-v2/service/sso v1.30.1 h1:0JPwLz1J+5lEOfy/g0SURC9cxhbQ1lIMHMa+AHZSzz0= +github.com/aws/aws-sdk-go-v2/service/sso v1.30.1/go.mod h1:fKvyjJcz63iL/ftA6RaM8sRCtN4r4zl4tjL3qw5ec7k= +github.com/aws/aws-sdk-go-v2/service/ssooidc v1.35.5 h1:OWs0/j2UYR5LOGi88sD5/lhN6TDLG6SfA7CqsQO9zF0= +github.com/aws/aws-sdk-go-v2/service/ssooidc v1.35.5/go.mod h1:klO+ejMvYsB4QATfEOIXk8WAEwN4N0aBfJpvC+5SZBo= +github.com/aws/aws-sdk-go-v2/service/sts v1.39.1 h1:mLlUgHn02ue8whiR4BmxxGJLR2gwU6s6ZzJ5wDamBUs= +github.com/aws/aws-sdk-go-v2/service/sts v1.39.1/go.mod h1:E19xDjpzPZC7LS2knI9E6BaRFDK43Eul7vd6rSq2HWk= +github.com/aws/smithy-go v1.23.2 h1:Crv0eatJUQhaManss33hS5r40CG3ZFH+21XSkqMrIUM= +github.com/aws/smithy-go v1.23.2/go.mod h1:LEj2LM3rBRQJxPZTB4KuzZkaZYnZPnvgIhb4pu07mx0= 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= @@ -95,8 +97,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/cncf/xds/go v0.0.0-20250501225837-2ac532fd4443 h1:aQ3y1lwWyqYPiWZThqv1aFbZMiM9vblcSArJRf2Irls= -github.com/cncf/xds/go v0.0.0-20250501225837-2ac532fd4443/go.mod h1:W+zGtBO5Y1IgJhy4+A9GOqVhqLpfZi+vwmdNXUehLA8= +github.com/cncf/xds/go v0.0.0-20251022180443-0feb69152e9f h1:Y8xYupdHxryycyPlc9Y+bSQAYZnetRJ70VMVKm5CKI0= +github.com/cncf/xds/go v0.0.0-20251022180443-0feb69152e9f/go.mod h1:HlzOvOjVBOfTGSRXRyY0OiCS/3J1akRGQQpRO/7zyF4= github.com/containerd/errdefs v1.0.0 h1:tg5yIfIlQIrxYtu9ajqY42W3lpS19XqdxRQeEwYG8PI= github.com/containerd/errdefs v1.0.0/go.mod h1:+YBYIdtsnF4Iw6nWZhJcqGSg/dwvV7tyJ/kCkyJ2k+M= github.com/containerd/errdefs/pkg v0.3.0 h1:9IKJ06FvyNlexW690DXuQNx2KA2cUJXx151Xdx3ZPPE= @@ -105,8 +107,8 @@ github.com/containerd/log v0.1.0 h1:TCJt7ioM2cr/tfR8GPbGf9/VRAX8D2B4PjzCpfX540I= github.com/containerd/log v0.1.0/go.mod h1:VRRf09a7mHDIRezVKTRCrOq78v577GXq3bSa3EhrzVo= github.com/containerd/platforms v0.2.1 h1:zvwtM3rz2YHPQsF2CHYM8+KtB5dvhISiXh5ZpSBQv6A= github.com/containerd/platforms v0.2.1/go.mod h1:XHCb+2/hzowdiut9rkudds9bE5yJ7npe7dG/wG+uFPw= -github.com/coreos/go-systemd/v22 v22.5.0 h1:RrqgGjYQKalulkV8NGVIfkXQf6YYmOyiJKk8iXXhfZs= -github.com/coreos/go-systemd/v22 v22.5.0/go.mod h1:Y58oyj3AT4RCenI/lSvhwexgC+NSVTIJ3seZv2GcEnc= +github.com/coreos/go-systemd/v22 v22.6.0 h1:aGVa/v8B7hpb0TKl0MWoAavPDmHvobFe5R5zn0bCJWo= +github.com/coreos/go-systemd/v22 v22.6.0/go.mod h1:iG+pp635Fo7ZmV/j14KUcmEyWF+0X7Lua8rrTWzYgWU= github.com/cpuguy83/dockercfg v0.3.2 h1:DlJTyZGBDlXqUZ2Dk2Q3xHs/FtnooJJVaad2S9GKorA= github.com/cpuguy83/dockercfg v0.3.2/go.mod h1:sugsbF4//dDlL/i+S+rtpIWp+5h0BHJHfjj5/jFyUJc= github.com/cpuguy83/go-md2man/v2 v2.0.6/go.mod h1:oOW0eioCTA6cOiMLiUPZOpcVxMig6NIQQ7OS05n1F4g= @@ -118,28 +120,26 @@ 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/dgryski/go-rendezvous v0.0.0-20200823014737-9f7001d12a5f h1:lO4WD4F/rVNCu3HqELle0jiPLLBs70cWOduZpkS1E78= -github.com/dgryski/go-rendezvous v0.0.0-20200823014737-9f7001d12a5f/go.mod h1:cuUVRXasLTGF7a8hSLbxyZXjz+1KgoB3wDUb6vlszIc= -github.com/digitalocean/godo v1.157.0 h1:ReELaS6FxXNf8gryUiVH0wmyUmZN8/NCmBX4gXd3F0o= -github.com/digitalocean/godo v1.157.0/go.mod h1:tYeiWY5ZXVpU48YaFv0M5irUFHXGorZpDNm7zzdWMzM= +github.com/digitalocean/godo v1.168.0 h1:mlORtUcPD91LQeJoznrH3XvfvgK3t8Wvrpph9giUT/Q= +github.com/digitalocean/godo v1.168.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.3.3+incompatible h1:Dypm25kh4rmk49v1eiVbsAtpAsYURjYkaKubwuBdxEI= -github.com/docker/docker v28.3.3+incompatible/go.mod h1:eEKB0N0r5NX/I1kEveEz05bcu8tLC/8azJZsviup8Sk= +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.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/ebitengine/purego v0.8.4 h1:CF7LEKg5FFOsASUj0+QwaXf8Ht6TlFxg09+S9wz0omw= -github.com/ebitengine/purego v0.8.4/go.mod h1:iIjxzd6CiRiOG0UyXP+V1+jWqUXVjPKLAI0mRfJZTmQ= +github.com/ebitengine/purego v0.9.1 h1:a/k2f2HQU3Pi399RPW1MOaZyhKJL9w/xFpKAg4q1s0A= +github.com/ebitengine/purego v0.9.1/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/emicklei/go-restful/v3 v3.11.0 h1:rAQeMHw1c7zTmncogyy8VvRZwtkmkZ4FxERmMY4rD+g= -github.com/emicklei/go-restful/v3 v3.11.0/go.mod h1:6n3XBCmQQb25CM2LCACGz8ukIrRry+4bhvbpWn3mrbc= -github.com/envoyproxy/go-control-plane/envoy v1.32.4 h1:jb83lalDRZSpPWW2Z7Mck/8kXZ5CQAFYVjQcdVIr83A= -github.com/envoyproxy/go-control-plane/envoy v1.32.4/go.mod h1:Gzjc5k8JcJswLjAx1Zm+wSYE20UrLtt7JZMWiWQXQEw= +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.35.0 h1:ixjkELDE+ru6idPxcHLj8LBVc2bFP7iBytj353BoHUo= +github.com/envoyproxy/go-control-plane/envoy v1.35.0/go.mod h1:09qwbGVuSWWAyN5t/b3iyVfz5+z8QWGrzkoqm/8SbEs= github.com/envoyproxy/protoc-gen-validate v1.2.1 h1:DEo3O99U8j4hBFwbJfrz9VtgcDfUKS7KJ7spH3d86P8= github.com/envoyproxy/protoc-gen-validate v1.2.1/go.mod h1:d/C80l/jxXLdfEIhX1W2TmLfsJ31lvEjwamM4DxlWXU= github.com/facette/natsort v0.0.0-20181210072756-2cd4dd1e2dcb h1:IT4JYU7k4ikYg1SCxNI1/Tieq/NFvh6dzLdgi7eu0tM= @@ -157,8 +157,8 @@ github.com/foxboron/swtpm_test v0.0.0-20230726224112-46aaafdf7006 h1:50sW4r0Pcvl github.com/foxboron/swtpm_test v0.0.0-20230726224112-46aaafdf7006/go.mod h1:eIXCMsMYCaqq9m1KSSxXwQG11krpuNPGP3k0uaWrbas= github.com/fsnotify/fsnotify v1.9.0 h1:2Ml+OJNzbYCTzsxtv8vKSFD9PbJjmhYF14k/jKC7S9k= github.com/fsnotify/fsnotify v1.9.0/go.mod h1:8jBTzvmWwFyi3Pb8djgCCO5IBqzKJ/Jwo8TRcHyHii0= -github.com/fxamacker/cbor/v2 v2.7.0 h1:iM5WgngdRBanHcxugY4JySA0nk1wZorNOpTgCMedv5E= -github.com/fxamacker/cbor/v2 v2.7.0/go.mod h1:pxXPTn3joSm21Gbwsv0w9OSA2y1HFR9qXEeXQVeNoDQ= +github.com/fxamacker/cbor/v2 v2.9.0 h1:NpKPmjDBgUfBms6tr6JZkTHtfFGcMKsw3eGcmD/sapM= +github.com/fxamacker/cbor/v2 v2.9.0/go.mod h1:vM4b+DJCtHn+zz7h3FFp/hDAI9WNWCsZj23V5ytsSxQ= github.com/go-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= @@ -176,8 +176,8 @@ github.com/go-ole/go-ole v1.2.6 h1:/Fpf6oFPoeFik9ty7siob0G6Ke8QvQEuVcuChpwXzpY= github.com/go-ole/go-ole v1.2.6/go.mod h1:pprOEPIfldk/42T2oK7lQ4v4JSDwmV0As9GaiUsvbm0= github.com/go-openapi/analysis v0.23.0 h1:aGday7OWupfMs+LbmLZG4k0MYXIANxcuBTYUC03zFCU= github.com/go-openapi/analysis v0.23.0/go.mod h1:9mz9ZWaSlV8TvjQHLl2mUW2PbZtemkE8yA5v22ohupo= -github.com/go-openapi/errors v0.22.0 h1:c4xY/OLxUBSTiepAg3j/MHuAv5mJhnf53LLMWFB+u/w= -github.com/go-openapi/errors v0.22.0/go.mod h1:J3DmZScxCDufmIMsdOuDHxJbdOGC0xtUynjIx092vXE= +github.com/go-openapi/errors v0.22.3 h1:k6Hxa5Jg1TUyZnOwV2Lh81j8ayNw5VVYLvKrp4zFKFs= +github.com/go-openapi/errors v0.22.3/go.mod h1:+WvbaBBULWCOna//9B9TbLNGSFOfF8lY9dw4hGiEiKQ= github.com/go-openapi/jsonpointer v0.21.0 h1:YgdVicSA9vH5RiHs9TZW5oyafXZFc6+2Vc1rr/O9oNQ= github.com/go-openapi/jsonpointer v0.21.0/go.mod h1:IUyH9l/+uyhIYQ/PXVA41Rexl+kOkAPDdXEYns6fzUY= github.com/go-openapi/jsonreference v0.21.0 h1:Rs+Y7hSXT83Jacb7kFyjn4ijOuVGSvOdF2+tg1TRrwQ= @@ -186,8 +186,8 @@ github.com/go-openapi/loads v0.22.0 h1:ECPGd4jX1U6NApCGG1We+uEozOAvXvJSF4nnwHZ8A github.com/go-openapi/loads v0.22.0/go.mod h1:yLsaTCS92mnSAZX5WWoxszLj0u+Ojl+Zs5Stn1oF+rs= github.com/go-openapi/spec v0.21.0 h1:LTVzPc3p/RzRnkQqLRndbAzjY0d0BCL72A6j3CdL9ZY= github.com/go-openapi/spec v0.21.0/go.mod h1:78u6VdPw81XU44qEWGhtr982gJ5BWg2c0I5XwVMotYk= -github.com/go-openapi/strfmt v0.23.0 h1:nlUS6BCqcnAk0pyhi9Y+kdDVZdZMHfEKQiS4HaMgO/c= -github.com/go-openapi/strfmt v0.23.0/go.mod h1:NrtIpfKtWIygRkKVsxh7XQMDQW5HKQl6S5ik2elW+K4= +github.com/go-openapi/strfmt v0.24.0 h1:dDsopqbI3wrrlIzeXRbqMihRNnjzGC+ez4NQaAAJLuc= +github.com/go-openapi/strfmt v0.24.0/go.mod h1:Lnn1Bk9rZjXxU9VMADbEEOo7D7CDyKGLsSKekhFr7s4= github.com/go-openapi/swag v0.23.0 h1:vsEVJDUo2hPJ2tu0/Xc+4noaxyEffXNIs3cOULZ+GrE= github.com/go-openapi/swag v0.23.0/go.mod h1:esZ8ITTYEsH1V2trKHjAN8Ai7xHb8RV+YSZ577vPjgQ= github.com/go-openapi/validate v0.24.0 h1:LdfDKwNbpB6Vn40xhTdNZAnfLECL81w+VX3BumrGD58= @@ -203,14 +203,13 @@ 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/gobwas/glob v0.2.3 h1:A4xDbljILXROh+kObIiy5kIaPYD8e96x1tgBhUI5J+Y= github.com/gobwas/glob v0.2.3/go.mod h1:d3Ez4x06l9bZtSvzIay5+Yzi0fmZzPgnTbPcKjJAkT8= -github.com/goccy/go-yaml v1.18.0 h1:8W7wMFS12Pcas7KU+VVkaiCng+kG8QiFeFwzFb+rwuw= -github.com/goccy/go-yaml v1.18.0/go.mod h1:XBurs7gK8ATbW4ZPGKgcbrY1Br56PdM69F7LkFRi1kA= -github.com/godbus/dbus/v5 v5.0.4/go.mod h1:xhWf0FNVPg57R7Z0UbKHbJfkEywrmjJnf7w5xrFpKfA= +github.com/goccy/go-yaml v1.19.0 h1:EmkZ9RIsX+Uq4DYFowegAuJo8+xdX3T/2dwNPXbxEYE= +github.com/goccy/go-yaml v1.19.0/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.2.2 h1:Rl4B7itRWVtYIHFrSNd7vhTiz9UpLdi6gZhZ3wEeDy8= -github.com/golang-jwt/jwt/v5 v5.2.2/go.mod h1:pqrtFR0X4osieyHYxtmOUWsAWrfe1Q5UVIyoH402zdk= +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/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= @@ -219,50 +218,47 @@ github.com/golang/protobuf v1.5.4/go.mod h1:lnTiLA8Wa4RWRcIUkrtSVa5nRhsEGBg48fD6 github.com/golang/snappy v1.0.0 h1:Oy607GVXHs7RtbggtPBnr2RmDArIsAefDwvrdWvRhGs= github.com/golang/snappy v1.0.0/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q= github.com/google/btree v0.0.0-20180813153112-4030bb1f1f0c/go.mod h1:lNA+9X1NB3Zf8V7Ke586lFgjr2dZNuvo3lPJSGZ5JPQ= -github.com/google/btree v1.0.1 h1:gK4Kx5IaGY9CD5sPJ36FHiBJ6ZXl0kilRiiCj+jdYp4= -github.com/google/btree v1.0.1/go.mod h1:xXMiIv4Fb/0kKde4SpL7qlzvu5cMJDRkFDxJfI9uaxA= -github.com/google/gnostic-models v0.6.8 h1:yo/ABAfM5IMRsS1VnXjTBvUb61tFIHozhlYvRgGre9I= -github.com/google/gnostic-models v0.6.8/go.mod h1:5n7qKqH0f5wFt+aWF8CW6pZLLNOfYuF5OpfBSENuI8U= +github.com/google/btree v1.1.3 h1:CVpQJjYgC4VbzxeGVHfvZrv1ctoYCAI8vbl07Fcxlyg= +github.com/google/btree v1.1.3/go.mod h1:qOPhT0dTNdNzV6Z/lhRX0YXUafgPLFUh+gZMl761Gm4= +github.com/google/gnostic-models v0.7.0 h1:qwTtogB15McXDaNqTZdzPJRHvaVJlAl+HVQnLmJEJxo= +github.com/google/gnostic-models v0.7.0/go.mod h1:whL5G0m6dmc5cPxKc5bdKdEN3UjI7OUGxBlw57miDrQ= github.com/google/go-cmp v0.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.5.6/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= -github.com/google/go-cmp v0.5.9/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY= github.com/google/go-cmp v0.7.0 h1:wk8382ETsv4JYUZwIsn6YpYiWiBsYLSJiTsyBybVuN8= github.com/google/go-cmp v0.7.0/go.mod h1:pXiqmnSA92OHEEa9HXL2W4E7lf9JzCmGVUdgjX3N/iU= github.com/google/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-tpm v0.9.6 h1:Ku42PT4LmjDu1H5C5ISWLlpI1mj+Zq7sPGKoRw2XROA= -github.com/google/go-tpm v0.9.6/go.mod h1:h9jEsEECg7gtLis0upRBQU+GhYVH6jMjrFxI8u6bVUY= +github.com/google/go-tpm v0.9.7 h1:u89J4tUUeDTlH8xxC3CTW7OHZjbjKoHdQ9W7gCUhtxA= +github.com/google/go-tpm v0.9.7/go.mod h1:h9jEsEECg7gtLis0upRBQU+GhYVH6jMjrFxI8u6bVUY= github.com/google/go-tpm-tools v0.4.4 h1:oiQfAIkc6xTy9Fl5NKTeTJkBTlXdHsxAofmQyxBKY98= github.com/google/go-tpm-tools v0.4.4/go.mod h1:T8jXkp2s+eltnCDIsXR84/MTcVU9Ja7bh3Mit0pa4AY= 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-20250607225305-033d6d78b36a h1://KbezygeMJZCSHH+HgUZiTeSoiuFspbMg1ge+eFj18= -github.com/google/pprof v0.0.0-20250607225305-033d6d78b36a/go.mod h1:5hDyRhoBCxViHszMt12TnOpEI4VVi+U8Gm9iphldiMA= +github.com/google/pprof v0.0.0-20250923004556-9e5a51aed1e8 h1:ZI8gCoCjGzPsum4L21jHdQs8shFBIQih1TM9Rd/c+EQ= +github.com/google/pprof v0.0.0-20250923004556-9e5a51aed1e8/go.mod h1:I6V7YzU0XDpsHqbsyrghnFZLO1gwK6NPTNvmetQIk9U= 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.6 h1:GW/XbdyBFQ8Qe+YAmFU9uHLo7OnF5tL52HFAgMmyrf4= github.com/googleapis/enterprise-certificate-proxy v0.3.6/go.mod h1:MkHOF77EYAE7qfSuSS9PU6g4Nt4e11cnsDUowfwewLA= -github.com/googleapis/gax-go/v2 v2.14.2 h1:eBLnkZ9635krYIPD+ag1USrOAI0Nr0QYF3+/3GqO0k0= -github.com/googleapis/gax-go/v2 v2.14.2/go.mod h1:ON64QhlJkhVtSqp4v1uaK92VyZ2gmvDQsweuyLV+8+w= -github.com/gophercloud/gophercloud/v2 v2.7.0 h1:o0m4kgVcPgHlcXiWAjoVxGd8QCmvM5VU+YM71pFbn0E= -github.com/gophercloud/gophercloud/v2 v2.7.0/go.mod h1:Ki/ILhYZr/5EPebrPL9Ej+tUg4lqx71/YH2JWVeU+Qk= -github.com/gorilla/websocket v1.5.0 h1:PPwGk2jz7EePpoHN/+ClbZu8SPxiqlu12wZP/3sWmnc= -github.com/gorilla/websocket v1.5.0/go.mod h1:YR8l580nyteQvAITg2hZ9XVh4b55+EU/adAjf1fMHhE= -github.com/grafana/regexp v0.0.0-20240518133315-a468a5bfb3bc h1:GN2Lv3MGO7AS6PrRoT6yV5+wkrOpcszoIsO4+4ds248= -github.com/grafana/regexp v0.0.0-20240518133315-a468a5bfb3bc/go.mod h1:+JKpmjMGhpgPL+rXZ5nsZieVzvarn86asRlBg4uNGnk= -github.com/grpc-ecosystem/grpc-gateway/v2 v2.27.1 h1:X5VWvz21y3gzm9Nw/kaUeku/1+uBhcekkmy4IkffJww= -github.com/grpc-ecosystem/grpc-gateway/v2 v2.27.1/go.mod h1:Zanoh4+gvIgluNqcfMVTJueD4wSS5hT7zTt4Mrutd90= +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.8.0 h1:of2+8tT6+FbEYHfYC8GBu8TXJNsXYSNm9KuvpX7Neqo= +github.com/gophercloud/gophercloud/v2 v2.8.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= +github.com/grafana/regexp v0.0.0-20250905093917-f7b3be9d1853/go.mod h1:+JKpmjMGhpgPL+rXZ5nsZieVzvarn86asRlBg4uNGnk= +github.com/grpc-ecosystem/grpc-gateway/v2 v2.27.2 h1:8Tjv8EJ+pM1xP8mK6egEbD1OgnVTyacbefKhmbLhIhU= +github.com/grpc-ecosystem/grpc-gateway/v2 v2.27.2/go.mod h1:pkJQ2tZHJ0aFOVEEot6oZmaVEZcRme73eIFmhiVuRWs= github.com/hashicorp/consul/api v1.32.0 h1:5wp5u780Gri7c4OedGEPzmlUEzi0g2KyiPphSr6zjVg= github.com/hashicorp/consul/api v1.32.0/go.mod h1:Z8YgY0eVPukT/17ejW+l+C7zJmKwgPHtjU1q16v/Y40= github.com/hashicorp/consul/sdk v0.16.1 h1:V8TxTnImoPD5cj0U9Spl0TUxcytjcbbJeADFF07KdHg= github.com/hashicorp/consul/sdk v0.16.1/go.mod h1:fSXvwxB2hmh1FMZCNl6PwX0Q/1wdWtHJcZ7Ea5tns0s= -github.com/hashicorp/cronexpr v1.1.2 h1:wG/ZYIKT+RT3QkOdgYc+xsKWVRgnxJ1OJtjjy84fJ9A= -github.com/hashicorp/cronexpr v1.1.2/go.mod h1:P4wA0KBl9C5q2hABiMO7cp6jcIg96CDh1Efb3g1PWA4= +github.com/hashicorp/cronexpr v1.1.3 h1:rl5IkxXN2m681EfivTlccqIryzYJSXRGRNa0xeG7NA4= +github.com/hashicorp/cronexpr v1.1.3/go.mod h1:P4wA0KBl9C5q2hABiMO7cp6jcIg96CDh1Efb3g1PWA4= github.com/hashicorp/errwrap v1.0.0/go.mod h1:YH+1FKiLXxHSkmPseP+kNlulaMuP3n2brvKWEqk/Jc4= github.com/hashicorp/errwrap v1.1.0 h1:OxrOeh75EUXMY8TBjag2fzXGZ40LB6IKw45YeGUDY2I= github.com/hashicorp/errwrap v1.1.0/go.mod h1:YH+1FKiLXxHSkmPseP+kNlulaMuP3n2brvKWEqk/Jc4= @@ -296,8 +292,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.7.0 h1:5tqGy27NaOTB8yJKUZELlFAS/LTKJkrmONwQKeRZfjY= -github.com/hashicorp/go-version v1.7.0/go.mod h1:fltr4n8CU8Ke44wwGCBoEymUuxUHl09ZGVZPK5anwXA= +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/golang-lru v0.5.0/go.mod h1:/m3WP610KZHVQ1SGc6re/UDhFvYD7pJ4Ao+sR/qLZy8= github.com/hashicorp/golang-lru v1.0.2 h1:dV3g9Z/unq5DpblPpw+Oqcv4dU/1omnb4Ok8iPY6p1c= github.com/hashicorp/golang-lru v1.0.2/go.mod h1:iADmTwqILo4mZ8BN3D2Q6+9jd8WM5uGBxy+E8yxSoD4= @@ -306,18 +302,18 @@ 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.1 h1:mk5dRuzeDNis2bi6LLoQIXfMH7JQvAzt3mQD0vNZZUo= github.com/hashicorp/memberlist v0.5.1/go.mod h1:zGDXV6AqbDTKTM6yxW0I4+JtFzZAJVoIPvss4hV8F24= -github.com/hashicorp/nomad/api v0.0.0-20241218080744-e3ac00f30eec h1:+YBzb977VrmffaCX/OBm17dEVJUcWn5dW+eqs3aIJ/A= -github.com/hashicorp/nomad/api v0.0.0-20241218080744-e3ac00f30eec/go.mod h1:svtxn6QnrQ69P23VvIWMR34tg3vmwLz4UdUzm1dSCgE= +github.com/hashicorp/nomad/api v0.0.0-20250930071859-eaa0fe0e27af h1:ScAYf8O+9xTqTJPZH8MIlUfO+ak8cb31rW1aYJgS+jE= +github.com/hashicorp/nomad/api v0.0.0-20250930071859-eaa0fe0e27af/go.mod h1:sldFTIgs+FsUeKU3LwVjviAIuksxD8TzDOn02MYwslE= 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.21.1 h1:IH3liW8/cCRjfJ4cyqYvw3s1ek+KWP8dl1roa0lD8JM= -github.com/hetznercloud/hcloud-go/v2 v2.21.1/go.mod h1:XOaYycZJ3XKMVWzmqQ24/+1V7ormJHmPdck/kxrNnQA= +github.com/hetznercloud/hcloud-go/v2 v2.29.0 h1:LzNFw5XLBfftyu3WM1sdSLjOZBlWORtz2hgGydHaYV8= +github.com/hetznercloud/hcloud-go/v2 v2.29.0/go.mod h1:XBU4+EDH2KVqu2KU7Ws0+ciZcX4ygukQl/J0L5GS8P8= 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.4 h1:jTvGl4LOF8v8OYoEIBNVwbFoqSGAFqn6vGE7sp7/BqQ= github.com/ionos-cloud/sdk-go/v6 v6.3.4/go.mod h1:wCVwNJ/21W29FWFUv+fNawOTMlFoP1dS3L+ZuztFW48= -github.com/jarcoal/httpmock v1.4.0 h1:BvhqnH0JAYbNudL2GMJKgOHe2CtKlzJ/5rWKyp+hc2k= -github.com/jarcoal/httpmock v1.4.0/go.mod h1:ftW1xULwo+j0R0JJkJIIi7UKigZUXCLLanykgjwBXL0= +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/josharian/intern v1.0.0 h1:vlS4z54oSdjm0bgjRigI+G1HpF+tI+9rE5LLzOg8HmY= github.com/josharian/intern v1.0.0/go.mod h1:5DoeVV0s6jJacbCEi61lwdGj/aVlrQvzHFFd8Hwg//Y= github.com/jpillora/backoff v1.0.0 h1:uvFg412JmmHBHw7iwprIxkPMI+sGQ4kzOWsMeHnm2EA= @@ -333,8 +329,8 @@ 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.0 h1:c/Cqfb0r+Yi+JtIEq73FWXVkRonBlf0CRNYc8Zttxdo= -github.com/klauspost/compress v1.18.0/go.mod h1:2Pp+KzxcywXVXMr50+X0Q/Lsb43OQHYWRCY2AiWywWQ= +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/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= @@ -354,8 +350,8 @@ github.com/kr/text v0.2.0 h1:5Nx0Ya0ZqY2ygV366QzturHI13Jq95ApcVaJBhpS+AY= github.com/kr/text v0.2.0/go.mod h1:eLer722TekiGuMkidMxC/pM04lWEeraHUUmBw8l2grE= github.com/kylelemons/godebug v1.1.0 h1:RPNrshWIDI6G2gRW9EHilWtl7Z6Sb1BR0xunSBf0SNc= github.com/kylelemons/godebug v1.1.0/go.mod h1:9/0rRGxNHcop5bhtWyNeEfOS8JIWk580+fNqagV/RAw= -github.com/linode/linodego v1.52.2 h1:N9ozU27To1LMSrDd8WvJZ5STSz1eGYdyLnxhAR/dIZg= -github.com/linode/linodego v1.52.2/go.mod h1:bI949fZaVchjWyKIA08hNyvAcV6BAS+PM2op3p7PAWA= +github.com/linode/linodego v1.60.0 h1:SgsebJFRCi+lSmYy+C40wmKZeJllGGm+W12Qw4+yVdI= +github.com/linode/linodego v1.60.0/go.mod h1:1+Bt0oTz5rBnDOJbGhccxn7LYVytXTIIfAy7QYmijDs= github.com/lufia/plan9stats v0.0.0-20211012122336-39d0f177ccd0 h1:6E+4a0GO5zZEnZ81pIr0yLvtUWk2if982qA3F3QD6H4= github.com/lufia/plan9stats v0.0.0-20211012122336-39d0f177ccd0/go.mod h1:zJYVVT2jmtg6P3p1VtQj7WsuWi/y4VnjVBn7F8KPB3I= github.com/magiconair/properties v1.8.10 h1:s31yESBquKXCV9a/ScB3ESkOjUYYv+X0rg8SYxI99mE= @@ -386,15 +382,13 @@ github.com/mdlayher/vsock v1.2.1 h1:pC1mTJTvjo1r9n9fbm7S1j04rCgCzhCOS5DY0zqHlnQ= github.com/mdlayher/vsock v1.2.1/go.mod h1:NRfCibel++DgeMD8z/hP+PPTjlNJsdPOmxcnENvE+SE= 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.66 h1:FeZXOS3VCVsKnEAd+wBkjMC3D2K+ww66Cq3VnCINuJE= -github.com/miekg/dns v1.1.66/go.mod h1:jGFzBsSNbJw6z1HYut1RKBKHA9PBdxeHrZG8J+gC2WE= +github.com/miekg/dns v1.1.68 h1:jsSRkNozw7G/mnmXULynzMNIsgY2dHC8LO6U6Ij2JEA= +github.com/miekg/dns v1.1.68/go.mod h1:fujopn7TB3Pu3JM69XaawiU0wqjpL9/8xGop5UrTPps= github.com/mitchellh/cli v1.1.0/go.mod h1:xcISNoH86gajksDmfB23e/pu+B+GeFRMYmoHXxx3xhI= github.com/mitchellh/copystructure v1.2.0 h1:vpKXTN4ewci03Vljg/q9QvCGUDttBOGBIa15WveJJGw= github.com/mitchellh/copystructure v1.2.0/go.mod h1:qLl+cE2AmVv+CoeAwDPye/v+N2HKCj9FbZEVFJRxO9s= github.com/mitchellh/go-homedir v1.1.0 h1:lukF9ziXFxDFPkA1vsr5zpc1XuPDn/wFntq5mG+4E0Y= github.com/mitchellh/go-homedir v1.1.0/go.mod h1:SfyaCUpYCn1Vlf4IUYiD9fPX4A5wJrkLzIz1N1q0pr0= -github.com/mitchellh/go-testing-interface v1.14.1 h1:jrgshOhYAUVNMAJiKbEu7EqAwgJJ2JqpQmpLJOu07cU= -github.com/mitchellh/go-testing-interface v1.14.1/go.mod h1:gfgS7OtZj6MA4U1UrDRp04twqAjfvlZyCfX3sDjEym8= github.com/mitchellh/mapstructure v0.0.0-20160808181253-ca63d7c062ee/go.mod h1:FVVH3fgwuzCH5S8UJGiWEs2h04kUh9fWfEaFds41c1Y= github.com/mitchellh/mapstructure v1.5.1-0.20231216201459-8508981c8b6c h1:cqn374mizHuIWj+OSJCajGr/phAmuMug9qIX3l9CflE= github.com/mitchellh/mapstructure v1.5.1-0.20231216201459-8508981c8b6c/go.mod h1:bFUtVrKA4DC2yAKiSyO/QUcy7e+RRV2QTWOzhPopBRo= @@ -473,6 +467,8 @@ github.com/prometheus/client_golang v1.0.0/go.mod h1:db9x61etRT2tGnBNRi70OPL5Fsn github.com/prometheus/client_golang v1.4.0/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-20250914183048-a974e0d45e0a h1:RF1vfKM34/3DbGNis22BGd6sDDY3XBi0eM7pYqmOEO0= +github.com/prometheus/client_golang/exp v0.0.0-20250914183048-a974e0d45e0a/go.mod h1:FGJuwvfcPY0V5enm+w8zF1RNS062yugQtPPQp1c4Io4= 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= @@ -480,53 +476,51 @@ github.com/prometheus/client_model v0.6.2 h1:oBsgwpGs7iVziMvrGhE53c/GrLUsZdHnqNw github.com/prometheus/client_model v0.6.2/go.mod h1:y3m2F6Gdpfy6Ut/GBsUqTWZqCUvMVzSfMLjcu6wAwpE= github.com/prometheus/common v0.4.1/go.mod h1:TNfzLD0ON7rHzMJeJkieUDPYmFC7Snx/y86RQel1bk4= github.com/prometheus/common v0.9.1/go.mod h1:yhUN8i9wzaXS3w1O07YhxHEBxD+W35wd8bs7vj7HSQ4= -github.com/prometheus/common v0.66.1 h1:h5E0h5/Y8niHc5DlaLlWLArTQI7tMrsfQjHV+d9ZoGs= -github.com/prometheus/common v0.66.1/go.mod h1:gcaUsgf3KfRSwHY4dIMXLPV0K/Wg1oZ8+SbZk/HH/dA= +github.com/prometheus/common v0.67.4 h1:yR3NqWO1/UyO1w2PhUvXlGQs/PtFmoveVO0KZ4+Lvsc= +github.com/prometheus/common v0.67.4/go.mod h1:gP0fq6YjjNCLssJCQp0yk4M8W6ikLURwkdd/YKtTbyI= github.com/prometheus/common/assets v0.2.0 h1:0P5OrzoHrYBOSM1OigWL3mY8ZvV2N4zIE/5AahrSrfM= github.com/prometheus/common/assets v0.2.0/go.mod h1:D17UVUE12bHbim7HzwUvtqm6gwBEaDQ0F+hIGbFbccI= -github.com/prometheus/exporter-toolkit v0.14.0 h1:NMlswfibpcZZ+H0sZBiTjrA3/aBFHkNZqE+iCj5EmRg= -github.com/prometheus/exporter-toolkit v0.14.0/go.mod h1:Gu5LnVvt7Nr/oqTBUC23WILZepW0nffNo10XdhQcwWA= -github.com/prometheus/otlptranslator v0.0.2 h1:+1CdeLVrRQ6Psmhnobldo0kTp96Rj80DRXRd5OSnMEQ= -github.com/prometheus/otlptranslator v0.0.2/go.mod h1:P8AwMgdD7XEr6QRUJ2QWLpiAZTgTE2UYgjlu3svompI= +github.com/prometheus/exporter-toolkit v0.15.0 h1:Pcle5sSViwR1x0gdPd0wtYrPQENBieQAM7TmT0qtb2U= +github.com/prometheus/exporter-toolkit v0.15.0/go.mod h1:OyRWd2iTo6Xge9Kedvv0IhCrJSBu36JCfJ2yVniRIYk= +github.com/prometheus/otlptranslator v1.0.0 h1:s0LJW/iN9dkIH+EnhiD3BlkkP5QVIUVEoIwkU+A6qos= +github.com/prometheus/otlptranslator v1.0.0/go.mod h1:vRYWnXvI6aWGpsdY/mOT/cbeVRBlPWtBNDb7kGR3uKM= github.com/prometheus/procfs v0.0.0-20181005140218-185b4288413d/go.mod h1:c3At6R/oaqEKCNdg8wHV1ftS6bRYblBhIjjI8uT2IGk= github.com/prometheus/procfs v0.0.2/go.mod h1:TjEm7ze935MbeOT/UhFTIMYKhuLP4wbCsTZCD3I8kEA= github.com/prometheus/procfs v0.0.8/go.mod h1:7Qr8sr6344vo1JqZ6HhLceV9o3AJ1Ff+GxbHq6oeK9A= github.com/prometheus/procfs v0.17.0 h1:FuLQ+05u4ZI+SS/w9+BWEM2TXiHKsUQ9TADiRH7DuK0= github.com/prometheus/procfs v0.17.0/go.mod h1:oPQLaDAMRbA+u8H5Pbfq+dl3VDAvHxMUOVhe0wYB2zw= -github.com/prometheus/prometheus v0.305.1-0.20250808193045-294f36e80261 h1:EtTzzd5UW9TXf9C8BUHv66RgdjG51efqGKWmlxMqjgs= -github.com/prometheus/prometheus v0.305.1-0.20250808193045-294f36e80261/go.mod h1:KMw//femth6oNhcWeCrh4Er45VNPkNac87cTK6er/dA= -github.com/prometheus/sigv4 v0.2.0 h1:qDFKnHYFswJxdzGeRP63c4HlH3Vbn1Yf/Ao2zabtVXk= -github.com/prometheus/sigv4 v0.2.0/go.mod h1:D04rqmAaPPEUkjRQxGqjoxdyJuyCh6E0M18fZr0zBiE= +github.com/prometheus/prometheus v0.308.0 h1:kVh/5m1n6m4cSK9HYTDEbMxzuzCWyEdPdKSxFRxXj04= +github.com/prometheus/prometheus v0.308.0/go.mod h1:xXYKzScyqyFHihpS0UsXpC2F3RA/CygOs7wb4mpdusE= +github.com/prometheus/sigv4 v0.3.0 h1:QIG7nTbu0JTnNidGI1Uwl5AGVIChWUACxn2B/BQ1kms= +github.com/prometheus/sigv4 v0.3.0/go.mod h1:fKtFYDus2M43CWKMNtGvFNHGXnAJJEGZbiYCmVp/F8I= github.com/puzpuzpuz/xsync/v3 v3.5.1 h1:GJYJZwO6IdxN/IKbneznS6yPkVC+c3zyY/j19c++5Fg= github.com/puzpuzpuz/xsync/v3 v3.5.1/go.mod h1:VjzYrABPabuM4KyBh1Ftq6u8nhwY5tBPKP9jpmh0nnA= -github.com/redis/go-redis/v9 v9.8.0 h1:q3nRvjrlge/6UD7eTu/DSg2uYiU2mCL0G/uzBWqhicI= -github.com/redis/go-redis/v9 v9.8.0/go.mod h1:huWgSWd8mW6+m0VPhJjSSQ+d6Nh1VICQ6Q5lHuCH/Iw= -github.com/rogpeppe/go-internal v1.13.1 h1:KvO1DLK/DRN07sQ1LQKScxyZJuNnedQ5/wKSR38lUII= -github.com/rogpeppe/go-internal v1.13.1/go.mod h1:uMEvuHeurkdAXX61udpOXGD/AzZDWNMNyH2VO9fmH0o= +github.com/rogpeppe/go-internal v1.14.1 h1:UQB4HGPB6osV0SQTLymcB4TgvyWu6ZyliaW0tI/otEQ= +github.com/rogpeppe/go-internal v1.14.1/go.mod h1:MaRKkUm5W0goXpeCfT7UZI6fk/L7L7so1lCWt35ZSgc= github.com/rs/cors v1.11.1 h1:eU3gRzXLRK57F5rKMGMZURNdIG4EoAmX8k94r9wXWHA= github.com/rs/cors v1.11.1/go.mod h1:XyqrcTp5zjWr1wsJ8PIRZssZ8b/WMcMf71DJnit4EMU= github.com/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.33 h1:KhF0WejiUTDbL5X55nXowP7zNopwpowa6qaMAWyIE+0= -github.com/scaleway/scaleway-sdk-go v1.0.0-beta.33/go.mod h1:792k1RTU+5JeMXm35/e2Wgp71qPH/DmDoZrRc+EFZDk= +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/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/shirou/gopsutil/v4 v4.25.8 h1:NnAsw9lN7587WHxjJA9ryDnqhJpFH6A+wagYWTOH970= -github.com/shirou/gopsutil/v4 v4.25.8/go.mod h1:q9QdMmfAOVIw7a+eF86P7ISEU6ka+NLgkUxlopV4RwI= -github.com/shoenig/test v1.7.1 h1:UJcjSAI3aUKx52kfcfhblgyhZceouhvvs3OYdWgn+PY= -github.com/shoenig/test v1.7.1/go.mod h1:UxJ6u/x2v/TNs/LoLxBNJRV9DiwBBKYxXSyczsBHFoI= +github.com/shirou/gopsutil/v4 v4.25.11 h1:X53gB7muL9Gnwwo2evPSE+SfOrltMoR6V3xJAXZILTY= +github.com/shirou/gopsutil/v4 v4.25.11/go.mod h1:EivAfP5x2EhLp2ovdpKSozecVXn1TmuG7SMzs/Wh4PU= +github.com/shoenig/test v1.12.2 h1:ZVT8NeIUwGWpZcKaepPmFMoNQ3sVpxvqUh/MAqwFiJI= +github.com/shoenig/test v1.12.2/go.mod h1:UxJ6u/x2v/TNs/LoLxBNJRV9DiwBBKYxXSyczsBHFoI= github.com/shurcooL/httpfs v0.0.0-20230704072500-f1e31cf0ba5c h1:aqg5Vm5dwtvL+YgDpBcK1ITf3o96N/K7/wsRXQnUTEs= github.com/shurcooL/httpfs v0.0.0-20230704072500-f1e31cf0ba5c/go.mod h1:owqhoLW1qZoYLZzLnBw+QkPP9WZnjlSWihhxAJC1+/M= github.com/sirupsen/logrus v1.2.0/go.mod h1:LxeOpSwHxABJmUn/MG1IvRgCAasNZTLOkJPxbbu5VWo= github.com/sirupsen/logrus v1.4.2/go.mod h1:tLMulIdttU9McNUspp0xgXVQah82FyeX6MwdIuYE2rE= github.com/sirupsen/logrus v1.9.3 h1:dueUQJ1C2q9oE3F7wvmSGAaVtTmUizReu6fjN8uqzbQ= github.com/sirupsen/logrus v1.9.3/go.mod h1:naHLuLoDiP4jHNo9R0sCBMtWGeIprob74mVsIT4qYEQ= -github.com/spf13/cobra v1.10.1 h1:lJeBwCfmrnXthfAupyUTzJ/J4Nc1RsHC/mSRU2dll/s= -github.com/spf13/cobra v1.10.1/go.mod h1:7SmJGaTHFVBY0jW4NXGluQoLvhqFQM+6XSKD+P4XaB0= +github.com/spf13/cobra v1.10.2 h1:DMTTonx5m65Ic0GOoRY2c16WCbHxOOw6xxezuLaBpcU= +github.com/spf13/cobra v1.10.2/go.mod h1:7C1pvHqHw5A4vrJfjNwvOdzYu0Gml16OCs2GRiTUUS4= github.com/spf13/pflag v1.0.9 h1:9exaQaMOCwffKiiiYk6/BndUBv+iRViNW+4lEMi0PvY= github.com/spf13/pflag v1.0.9/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg= -github.com/stackitcloud/stackit-sdk-go/core v0.17.2 h1:jPyn+i8rkp2hM80+hOg0B/1EVRbMt778Tr5RWyK1m2E= -github.com/stackitcloud/stackit-sdk-go/core v0.17.2/go.mod h1:8KIw3czdNJ9sdil9QQimxjR6vHjeINFrRv0iZ67wfn0= +github.com/stackitcloud/stackit-sdk-go/core v0.17.3 h1:GsZGmRRc/3GJLmCUnsZswirr5wfLRrwavbnL/renOqg= +github.com/stackitcloud/stackit-sdk-go/core v0.17.3/go.mod h1:HBCXJGPgdRulplDzhrmwC+Dak9B/x0nzNtmOpu+1Ahg= 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= @@ -544,8 +538,8 @@ github.com/stretchr/testify v1.8.4/go.mod h1:sz/lmYIOXD/1dqDmKjjqLyZ2RngseejIcXl github.com/stretchr/testify v1.9.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/testcontainers/testcontainers-go v0.38.0 h1:d7uEapLcv2P8AvH8ahLqDMMxda2W9gQN1nRbHS28HBw= -github.com/testcontainers/testcontainers-go v0.38.0/go.mod h1:C52c9MoHpWO+C4aqmgSU+hxlR5jlEayWtgYrb8Pzz1w= +github.com/testcontainers/testcontainers-go v0.40.0 h1:pSdJYLOVgLE8YdUY2FHQ1Fxu+aMnb6JfVz1mxk7OeMU= +github.com/testcontainers/testcontainers-go v0.40.0/go.mod h1:FSXV5KQtX2HAMlm7U3APNyLkkap35zNLxukw9oBi/MY= github.com/tidwall/gjson v1.10.2 h1:APbLGOM0rrEkd8WBw9C24nllro4ajFuJu0Sc9hRz8Bo= github.com/tidwall/gjson v1.10.2/go.mod h1:/wbyibRr2FHMks5tjHJ5F8dMZh3AcwJEMf5vlfC0lxk= github.com/tidwall/match v1.1.1 h1:+Ho715JplO36QYgwN9PGYNhgZvoUSc9X2c80KVTi+GA= @@ -556,10 +550,10 @@ github.com/tidwall/tinylru v1.1.0 h1:XY6IUfzVTU9rpwdhKUF6nQdChgCdGjkMfLzbWyiau6I github.com/tidwall/tinylru v1.1.0/go.mod h1:3+bX+TJ2baOLMWTnlyNWHh4QMnFyARg2TLTQ6OFbzw8= github.com/tidwall/wal v1.2.1 h1:xQvwnRF3e+xBC4NvFvl1mPGJHU0aH5zNzlUKnKGIImA= github.com/tidwall/wal v1.2.1/go.mod h1:r6lR1j27W9EPalgHiB7zLJDYu3mzW5BQP5KrzBpYY/E= -github.com/tklauser/go-sysconf v0.3.15 h1:VE89k0criAymJ/Os65CSn1IXaol+1wrsFHEB8Ol49K4= -github.com/tklauser/go-sysconf v0.3.15/go.mod h1:Dmjwr6tYFIseJw7a3dRLJfsHAMXZ3nEnL/aZY+0IuI4= -github.com/tklauser/numcpus v0.10.0 h1:18njr6LDBk1zuna922MgdjQuJFjrdppsZG60sHGfjso= -github.com/tklauser/numcpus v0.10.0/go.mod h1:BiTKazU708GQTYF4mB+cmlpT2Is1gLk7XVuEeem8LsQ= +github.com/tklauser/go-sysconf v0.3.16 h1:frioLaCQSsF5Cy1jgRBrzr6t502KIIwQ0MArYICU0nA= +github.com/tklauser/go-sysconf v0.3.16/go.mod h1:/qNL9xxDhc7tx3HSRsLWNnuzbVfh3e7gh/BmM179nYI= +github.com/tklauser/numcpus v0.11.0 h1:nSTwhKH5e1dMNsCdVBukSZrURJRoHbSEQjdEbY+9RXw= +github.com/tklauser/numcpus v0.11.0/go.mod h1:z+LwcLq54uWZTX0u/bGobaV34u6V7KNlTZejzM6/3MQ= github.com/tv42/httpunix v0.0.0-20150427012821-b75d8614f926/go.mod h1:9ESjWnEqriFuLhtthL60Sar/7RFoluCcXsuvEwTV5KM= 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= @@ -569,200 +563,198 @@ github.com/yuin/goldmark v1.1.27/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9de github.com/yuin/goldmark v1.2.1/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= github.com/yusufpapurcu/wmi v1.2.4 h1:zFUKzehAFReQwLys1b/iSMl+JQGSCSjtVqQn9bBrPo0= github.com/yusufpapurcu/wmi v1.2.4/go.mod h1:SBZ9tNy3G9/m5Oi98Zks0QjeHVDvuK0qfxQmPyzfmi0= -go.mongodb.org/mongo-driver v1.14.0 h1:P98w8egYRjYe3XDjxhYJagTokP/H6HzlsnojRgZRd80= -go.mongodb.org/mongo-driver v1.14.0/go.mod h1:Vzb0Mk/pa7e6cWw85R4F/endUC3u0U9jGcNU603k65c= -go.opentelemetry.io/auto/sdk v1.1.0 h1:cH53jehLUN6UFLY71z+NDOiNJqDdPRaXzTel0sJySYA= -go.opentelemetry.io/auto/sdk v1.1.0/go.mod h1:3wSPjt5PWp2RhlCcmmOial7AvC4DQqZb7a7wCow3W8A= -go.opentelemetry.io/collector v0.136.0 h1:fEXsiNTa7itOD2SCspqBep6fnULa7mglLlNyhSizqok= -go.opentelemetry.io/collector v0.136.0/go.mod h1:m7YjwJ3xAzGIWa+vyHOE48R6pTKgh90vnlXjFhoB5+A= -go.opentelemetry.io/collector/client v1.42.0 h1:oBEWwd0ZgC9OLlIKZX7vo8PLXuUFoXuy3k0CuzLiKcM= -go.opentelemetry.io/collector/client v1.42.0/go.mod h1:GbBP2Ztn1xeeaAX6hIus0NOH/J0HcRgHP7SU8VDxwP0= -go.opentelemetry.io/collector/component v1.42.0 h1:on4XJ/NT1oPnuCVKDEtlpcr3GGPAS9taWBe8woHSTmY= -go.opentelemetry.io/collector/component v1.42.0/go.mod h1:mehIbkABLhEEs3kmAqer2GRmLwcQLoeF7C48CR6lxP0= -go.opentelemetry.io/collector/component/componentstatus v0.136.0 h1:MOD0t//ZYi23kIpjUm3Cqbp48xoNXPgFL8JBXp/kKaY= -go.opentelemetry.io/collector/component/componentstatus v0.136.0/go.mod h1:rwy++UVZJmymzltlvdYZptTvfxqLC4Vn9jMcM9X8U1c= -go.opentelemetry.io/collector/component/componenttest v0.136.0 h1:24U54okKfUl7tSApQ+84joz8KXgZicWgH+O7UB4fgNI= -go.opentelemetry.io/collector/component/componenttest v0.136.0/go.mod h1:diUZ4BjPMz0PJ/ur5BO9jSBWd8qebvOWMxVrEAoT6dQ= -go.opentelemetry.io/collector/config/configauth v0.136.0 h1:Xpi7zmpvidot/RRAcWN+8xkx87947+Ec1xMDGOLd+l4= -go.opentelemetry.io/collector/config/configauth v0.136.0/go.mod h1:WzZxFZqlc7pxbQxeto+kkV2zXFiEm5NA14fkjDp5kKU= -go.opentelemetry.io/collector/config/configcompression v1.42.0 h1:vznptUF452U526FHHp/fhGL9KgFCLb3sZ+iq4PXQYII= -go.opentelemetry.io/collector/config/configcompression v1.42.0/go.mod h1:ZlnKaXFYL3HVMUNWVAo/YOLYoxNZo7h8SrQp3l7GV00= -go.opentelemetry.io/collector/config/confighttp v0.136.0 h1:7wnmvlm4mZOnF4LD9Q0FIU35EW2z0KB94HRBqM0S0Xw= -go.opentelemetry.io/collector/config/confighttp v0.136.0/go.mod h1:F6zKdR0MagtYZ8NBJOgw9VqPbY+BwkWmO9UYE5mODGU= -go.opentelemetry.io/collector/config/configmiddleware v1.42.0 h1:11LMjkIPnNirc5okrcjO8CEbJ+2Xo7WM/CJqv6J97+M= -go.opentelemetry.io/collector/config/configmiddleware v1.42.0/go.mod h1:v45dyG4WvLxC0Yfw80NvjSFzngTUJdH9zzZOTAXenjg= -go.opentelemetry.io/collector/config/configopaque v1.42.0 h1:AffFfB6FMKrgvgeSHCsOo+Q1cR4I2kqM3nRwEr/iHyk= -go.opentelemetry.io/collector/config/configopaque v1.42.0/go.mod h1:9uzLyGsWX0FtPWkomQXqLtblmSHgJFaM4T0gMBrCma0= -go.opentelemetry.io/collector/config/configoptional v0.136.0 h1:DwrduTAWbPwOW/k4GPcYUFB7DLruLvs+Zg2/RAHJ2DI= -go.opentelemetry.io/collector/config/configoptional v0.136.0/go.mod h1:hFcVjh2DqKIVMA9mbb2ctSW8d0SRN2UrNim33WxZM4o= -go.opentelemetry.io/collector/config/configretry v1.42.0 h1:iCm6gr8V7+J1ZI6fiHHeDqMzvFvJ9xKMlZt5DC2M5Vw= -go.opentelemetry.io/collector/config/configretry v1.42.0/go.mod h1:ZSTYqAJCq4qf+/4DGoIxCElDIl5yHt8XxEbcnpWBbMM= -go.opentelemetry.io/collector/config/configtelemetry v0.136.0 h1:d5So8zVG6gRl7I3v2Trvk9kPkzSO6kubrcEUZ+wrasw= -go.opentelemetry.io/collector/config/configtelemetry v0.136.0/go.mod h1:Xjw2+DpNLjYtx596EHSWBy0dNQRiJ2H+BlWU907lO40= -go.opentelemetry.io/collector/config/configtls v1.42.0 h1:gACpOXSmxBeo+M8qjSxt7AU04B0qWzjqg2ZLvMA8Sdo= -go.opentelemetry.io/collector/config/configtls v1.42.0/go.mod h1:SJNnptQLBW+nO4CgTtNI1di8nAHNOIl2gclu9GsmK8g= -go.opentelemetry.io/collector/confmap v1.42.0 h1:Hdeqq1RkGBBWbmDpa96aC5LchklzUzCu4aSRRoPicng= -go.opentelemetry.io/collector/confmap v1.42.0/go.mod h1:KW/l4uXBGnl5OM8WYi3gTg6PeG+y24nlIMS71KwWQjk= -go.opentelemetry.io/collector/confmap/provider/fileprovider v1.42.0 h1:BGejutI9811qBuzlV9jUI0vOLLR/6P/yprn4HqrQkh4= -go.opentelemetry.io/collector/confmap/provider/fileprovider v1.42.0/go.mod h1:tT2TNx//LDPh5vxKg07kW07n5lPRJmbKkT3oISTdBa4= -go.opentelemetry.io/collector/confmap/provider/yamlprovider v1.42.0 h1:M0Vo2jp1LJrtudwGO4jdhNGKnRxh3D0NsJV/pY6Nnwk= -go.opentelemetry.io/collector/confmap/provider/yamlprovider v1.42.0/go.mod h1:SJLJgZ7Q21O+MXOQnoNhliEjmk1Wr3DDRf3MTeB3Dlk= -go.opentelemetry.io/collector/confmap/xconfmap v0.136.0 h1:eC14gN+NL5HxmOmN9Aa4SkAnJhmUgmYP5cgEjCdz0sw= -go.opentelemetry.io/collector/confmap/xconfmap v0.136.0/go.mod h1:bDvQo42iyxLGR/Nl4eKP//F/jpDcD52JCb7uLGKA3lc= -go.opentelemetry.io/collector/connector v0.136.0 h1:q697P3BcHJcuqT+GE/Am5bqXGpAvCTf5gSlLL2HZ2iM= -go.opentelemetry.io/collector/connector v0.136.0/go.mod h1:zCKUihQzRDkAkszDPXg9RqTc/NcpRNGBbILySFaZ6zA= -go.opentelemetry.io/collector/connector/connectortest v0.136.0 h1:NQgEvJvAJKcswQ/5GQmo57gVgJQqYFvvLpYEpFCptaE= -go.opentelemetry.io/collector/connector/connectortest v0.136.0/go.mod h1:kBPRa9qDsuH7MGvgBwWxV4mLP7yG4fnLwxdBG2jigAA= -go.opentelemetry.io/collector/connector/xconnector v0.136.0 h1:7kEvmi1pARTHqGsBkmoi/IpG5xpAU7PMKDaWfLF18ps= -go.opentelemetry.io/collector/connector/xconnector v0.136.0/go.mod h1:+adB64pX2hOcDxgYmFN6gN6B5oLwKgnczzCqffrSiaE= -go.opentelemetry.io/collector/consumer v1.42.0 h1:RhdoAXrLODs4cnh1m/ihWfHTyWzGO1jL0X+E7wETzUE= -go.opentelemetry.io/collector/consumer v1.42.0/go.mod h1:jKcMYx9LXWMK4dupP2NhiAuHK063JiVMlyAC+ZMqlD0= -go.opentelemetry.io/collector/consumer/consumererror v0.136.0 h1:lYnTR/fJ8gBfVZ813sKPWXmj9a8+TajhrHBfqKwrWvQ= -go.opentelemetry.io/collector/consumer/consumererror v0.136.0/go.mod h1:DIivxQ3sy3mDZLaEcXdwZvEFLILpcyHxRiqEaPkHRFU= -go.opentelemetry.io/collector/consumer/consumertest v0.136.0 h1:zzO47GjzIg2X3uVW+lwtqS6S0vRm5qMx5O4zmQznCME= -go.opentelemetry.io/collector/consumer/consumertest v0.136.0/go.mod h1:gTdRvUiJSmzmWp2Ndlh0N0yQ3hPnmTYul2DWuy31/D0= -go.opentelemetry.io/collector/consumer/xconsumer v0.136.0 h1:7GczvR8x75lTyP9M+oWHQyGRDIRJ+QjY7IiJkucgOo4= -go.opentelemetry.io/collector/consumer/xconsumer v0.136.0/go.mod h1:sXw0lOF6D1iKhLy2xorJ8D3PysDXT0egmHJZu8TY0lE= -go.opentelemetry.io/collector/exporter v1.42.0 h1:YMWMSAfaMu3lgy+lgaJDszdAOsg0lRh4EvIyA974Uuw= -go.opentelemetry.io/collector/exporter v1.42.0/go.mod h1:is8qnDQ1NLFMGNagY986ASIJJRIeHJZ+d1hDdOY6u1w= -go.opentelemetry.io/collector/exporter/exporterhelper v0.136.0 h1:fJuA2u4Ls5+OWqcrXYSC6m8hpC4fFDI8kwNjYn4O34w= -go.opentelemetry.io/collector/exporter/exporterhelper v0.136.0/go.mod h1:1F2UKZ68AQaWkjxlk6rtQ/oehL83O2AoDEex9+lEasg= -go.opentelemetry.io/collector/exporter/exportertest v0.136.0 h1:VIXgWzwok1bfQtAryfAZa5yEomzKEbhobjiHgKWuPmw= -go.opentelemetry.io/collector/exporter/exportertest v0.136.0/go.mod h1:aZkv1l+97E/onJ1rnlMzO/PEDFDfVtgIFvNJB0/EmXI= -go.opentelemetry.io/collector/exporter/xexporter v0.136.0 h1:7ELBwU8sSnUMAWr+jQHDNM0+o878BTk++DiW0KA7Dr4= -go.opentelemetry.io/collector/exporter/xexporter v0.136.0/go.mod h1:W4e+GmyokpCt6+d5pvCA17b7oU1fm968t5fDwW4zQv0= -go.opentelemetry.io/collector/extension v1.42.0 h1:+9pK5AGHyV3LpWcF8ez45O/6QwOnxXBRS06a7hokLVg= -go.opentelemetry.io/collector/extension v1.42.0/go.mod h1:mS3Ucj0UQw4Qy9KmXtTkdQTQxan+LbGeH4stPuTYofU= -go.opentelemetry.io/collector/extension/extensionauth v1.42.0 h1:Re0wxZOplHtdV8YaypVaktHYPiaWPwVDt+hrBFXHEoI= -go.opentelemetry.io/collector/extension/extensionauth v1.42.0/go.mod h1:m8A4ZoWKvE91c5fF7HFvnZvwxbXtPJiNSoreGYoXt6A= -go.opentelemetry.io/collector/extension/extensionauth/extensionauthtest v0.136.0 h1:yx0474FuJHinlSbAXU/IZov6TXc5LPSGRPsQRiMGRG4= -go.opentelemetry.io/collector/extension/extensionauth/extensionauthtest v0.136.0/go.mod h1:etBi3U/UCSa9x5Lao6CRcj7CmuULJbkxqXUoaSDeLOA= -go.opentelemetry.io/collector/extension/extensioncapabilities v0.136.0 h1:hFqIp1TiXdIDlGJRMlV+Xm4GwTxRO6Wmaxe/uYH6U7E= -go.opentelemetry.io/collector/extension/extensioncapabilities v0.136.0/go.mod h1:cwa7CHOF39Oqq5SFiYOs1bsjgKmDUFzYysfQ45RPT88= -go.opentelemetry.io/collector/extension/extensionmiddleware v0.136.0 h1:H+c3QyaN5tL3VmX3rSbV9Che5cpokLThJxZmJXed6cE= -go.opentelemetry.io/collector/extension/extensionmiddleware v0.136.0/go.mod h1:Vxtt+KlwwO4mpPEFyUMb/92BlMqOZc4Jk8RNjM99vcU= -go.opentelemetry.io/collector/extension/extensionmiddleware/extensionmiddlewaretest v0.136.0 h1:0Mqxievpq+Lu7nd7/Y7LSW30cgTYyJIpOg48+0XTRcI= -go.opentelemetry.io/collector/extension/extensionmiddleware/extensionmiddlewaretest v0.136.0/go.mod h1:Rd+mz0JkBudg+RYZuETiJpx4aByF5CyV+15mBf+1SJA= -go.opentelemetry.io/collector/extension/extensiontest v0.136.0 h1:BkL2AC38Xa/WU71YfEKdjYGl/pjALmJDtHZIm5gzEzk= -go.opentelemetry.io/collector/extension/extensiontest v0.136.0/go.mod h1:XxRKblTb56a6zkrb8i9qowl7mY9ebW2NnOvCIXgxjZM= -go.opentelemetry.io/collector/extension/xextension v0.136.0 h1:Ykw3UUAKugGDLTz+Secowj6pL9Mg6H/V+pezeQKhTJY= -go.opentelemetry.io/collector/extension/xextension v0.136.0/go.mod h1:BLED8xk0WmkZ0bfjl/WwQ7jk4cJnnrHlo3MHsdhtr/U= -go.opentelemetry.io/collector/extension/zpagesextension v0.136.0 h1:acfmAXEGmvLlM2N6KtieLVKXBvJ/dmkOfOFDftZFFXg= -go.opentelemetry.io/collector/extension/zpagesextension v0.136.0/go.mod h1:fXFm8bNm6QegoFjFk3QINvSXUDyBSy/3r/mv366xQ5A= -go.opentelemetry.io/collector/featuregate v1.42.0 h1:uCVwumVBVex46DsG/fvgiTGuf9f53bALra7vGyKaqFI= -go.opentelemetry.io/collector/featuregate v1.42.0/go.mod h1:d0tiRzVYrytB6LkcYgz2ESFTv7OktRPQe0QEQcPt1L4= -go.opentelemetry.io/collector/internal/fanoutconsumer v0.136.0 h1:GxjQ+9q6M7PwE3QnA3VVBLt5aHVnk4z7wQLo+J+0tho= -go.opentelemetry.io/collector/internal/fanoutconsumer v0.136.0/go.mod h1:DOvL5ZalQk/zmYBjKZok52dXIxUOK0JoOoQfm5qjbhM= -go.opentelemetry.io/collector/internal/telemetry v0.136.0 h1:3TcnxyUFs6jJZeLo5ju3fMWS4lRmIApl9To2XWk922M= -go.opentelemetry.io/collector/internal/telemetry v0.136.0/go.mod h1:dTykH9zv/zOnlyUvqfGIqpaQZhmayW7NssD7TPU4paE= -go.opentelemetry.io/collector/otelcol v0.136.0 h1:1QpVMUxPmrJ2HmrKFPXWEfQYALEC1kDmHp2YtzqjlPE= -go.opentelemetry.io/collector/otelcol v0.136.0/go.mod h1:TscxAyGfBSss2Rre6NMvJX6q6CU9kzaucSBOf5f+QKY= -go.opentelemetry.io/collector/pdata v1.42.0 h1:XEzisp/SNfKDcY4aRU6qrHeLzGypRUdYHjbBqkDFOO4= -go.opentelemetry.io/collector/pdata v1.42.0/go.mod h1:nnOmgf+RI/D5xYWgFPZ5nKuhf2E0Qy9Nx/mxoTvIq3k= -go.opentelemetry.io/collector/pdata/pprofile v0.136.0 h1:ysyWnVnEzAwUH+MAhEuu7X0y/YnTtjEY1gC7aj05QzA= -go.opentelemetry.io/collector/pdata/pprofile v0.136.0/go.mod h1:vAvrFj+xpwlSH85QFYGKYQ4xc0Lym5pWNRh1hMUH3TY= -go.opentelemetry.io/collector/pdata/testdata v0.136.0 h1:amivoDBK7ALqhwwCkSOYqfT95t1+o/TS6MHycseNs80= -go.opentelemetry.io/collector/pdata/testdata v0.136.0/go.mod h1:KlNRkMO7MZdbGjNJGFS0+yc2gpuraJg6F6gkuqaqA8Y= -go.opentelemetry.io/collector/pdata/xpdata v0.136.0 h1:KAYBx6+aS5rYUlwJ85QM9pxHq0VdftC9lTyXIzv1oM4= -go.opentelemetry.io/collector/pdata/xpdata v0.136.0/go.mod h1:bSnwXzg3wKjaKc8FgMZ23OmcodD6eDNyntUZdtlxPeU= -go.opentelemetry.io/collector/pipeline v1.42.0 h1:jqn1lPwUdCn+lsyNubCtwzXZLEm+R3kRWxLpDkhlvvs= -go.opentelemetry.io/collector/pipeline v1.42.0/go.mod h1:xUrAqiebzYbrgxyoXSkk6/Y3oi5Sy3im2iCA51LwUAI= -go.opentelemetry.io/collector/pipeline/xpipeline v0.136.0 h1:dvzL/yfXUjBxcCqtl4ifvQqi5cIeYAmFdZz1OPE2gXA= -go.opentelemetry.io/collector/pipeline/xpipeline v0.136.0/go.mod h1:0trVl/7QYhPyIohE+n+hL0F0DdiceghKPG2olvZqipc= -go.opentelemetry.io/collector/processor v1.42.0 h1:JVMaRA8QkiOJHAswCVAugMaFhDbNedat2XRKjlsNv2A= -go.opentelemetry.io/collector/processor v1.42.0/go.mod h1:O9uYN7VeC4gnD2qsaXaM50rvO8tt2zJS/9bnzucJ+N8= -go.opentelemetry.io/collector/processor/batchprocessor v0.136.0 h1:8IIzCdjD7WyLb1Rbg6t/UPXMJl8rdSbdvkP+fYvY4FE= -go.opentelemetry.io/collector/processor/batchprocessor v0.136.0/go.mod h1:te1bnTdwdQNYxHBHJJSZMAWLWyX+ZB0JKO43zKc6bck= -go.opentelemetry.io/collector/processor/processortest v0.136.0 h1:lQC435oZdDmLnSczmQ7Cdoca+y7SBpLQ0m/fVsd8pJY= -go.opentelemetry.io/collector/processor/processortest v0.136.0/go.mod h1:uWH1oXGiCzvnWuLyvzyqm8a/g6dGyfJWgAj2yEhhrWg= -go.opentelemetry.io/collector/processor/xprocessor v0.136.0 h1:/Ee8JT9pM3moxPDM18NbNYQzVzzg+80ewTOFyVUmOd0= -go.opentelemetry.io/collector/processor/xprocessor v0.136.0/go.mod h1:RtmNJHS/MS6XO7gBdjiDWep1TN1vMlrcH5qQr1MOWxM= -go.opentelemetry.io/collector/receiver v1.42.0 h1:wdR3SShnOUj6PQFNOHJl8amKDaMrY6gnnU7oh7z61rQ= -go.opentelemetry.io/collector/receiver v1.42.0/go.mod h1:ts8UqHPKm+fP3/nsPrLizbUClqpL8JO3HM5Rd9UQEWA= -go.opentelemetry.io/collector/receiver/receiverhelper v0.136.0 h1:Le0/Ow1GIvRRo4XwDjf/xERzWJf1JkoJEUjqHVPIXr8= -go.opentelemetry.io/collector/receiver/receiverhelper v0.136.0/go.mod h1:N8MEtYYYJncGC9PQ+YdRN7WkHpYNTh3MAxPLVLf7cn8= -go.opentelemetry.io/collector/receiver/receivertest v0.136.0 h1:xPhvg2K72Iy+bqzMwz+q4CmudYKy/Vq+dS1x2ETojP0= -go.opentelemetry.io/collector/receiver/receivertest v0.136.0/go.mod h1:DgPO43LjdtRXJ7BnXU2gGKak74cvGOie9qSdb7D/UWg= -go.opentelemetry.io/collector/receiver/xreceiver v0.136.0 h1:eb2DLzWewhJMJU34mgmL8WxgoYim44+Ry6/AMrjfY8E= -go.opentelemetry.io/collector/receiver/xreceiver v0.136.0/go.mod h1:k/j2K4krExMopkkOBFyPyDSgkrnQSN1fXHqLCvh8O5g= +go.mongodb.org/mongo-driver v1.17.4 h1:jUorfmVzljjr0FLzYQsGP8cgN/qzzxlY9Vh0C9KFXVw= +go.mongodb.org/mongo-driver v1.17.4/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.48.0 h1:/ycTq3gsP5NJ5ymDDkEWhem2z+7rH7cUMzifRGal6uQ= +go.opentelemetry.io/collector/client v1.48.0/go.mod h1:ySz+QB/uo8zWI3lGVKOfLqyPP/NZj6oB+j0EjIPsF14= +go.opentelemetry.io/collector/component v1.48.0 h1:0hZKOvT6fIlXoE+6t40UXbXOH7r/h9jyE3eIt0W19Qg= +go.opentelemetry.io/collector/component v1.48.0/go.mod h1:Kmc9Z2CT53M2oRRf+WXHUHHgjCC+ADbiqfPO5mgZe3g= +go.opentelemetry.io/collector/component/componentstatus v0.142.0 h1:a1KkLCtShI5SfhO2ga75VqWjjBRGgrerelt/2JXWLBI= +go.opentelemetry.io/collector/component/componentstatus v0.142.0/go.mod h1:IRWKvFcUrFrkz1gJEV+cKAdE2ZBT128gk1sHt0OzKI4= +go.opentelemetry.io/collector/component/componenttest v0.142.0 h1:a8XclEutO5dv4AnzThHK8dfqR4lDWjJKLtRNM2aVUFM= +go.opentelemetry.io/collector/component/componenttest v0.142.0/go.mod h1:JhX/zKaEbjhFcsiV2ha2spzo24A6RL/jqNBS0svURD0= +go.opentelemetry.io/collector/config/configauth v1.48.0 h1:WYXQLzW7VeUXGOEKXkIVaBe02m01h3qiyIMULygz4o4= +go.opentelemetry.io/collector/config/configauth v1.48.0/go.mod h1:kewLALUSiJfa8Kr0/BkObqO/Wuu5PWLqozKuLrxq7Dc= +go.opentelemetry.io/collector/config/configcompression v1.48.0 h1:fsJCQ6NHsD6QOaa9dUlW9KzoPh505cXZApg7gTs8UQA= +go.opentelemetry.io/collector/config/configcompression v1.48.0/go.mod h1:ZlnKaXFYL3HVMUNWVAo/YOLYoxNZo7h8SrQp3l7GV00= +go.opentelemetry.io/collector/config/confighttp v0.142.0 h1:FastUGaVj1X2ThqYil2kMtnpPij4fps+Ic8gYH6U0Zw= +go.opentelemetry.io/collector/config/confighttp v0.142.0/go.mod h1:wNo/bNY8VDWfU1zXOHzCmb9JDH5UAlmtgkZMK2MjHo4= +go.opentelemetry.io/collector/config/configmiddleware v1.48.0 h1:8b4f8NOI2Mr2QaWHcYlVekac8eoKraogzqHI587eWAs= +go.opentelemetry.io/collector/config/configmiddleware v1.48.0/go.mod h1:pUiX9YcS0oWBLx+BbtmCk44bGeXV+6QY2ik8iTgdHuc= +go.opentelemetry.io/collector/config/configopaque v1.48.0 h1:ST/hdVf8RsIfuxSbfYi2PTYdrwQgC6+4HubX4yKpkXI= +go.opentelemetry.io/collector/config/configopaque v1.48.0/go.mod h1:QUbIsaQUTrfkx258rZcrvuBBx7JEA5aywnhRG2g1Zps= +go.opentelemetry.io/collector/config/configoptional v1.48.0 h1:BjqC8qjg5A8QNHpQE9XdRnnXHw0EpRG9wzIN3SKtxHs= +go.opentelemetry.io/collector/config/configoptional v1.48.0/go.mod h1:SrGxQQO3GABGHPvKG0eeSKNJKD2ECxewkFSTBVSoWlE= +go.opentelemetry.io/collector/config/configretry v1.48.0 h1:tH4fU4nWv3PTUDU82fhMCG0tt33p2/wCkjmQcznLpPU= +go.opentelemetry.io/collector/config/configretry v1.48.0/go.mod h1:ZSTYqAJCq4qf+/4DGoIxCElDIl5yHt8XxEbcnpWBbMM= +go.opentelemetry.io/collector/config/configtelemetry v0.142.0 h1:hidlUz9WXTYhrcS1O1RtN4o8WKtYDAELiTCP4P453EI= +go.opentelemetry.io/collector/config/configtelemetry v0.142.0/go.mod h1:Xjw2+DpNLjYtx596EHSWBy0dNQRiJ2H+BlWU907lO40= +go.opentelemetry.io/collector/config/configtls v1.48.0 h1:+099UpRcmp1H+Y+kekr/WYDfZw9yWBGRfD84xA0+J+g= +go.opentelemetry.io/collector/config/configtls v1.48.0/go.mod h1:qSbIUUcstn7Hsj//rBWdN4/sxurjl0970OcUQW2tBho= +go.opentelemetry.io/collector/confmap v1.48.0 h1:vGhg25NEUX5DiYziJEw2siwdzsvtXBRZVuYyLVinFR8= +go.opentelemetry.io/collector/confmap v1.48.0/go.mod h1:8tJHJowmvUkJ8AHzZ6SaH61dcWbdfRE9Sd/hwsKLgRE= +go.opentelemetry.io/collector/confmap/provider/fileprovider v1.48.0 h1:lGcgMXsucIvYbZCuW51lB/7cNQ2/ASk7KUa8noxV4QQ= +go.opentelemetry.io/collector/confmap/provider/fileprovider v1.48.0/go.mod h1:tRy+5rXYYHzDCDSpxdYHi3w35kY9n7y3rhPVn1uenAE= +go.opentelemetry.io/collector/confmap/xconfmap v0.142.0 h1:SNfuFP8TA0PmUkx6ryY63uNjLN2HMh5VeGO++IYdPgA= +go.opentelemetry.io/collector/confmap/xconfmap v0.142.0/go.mod h1:FXuX6B8b7Ub7qkLqloWKanmPhADL18EEkaFptcd4eDQ= +go.opentelemetry.io/collector/connector v0.142.0 h1:8IHsthuYBhOgdwdIsoc4X4/jyK2qcY/NmjH6w+iq0cw= +go.opentelemetry.io/collector/connector v0.142.0/go.mod h1:GHxeYzlWol0ZYJRtcSU5JGwdeahaUpmtF/hjE67gjoE= +go.opentelemetry.io/collector/connector/connectortest v0.142.0 h1:Cpvef+XP4wa8mWQVYzmYfc6iqcouS1hJE+TJ71yQEWk= +go.opentelemetry.io/collector/connector/connectortest v0.142.0/go.mod h1:pweTOYtLDKdxaLXNoejLYxn5HW32zAac3WWey2D8LTU= +go.opentelemetry.io/collector/connector/xconnector v0.142.0 h1:O0E9sDIN4A2ppydNzYNy9YjQ8L5C9y6anO6tgUpv8IA= +go.opentelemetry.io/collector/connector/xconnector v0.142.0/go.mod h1:j7xWw0WEJO7QSWW/v1RxD9Qn8RDyqKGvgDM8S3xM8y8= +go.opentelemetry.io/collector/consumer v1.48.0 h1:g1uroz2AA0cqnEsjqFTSZG+y8uH1gQBqqyzk8kd3QiM= +go.opentelemetry.io/collector/consumer v1.48.0/go.mod h1:lC6PnVXBwI456SV5WtvJqE7vjCNN6DAUc8xjFQ9wUV4= +go.opentelemetry.io/collector/consumer/consumererror v0.142.0 h1:2QnxUNL8ZQ42fz5uB1O1OKtfmVH/NcBYHIZ9gt/xqRE= +go.opentelemetry.io/collector/consumer/consumererror v0.142.0/go.mod h1:/nrPOD+za/pWOiL13QzyqHSUNpY8IrHKE6cXQIK2p7k= +go.opentelemetry.io/collector/consumer/consumertest v0.142.0 h1:TRt8zR57Vk1PTjtqjHOwOAMbIl+IeloHxWAuF8sWdRw= +go.opentelemetry.io/collector/consumer/consumertest v0.142.0/go.mod h1:yq2dhMxFUlCFkRN7LES3fzsTmUDw9VaunyRAka2TEaY= +go.opentelemetry.io/collector/consumer/xconsumer v0.142.0 h1:qOoQnLZXQ9sRLexTkkmBx3qfaOmEgco9VBPmryg5UhA= +go.opentelemetry.io/collector/consumer/xconsumer v0.142.0/go.mod h1:oPN0yJzEpovwlWvmSaiYgtDqGuOmMMLmmg352sqZdsE= +go.opentelemetry.io/collector/exporter v1.48.0 h1:2NQ4VlkGdPTO+tw2cFdjElKzivWAtXm2zOIEjoTyvno= +go.opentelemetry.io/collector/exporter v1.48.0/go.mod h1:AOcXxccg8g3R5khMm0DHLmKrr0pWOoGfr9uMbtOPJrg= +go.opentelemetry.io/collector/exporter/exporterhelper v0.142.0 h1:7v8drPONUqXv7tXEFiy5OD1av3ruMsJ+XD62OU/U21E= +go.opentelemetry.io/collector/exporter/exporterhelper v0.142.0/go.mod h1:8qsCgTqRzqIy0d9vFJPHqx14MkZZHTmHenlqxPepMyY= +go.opentelemetry.io/collector/exporter/exportertest v0.142.0 h1:Qy/vEkgIwrsajKlrCgt/NXV/aoof0dPhBJcvz39l03A= +go.opentelemetry.io/collector/exporter/exportertest v0.142.0/go.mod h1:HKitP6nu1DJDmic18t7HxhkBb3Is7nGnbSw4G1pLNNo= +go.opentelemetry.io/collector/exporter/xexporter v0.142.0 h1:AcToj72FFKtHvVaY43HYsPb0kI/cpsH+UHd16qd6kHk= +go.opentelemetry.io/collector/exporter/xexporter v0.142.0/go.mod h1:jRGzj6P1jfpCxEl0VC0KZZv0ylhy7naJjl7VgBdxJBU= +go.opentelemetry.io/collector/extension v1.48.0 h1:Q8Av/8Ap59eOzlX1fBSw5TcH5qzqtZOA1qlKbigIkt8= +go.opentelemetry.io/collector/extension v1.48.0/go.mod h1:mKPlW1m7W3s8aRgkZk6ocukkBc4FnIc6GmikteazFXs= +go.opentelemetry.io/collector/extension/extensionauth v1.48.0 h1:MU72qUj04g77Mjbp4H7XKBbwRM7L5gNwu1MDF2192Yo= +go.opentelemetry.io/collector/extension/extensionauth v1.48.0/go.mod h1:CtNVU6ivNIAcJoCL7GRxDGpuvSgWVpgmrRiGD7FQAyY= +go.opentelemetry.io/collector/extension/extensionauth/extensionauthtest v0.142.0 h1:IFQ7tIUd4rr+HG7OtRmAGqfLu7u+59Aq6owfQ8wlZto= +go.opentelemetry.io/collector/extension/extensionauth/extensionauthtest v0.142.0/go.mod h1:eOAU/g111TZ9K2A+QJAHnwfCtCtfR/Tlcl09sfB1/n4= +go.opentelemetry.io/collector/extension/extensioncapabilities v0.142.0 h1:a8CdWl6JI5zVrdT5O55193d75uGSPdG6mrlPOML9EJU= +go.opentelemetry.io/collector/extension/extensioncapabilities v0.142.0/go.mod h1:lJ2TAjbqCAy8FQfUPtm9f+rXCsxLOTQqq1q4G+7rZOw= +go.opentelemetry.io/collector/extension/extensionmiddleware v0.142.0 h1:/PlrYC8ITEKJnhRwij9nvWWehfT1TbDvrv7xqz5Y12E= +go.opentelemetry.io/collector/extension/extensionmiddleware v0.142.0/go.mod h1:rdpsumcbndkZ00eDBaLL4Q5PNWYBOXqt4YR9wtk2sH0= +go.opentelemetry.io/collector/extension/extensionmiddleware/extensionmiddlewaretest v0.142.0 h1:veAJV0RIIkNUz2t9LEV/ockN4+OfwerdwDuAMBz2FG8= +go.opentelemetry.io/collector/extension/extensionmiddleware/extensionmiddlewaretest v0.142.0/go.mod h1:6WPuxGTBY+YlpWXIw7qMcvRqRowj685VwaMqWaiME+g= +go.opentelemetry.io/collector/extension/extensiontest v0.142.0 h1:QfArQ1Pd2VpcYBljan/MLT1XUUMZmxmgTYA25R0ZILg= +go.opentelemetry.io/collector/extension/extensiontest v0.142.0/go.mod h1:en+IIu8wEHpKeZ5O7FjcG0/vWK+OfPYaLSLLJq3GXYY= +go.opentelemetry.io/collector/extension/xextension v0.142.0 h1:0h0nRM0XxCPFqsSJ/V9ZcwW3C3MznBVta+ROFyGOrIY= +go.opentelemetry.io/collector/extension/xextension v0.142.0/go.mod h1:FI1aksqUe6meQJD02jBLRWOFxJRVVZB/SlGY/VUV8bU= +go.opentelemetry.io/collector/extension/zpagesextension v0.142.0 h1:iDhkwn+vo8dE4kxivefZkojL/PdBRQhwPDcB23YNGzQ= +go.opentelemetry.io/collector/extension/zpagesextension v0.142.0/go.mod h1:B+PGlULxRejmP3ArfLQc+Eh7MXqSVG60sxrejqqSd4M= +go.opentelemetry.io/collector/featuregate v1.48.0 h1:jiGRcl93yzUFgZVDuskMAftFraE21jANdxXTQfSQScc= +go.opentelemetry.io/collector/featuregate v1.48.0/go.mod h1:/1bclXgP91pISaEeNulRxzzmzMTm4I5Xih2SnI4HRSo= +go.opentelemetry.io/collector/internal/fanoutconsumer v0.142.0 h1:eLGLhIj5UBg5wQfCUE8QUW2s34/z2OkHt00CT3ALunY= +go.opentelemetry.io/collector/internal/fanoutconsumer v0.142.0/go.mod h1:xCrK+o5Pzy5J7fytpEgtrPUMzZdgxv9z20p1no+Qs54= +go.opentelemetry.io/collector/internal/telemetry v0.142.0 h1:ALK9O2AYWuptSGSFzNW0BL6hFq7sf2lxwTrGQa45Nic= +go.opentelemetry.io/collector/internal/telemetry v0.142.0/go.mod h1:Nuf7neseGamZJQjpf8f6yk4qrvb0YrSnuSzh5u0GwbQ= +go.opentelemetry.io/collector/internal/testutil v0.142.0 h1:MHnAVRimQdsfYqYHC3YuJRkIUap4VmSpJkkIT2N7jJA= +go.opentelemetry.io/collector/internal/testutil v0.142.0/go.mod h1:YAD9EAkwh/l5asZNbEBEUCqEjoL1OKMjAMoPjPqH76c= +go.opentelemetry.io/collector/otelcol v0.142.0 h1:duJ0gjAL9tqclYqVDYnNuthcWzunJQ5nsPoea6EIEGI= +go.opentelemetry.io/collector/otelcol v0.142.0/go.mod h1:ZE2NblF9dAq/xKbMPeEcsBXkbfoQHyPe3m5nM7WDsO0= +go.opentelemetry.io/collector/pdata v1.48.0 h1:CKZ+9v/lGTX/cTGx2XVp8kp0E8R//60kHFCBdZudrTg= +go.opentelemetry.io/collector/pdata v1.48.0/go.mod h1:jaf2JQGpfUreD1TOtGBPsq00ecOqM66NG15wALmdxKA= +go.opentelemetry.io/collector/pdata/pprofile v0.142.0 h1:Ivyw7WY8SIIWqzXsnNmjEgz3ysVs/OkIf0KIpJUnuuo= +go.opentelemetry.io/collector/pdata/pprofile v0.142.0/go.mod h1:94GAph54K4WDpYz9xirhroHB3ptNLuPiY02k8fyoNUI= +go.opentelemetry.io/collector/pdata/testdata v0.142.0 h1:+jf9RyLWl8WyhIVjpg7yuH+bRdQH4mW20cPtCMlY1cI= +go.opentelemetry.io/collector/pdata/testdata v0.142.0/go.mod h1:kgAu5ZLEcVuPH3RFiHDg23RGitgm1M0cUAVwiGX4SB8= +go.opentelemetry.io/collector/pdata/xpdata v0.142.0 h1:xRpmhY12JnJ89E2kM2maOjG7C9QK6dSnTr03Ce8qfPA= +go.opentelemetry.io/collector/pdata/xpdata v0.142.0/go.mod h1:0e/FY0Stzxx4M2sqELIRrXzeoTsAwjVPKT9mQvL4hmc= +go.opentelemetry.io/collector/pipeline v1.48.0 h1:E4zyQ7+4FTGvdGS4pruUnItuyRTGhN0Qqk1CN71lfW0= +go.opentelemetry.io/collector/pipeline v1.48.0/go.mod h1:xUrAqiebzYbrgxyoXSkk6/Y3oi5Sy3im2iCA51LwUAI= +go.opentelemetry.io/collector/pipeline/xpipeline v0.142.0 h1:/Sj6qgwWUJtGmxiq6k1AqauxXjJYzRIJxQtUamAApPI= +go.opentelemetry.io/collector/pipeline/xpipeline v0.142.0/go.mod h1:wDQUlMZLs57CNTfmoxQgiw+mwoqj8ZUChmwI6Ck6KCs= +go.opentelemetry.io/collector/processor v1.48.0 h1:3Kttw79mnrf463QKJGoGZzFfiNzQuMWK0p2nHuvOhaQ= +go.opentelemetry.io/collector/processor v1.48.0/go.mod h1:A3OsW6ga+a48J1mrnVNH5L5kB0v+n9nVFlmOQB5/Jwk= +go.opentelemetry.io/collector/processor/batchprocessor v0.142.0 h1:7db0TbGwVaBQ2xNjr1JfTOGJiWEois5G0CwMkXo95D8= +go.opentelemetry.io/collector/processor/batchprocessor v0.142.0/go.mod h1:dKn4oFvzxO/LOIF8cmnkwA2VJ4Z6BHQKcmPyQ0iB8CY= +go.opentelemetry.io/collector/processor/processortest v0.142.0 h1:wQnJeXDejBL6r8ov66AYAGf8Q0/JspjuqAjPVBdCUoI= +go.opentelemetry.io/collector/processor/processortest v0.142.0/go.mod h1:QU5SWj0L+92MSvQxZDjwWCsKssNDm+nD6SHn7IvviUE= +go.opentelemetry.io/collector/processor/xprocessor v0.142.0 h1:7a1Crxrd5iBMVnebTxkcqxVkRHAlOBUUmNTUVUTnlCU= +go.opentelemetry.io/collector/processor/xprocessor v0.142.0/go.mod h1:LY/GS2DiJILJKS3ynU3eOLLWSP8CmN1FtdpAMsVV8AU= +go.opentelemetry.io/collector/receiver v1.48.0 h1:2xGdkrHE98WPxnmhevsEz3n66yWj0O/cO0AzbUgtN8A= +go.opentelemetry.io/collector/receiver v1.48.0/go.mod h1:fD0sfx2mTFlz5slMYao4zFcELz2g+FoF6ISF6elUIRk= +go.opentelemetry.io/collector/receiver/receiverhelper v0.142.0 h1:GfoWfdCyILpRq7vgBGra0qR1eOS8f52+QLBVMh658Gc= +go.opentelemetry.io/collector/receiver/receiverhelper v0.142.0/go.mod h1:yN7WC8y4HFA3FNQ6h1gKF+AkucJBivLw51Jo/4wFU/I= +go.opentelemetry.io/collector/receiver/receivertest v0.142.0 h1:g8o86xp8hi3Uq4gkxMWmGuxOtm8H0tSVP0G9KLEwqpE= +go.opentelemetry.io/collector/receiver/receivertest v0.142.0/go.mod h1:3y3gCAMiaLlXULJxHRxI9LeVF7rkAq5M2K1XGNiqDWY= +go.opentelemetry.io/collector/receiver/xreceiver v0.142.0 h1:hrKh3IqPcgQHfbdcphsT0Rf4W3rCLOI+DAGyYbk74Q8= +go.opentelemetry.io/collector/receiver/xreceiver v0.142.0/go.mod h1:8UWwgjW0ksDu29+oQEBSnSIstN263IhJbpwaEUiDuJw= go.opentelemetry.io/collector/semconv v0.128.1-0.20250610090210-188191247685 h1:XCN7qkZRNzRYfn6chsMZkbFZxoFcW6fZIsZs2aCzcbc= go.opentelemetry.io/collector/semconv v0.128.1-0.20250610090210-188191247685/go.mod h1:OPXer4l43X23cnjLXIZnRj/qQOjSuq4TgBLI76P9hns= -go.opentelemetry.io/collector/service v0.136.0 h1:NvGStX9kN1KrcKO1aJjB4LFLRCBcPERzhlOiOxrFcG4= -go.opentelemetry.io/collector/service v0.136.0/go.mod h1:xE6YQmPW5/5g4I/R3PTRBdaGr2Epc2NxkMAAEttJo1k= -go.opentelemetry.io/collector/service/hostcapabilities v0.136.0 h1:YxOwlA7mmKVQq/+vbOs37WpZ2yRZGkKmC0qKrPQwlCY= -go.opentelemetry.io/collector/service/hostcapabilities v0.136.0/go.mod h1:mONVgs/2Sw/h/fjqURBKGTB22B+7KXL9TSWNX/37LCA= -go.opentelemetry.io/contrib/bridges/otelzap v0.12.0 h1:FGre0nZh5BSw7G73VpT3xs38HchsfPsa2aZtMp0NPOs= -go.opentelemetry.io/contrib/bridges/otelzap v0.12.0/go.mod h1:X2PYPViI2wTPIMIOBjG17KNybTzsrATnvPJ02kkz7LM= -go.opentelemetry.io/contrib/instrumentation/net/http/httptrace/otelhttptrace v0.61.0 h1:lREC4C0ilyP4WibDhQ7Gg2ygAQFP8oR07Fst/5cafwI= -go.opentelemetry.io/contrib/instrumentation/net/http/httptrace/otelhttptrace v0.61.0/go.mod h1:HfvuU0kW9HewH14VCOLImqKvUgONodURG7Alj/IrnGI= -go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.63.0 h1:RbKq8BG0FI8OiXhBfcRtqqHcZcka+gU3cskNuf05R18= -go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.63.0/go.mod h1:h06DGIukJOevXaj/xrNjhi/2098RZzcLTbc0jDAUbsg= -go.opentelemetry.io/contrib/otelconf v0.16.0 h1:mTYGRlZtpc/zDaTaUQSnsZ1hyoRONaS4Od/Ny5++lhE= -go.opentelemetry.io/contrib/otelconf v0.16.0/go.mod h1:gnsljuyDyVDg39vUvXKj0BVCiVaokN3b8N5BL/ab8fQ= -go.opentelemetry.io/contrib/propagators/b3 v1.37.0 h1:0aGKdIuVhy5l4GClAjl72ntkZJhijf2wg1S7b5oLoYA= -go.opentelemetry.io/contrib/propagators/b3 v1.37.0/go.mod h1:nhyrxEJEOQdwR15zXrCKI6+cJK60PXAkJ/jRyfhr2mg= -go.opentelemetry.io/contrib/zpages v0.62.0 h1:9fUYTLmrK0x/lweM2uM+BOx069jLx8PxVqWhegGJ9Bo= -go.opentelemetry.io/contrib/zpages v0.62.0/go.mod h1:C8kXoiC1Ytvereztus2R+kqdSa6W/MZ8FfS8Zwj+LiM= -go.opentelemetry.io/otel v1.38.0 h1:RkfdswUDRimDg0m2Az18RKOsnI8UDzppJAtj01/Ymk8= -go.opentelemetry.io/otel v1.38.0/go.mod h1:zcmtmQ1+YmQM9wrNsTGV/q/uyusom3P8RxwExxkZhjM= -go.opentelemetry.io/otel/exporters/otlp/otlplog/otlploggrpc v0.13.0 h1:z6lNIajgEBVtQZHjfw2hAccPEBDs+nx58VemmXWa2ec= -go.opentelemetry.io/otel/exporters/otlp/otlplog/otlploggrpc v0.13.0/go.mod h1:+kyc3bRx/Qkq05P6OCu3mTEIOxYRYzoIg+JsUp5X+PM= -go.opentelemetry.io/otel/exporters/otlp/otlplog/otlploghttp v0.13.0 h1:zUfYw8cscHHLwaY8Xz3fiJu+R59xBnkgq2Zr1lwmK/0= -go.opentelemetry.io/otel/exporters/otlp/otlplog/otlploghttp v0.13.0/go.mod h1:514JLMCcFLQFS8cnTepOk6I09cKWJ5nGHBxHrMJ8Yfg= -go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetricgrpc v1.37.0 h1:zG8GlgXCJQd5BU98C0hZnBbElszTmUgCNCfYneaDL0A= -go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetricgrpc v1.37.0/go.mod h1:hOfBCz8kv/wuq73Mx2H2QnWokh/kHZxkh6SNF2bdKtw= -go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetrichttp v1.37.0 h1:9PgnL3QNlj10uGxExowIDIZu66aVBwWhXmbOp1pa6RA= -go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetrichttp v1.37.0/go.mod h1:0ineDcLELf6JmKfuo0wvvhAVMuxWFYvkTin2iV4ydPQ= -go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.37.0 h1:Ahq7pZmv87yiyn3jeFz/LekZmPLLdKejuO3NcK9MssM= -go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.37.0/go.mod h1:MJTqhM0im3mRLw1i8uGHnCvUEeS7VwRyxlLC78PA18M= -go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.37.0 h1:EtFWSnwW9hGObjkIdmlnWSydO+Qs8OwzfzXLUPg4xOc= -go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.37.0/go.mod h1:QjUEoiGCPkvFZ/MjK6ZZfNOS6mfVEVKYE99dFhuN2LI= -go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp v1.37.0 h1:bDMKF3RUSxshZ5OjOTi8rsHGaPKsAt76FaqgvIUySLc= -go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp v1.37.0/go.mod h1:dDT67G/IkA46Mr2l9Uj7HsQVwsjASyV9SjGofsiUZDA= +go.opentelemetry.io/collector/service v0.142.0 h1:3p2V3E3v97bmjJB591VkHlZQ+ez/PjGDHDF247jImLo= +go.opentelemetry.io/collector/service v0.142.0/go.mod h1:n75a5MCGU/xz3iAhM/tZYxAXCIkpWvN7QQftO0f9ulI= +go.opentelemetry.io/collector/service/hostcapabilities v0.142.0 h1:/l/T3kWNrxy18pV+VfTKIRBw0JwPHiDVH4lPOyKjI78= +go.opentelemetry.io/collector/service/hostcapabilities v0.142.0/go.mod h1:1Rm5SgOnwBKllAWBlPVcEDCBEtiHe7dv2Pfr4/HaiWo= +go.opentelemetry.io/collector/service/telemetry/telemetrytest v0.142.0 h1:vl9QQPsPZVYzIn7sRjqNpScP+hEOAaoX+C3iGF7CkOM= +go.opentelemetry.io/collector/service/telemetry/telemetrytest v0.142.0/go.mod h1:Sf8FQY4ig/+jIC9eGKOMcw97yCB2rR0aUGgchWM4tIo= +go.opentelemetry.io/contrib/bridges/otelzap v0.13.0 h1:aBKdhLVieqvwWe9A79UHI/0vgp2t/s2euY8X59pGRlw= +go.opentelemetry.io/contrib/bridges/otelzap v0.13.0/go.mod h1:SYqtxLQE7iINgh6WFuVi2AI70148B8EI35DSk0Wr8m4= +go.opentelemetry.io/contrib/instrumentation/net/http/httptrace/otelhttptrace v0.63.0 h1:2pn7OzMewmYRiNtv1doZnLo3gONcnMHlFnmOR8Vgt+8= +go.opentelemetry.io/contrib/instrumentation/net/http/httptrace/otelhttptrace v0.63.0/go.mod h1:rjbQTDEPQymPE0YnRQp9/NuPwwtL0sesz/fnqRW/v84= +go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.64.0 h1:ssfIgGNANqpVFCndZvcuyKbl0g+UAVcbBcqGkG28H0Y= +go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.64.0/go.mod h1:GQ/474YrbE4Jx8gZ4q5I4hrhUzM6UPzyrqJYV2AqPoQ= +go.opentelemetry.io/contrib/otelconf v0.18.0 h1:ciF2Gf00BWs0DnexKFZXcxg9kJ8r3SUW1LOzW3CsKA8= +go.opentelemetry.io/contrib/otelconf v0.18.0/go.mod h1:FcP7k+JLwBLdOxS6qY6VQ/4b5VBntI6L6o80IMwhAeI= +go.opentelemetry.io/contrib/propagators/b3 v1.38.0 h1:uHsCCOSKl0kLrV2dLkFK+8Ywk9iKa/fptkytc6aFFEo= +go.opentelemetry.io/contrib/propagators/b3 v1.38.0/go.mod h1:wMRSZJZcY8ya9mApLLhwIMjqmApy2o/Ml+62lhvxyHU= +go.opentelemetry.io/contrib/zpages v0.63.0 h1:TppOKuZGbqXMgsfjqq3i09N5Vbo1JLtLImUqiTPGnX4= +go.opentelemetry.io/contrib/zpages v0.63.0/go.mod h1:5F8uugz75ay/MMhRRhxAXY33FuaI8dl7jTxefrIy5qk= +go.opentelemetry.io/otel v1.39.0 h1:8yPrr/S0ND9QEfTfdP9V+SiwT4E0G7Y5MO7p85nis48= +go.opentelemetry.io/otel v1.39.0/go.mod h1:kLlFTywNWrFyEdH0oj2xK0bFYZtHRYUdv1NklR/tgc8= +go.opentelemetry.io/otel/exporters/otlp/otlplog/otlploggrpc v0.14.0 h1:OMqPldHt79PqWKOMYIAQs3CxAi7RLgPxwfFSwr4ZxtM= +go.opentelemetry.io/otel/exporters/otlp/otlplog/otlploggrpc v0.14.0/go.mod h1:1biG4qiqTxKiUCtoWDPpL3fB3KxVwCiGw81j3nKMuHE= +go.opentelemetry.io/otel/exporters/otlp/otlplog/otlploghttp v0.14.0 h1:QQqYw3lkrzwVsoEX0w//EhH/TCnpRdEenKBOOEIMjWc= +go.opentelemetry.io/otel/exporters/otlp/otlplog/otlploghttp v0.14.0/go.mod h1:gSVQcr17jk2ig4jqJ2DX30IdWH251JcNAecvrqTxH1s= +go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetricgrpc v1.38.0 h1:vl9obrcoWVKp/lwl8tRE33853I8Xru9HFbw/skNeLs8= +go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetricgrpc v1.38.0/go.mod h1:GAXRxmLJcVM3u22IjTg74zWBrRCKq8BnOqUVLodpcpw= +go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetrichttp v1.38.0 h1:Oe2z/BCg5q7k4iXC3cqJxKYg0ieRiOqF0cecFYdPTwk= +go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetrichttp v1.38.0/go.mod h1:ZQM5lAJpOsKnYagGg/zV2krVqTtaVdYdDkhMoX6Oalg= +go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.38.0 h1:GqRJVj7UmLjCVyVJ3ZFLdPRmhDUp2zFmQe3RHIOsw24= +go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.38.0/go.mod h1:ri3aaHSmCTVYu2AWv44YMauwAQc0aqI9gHKIcSbI1pU= +go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.38.0 h1:lwI4Dc5leUqENgGuQImwLo4WnuXFPetmPpkLi2IrX54= +go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.38.0/go.mod h1:Kz/oCE7z5wuyhPxsXDuaPteSWqjSBD5YaSdbxZYGbGk= +go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp v1.38.0 h1:aTL7F04bJHUlztTsNGJ2l+6he8c+y/b//eR0jjjemT4= +go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp v1.38.0/go.mod h1:kldtb7jDTeol0l3ewcmd8SDvx3EmIE7lyvqbasU3QC4= go.opentelemetry.io/otel/exporters/prometheus v0.60.0 h1:cGtQxGvZbnrWdC2GyjZi0PDKVSLWP/Jocix3QWfXtbo= go.opentelemetry.io/otel/exporters/prometheus v0.60.0/go.mod h1:hkd1EekxNo69PTV4OWFGZcKQiIqg0RfuWExcPKFvepk= -go.opentelemetry.io/otel/exporters/stdout/stdoutlog v0.13.0 h1:yEX3aC9KDgvYPhuKECHbOlr5GLwH6KTjLJ1sBSkkxkc= -go.opentelemetry.io/otel/exporters/stdout/stdoutlog v0.13.0/go.mod h1:/GXR0tBmmkxDaCUGahvksvp66mx4yh5+cFXgSlhg0vQ= -go.opentelemetry.io/otel/exporters/stdout/stdoutmetric v1.37.0 h1:6VjV6Et+1Hd2iLZEPtdV7vie80Yyqf7oikJLjQ/myi0= -go.opentelemetry.io/otel/exporters/stdout/stdoutmetric v1.37.0/go.mod h1:u8hcp8ji5gaM/RfcOo8z9NMnf1pVLfVY7lBY2VOGuUU= -go.opentelemetry.io/otel/exporters/stdout/stdouttrace v1.37.0 h1:SNhVp/9q4Go/XHBkQ1/d5u9P/U+L1yaGPoi0x+mStaI= -go.opentelemetry.io/otel/exporters/stdout/stdouttrace v1.37.0/go.mod h1:tx8OOlGH6R4kLV67YaYO44GFXloEjGPZuMjEkaaqIp4= -go.opentelemetry.io/otel/log v0.14.0 h1:2rzJ+pOAZ8qmZ3DDHg73NEKzSZkhkGIua9gXtxNGgrM= -go.opentelemetry.io/otel/log v0.14.0/go.mod h1:5jRG92fEAgx0SU/vFPxmJvhIuDU9E1SUnEQrMlJpOno= -go.opentelemetry.io/otel/log/logtest v0.14.0 h1:BGTqNeluJDK2uIHAY8lRqxjVAYfqgcaTbVk1n3MWe5A= -go.opentelemetry.io/otel/log/logtest v0.14.0/go.mod h1:IuguGt8XVP4XA4d2oEEDMVDBBCesMg8/tSGWDjuKfoA= -go.opentelemetry.io/otel/metric v1.38.0 h1:Kl6lzIYGAh5M159u9NgiRkmoMKjvbsKtYRwgfrA6WpA= -go.opentelemetry.io/otel/metric v1.38.0/go.mod h1:kB5n/QoRM8YwmUahxvI3bO34eVtQf2i4utNVLr9gEmI= -go.opentelemetry.io/otel/sdk v1.38.0 h1:l48sr5YbNf2hpCUj/FoGhW9yDkl+Ma+LrVl8qaM5b+E= -go.opentelemetry.io/otel/sdk v1.38.0/go.mod h1:ghmNdGlVemJI3+ZB5iDEuk4bWA3GkTpW+DOoZMYBVVg= -go.opentelemetry.io/otel/sdk/log v0.13.0 h1:I3CGUszjM926OphK8ZdzF+kLqFvfRY/IIoFq/TjwfaQ= -go.opentelemetry.io/otel/sdk/log v0.13.0/go.mod h1:lOrQyCCXmpZdN7NchXb6DOZZa1N5G1R2tm5GMMTpDBw= -go.opentelemetry.io/otel/sdk/log/logtest v0.13.0 h1:9yio6AFZ3QD9j9oqshV1Ibm9gPLlHNxurno5BreMtIA= -go.opentelemetry.io/otel/sdk/log/logtest v0.13.0/go.mod h1:QOGiAJHl+fob8Nu85ifXfuQYmJTFAvcrxL6w5/tu168= -go.opentelemetry.io/otel/sdk/metric v1.38.0 h1:aSH66iL0aZqo//xXzQLYozmWrXxyFkBJ6qT5wthqPoM= -go.opentelemetry.io/otel/sdk/metric v1.38.0/go.mod h1:dg9PBnW9XdQ1Hd6ZnRz689CbtrUp0wMMs9iPcgT9EZA= -go.opentelemetry.io/otel/trace v1.38.0 h1:Fxk5bKrDZJUH+AMyyIXGcFAPah0oRcT+LuNtJrmcNLE= -go.opentelemetry.io/otel/trace v1.38.0/go.mod h1:j1P9ivuFsTceSWe1oY+EeW3sc+Pp42sO++GHkg4wwhs= -go.opentelemetry.io/proto/otlp v1.7.0 h1:jX1VolD6nHuFzOYso2E73H85i92Mv8JQYk0K9vz09os= -go.opentelemetry.io/proto/otlp v1.7.0/go.mod h1:fSKjH6YJ7HDlwzltzyMj036AJ3ejJLCgCSHGj4efDDo= -go.opentelemetry.io/proto/slim/otlp v1.8.0 h1:afcLwp2XOeCbGrjufT1qWyruFt+6C9g5SOuymrSPUXQ= -go.opentelemetry.io/proto/slim/otlp v1.8.0/go.mod h1:Yaa5fjYm1SMCq0hG0x/87wV1MP9H5xDuG/1+AhvBcsI= -go.opentelemetry.io/proto/slim/otlp/collector/profiles/v1development v0.1.0 h1:Uc+elixz922LHx5colXGi1ORbsW8DTIGM+gg+D9V7HE= -go.opentelemetry.io/proto/slim/otlp/collector/profiles/v1development v0.1.0/go.mod h1:VyU6dTWBWv6h9w/+DYgSZAPMabWbPTFTuxp25sM8+s0= -go.opentelemetry.io/proto/slim/otlp/profiles/v1development v0.1.0 h1:i8YpvWGm/Uq1koL//bnbJ/26eV3OrKWm09+rDYo7keU= -go.opentelemetry.io/proto/slim/otlp/profiles/v1development v0.1.0/go.mod h1:pQ70xHY/ZVxNUBPn+qUWPl8nwai87eWdqL3M37lNi9A= +go.opentelemetry.io/otel/exporters/stdout/stdoutlog v0.14.0 h1:B/g+qde6Mkzxbry5ZZag0l7QrQBCtVm7lVjaLgmpje8= +go.opentelemetry.io/otel/exporters/stdout/stdoutlog v0.14.0/go.mod h1:mOJK8eMmgW6ocDJn6Bn11CcZ05gi3P8GylBXEkZtbgA= +go.opentelemetry.io/otel/exporters/stdout/stdoutmetric v1.38.0 h1:wm/Q0GAAykXv83wzcKzGGqAnnfLFyFe7RslekZuv+VI= +go.opentelemetry.io/otel/exporters/stdout/stdoutmetric v1.38.0/go.mod h1:ra3Pa40+oKjvYh+ZD3EdxFZZB0xdMfuileHAm4nNN7w= +go.opentelemetry.io/otel/exporters/stdout/stdouttrace v1.38.0 h1:kJxSDN4SgWWTjG/hPp3O7LCGLcHXFlvS2/FFOrwL+SE= +go.opentelemetry.io/otel/exporters/stdout/stdouttrace v1.38.0/go.mod h1:mgIOzS7iZeKJdeB8/NYHrJ48fdGc71Llo5bJ1J4DWUE= +go.opentelemetry.io/otel/log v0.15.0 h1:0VqVnc3MgyYd7QqNVIldC3dsLFKgazR6P3P3+ypkyDY= +go.opentelemetry.io/otel/log v0.15.0/go.mod h1:9c/G1zbyZfgu1HmQD7Qj84QMmwTp2QCQsZH1aeoWDE4= +go.opentelemetry.io/otel/metric v1.39.0 h1:d1UzonvEZriVfpNKEVmHXbdf909uGTOQjA0HF0Ls5Q0= +go.opentelemetry.io/otel/metric v1.39.0/go.mod h1:jrZSWL33sD7bBxg1xjrqyDjnuzTUB0x1nBERXd7Ftcs= +go.opentelemetry.io/otel/sdk v1.39.0 h1:nMLYcjVsvdui1B/4FRkwjzoRVsMK8uL/cj0OyhKzt18= +go.opentelemetry.io/otel/sdk v1.39.0/go.mod h1:vDojkC4/jsTJsE+kh+LXYQlbL8CgrEcwmt1ENZszdJE= +go.opentelemetry.io/otel/sdk/log v0.14.0 h1:JU/U3O7N6fsAXj0+CXz21Czg532dW2V4gG1HE/e8Zrg= +go.opentelemetry.io/otel/sdk/log v0.14.0/go.mod h1:imQvII+0ZylXfKU7/wtOND8Hn4OpT3YUoIgqJVksUkM= +go.opentelemetry.io/otel/sdk/log/logtest v0.14.0 h1:Ijbtz+JKXl8T2MngiwqBlPaHqc4YCaP/i13Qrow6gAM= +go.opentelemetry.io/otel/sdk/log/logtest v0.14.0/go.mod h1:dCU8aEL6q+L9cYTqcVOk8rM9Tp8WdnHOPLiBgp0SGOA= +go.opentelemetry.io/otel/sdk/metric v1.39.0 h1:cXMVVFVgsIf2YL6QkRF4Urbr/aMInf+2WKg+sEJTtB8= +go.opentelemetry.io/otel/sdk/metric v1.39.0/go.mod h1:xq9HEVH7qeX69/JnwEfp6fVq5wosJsY1mt4lLfYdVew= +go.opentelemetry.io/otel/trace v1.39.0 h1:2d2vfpEDmCJ5zVYz7ijaJdOF59xLomrvj7bjt6/qCJI= +go.opentelemetry.io/otel/trace v1.39.0/go.mod h1:88w4/PnZSazkGzz/w84VHpQafiU4EtqqlVdxWy+rNOA= +go.opentelemetry.io/proto/otlp v1.7.1 h1:gTOMpGDb0WTBOP8JaO72iL3auEZhVmAQg4ipjOVAtj4= +go.opentelemetry.io/proto/otlp v1.7.1/go.mod h1:b2rVh6rfI/s2pHWNlB7ILJcRALpcNDzKhACevjI+ZnE= +go.opentelemetry.io/proto/slim/otlp v1.9.0 h1:fPVMv8tP3TrsqlkH1HWYUpbCY9cAIemx184VGkS6vlE= +go.opentelemetry.io/proto/slim/otlp v1.9.0/go.mod h1:xXdeJJ90Gqyll+orzUkY4bOd2HECo5JofeoLpymVqdI= +go.opentelemetry.io/proto/slim/otlp/collector/profiles/v1development v0.2.0 h1:o13nadWDNkH/quoDomDUClnQBpdQQ2Qqv0lQBjIXjE8= +go.opentelemetry.io/proto/slim/otlp/collector/profiles/v1development v0.2.0/go.mod h1:Gyb6Xe7FTi/6xBHwMmngGoHqL0w29Y4eW8TGFzpefGA= +go.opentelemetry.io/proto/slim/otlp/profiles/v1development v0.2.0 h1:EiUYvtwu6PMrMHVjcPfnsG3v+ajPkbUeH+IL93+QYyk= +go.opentelemetry.io/proto/slim/otlp/profiles/v1development v0.2.0/go.mod h1:mUUHKFiN2SST3AhJ8XhJxEoeVW12oqfXog0Bo8W3Ec4= 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/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.0 h1:aJMhYGrd5QSmlpLMr2MftRKl7t8J8PTZPA732ud/XR8= -go.uber.org/zap v1.27.0/go.mod h1:GB2qFLM7cTU87MWRP2mPIjqfIDnGu+VIO4V/SdhGo2E= +go.uber.org/zap v1.27.1 h1:08RqriUEv8+ArZRYSTXy1LeBScaMpVSTBhCeaZYfMYc= +go.uber.org/zap v1.27.1/go.mod h1:GB2qFLM7cTU87MWRP2mPIjqfIDnGu+VIO4V/SdhGo2E= go.uber.org/zap/exp v0.3.0 h1:6JYzdifzYkGmTdRR59oYH+Ng7k49H9qVpWwNSsGJj3U= go.uber.org/zap/exp v0.3.0/go.mod h1:5I384qq7XGxYyByIhHm6jg5CHkGY0nsTfbDLgDDlgJQ= -go.yaml.in/yaml/v2 v2.4.2 h1:DzmwEr2rDGHl7lsFgAHxmNz/1NlQ7xLIrlN2h5d1eGI= -go.yaml.in/yaml/v2 v2.4.2/go.mod h1:081UH+NErpNdqlCXm3TtEran0rJZGxAYx9hb/ELlsPU= +go.yaml.in/yaml/v2 v2.4.3 h1:6gvOSjQoTB3vt1l+CU+tSyi/HOjfOjRLJ4YwYZGwRO0= +go.yaml.in/yaml/v2 v2.4.3/go.mod h1:zSxWcmIDjOzPXpjlTTbAsKokqkDNAVtZO0WOMiT90s8= go.yaml.in/yaml/v3 v3.0.4 h1:tfq32ie2Jv2UxXFdLJdh3jXuOzWiL1fo0bu/FbuKpbc= go.yaml.in/yaml/v3 v3.0.4/go.mod h1:DhzuOOF2ATzADvBadXxruRBLzYTpT36CKvDb3+aBEFg= golang.org/x/crypto v0.0.0-20180904163835-0709b304e793/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= @@ -770,14 +762,14 @@ golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACk 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.42.0 h1:chiH31gIWm57EkTXpwnqf8qeuMUi0yekh6mT2AvFlqI= -golang.org/x/crypto v0.42.0/go.mod h1:4+rDnOTJhQCx2q7/j6rAN5XDw8kPjeaXEUR2eL94ix8= -golang.org/x/exp v0.0.0-20250106191152-7588d65b2ba8 h1:yqrTHse8TCMW1M1ZCP+VAR/l0kKxwaAIqN/il7x4voA= -golang.org/x/exp v0.0.0-20250106191152-7588d65b2ba8/go.mod h1:tujkw807nyEEAamNbDrEGzRav+ilXA7PCRAd6xsmwiU= +golang.org/x/crypto v0.46.0 h1:cKRW/pmt1pKAfetfu+RCEvjvZkA9RimPbh7bhFjGVBU= +golang.org/x/crypto v0.46.0/go.mod h1:Evb/oLKmMraqjZ2iQTwDwvCtJkczlDuTmdJXoZVzqU0= +golang.org/x/exp v0.0.0-20250808145144-a408d31f581a h1:Y+7uR/b1Mw2iSXZ3G//1haIiSElDQZ8KWh0h+sZPG90= +golang.org/x/exp v0.0.0-20250808145144-a408d31f581a/go.mod h1:rT6SFzZ7oxADUDx58pcaKFTcZ+inxAa9fTrYx/uVYwg= 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.27.0 h1:kb+q2PyFnEADO2IEF935ehFUXlWiNjJWtRNgBLSfbxQ= -golang.org/x/mod v0.27.0/go.mod h1:rWI627Fq0DEoudcK+MBkNkCe0EetEaDSwJJkCcjpazc= +golang.org/x/mod v0.30.0 h1:fDEXFVZ/fmCKProc/yAXXUijritrDzahmwwefnjoPFk= +golang.org/x/mod v0.30.0/go.mod h1:lAsf5O2EvJeSFMiBxXDki7sCgAxEUcZHXoXMKT4GJKc= 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= @@ -787,18 +779,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.44.0 h1:evd8IRDyfNBMBTTY5XRF1vaZlD+EmWx6x8PkhR04H/I= -golang.org/x/net v0.44.0/go.mod h1:ECOoLqd5U3Lhyeyo/QDCEVQ4sNgYsqvCZ722XogGieY= -golang.org/x/oauth2 v0.30.0 h1:dnDm7JmhM45NNpd8FDDeLhK6FwqbOf4MLCM9zb1BOHI= -golang.org/x/oauth2 v0.30.0/go.mod h1:B++QgG3ZKulg6sRPGD/mqlHQs5rB3Ml9erfeDY7xKlU= +golang.org/x/net v0.48.0 h1:zyQRTTrjc33Lhh0fBgT/H3oZq9WuvRR5gPC70xpDiQU= +golang.org/x/net v0.48.0/go.mod h1:+ndRgGjkh8FGtu1w1FGbEC31if4VrNVMuKTgcAAnQRY= +golang.org/x/oauth2 v0.32.0 h1:jsCblLleRMDrxMN29H3z/k1KliIvpLgCkE6R8FXXNgY= +golang.org/x/oauth2 v0.32.0/go.mod h1:lzm5WQJQwKZ3nwavOZ3IS5Aulzxi68dUSgRHujetwEA= golang.org/x/sync v0.0.0-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.17.0 h1:l60nONMj9l5drqw6jlhIELNv9I0A4OFgRsG9k2oT9Ug= -golang.org/x/sync v0.17.0/go.mod h1:9KTHXmSnoGruLpwFjVSX0lNNA75CykiMECbovNTZqGI= +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/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= @@ -827,44 +819,46 @@ golang.org/x/sys v0.0.0-20220728004956-3c1f35247d10/go.mod h1:oPkhp1MJrh7nUepCBc 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.36.0 h1:KVRy2GtZBrk1cBYA7MKu5bEZFxQk4NIDV6RLVcC8o0k= -golang.org/x/sys v0.36.0/go.mod h1:OgkHotnGiDImocRcuBABYBEXf8A9a87e/uXjp9XT3ks= +golang.org/x/sys v0.39.0 h1:CvCKL8MeisomCi6qNZ+wbb0DN9E5AATixKsvNtMoMFk= +golang.org/x/sys v0.39.0/go.mod h1:OgkHotnGiDImocRcuBABYBEXf8A9a87e/uXjp9XT3ks= golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= -golang.org/x/term v0.35.0 h1:bZBVKBudEyhRcajGcNc3jIfWPqV4y/Kt2XcoigOWtDQ= -golang.org/x/term v0.35.0/go.mod h1:TPGtkTLesOwf2DE8CgVYiZinHAOuy5AYUYT1lENIZnA= +golang.org/x/term v0.38.0 h1:PQ5pkm/rLO6HnxFR7N2lJHOZX6Kez5Y1gDSJla6jo7Q= +golang.org/x/term v0.38.0/go.mod h1:bSEAKrOT1W+VSu9TSCMtoGEOUcKxOKgl3LE5QEF/xVg= 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.29.0 h1:1neNs90w9YzJ9BocxfsQNHKuAT4pkghyXc4nhZ6sJvk= -golang.org/x/text v0.29.0/go.mod h1:7MhJOA9CD2qZyOKYazxdYMF85OwPdEr9jTtBpO7ydH4= -golang.org/x/time v0.12.0 h1:ScB/8o8olJvc+CQPWrK3fPZNfh7qgwCrY0zJmoEQLSE= -golang.org/x/time v0.12.0/go.mod h1:CDIdPxbZBQxdj6cxyCIdrNogrJKMJ7pr37NYpMcMDSg= +golang.org/x/text v0.32.0 h1:ZD01bjUt1FQ9WJ0ClOL5vxgxOI/sVCNgX1YtKwcY0mU= +golang.org/x/text v0.32.0/go.mod h1:o/rUWzghvpD5TXrTIBuJU77MTaN0ljMWE47kxGJQ7jY= +golang.org/x/time v0.13.0 h1:eUlYslOIt32DgYD6utsuUeHs4d7AsEYLuIAdg7FlYgI= +golang.org/x/time v0.13.0/go.mod h1:eL/Oa2bBBK0TkX57Fyni+NgnyQQN4LitPmob2Hjnqw4= 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.36.0 h1:kWS0uv/zsvHEle1LbV5LE8QujrxB3wfQyxHfhOk0Qkg= -golang.org/x/tools v0.36.0/go.mod h1:WBDiHKJK8YgLHlcQPYQzNCkUxUypCaa5ZegCVutKm+s= +golang.org/x/tools v0.39.0 h1:ik4ho21kwuQln40uelmciQPp9SipgNDdrafrYA4TmQQ= +golang.org/x/tools v0.39.0/go.mod h1:JnefbkDPyD8UU2kI5fuf8ZX4/yUeh9W877ZeBONxUqQ= +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= golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= gonum.org/v1/gonum v0.16.0 h1:5+ul4Swaf3ESvrOnidPp4GZbzf0mxVQpDCYUQE7OJfk= gonum.org/v1/gonum v0.16.0/go.mod h1:fef3am4MQ93R2HHpKnLk4/Tbh/s0+wqD5nfa6Pnwy4E= -google.golang.org/api v0.239.0 h1:2hZKUnFZEy81eugPs4e2XzIJ5SOwQg0G82bpXD65Puo= -google.golang.org/api v0.239.0/go.mod h1:cOVEm2TpdAGHL2z+UwyS+kmlGr3bVWQQ6sYEqkKje50= -google.golang.org/genproto v0.0.0-20250505200425-f936aa4a68b2 h1:1tXaIXCracvtsRxSBsYDiSBN0cuJvM7QYW+MrpIRY78= -google.golang.org/genproto v0.0.0-20250505200425-f936aa4a68b2/go.mod h1:49MsLSx0oWMOZqcpB3uL8ZOkAh1+TndpJ8ONoCBWiZk= -google.golang.org/genproto/googleapis/api v0.0.0-20250707201910-8d1bb00bc6a7 h1:FiusG7LWj+4byqhbvmB+Q93B/mOxJLN2DTozDuZm4EU= -google.golang.org/genproto/googleapis/api v0.0.0-20250707201910-8d1bb00bc6a7/go.mod h1:kXqgZtrWaf6qS3jZOCnCH7WYfrvFjkC51bM8fz3RsCA= -google.golang.org/genproto/googleapis/rpc v0.0.0-20250707201910-8d1bb00bc6a7 h1:pFyd6EwwL2TqFf8emdthzeX+gZE1ElRq3iM8pui4KBY= -google.golang.org/genproto/googleapis/rpc v0.0.0-20250707201910-8d1bb00bc6a7/go.mod h1:qQ0YXyHHx3XkvlzUtpXDkS29lDSafHMZBAZDc03LQ3A= -google.golang.org/grpc v1.75.1 h1:/ODCNEuf9VghjgO3rqLcfg8fiOP0nSluljWFlDxELLI= -google.golang.org/grpc v1.75.1/go.mod h1:JtPAzKiq4v1xcAB2hydNlWI2RnF85XXcV0mhKXr2ecQ= -google.golang.org/protobuf v1.36.9 h1:w2gp2mA27hUeUzj9Ex9FBjsBm40zfaDtEWow293U7Iw= -google.golang.org/protobuf v1.36.9/go.mod h1:fuxRtAxBytpl4zzqUh6/eyUujkJdNiuEkXntxiD/uRU= +google.golang.org/api v0.252.0 h1:xfKJeAJaMwb8OC9fesr369rjciQ704AjU/psjkKURSI= +google.golang.org/api v0.252.0/go.mod h1:dnHOv81x5RAmumZ7BWLShB/u7JZNeyalImxHmtTHxqw= +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-20251022142026-3a174f9686a8 h1:mepRgnBZa07I4TRuomDE4sTIYieg/osKmzIf4USdWS4= +google.golang.org/genproto/googleapis/api v0.0.0-20251022142026-3a174f9686a8/go.mod h1:fDMmzKV90WSg1NbozdqrE64fkuTv6mlq2zxo9ad+3yo= +google.golang.org/genproto/googleapis/rpc v0.0.0-20251022142026-3a174f9686a8 h1:M1rk8KBnUsBDg1oPGHNCxG4vc1f49epmTO7xscSajMk= +google.golang.org/genproto/googleapis/rpc v0.0.0-20251022142026-3a174f9686a8/go.mod h1:7i2o+ce6H/6BluujYR+kqX3GKH+dChPTQU19wjRPiGk= +google.golang.org/grpc v1.77.0 h1:wVVY6/8cGA6vvffn+wWK5ToddbgdU3d8MNENr4evgXM= +google.golang.org/grpc v1.77.0/go.mod h1:z0BY1iVj0q8E1uSQCjL9cppRj+gnZjzDnzV0dHhrNig= +google.golang.org/protobuf v1.36.10 h1:AYd7cD/uASjIL6Q9LiTjz8JLcrh/88q5UObnmY3aOOE= +google.golang.org/protobuf v1.36.10/go.mod h1:HTf+CrKn2C3g5S8VImy6tdcUvCska2kB7j23XfzDpco= gopkg.in/alecthomas/kingpin.v2 v2.2.6/go.mod h1:FMv+mEhP44yOT+4EoQTLFTRgOQ1FBLkstjWtayDeSgw= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/check.v1 v1.0.0-20190902080502-41f04d3bba15/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= @@ -887,22 +881,23 @@ 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.32.3 h1:Hw7KqxRusq+6QSplE3NYG4MBxZw1BZnq4aP4cJVINls= -k8s.io/api v0.32.3/go.mod h1:2wEDTXADtm/HA7CCMD8D8bK4yuBUptzaRhYcYEEYA3k= -k8s.io/apimachinery v0.32.3 h1:JmDuDarhDmA/Li7j3aPrwhpNBA94Nvk5zLeOge9HH1U= -k8s.io/apimachinery v0.32.3/go.mod h1:GpHVgxoKlTxClKcteaeuF1Ul/lDVb74KpZcxcmLDElE= -k8s.io/client-go v0.32.3 h1:RKPVltzopkSgHS7aS98QdscAgtgah/+zmpAogooIqVU= -k8s.io/client-go v0.32.3/go.mod h1:3v0+3k4IcT9bXTc4V2rt+d2ZPPG700Xy6Oi0Gdl2PaY= +k8s.io/api v0.34.1 h1:jC+153630BMdlFukegoEL8E/yT7aLyQkIVuwhmwDgJM= +k8s.io/api v0.34.1/go.mod h1:SB80FxFtXn5/gwzCoN6QCtPD7Vbu5w2n1S0J5gFfTYk= +k8s.io/apimachinery v0.34.1 h1:dTlxFls/eikpJxmAC7MVE8oOeP1zryV7iRyIjB0gky4= +k8s.io/apimachinery v0.34.1/go.mod h1:/GwIlEcWuTX9zKIg2mbw0LRFIsXwrfoVxn+ef0X13lw= +k8s.io/client-go v0.34.1 h1:ZUPJKgXsnKwVwmKKdPfw4tB58+7/Ik3CrjOEhsiZ7mY= +k8s.io/client-go v0.34.1/go.mod h1:kA8v0FP+tk6sZA0yKLRG67LWjqufAoSHA2xVGKw9Of8= 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-20241105132330-32ad38e42d3f h1:GA7//TjRY9yWGy1poLzYYJJ4JRdzg3+O6e8I+e+8T5Y= -k8s.io/kube-openapi v0.0.0-20241105132330-32ad38e42d3f/go.mod h1:R/HEjbvWI0qdfb8viZUeVZm0X6IZnxAydC7YU42CMw4= -k8s.io/utils v0.0.0-20241104100929-3ea5e8cea738 h1:M3sRQVHv7vB20Xc2ybTt7ODCeFj6JSWYFzOFnYeS6Ro= -k8s.io/utils v0.0.0-20241104100929-3ea5e8cea738/go.mod h1:OLgZIPagt7ERELqWJFomSt595RzquPNLL48iOWgYOg0= -sigs.k8s.io/json v0.0.0-20241010143419-9aa6b5e7a4b3 h1:/Rv+M11QRah1itp8VhT6HoVx1Ray9eB4DBr+K+/sCJ8= -sigs.k8s.io/json v0.0.0-20241010143419-9aa6b5e7a4b3/go.mod h1:18nIHnGi6636UCz6m8i4DhaJ65T6EruyzmoQqI2BVDo= -sigs.k8s.io/structured-merge-diff/v4 v4.4.2 h1:MdmvkGuXi/8io6ixD5wud3vOLwc1rj0aNqRlpuvjmwA= -sigs.k8s.io/structured-merge-diff/v4 v4.4.2/go.mod h1:N8f93tFZh9U6vpxwRArLiikrE5/2tiu1w1AGfACIGE4= -sigs.k8s.io/yaml v1.4.0/go.mod h1:Ejl7/uTz7PSA4eKMyQCUTnhZYNmLIl+5c2lQPGR2BPY= -sigs.k8s.io/yaml v1.5.0 h1:M10b2U7aEUY6hRtU870n2VTPgR5RZiL/I6Lcc2F4NUQ= -sigs.k8s.io/yaml v1.5.0/go.mod h1:wZs27Rbxoai4C0f8/9urLZtZtF3avA3gKvGyPdDqTO4= +k8s.io/kube-openapi v0.0.0-20250710124328-f3f2b991d03b h1:MloQ9/bdJyIu9lb1PzujOPolHyvO06MXG5TUIj2mNAA= +k8s.io/kube-openapi v0.0.0-20250710124328-f3f2b991d03b/go.mod h1:UZ2yyWbFTpuhSbFhv24aGNOdoRdJZgsIObGBUaYVsts= +k8s.io/utils v0.0.0-20250604170112-4c0f3b243397 h1:hwvWFiBzdWw1FhfY1FooPn3kzWuJ8tmbZBHi4zVsl1Y= +k8s.io/utils v0.0.0-20250604170112-4c0f3b243397/go.mod h1:OLgZIPagt7ERELqWJFomSt595RzquPNLL48iOWgYOg0= +sigs.k8s.io/json v0.0.0-20241014173422-cfa47c3a1cc8 h1:gBQPwqORJ8d8/YNZWEjoZs7npUVDpVXUUOFfW6CgAqE= +sigs.k8s.io/json v0.0.0-20241014173422-cfa47c3a1cc8/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.0 h1:jTijUJbW353oVOd9oTlifJqOGEkUw2jB/fXCbTiQEco= +sigs.k8s.io/structured-merge-diff/v6 v6.3.0/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/prometheusreceiver/internal/appendable.go b/otelcollector/prometheusreceiver/internal/appendable.go index 5aa061f07..b0a7579b5 100644 --- a/otelcollector/prometheusreceiver/internal/appendable.go +++ b/otelcollector/prometheusreceiver/internal/appendable.go @@ -6,7 +6,6 @@ package internal // import "github.com/open-telemetry/opentelemetry-collector-co import ( "context" "regexp" - "time" "github.com/prometheus/prometheus/model/labels" "github.com/prometheus/prometheus/storage" @@ -17,13 +16,12 @@ import ( // appendable translates Prometheus scraping diffs into OpenTelemetry format. type appendable struct { - sink consumer.Metrics - metricAdjuster MetricsAdjuster - useStartTimeMetric bool - enableNativeHistograms bool - trimSuffixes bool - startTimeMetricRegex *regexp.Regexp - externalLabels labels.Labels + sink consumer.Metrics + useStartTimeMetric bool + useMetadata bool + trimSuffixes bool + startTimeMetricRegex *regexp.Regexp + externalLabels labels.Labels settings receiver.Settings obsrecv *receiverhelper.ObsReport @@ -33,39 +31,29 @@ type appendable struct { func NewAppendable( sink consumer.Metrics, set receiver.Settings, - gcInterval time.Duration, useStartTimeMetric bool, startTimeMetricRegex *regexp.Regexp, - useCreatedMetric bool, - enableNativeHistograms bool, + useMetadata bool, externalLabels labels.Labels, trimSuffixes bool, ) (storage.Appendable, error) { - var metricAdjuster MetricsAdjuster - if !useStartTimeMetric { - metricAdjuster = NewInitialPointAdjuster(set.Logger, gcInterval, useCreatedMetric) - } else { - metricAdjuster = NewStartTimeMetricAdjuster(set.Logger, startTimeMetricRegex, gcInterval) - } - obsrecv, err := receiverhelper.NewObsReport(receiverhelper.ObsReportSettings{ReceiverID: set.ID, Transport: transport, ReceiverCreateSettings: set}) if err != nil { return nil, err } return &appendable{ - sink: sink, - settings: set, - metricAdjuster: metricAdjuster, - useStartTimeMetric: useStartTimeMetric, - enableNativeHistograms: enableNativeHistograms, - startTimeMetricRegex: startTimeMetricRegex, - externalLabels: externalLabels, - obsrecv: obsrecv, - trimSuffixes: trimSuffixes, + sink: sink, + settings: set, + useStartTimeMetric: useStartTimeMetric, + useMetadata: useMetadata, + startTimeMetricRegex: startTimeMetricRegex, + externalLabels: externalLabels, + obsrecv: obsrecv, + trimSuffixes: trimSuffixes, }, nil } func (o *appendable) Appender(ctx context.Context) storage.Appender { - return newTransaction(ctx, o.metricAdjuster, o.sink, o.externalLabels, o.settings, o.obsrecv, o.trimSuffixes, o.enableNativeHistograms) + return newTransaction(ctx, o.sink, o.externalLabels, o.settings, o.obsrecv, o.trimSuffixes, o.useMetadata) } diff --git a/otelcollector/prometheusreceiver/internal/metadata.go b/otelcollector/prometheusreceiver/internal/metadata.go index 0a7d434ea..6ec218ff7 100644 --- a/otelcollector/prometheusreceiver/internal/metadata.go +++ b/otelcollector/prometheusreceiver/internal/metadata.go @@ -65,3 +65,21 @@ func metadataForMetric(metricName string, mc scrape.MetricMetadataStore) (*scrap Type: model.MetricTypeUnknown, }, metricName } + +type emptyMetadataStore struct{} + +func (emptyMetadataStore) ListMetadata() []scrape.MetricMetadata { + return nil +} + +func (emptyMetadataStore) GetMetadata(string) (scrape.MetricMetadata, bool) { + return scrape.MetricMetadata{}, false +} + +func (emptyMetadataStore) SizeMetadata() int { + return 0 +} + +func (emptyMetadataStore) LengthMetadata() int { + return 0 +} diff --git a/otelcollector/prometheusreceiver/internal/metadata_test.go b/otelcollector/prometheusreceiver/internal/metadata_test.go new file mode 100644 index 000000000..fdad12a29 --- /dev/null +++ b/otelcollector/prometheusreceiver/internal/metadata_test.go @@ -0,0 +1,162 @@ +// Copyright The OpenTelemetry Authors +// SPDX-License-Identifier: Apache-2.0 + +package internal + +import ( + "maps" + "testing" + + "github.com/prometheus/common/model" + "github.com/prometheus/prometheus/scrape" +) + +func TestMetadataForMetric_Internal(t *testing.T) { + // Internal metric should return from internalMetricMetadata, ignoring external store. + metadata, resolved := metadataForMetric(scrapeUpMetricName, emptyMetadataStore{}) + if resolved != scrapeUpMetricName { + t.Fatalf("expected resolved name %q, got %q", scrapeUpMetricName, resolved) + } + if metadata.Type != model.MetricTypeGauge { + t.Fatalf("expected type Gauge, got %v", metadata.Type) + } + if metadata.MetricFamily != scrapeUpMetricName { + t.Fatalf("expected family %q, got %q", scrapeUpMetricName, metadata.MetricFamily) + } +} + +func TestMetadataForMetric_ExternalExactHit(t *testing.T) { + store := newFakeMetadataStore(map[string]scrape.MetricMetadata{ + "http_requests_total": { + MetricFamily: "http_requests_total", + Type: model.MetricTypeCounter, + Help: "Total HTTP requests", + }, + }, + ) + metadata, resolved := metadataForMetric("http_requests_total", store) + if resolved != "http_requests_total" { + t.Fatalf("expected resolved name http_requests_total, got %q", resolved) + } + if metadata.Type != model.MetricTypeCounter { + t.Fatalf("expected Counter, got %v", metadata.Type) + } +} + +func TestMetadataForMetric_NormalizedFallback_Gauge(t *testing.T) { + // Simulate a merged metric like "histogram_count" where store only knows the base name. + store := newFakeMetadataStore(map[string]scrape.MetricMetadata{ + "histogram": { + MetricFamily: "histogram", + Type: model.MetricTypeGauge, + Help: "Histogram base metric", + }, + }) + metadata, resolved := metadataForMetric("histogram_count", store) + // For non-counter types, resolved should be the normalized base name. + if resolved != "histogram" { + t.Fatalf("expected resolved name histogram, got %q", resolved) + } + if metadata.Type != model.MetricTypeGauge { + t.Fatalf("expected Gauge, got %v", metadata.Type) + } + if metadata.MetricFamily != "histogram" { + t.Fatalf("expected family histogram, got %q", metadata.MetricFamily) + } +} + +func TestMetadataForMetric_NormalizedFallback_CounterKeepsOriginal(t *testing.T) { + // If normalized metadata type is Counter, resolved should stay the original name. + store := newFakeMetadataStore(map[string]scrape.MetricMetadata{ + "requests": { + MetricFamily: "requests", + Type: model.MetricTypeCounter, + Help: "Requests counter", + }, + }, + ) + metadata, resolved := metadataForMetric("requests_total", store) + if resolved != "requests_total" { + t.Fatalf("expected resolved name requests_total, got %q", resolved) + } + if metadata.Type != model.MetricTypeCounter { + t.Fatalf("expected Counter, got %v", metadata.Type) + } + if metadata.MetricFamily != "requests" { + t.Fatalf("expected family requests, got %q", metadata.MetricFamily) + } +} + +func TestMetadataForMetric_Unknown(t *testing.T) { + // Neither internal nor external store has the metric. + store := emptyMetadataStore{} + const name = "custom_metric_unknown" + metadata, resolved := metadataForMetric(name, store) + if resolved != name { + t.Fatalf("expected resolved name %q, got %q", name, resolved) + } + if metadata.Type != model.MetricTypeUnknown { + t.Fatalf("expected Unknown, got %v", metadata.Type) + } + if metadata.MetricFamily != name { + t.Fatalf("expected family %q, got %q", name, metadata.MetricFamily) + } +} + +func TestMetadataForMetric_PrefersInternalOverExternal(t *testing.T) { + // Ensure internal metric metadata is used even if external store provides a conflicting entry. + store := newFakeMetadataStore(map[string]scrape.MetricMetadata{ + scrapeUpMetricName: { + MetricFamily: "up_external", + Type: model.MetricTypeCounter, + Help: "External override attempt", + }, + }, + ) + m, resolved := metadataForMetric(scrapeUpMetricName, store) + if resolved != scrapeUpMetricName { + t.Fatalf("expected resolved name %q, got %q", scrapeUpMetricName, resolved) + } + // Internal definition should win: Gauge with original family. + if m.Type != model.MetricTypeGauge { + t.Fatalf("expected type Gauge from internal map, got %v", m.Type) + } + if m.MetricFamily != scrapeUpMetricName { + t.Fatalf("expected family %q from internal map, got %q", scrapeUpMetricName, m.MetricFamily) + } +} + +// fakeMetadataStore implements scrape.MetricMetadataStore for tests. +// It is safe to use from other packages' tests +type fakeMetadataStore struct { + data map[string]scrape.MetricMetadata +} + +// newFakeMetadataStore creates a FakeMetadataStore initialized with the given metadata. +func newFakeMetadataStore(init map[string]scrape.MetricMetadata) *fakeMetadataStore { + // copy defensively to avoid external mutation + cp := make(map[string]scrape.MetricMetadata, len(init)) + maps.Copy(cp, init) + return &fakeMetadataStore{data: cp} +} + +func (f fakeMetadataStore) ListMetadata() []scrape.MetricMetadata { + out := make([]scrape.MetricMetadata, 0, len(f.data)) + for _, m := range f.data { + out = append(out, m) + } + return out +} + +func (f fakeMetadataStore) GetMetadata(name string) (scrape.MetricMetadata, bool) { + m, ok := f.data[name] + return m, ok +} + +func (f fakeMetadataStore) SizeMetadata() int { + return len(f.data) +} + +func (f fakeMetadataStore) LengthMetadata() int { + return len(f.data) +} diff --git a/otelcollector/prometheusreceiver/internal/metricfamily.go b/otelcollector/prometheusreceiver/internal/metricfamily.go index b0cbe3493..3746b49bf 100644 --- a/otelcollector/prometheusreceiver/internal/metricfamily.go +++ b/otelcollector/prometheusreceiver/internal/metricfamily.go @@ -10,6 +10,7 @@ import ( "sort" "strings" + "github.com/prometheus/common/model" "github.com/prometheus/prometheus/model/exemplar" "github.com/prometheus/prometheus/model/histogram" "github.com/prometheus/prometheus/model/labels" @@ -52,11 +53,18 @@ type metricGroup struct { fhValue *histogram.FloatHistogram complexValue []*dataPoint exemplars pmetric.ExemplarSlice + isNHCB bool // true if this is a Native Histogram Custom Buckets (schema -53) } -func newMetricFamily(metricName string, mc scrape.MetricMetadataStore, logger *zap.Logger) *metricFamily { +func newMetricFamily(metricName string, mc scrape.MetricMetadataStore, logger *zap.Logger, isNativeHistogram, isNHCB bool) *metricFamily { metadata, familyName := metadataForMetric(metricName, mc) - mtype, isMonotonic := convToMetricType(metadata.Type) + // Native histograms have intrinsic metric type, use it, + // regardless of what metadata says. + if isNativeHistogram { + metadata.Type = model.MetricTypeHistogram + } + + mtype, isMonotonic := convToMetricType(metadata.Type, isNativeHistogram && !isNHCB) if mtype == pmetric.MetricTypeEmpty { logger.Debug(fmt.Sprintf("Unknown-typed metric : %s %+v", metricName, metadata)) } @@ -94,41 +102,63 @@ func (mg *metricGroup) toDistributionPoint(dest pmetric.HistogramDataPointSlice) mg.sortPoints() - bucketCount := len(mg.complexValue) + 1 - // if the final bucket is +Inf, we ignore it - if bucketCount > 1 && mg.complexValue[bucketCount-2].boundary == math.Inf(1) { - bucketCount-- - } + var bounds []float64 + var bucketCounts []uint64 + pointIsStale := value.IsStaleNaN(mg.sum) || value.IsStaleNaN(mg.count) - // for OTLP the bounds won't include +inf - bounds := make([]float64, bucketCount-1) - bucketCounts := make([]uint64, bucketCount) - var adjustedCount float64 + if mg.isNHCB { + switch { + case mg.hValue != nil: + if len(mg.hValue.CustomValues) == 0 { + return + } + bounds = make([]float64, len(mg.hValue.CustomValues)) + copy(bounds, mg.hValue.CustomValues) + bucketCounts = convertNHCBBDeltBuckets(mg.hValue) + case mg.fhValue != nil: + if len(mg.fhValue.CustomValues) == 0 { + return + } + bounds = make([]float64, len(mg.fhValue.CustomValues)) + copy(bounds, mg.fhValue.CustomValues) + bucketCounts = convertNHCBAbsoluteBuckets(mg.fhValue) + } + } else { + bucketCount := len(mg.complexValue) + 1 + // if the final bucket is +Inf, we ignore it + if bucketCount > 1 && mg.complexValue[bucketCount-2].boundary == math.Inf(1) { + bucketCount-- + } - pointIsStale := value.IsStaleNaN(mg.sum) || value.IsStaleNaN(mg.count) - for i := 0; i < bucketCount-1; i++ { - bounds[i] = mg.complexValue[i].boundary - adjustedCount = mg.complexValue[i].value + // for OTLP the bounds won't include +inf + bounds = make([]float64, bucketCount-1) + bucketCounts = make([]uint64, bucketCount) + var adjustedCount float64 + + for i := 0; i < bucketCount-1; i++ { + bounds[i] = mg.complexValue[i].boundary + adjustedCount = mg.complexValue[i].value + + // Buckets still need to be sent to know to set them as stale, + // but a staleness NaN converted to uint64 would be an extremely large number. + // Setting to 0 instead. + if pointIsStale { + adjustedCount = 0 + } else if i != 0 { + adjustedCount -= mg.complexValue[i-1].value + } + bucketCounts[i] = uint64(adjustedCount) + } - // Buckets still need to be sent to know to set them as stale, - // but a staleness NaN converted to uint64 would be an extremely large number. - // Setting to 0 instead. + // Add the final bucket based on the total count + adjustedCount = mg.count if pointIsStale { adjustedCount = 0 - } else if i != 0 { - adjustedCount -= mg.complexValue[i-1].value + } else if bucketCount > 1 { + adjustedCount -= mg.complexValue[bucketCount-2].value } - bucketCounts[i] = uint64(adjustedCount) - } - - // Add the final bucket based on the total count - adjustedCount = mg.count - if pointIsStale { - adjustedCount = 0 - } else if bucketCount > 1 { - adjustedCount -= mg.complexValue[bucketCount-2].value + bucketCounts[bucketCount-1] = uint64(adjustedCount) } - bucketCounts[bucketCount-1] = uint64(adjustedCount) point := dest.AppendEmpty() @@ -148,9 +178,6 @@ func (mg *metricGroup) toDistributionPoint(dest pmetric.HistogramDataPointSlice) tsNanos := timestampFromMs(mg.ts) if mg.createdSeconds != 0 { point.SetStartTimestamp(timestampFromFloat64(mg.createdSeconds)) - } else if !removeStartTimeAdjustment.IsEnabled() { - // metrics_adjuster adjusts the startTimestamp to the initial scrape timestamp - point.SetStartTimestamp(tsNanos) } point.SetTimestamp(tsNanos) populateAttributes(pmetric.MetricTypeHistogram, mg.ls, point.Attributes()) @@ -226,9 +253,6 @@ func (mg *metricGroup) toExponentialHistogramDataPoints(dest pmetric.Exponential tsNanos := timestampFromMs(mg.ts) if mg.createdSeconds != 0 { point.SetStartTimestamp(timestampFromFloat64(mg.createdSeconds)) - } else if !removeStartTimeAdjustment.IsEnabled() { - // metrics_adjuster adjusts the startTimestamp to the initial scrape timestamp - point.SetStartTimestamp(tsNanos) } point.SetTimestamp(tsNanos) populateAttributes(pmetric.MetricTypeHistogram, mg.ls, point.Attributes()) @@ -269,6 +293,53 @@ func convertAbsoluteBuckets(spans []histogram.Span, counts []float64, buckets pc } } +// convertNHCBBDeltBuckets converts NHCB delta buckets to otel bucket counts. +func convertNHCBBDeltBuckets(histogram *histogram.Histogram) []uint64 { + bucketCounts := make([]uint64, len(histogram.CustomValues)+1) + if len(histogram.PositiveSpans) == 0 { + return bucketCounts + } + bucketIdx := 0 + bucketCount := int64(0) + deltaIdx := 0 + + for _, span := range histogram.PositiveSpans { + bucketIdx += int(span.Offset) + + for i := uint32(0); i < span.Length && bucketIdx < len(bucketCounts) && deltaIdx < len(histogram.PositiveBuckets); i++ { + bucketCount += histogram.PositiveBuckets[deltaIdx] + deltaIdx++ + + if bucketIdx >= 0 && bucketIdx < len(bucketCounts) { + bucketCounts[bucketIdx] = uint64(bucketCount) + } + bucketIdx++ + } + } + return bucketCounts +} + +// convertNHCBAbsoluteBuckets converts NHCB absolute buckets to otel bucket counts. +func convertNHCBAbsoluteBuckets(histogram *histogram.FloatHistogram) []uint64 { + bucketCounts := make([]uint64, len(histogram.CustomValues)+1) + if len(histogram.PositiveSpans) == 0 { + return bucketCounts + } + bucketIdx := 0 + for _, span := range histogram.PositiveSpans { + bucketIdx += int(span.Offset) + + for i := uint32(0); i < span.Length && bucketIdx < len(bucketCounts) && i < uint32(len(histogram.PositiveBuckets)); i++ { + if bucketIdx >= 0 && bucketIdx < len(bucketCounts) { + // This intentionally truncates the float value to an integer (e.g. 5.7 becomes 5). + bucketCounts[bucketIdx] = uint64(histogram.PositiveBuckets[i]) + } + bucketIdx++ + } + } + return bucketCounts +} + func (mg *metricGroup) setExemplars(exemplars pmetric.ExemplarSlice) { if mg == nil { return @@ -320,9 +391,6 @@ func (mg *metricGroup) toSummaryPoint(dest pmetric.SummaryDataPointSlice) { point.SetTimestamp(tsNanos) if mg.createdSeconds != 0 { point.SetStartTimestamp(timestampFromFloat64(mg.createdSeconds)) - } else if !removeStartTimeAdjustment.IsEnabled() { - // metrics_adjuster adjusts the startTimestamp to the initial scrape timestamp - point.SetStartTimestamp(tsNanos) } populateAttributes(pmetric.MetricTypeSummary, mg.ls, point.Attributes()) } @@ -334,9 +402,6 @@ func (mg *metricGroup) toNumberDataPoint(dest pmetric.NumberDataPointSlice) { if mg.mtype == pmetric.MetricTypeSum { if mg.createdSeconds != 0 { point.SetStartTimestamp(timestampFromFloat64(mg.createdSeconds)) - } else if !removeStartTimeAdjustment.IsEnabled() { - // metrics_adjuster adjusts the startTimestamp to the initial scrape timestamp - point.SetStartTimestamp(tsNanos) } } point.SetTimestamp(tsNanos) @@ -465,6 +530,37 @@ func (mf *metricFamily) addExponentialHistogramSeries(seriesRef uint64, metricNa return nil } +// addNHCBSeries adds a Native Histogram Custom Buckets (NHCB) series to the metric family. +func (mf *metricFamily) addNHCBSeries(seriesRef uint64, metricName string, ls labels.Labels, t int64, h *histogram.Histogram, fh *histogram.FloatHistogram) error { + mg := mf.loadMetricGroupOrCreate(seriesRef, ls, t) + if mg.ts != t { + return fmt.Errorf("inconsistent timestamps on metric points for metric %v", metricName) + } + if mg.mtype != pmetric.MetricTypeHistogram { + return fmt.Errorf("metric type mismatch for NHCB metric %v type %s", metricName, mg.mtype.String()) + } + mg.isNHCB = true + + switch { + case h != nil: + mg.hValue = h + mg.count = float64(h.Count) + mg.hasCount = true + mg.sum = h.Sum + mg.hasSum = true + case fh != nil: + mg.fhValue = fh + mg.count = fh.Count + mg.hasCount = true + mg.sum = fh.Sum + mg.hasSum = true + default: + return fmt.Errorf("NHCB metric %v has no histogram data", metricName) + } + + return nil +} + func (mf *metricFamily) appendMetric(metrics pmetric.MetricSlice, trimSuffixes bool) { metric := pmetric.NewMetric() // Trims type and unit suffixes from metric name diff --git a/otelcollector/prometheusreceiver/internal/metricfamily_test.go b/otelcollector/prometheusreceiver/internal/metricfamily_test.go index 3eafed50e..61a4b1900 100644 --- a/otelcollector/prometheusreceiver/internal/metricfamily_test.go +++ b/otelcollector/prometheusreceiver/internal/metricfamily_test.go @@ -120,7 +120,7 @@ func TestMetricGroupData_toDistributionUnitTest(t *testing.T) { intervalStartTimeMs int64 }{ { - name: "histogram with startTimestamp", + name: "histogram with no startTimestamp", metricName: "histogram", intervalStartTimeMs: 11, labels: labels.FromMap(map[string]string{"a": "A", "b": "B"}), @@ -138,7 +138,6 @@ func TestMetricGroupData_toDistributionUnitTest(t *testing.T) { point.SetTimestamp(pcommon.Timestamp(11 * time.Millisecond)) // the time in milliseconds -> nanoseconds. point.ExplicitBounds().FromRaw([]float64{0.75, 2.75}) point.BucketCounts().FromRaw([]uint64{33, 22, 11}) - point.SetStartTimestamp(pcommon.Timestamp(11 * time.Millisecond)) // the time in milliseconds -> nanoseconds. attributes := point.Attributes() attributes.PutStr("a", "A") attributes.PutStr("b", "B") @@ -207,7 +206,6 @@ func TestMetricGroupData_toDistributionUnitTest(t *testing.T) { point.SetFlags(pmetric.DefaultDataPointFlags.WithNoRecordedValue(true)) point.ExplicitBounds().FromRaw([]float64{0.75, 2.75}) point.BucketCounts().FromRaw([]uint64{0, 0, 0}) - point.SetStartTimestamp(pcommon.Timestamp(11 * time.Millisecond)) // the time in milliseconds -> nanoseconds. attributes := point.Attributes() attributes.PutStr("a", "A") attributes.PutStr("b", "B") @@ -239,8 +237,7 @@ func TestMetricGroupData_toDistributionUnitTest(t *testing.T) { point := pmetric.NewHistogramDataPoint() point.SetCount(66) point.SetSum(1004.78) - point.SetTimestamp(pcommon.Timestamp(11 * time.Millisecond)) // the time in milliseconds -> nanoseconds. - point.SetStartTimestamp(pcommon.Timestamp(11 * time.Millisecond)) // the time in milliseconds -> nanoseconds. + point.SetTimestamp(pcommon.Timestamp(11 * time.Millisecond)) // the time in milliseconds -> nanoseconds. point.BucketCounts().FromRaw([]uint64{66}) attributes := point.Attributes() attributes.PutStr("a", "A") @@ -252,7 +249,7 @@ func TestMetricGroupData_toDistributionUnitTest(t *testing.T) { for _, tt := range tests { t.Run(tt.name, func(t *testing.T) { - mp := newMetricFamily(tt.metricName, mc, zap.NewNop()) + mp := newMetricFamily(tt.metricName, mc, zap.NewNop(), false, false) for i, tv := range tt.scrapes { var lbls labels.Labels if tv.extraLabel.Name != "" { @@ -294,6 +291,142 @@ func TestMetricGroupData_toDistributionUnitTest(t *testing.T) { } } +func TestMetricGroupData_toNHCBDistributionUnitTest(t *testing.T) { + tests := []struct { + name string + metricName string + labels labels.Labels + integerHistogram *histogram.Histogram + floatHistogram *histogram.FloatHistogram + want func() pmetric.HistogramDataPoint + wantErr bool + intervalStartTimeMs int64 + }{ + { + name: "integer NHCB", + metricName: "histogram", + intervalStartTimeMs: 11, + labels: labels.FromMap(map[string]string{"a": "A", "b": "B"}), + integerHistogram: &histogram.Histogram{ + Schema: -53, + Count: 180, + Sum: 100.5, + CustomValues: []float64{1.0, 2.0, 5.0, 10.0}, + PositiveSpans: []histogram.Span{{Offset: 0, Length: 5}}, + PositiveBuckets: []int64{10, 15, 20, 5, 0}, + }, + want: func() pmetric.HistogramDataPoint { + point := pmetric.NewHistogramDataPoint() + point.SetCount(180) + point.SetSum(100.5) + point.SetTimestamp(pcommon.Timestamp(11 * time.Millisecond)) + point.ExplicitBounds().FromRaw([]float64{1.0, 2.0, 5.0, 10.0}) + point.BucketCounts().FromRaw([]uint64{10, 25, 45, 50, 50}) + attributes := point.Attributes() + attributes.PutStr("a", "A") + attributes.PutStr("b", "B") + return point + }, + }, + { + name: "integer NHCB that is stale", + metricName: "histogram", + intervalStartTimeMs: 11, + labels: labels.FromMap(map[string]string{"a": "A", "b": "B"}), + integerHistogram: &histogram.Histogram{ + Schema: -53, + Sum: math.Float64frombits(value.StaleNaN), + CustomValues: []float64{1.0, 2.0, 5.0, 10.0}, + Count: 0, + }, + want: func() pmetric.HistogramDataPoint { + point := pmetric.NewHistogramDataPoint() + point.SetTimestamp(pcommon.Timestamp(11 * time.Millisecond)) + point.SetFlags(pmetric.DefaultDataPointFlags.WithNoRecordedValue(true)) + point.ExplicitBounds().FromRaw([]float64{1.0, 2.0, 5.0, 10.0}) + point.BucketCounts().FromRaw([]uint64{0, 0, 0, 0, 0}) + attributes := point.Attributes() + attributes.PutStr("a", "A") + attributes.PutStr("b", "B") + return point + }, + }, + { + name: "float NHCB", + metricName: "histogram", + intervalStartTimeMs: 12, + labels: labels.FromMap(map[string]string{"a": "A"}), + floatHistogram: &histogram.FloatHistogram{ + Schema: -53, + Count: 50.0, + Sum: 125.25, + CustomValues: []float64{0.5, 2.0}, + PositiveBuckets: []float64{15.0, 20.0, 15.0}, + PositiveSpans: []histogram.Span{{Offset: 0, Length: 3}}, + }, + want: func() pmetric.HistogramDataPoint { + point := pmetric.NewHistogramDataPoint() + point.SetCount(50) + point.SetSum(125.25) + point.SetTimestamp(pcommon.Timestamp(12 * time.Millisecond)) + point.ExplicitBounds().FromRaw([]float64{0.5, 2.0}) + point.BucketCounts().FromRaw([]uint64{15, 20, 15}) + attributes := point.Attributes() + attributes.PutStr("a", "A") + return point + }, + }, + { + name: "integer NHCB with negative boundaries", + metricName: "histogram", + intervalStartTimeMs: 30, + labels: labels.FromMap(map[string]string{"a": "A"}), + integerHistogram: &histogram.Histogram{ + Schema: -53, + Count: 16, + Sum: 10.0, + CustomValues: []float64{-5.0, 0.0, 5.0}, + PositiveSpans: []histogram.Span{{Offset: 0, Length: 4}}, + PositiveBuckets: []int64{5, 5, 5, 1}, + }, + want: func() pmetric.HistogramDataPoint { + point := pmetric.NewHistogramDataPoint() + point.SetCount(16) + point.SetSum(10.0) + point.SetTimestamp(pcommon.Timestamp(30 * time.Millisecond)) + point.ExplicitBounds().FromRaw([]float64{-5.0, 0.0, 5.0}) + point.BucketCounts().FromRaw([]uint64{5, 10, 15, 16}) + point.Attributes().PutStr("a", "A") + return point + }, + }, + } + + 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) + + err := mp.addNHCBSeries(sRef, tt.metricName, tt.labels, tt.intervalStartTimeMs, tt.integerHistogram, tt.floatHistogram) + require.NoError(t, err) + + require.Len(t, mp.groups, 1) + + sl := pmetric.NewMetricSlice() + mp.appendMetric(sl, false) + + require.Equal(t, 1, sl.Len(), "Exactly one metric expected") + metric := sl.At(0) + + hdpL := metric.Histogram().DataPoints() + require.Equal(t, 1, hdpL.Len(), "Exactly one point expected") + got := hdpL.At(0) + want := tt.want() + require.Equal(t, want, got, "Expected the points to be equal") + }) + } +} + func TestMetricGroupData_toExponentialDistributionUnitTest(t *testing.T) { type scrape struct { at int64 @@ -315,7 +448,7 @@ func TestMetricGroupData_toExponentialDistributionUnitTest(t *testing.T) { intervalStartTimeMs int64 }{ { - name: "integer histogram with startTimestamp", + name: "integer histogram without startTimestamp", metricName: "request_duration_seconds", intervalStartTimeMs: 11, labels: labels.FromMap(map[string]string{"a": "A", "b": "B"}), @@ -341,8 +474,7 @@ func TestMetricGroupData_toExponentialDistributionUnitTest(t *testing.T) { point := pmetric.NewExponentialHistogramDataPoint() point.SetCount(66) point.SetSum(1004.78) - point.SetTimestamp(pcommon.Timestamp(11 * time.Millisecond)) // the time in milliseconds -> nanoseconds. - point.SetStartTimestamp(pcommon.Timestamp(11 * time.Millisecond)) // the time in milliseconds -> nanoseconds. + point.SetTimestamp(pcommon.Timestamp(11 * time.Millisecond)) // the time in milliseconds -> nanoseconds. point.SetScale(1) point.SetZeroThreshold(0.42) point.SetZeroCount(1) @@ -420,7 +552,6 @@ func TestMetricGroupData_toExponentialDistributionUnitTest(t *testing.T) { point := pmetric.NewExponentialHistogramDataPoint() point.SetTimestamp(pcommon.Timestamp(11 * time.Millisecond)) // the time in milliseconds -> nanoseconds. point.SetFlags(pmetric.DefaultDataPointFlags.WithNoRecordedValue(true)) - point.SetStartTimestamp(pcommon.Timestamp(11 * time.Millisecond)) // the time in milliseconds -> nanoseconds. attributes := point.Attributes() attributes.PutStr("a", "A") attributes.PutStr("b", "B") @@ -431,7 +562,7 @@ func TestMetricGroupData_toExponentialDistributionUnitTest(t *testing.T) { for _, tt := range tests { t.Run(tt.name, func(t *testing.T) { - mp := newMetricFamily(tt.metricName, mc, zap.NewNop()) + mp := newMetricFamily(tt.metricName, mc, zap.NewNop(), true, false) for i, tv := range tt.scrapes { var lbls labels.Labels if tv.extraLabel.Name != "" { @@ -564,8 +695,7 @@ func TestMetricGroupData_toSummaryUnitTest(t *testing.T) { qn99 := qtL.AppendEmpty() qn99.SetQuantile(.99) qn99.SetValue(82) - point.SetTimestamp(pcommon.Timestamp(14 * time.Millisecond)) // the time in milliseconds -> nanoseconds. - point.SetStartTimestamp(pcommon.Timestamp(14 * time.Millisecond)) // the time in milliseconds -> nanoseconds + point.SetTimestamp(pcommon.Timestamp(14 * time.Millisecond)) // the time in milliseconds -> nanoseconds. attributes := point.Attributes() attributes.PutStr("a", "A") attributes.PutStr("b", "B") @@ -708,8 +838,7 @@ func TestMetricGroupData_toSummaryUnitTest(t *testing.T) { qn99 := qtL.AppendEmpty() qn99.SetQuantile(.99) qn99.SetValue(0) - point.SetTimestamp(pcommon.Timestamp(14 * time.Millisecond)) // the time in milliseconds -> nanoseconds. - point.SetStartTimestamp(pcommon.Timestamp(14 * time.Millisecond)) // the time in milliseconds -> nanoseconds + point.SetTimestamp(pcommon.Timestamp(14 * time.Millisecond)) // the time in milliseconds -> nanoseconds. attributes := point.Attributes() attributes.PutStr("a", "A") attributes.PutStr("b", "B") @@ -733,7 +862,7 @@ func TestMetricGroupData_toSummaryUnitTest(t *testing.T) { for _, tt := range tests { t.Run(tt.name, func(t *testing.T) { - mp := newMetricFamily(tt.name, mc, zap.NewNop()) + mp := newMetricFamily(tt.name, mc, zap.NewNop(), false, false) for _, lbs := range tt.labelsScrapes { for i, scrape := range lbs.scrapes { lb := lbs.labels.Copy() @@ -802,7 +931,6 @@ func TestMetricGroupData_toNumberDataUnitTest(t *testing.T) { // the time in milliseconds -> nanoseconds. point.SetTimestamp(pcommon.Timestamp(13 * time.Millisecond)) - point.SetStartTimestamp(pcommon.Timestamp(13 * time.Millisecond)) attributes := point.Attributes() attributes.PutStr("a", "A") @@ -844,8 +972,7 @@ func TestMetricGroupData_toNumberDataUnitTest(t *testing.T) { want: func() pmetric.NumberDataPoint { point := pmetric.NewNumberDataPoint() point.SetDoubleValue(33.7) - point.SetTimestamp(pcommon.Timestamp(13 * time.Millisecond)) // the time in milliseconds -> nanoseconds. - point.SetStartTimestamp(pcommon.Timestamp(13 * time.Millisecond)) // the time in milliseconds -> nanoseconds. + point.SetTimestamp(pcommon.Timestamp(13 * time.Millisecond)) // the time in milliseconds -> nanoseconds. attributes := point.Attributes() attributes.PutStr("a", "A") attributes.PutStr("b", "B") @@ -863,8 +990,7 @@ func TestMetricGroupData_toNumberDataUnitTest(t *testing.T) { want: func() pmetric.NumberDataPoint { point := pmetric.NewNumberDataPoint() point.SetDoubleValue(99.9) - point.SetTimestamp(pcommon.Timestamp(28 * time.Millisecond)) // the time in milliseconds -> nanoseconds. - point.SetStartTimestamp(pcommon.Timestamp(28 * time.Millisecond)) // the time in milliseconds -> nanoseconds. + point.SetTimestamp(pcommon.Timestamp(28 * time.Millisecond)) // the time in milliseconds -> nanoseconds. attributes := point.Attributes() attributes.PutStr("a", "A") attributes.PutStr("b", "B") @@ -875,7 +1001,7 @@ func TestMetricGroupData_toNumberDataUnitTest(t *testing.T) { for _, tt := range tests { t.Run(tt.name, func(t *testing.T) { - mp := newMetricFamily(tt.metricKind, mc, zap.NewNop()) + mp := newMetricFamily(tt.metricKind, mc, zap.NewNop(), false, false) for _, tv := range tt.scrapes { lb := tt.labels.Copy() sRef, _ := getSeriesRef(nil, lb, mp.mtype) diff --git a/otelcollector/prometheusreceiver/internal/metrics_adjuster.go b/otelcollector/prometheusreceiver/internal/metrics_adjuster.go deleted file mode 100644 index ebd571a9b..000000000 --- a/otelcollector/prometheusreceiver/internal/metrics_adjuster.go +++ /dev/null @@ -1,515 +0,0 @@ -// Copyright The OpenTelemetry Authors -// SPDX-License-Identifier: Apache-2.0 - -package internal // import "github.com/open-telemetry/opentelemetry-collector-contrib/receiver/prometheusreceiver/internal" - -import ( - "errors" - "sync" - "time" - - "go.opentelemetry.io/collector/pdata/pcommon" - "go.opentelemetry.io/collector/pdata/pmetric" - semconv "go.opentelemetry.io/otel/semconv/v1.27.0" - "go.uber.org/zap" - - "github.com/open-telemetry/opentelemetry-collector-contrib/pkg/pdatautil" -) - -// Notes on garbage collection (gc): -// -// Job-level gc: -// The Prometheus receiver will likely execute in a long running service whose lifetime may exceed -// the lifetimes of many of the jobs that it is collecting from. In order to keep the JobsMap from -// leaking memory for entries of no-longer existing jobs, the JobsMap needs to remove entries that -// haven't been accessed for a long period of time. -// -// Timeseries-level gc: -// Some jobs that the Prometheus receiver is collecting from may export timeseries based on metrics -// from other jobs (e.g. cAdvisor). In order to keep the timeseriesMap from leaking memory for entries -// of no-longer existing jobs, the timeseriesMap for each job needs to remove entries that haven't -// been accessed for a long period of time. -// -// The gc strategy uses a standard mark-and-sweep approach - each time a timeseriesMap is accessed, -// it is marked. Similarly, each time a timeseriesInfo is accessed, it is also marked. -// -// At the end of each JobsMap.get(), if the last time the JobsMap was gc'd exceeds the 'gcInterval', -// the JobsMap is locked and any timeseriesMaps that are unmarked are removed from the JobsMap -// otherwise the timeseriesMap is gc'd -// -// The gc for the timeseriesMap is straightforward - the map is locked and, for each timeseriesInfo -// in the map, if it has not been marked, it is removed otherwise it is unmarked. -// -// Alternative Strategies -// 1. If the job-level gc doesn't run often enough, or runs too often, a separate go routine can -// be spawned at JobMap creation time that gc's at periodic intervals. This approach potentially -// adds more contention and latency to each scrape so the current approach is used. Note that -// the go routine will need to be cancelled upon Shutdown(). -// 2. If the gc of each timeseriesMap during the gc of the JobsMap causes too much contention, -// the gc of timeseriesMaps can be moved to the end of MetricsAdjuster().AdjustMetricSlice(). This -// approach requires adding 'lastGC' Time and (potentially) a gcInterval duration to -// timeseriesMap so the current approach is used instead. - -// timeseriesInfo contains the information necessary to adjust from the initial point and to detect resets. -type timeseriesInfo struct { - mark bool - - number numberInfo - histogram histogramInfo - summary summaryInfo -} - -type numberInfo struct { - startTime pcommon.Timestamp - previousValue float64 -} - -type histogramInfo struct { - startTime pcommon.Timestamp - previousCount uint64 - previousSum float64 -} - -type summaryInfo struct { - startTime pcommon.Timestamp - previousCount uint64 - previousSum float64 -} - -type timeseriesKey struct { - name string - attributes [16]byte - aggTemporality pmetric.AggregationTemporality -} - -// timeseriesMap maps from a timeseries instance (metric * label values) to the timeseries info for -// the instance. -type timeseriesMap struct { - sync.RWMutex - // The mutex is used to protect access to the member fields. It is acquired for the entirety of - // AdjustMetricSlice() and also acquired by gc(). - - mark bool - tsiMap map[timeseriesKey]*timeseriesInfo -} - -// Get the timeseriesInfo for the timeseries associated with the metric and label values. -func (tsm *timeseriesMap) get(metric pmetric.Metric, kv pcommon.Map) (*timeseriesInfo, bool) { - // This should only be invoked be functions called (directly or indirectly) by AdjustMetricSlice(). - // The lock protecting tsm.tsiMap is acquired there. - name := metric.Name() - key := timeseriesKey{ - name: name, - attributes: getAttributesSignature(kv), - } - switch metric.Type() { - case pmetric.MetricTypeHistogram: - // There are 2 types of Histograms whose aggregation temporality needs distinguishing: - // * CumulativeHistogram - // * GaugeHistogram - key.aggTemporality = metric.Histogram().AggregationTemporality() - case pmetric.MetricTypeExponentialHistogram: - // There are 2 types of ExponentialHistograms whose aggregation temporality needs distinguishing: - // * CumulativeHistogram - // * GaugeHistogram - key.aggTemporality = metric.ExponentialHistogram().AggregationTemporality() - } - - tsm.mark = true - tsi, ok := tsm.tsiMap[key] - if !ok { - tsi = ×eriesInfo{} - tsm.tsiMap[key] = tsi - } - tsi.mark = true - return tsi, ok -} - -// Create a unique string signature for attributes values sorted by attribute keys. -func getAttributesSignature(m pcommon.Map) [16]byte { - clearedMap := pcommon.NewMap() - for k, attrValue := range m.All() { - value := attrValue.Str() - if value != "" { - clearedMap.PutStr(k, value) - } - } - return pdatautil.MapHash(clearedMap) -} - -// Remove timeseries that have aged out. -func (tsm *timeseriesMap) gc() { - tsm.Lock() - defer tsm.Unlock() - // this shouldn't happen under the current gc() strategy - if !tsm.mark { - return - } - for ts, tsi := range tsm.tsiMap { - if !tsi.mark { - delete(tsm.tsiMap, ts) - } else { - tsi.mark = false - } - } - tsm.mark = false -} - -func newTimeseriesMap() *timeseriesMap { - return ×eriesMap{mark: true, tsiMap: map[timeseriesKey]*timeseriesInfo{}} -} - -// JobsMap maps from a job instance to a map of timeseries instances for the job. -type JobsMap struct { - sync.RWMutex - // The mutex is used to protect access to the member fields. It is acquired for most of - // get() and also acquired by gc(). - - gcInterval time.Duration - lastGC time.Time - jobsMap map[string]*timeseriesMap -} - -// NewJobsMap creates a new (empty) JobsMap. -func NewJobsMap(gcInterval time.Duration) *JobsMap { - return &JobsMap{gcInterval: gcInterval, lastGC: time.Now(), jobsMap: make(map[string]*timeseriesMap)} -} - -// Remove jobs and timeseries that have aged out. -func (jm *JobsMap) gc() { - jm.Lock() - defer jm.Unlock() - // once the structure is locked, confirm that gc() is still necessary - if time.Since(jm.lastGC) > jm.gcInterval { - for sig, tsm := range jm.jobsMap { - tsm.RLock() - tsmNotMarked := !tsm.mark - // take a read lock here, no need to get a full lock as we have a lock on the JobsMap - tsm.RUnlock() - if tsmNotMarked { - delete(jm.jobsMap, sig) - } else { - // a full lock will be obtained in here, if required. - tsm.gc() - } - } - jm.lastGC = time.Now() - } -} - -func (jm *JobsMap) maybeGC() { - // speculatively check if gc() is necessary, recheck once the structure is locked - jm.RLock() - defer jm.RUnlock() - if time.Since(jm.lastGC) > jm.gcInterval { - go jm.gc() - } -} - -func (jm *JobsMap) get(job, instance string) *timeseriesMap { - sig := job + ":" + instance - // a read lock is taken here as we will not need to modify jobsMap if the target timeseriesMap is available. - jm.RLock() - tsm, ok := jm.jobsMap[sig] - jm.RUnlock() - defer jm.maybeGC() - if ok { - return tsm - } - jm.Lock() - defer jm.Unlock() - // Now that we've got an exclusive lock, check once more to ensure an entry wasn't created in the interim - // and then create a new timeseriesMap if required. - tsm2, ok2 := jm.jobsMap[sig] - if ok2 { - return tsm2 - } - tsm2 = newTimeseriesMap() - jm.jobsMap[sig] = tsm2 - return tsm2 -} - -type MetricsAdjuster interface { - AdjustMetrics(metrics pmetric.Metrics) error -} - -// initialPointAdjuster takes a map from a metric instance to the initial point in the metrics instance -// and provides AdjustMetricSlice, which takes a sequence of metrics and adjust their start times based on -// the initial points. -type initialPointAdjuster struct { - jobsMap *JobsMap - logger *zap.Logger - useCreatedMetric bool - // usePointTimeForReset forces the adjuster to use the timestamp of the - // point instead of the start timestamp when it detects resets. This is - // useful when this adjuster is used after another adjuster that - // pre-populated start times. - usePointTimeForReset bool -} - -// NewInitialPointAdjuster returns a new MetricsAdjuster that adjust metrics' start times based on the initial received points. -func NewInitialPointAdjuster(logger *zap.Logger, gcInterval time.Duration, useCreatedMetric bool) MetricsAdjuster { - return &initialPointAdjuster{ - jobsMap: NewJobsMap(gcInterval), - logger: logger, - useCreatedMetric: useCreatedMetric, - } -} - -// AdjustMetrics takes a sequence of metrics and adjust their start times based on the initial and -// previous points in the timeseriesMap. -func (a *initialPointAdjuster) AdjustMetrics(metrics pmetric.Metrics) error { - if removeStartTimeAdjustment.IsEnabled() { - return nil - } - for i := 0; i < metrics.ResourceMetrics().Len(); i++ { - rm := metrics.ResourceMetrics().At(i) - _, found := rm.Resource().Attributes().Get(string(semconv.ServiceNameKey)) - if !found { - return errors.New("adjusting metrics without job") - } - - _, found = rm.Resource().Attributes().Get(string(semconv.ServiceInstanceIDKey)) - if !found { - return errors.New("adjusting metrics without instance") - } - } - - for i := 0; i < metrics.ResourceMetrics().Len(); i++ { - rm := metrics.ResourceMetrics().At(i) - job, _ := rm.Resource().Attributes().Get(string(semconv.ServiceNameKey)) - instance, _ := rm.Resource().Attributes().Get(string(semconv.ServiceInstanceIDKey)) - tsm := a.jobsMap.get(job.Str(), instance.Str()) - - // The lock on the relevant timeseriesMap is held throughout the adjustment process to ensure that - // nothing else can modify the data used for adjustment. - tsm.Lock() - for j := 0; j < rm.ScopeMetrics().Len(); j++ { - ilm := rm.ScopeMetrics().At(j) - for k := 0; k < ilm.Metrics().Len(); k++ { - metric := ilm.Metrics().At(k) - switch dataType := metric.Type(); dataType { - case pmetric.MetricTypeGauge: - // gauges don't need to be adjusted so no additional processing is necessary - - case pmetric.MetricTypeHistogram: - a.adjustMetricHistogram(tsm, metric) - - case pmetric.MetricTypeSummary: - a.adjustMetricSummary(tsm, metric) - - case pmetric.MetricTypeSum: - a.adjustMetricSum(tsm, metric) - - case pmetric.MetricTypeExponentialHistogram: - a.adjustMetricExponentialHistogram(tsm, metric) - - default: - // this shouldn't happen - a.logger.Info("Adjust - skipping unexpected point", zap.String("type", dataType.String())) - } - } - } - tsm.Unlock() - } - return nil -} - -func (a *initialPointAdjuster) adjustMetricHistogram(tsm *timeseriesMap, current pmetric.Metric) { - histogram := current.Histogram() - if histogram.AggregationTemporality() != pmetric.AggregationTemporalityCumulative { - // Only dealing with CumulativeDistributions. - return - } - - currentPoints := histogram.DataPoints() - for i := 0; i < currentPoints.Len(); i++ { - currentDist := currentPoints.At(i) - - // start timestamp was set from _created - if a.useCreatedMetric && - !currentDist.Flags().NoRecordedValue() && - currentDist.StartTimestamp() < currentDist.Timestamp() { - continue - } - - tsi, found := tsm.get(current, currentDist.Attributes()) - if !found { - // initialize everything. - tsi.histogram.startTime = currentDist.StartTimestamp() - tsi.histogram.previousCount = currentDist.Count() - tsi.histogram.previousSum = currentDist.Sum() - continue - } - - if currentDist.Flags().NoRecordedValue() { - // TODO: Investigate why this does not reset. - currentDist.SetStartTimestamp(tsi.histogram.startTime) - continue - } - - if currentDist.Count() < tsi.histogram.previousCount || currentDist.Sum() < tsi.histogram.previousSum { - // reset re-initialize everything. - tsi.histogram.startTime = currentDist.StartTimestamp() - if a.usePointTimeForReset { - tsi.histogram.startTime = currentDist.Timestamp() - currentDist.SetStartTimestamp(tsi.histogram.startTime) - } - tsi.histogram.previousCount = currentDist.Count() - tsi.histogram.previousSum = currentDist.Sum() - continue - } - - // Update only previous values. - tsi.histogram.previousCount = currentDist.Count() - tsi.histogram.previousSum = currentDist.Sum() - currentDist.SetStartTimestamp(tsi.histogram.startTime) - } -} - -func (a *initialPointAdjuster) adjustMetricExponentialHistogram(tsm *timeseriesMap, current pmetric.Metric) { - histogram := current.ExponentialHistogram() - if histogram.AggregationTemporality() != pmetric.AggregationTemporalityCumulative { - // Only dealing with CumulativeDistributions. - return - } - - currentPoints := histogram.DataPoints() - for i := 0; i < currentPoints.Len(); i++ { - currentDist := currentPoints.At(i) - - // start timestamp was set from _created - if a.useCreatedMetric && - !currentDist.Flags().NoRecordedValue() && - currentDist.StartTimestamp() < currentDist.Timestamp() { - continue - } - - tsi, found := tsm.get(current, currentDist.Attributes()) - if !found { - // initialize everything. - tsi.histogram.startTime = currentDist.StartTimestamp() - tsi.histogram.previousCount = currentDist.Count() - tsi.histogram.previousSum = currentDist.Sum() - continue - } - - if currentDist.Flags().NoRecordedValue() { - // TODO: Investigate why this does not reset. - currentDist.SetStartTimestamp(tsi.histogram.startTime) - continue - } - - if currentDist.Count() < tsi.histogram.previousCount || currentDist.Sum() < tsi.histogram.previousSum { - // reset re-initialize everything. - tsi.histogram.startTime = currentDist.StartTimestamp() - if a.usePointTimeForReset { - tsi.histogram.startTime = currentDist.Timestamp() - currentDist.SetStartTimestamp(tsi.histogram.startTime) - } - tsi.histogram.previousCount = currentDist.Count() - tsi.histogram.previousSum = currentDist.Sum() - continue - } - - // Update only previous values. - tsi.histogram.previousCount = currentDist.Count() - tsi.histogram.previousSum = currentDist.Sum() - currentDist.SetStartTimestamp(tsi.histogram.startTime) - } -} - -func (a *initialPointAdjuster) adjustMetricSum(tsm *timeseriesMap, current pmetric.Metric) { - currentPoints := current.Sum().DataPoints() - for i := 0; i < currentPoints.Len(); i++ { - currentSum := currentPoints.At(i) - - // start timestamp was set from _created - if a.useCreatedMetric && - !currentSum.Flags().NoRecordedValue() && - currentSum.StartTimestamp() < currentSum.Timestamp() { - continue - } - - tsi, found := tsm.get(current, currentSum.Attributes()) - if !found { - // initialize everything. - tsi.number.startTime = currentSum.StartTimestamp() - tsi.number.previousValue = currentSum.DoubleValue() - continue - } - - if currentSum.Flags().NoRecordedValue() { - // TODO: Investigate why this does not reset. - currentSum.SetStartTimestamp(tsi.number.startTime) - continue - } - - if currentSum.DoubleValue() < tsi.number.previousValue { - // reset re-initialize everything. - tsi.number.startTime = currentSum.StartTimestamp() - if a.usePointTimeForReset { - tsi.number.startTime = currentSum.Timestamp() - currentSum.SetStartTimestamp(tsi.number.startTime) - } - tsi.number.previousValue = currentSum.DoubleValue() - continue - } - - // Update only previous values. - tsi.number.previousValue = currentSum.DoubleValue() - currentSum.SetStartTimestamp(tsi.number.startTime) - } -} - -func (a *initialPointAdjuster) adjustMetricSummary(tsm *timeseriesMap, current pmetric.Metric) { - currentPoints := current.Summary().DataPoints() - - for i := 0; i < currentPoints.Len(); i++ { - currentSummary := currentPoints.At(i) - - // start timestamp was set from _created - if a.useCreatedMetric && - !currentSummary.Flags().NoRecordedValue() && - currentSummary.StartTimestamp() < currentSummary.Timestamp() { - continue - } - - tsi, found := tsm.get(current, currentSummary.Attributes()) - if !found { - // initialize everything. - tsi.summary.startTime = currentSummary.StartTimestamp() - tsi.summary.previousCount = currentSummary.Count() - tsi.summary.previousSum = currentSummary.Sum() - continue - } - - if currentSummary.Flags().NoRecordedValue() { - // TODO: Investigate why this does not reset. - currentSummary.SetStartTimestamp(tsi.summary.startTime) - continue - } - - if (currentSummary.Count() != 0 && - tsi.summary.previousCount != 0 && - currentSummary.Count() < tsi.summary.previousCount) || - (currentSummary.Sum() != 0 && - tsi.summary.previousSum != 0 && - currentSummary.Sum() < tsi.summary.previousSum) { - // reset re-initialize everything. - tsi.summary.startTime = currentSummary.StartTimestamp() - if a.usePointTimeForReset { - tsi.summary.startTime = currentSummary.Timestamp() - currentSummary.SetStartTimestamp(tsi.summary.startTime) - } - tsi.summary.previousCount = currentSummary.Count() - tsi.summary.previousSum = currentSummary.Sum() - continue - } - - // Update only previous values. - tsi.summary.previousCount = currentSummary.Count() - tsi.summary.previousSum = currentSummary.Sum() - currentSummary.SetStartTimestamp(tsi.summary.startTime) - } -} diff --git a/otelcollector/prometheusreceiver/internal/metrics_adjuster_test.go b/otelcollector/prometheusreceiver/internal/metrics_adjuster_test.go deleted file mode 100644 index d9bc7e2bd..000000000 --- a/otelcollector/prometheusreceiver/internal/metrics_adjuster_test.go +++ /dev/null @@ -1,793 +0,0 @@ -// Copyright The OpenTelemetry Authors -// SPDX-License-Identifier: Apache-2.0 - -package internal - -import ( - "testing" - "time" - - "github.com/stretchr/testify/assert" - "go.opentelemetry.io/collector/pdata/pcommon" - "go.opentelemetry.io/collector/pdata/pmetric" - semconv "go.opentelemetry.io/otel/semconv/v1.27.0" - "go.uber.org/zap" -) - -var ( - tUnknown = timestampFromMs(0) - t1 = timestampFromMs(1) - t2 = timestampFromMs(2) - t3 = timestampFromMs(3) - t4 = timestampFromMs(4) - t5 = timestampFromMs(5) - - bounds0 = []float64{1, 2, 4} - percent0 = []float64{10, 50, 90} - - sum1 = "sum1" - sum2 = "sum2" - gauge1 = "gauge1" - histogram1 = "histogram1" - summary1 = "summary1" - exponentialHistogram1 = "exponentialHistogram1" - - k1v1k2v2 = []*kv{ - {"k1", "v1"}, - {"k2", "v2"}, - } - - k1v10k2v20 = []*kv{ - {"k1", "v10"}, - {"k2", "v20"}, - } - - k1v100k2v200 = []*kv{ - {"k1", "v100"}, - {"k2", "v200"}, - } - - emptyLabels []*kv - k1vEmpty = []*kv{{"k1", ""}} - k1vEmptyk2vEmptyk3vEmpty = []*kv{{"k1", ""}, {"k2", ""}, {"k3", ""}} -) - -func TestGauge(t *testing.T) { - script := []*metricsAdjusterTest{ - { - description: "Gauge: round 1 - gauge not adjusted", - metrics: metrics(gaugeMetric(gauge1, doublePoint(k1v1k2v2, t1, t1, 44))), - adjusted: metrics(gaugeMetric(gauge1, doublePoint(k1v1k2v2, t1, t1, 44))), - }, - { - description: "Gauge: round 2 - gauge not adjusted", - metrics: metrics(gaugeMetric(gauge1, doublePoint(k1v1k2v2, t2, t2, 66))), - adjusted: metrics(gaugeMetric(gauge1, doublePoint(k1v1k2v2, t2, t2, 66))), - }, - { - description: "Gauge: round 3 - value less than previous value - gauge is not adjusted", - metrics: metrics(gaugeMetric(gauge1, doublePoint(k1v1k2v2, t3, t3, 55))), - adjusted: metrics(gaugeMetric(gauge1, doublePoint(k1v1k2v2, t3, t3, 55))), - }, - } - runScript(t, NewInitialPointAdjuster(zap.NewNop(), time.Minute, true), "job", "0", script) -} - -func TestSum(t *testing.T) { - script := []*metricsAdjusterTest{ - { - description: "Sum: round 1 - initial instance, start time is established", - metrics: metrics(sumMetric(sum1, doublePoint(k1v1k2v2, t1, t1, 44))), - adjusted: metrics(sumMetric(sum1, doublePoint(k1v1k2v2, t1, t1, 44))), - }, - { - description: "Sum: round 2 - instance adjusted based on round 1", - metrics: metrics(sumMetric(sum1, doublePoint(k1v1k2v2, t2, t2, 66))), - adjusted: metrics(sumMetric(sum1, doublePoint(k1v1k2v2, t1, t2, 66))), - }, - { - description: "Sum: round 3 - instance reset (value less than previous value), start time is reset", - metrics: metrics(sumMetric(sum1, doublePoint(k1v1k2v2, t3, t3, 55))), - adjusted: metrics(sumMetric(sum1, doublePoint(k1v1k2v2, t3, t3, 55))), - }, - { - description: "Sum: round 4 - instance adjusted based on round 3", - metrics: metrics(sumMetric(sum1, doublePoint(k1v1k2v2, t4, t4, 72))), - adjusted: metrics(sumMetric(sum1, doublePoint(k1v1k2v2, t3, t4, 72))), - }, - { - description: "Sum: round 5 - instance adjusted based on round 4", - metrics: metrics(sumMetric(sum1, doublePoint(k1v1k2v2, t5, t5, 72))), - adjusted: metrics(sumMetric(sum1, doublePoint(k1v1k2v2, t3, t5, 72))), - }, - } - runScript(t, NewInitialPointAdjuster(zap.NewNop(), time.Minute, true), "job", "0", script) -} - -func TestSumWithDifferentResources(t *testing.T) { - script := []*metricsAdjusterTest{ - { - description: "Sum: round 1 - initial instance, start time is established", - metrics: metricsFromResourceMetrics(resourceMetrics("job1", "instance1", sumMetric(sum1, doublePoint(k1v1k2v2, t1, t1, 44))), resourceMetrics("job2", "instance2", sumMetric(sum2, doublePoint(k1v1k2v2, t1, t1, 44)))), - adjusted: metricsFromResourceMetrics(resourceMetrics("job1", "instance1", sumMetric(sum1, doublePoint(k1v1k2v2, t1, t1, 44))), resourceMetrics("job2", "instance2", sumMetric(sum2, doublePoint(k1v1k2v2, t1, t1, 44)))), - }, - { - description: "Sum: round 2 - instance adjusted based on round 1 (metrics in different order)", - metrics: metricsFromResourceMetrics(resourceMetrics("job2", "instance2", sumMetric(sum2, doublePoint(k1v1k2v2, t2, t2, 66))), resourceMetrics("job1", "instance1", sumMetric(sum1, doublePoint(k1v1k2v2, t2, t2, 66)))), - adjusted: metricsFromResourceMetrics(resourceMetrics("job2", "instance2", sumMetric(sum2, doublePoint(k1v1k2v2, t1, t2, 66))), resourceMetrics("job1", "instance1", sumMetric(sum1, doublePoint(k1v1k2v2, t1, t2, 66)))), - }, - { - description: "Sum: round 3 - instance reset (value less than previous value), start time is reset", - metrics: metricsFromResourceMetrics(resourceMetrics("job1", "instance1", sumMetric(sum1, doublePoint(k1v1k2v2, t3, t3, 55))), resourceMetrics("job2", "instance2", sumMetric(sum2, doublePoint(k1v1k2v2, t3, t3, 55)))), - adjusted: metricsFromResourceMetrics(resourceMetrics("job1", "instance1", sumMetric(sum1, doublePoint(k1v1k2v2, t3, t3, 55))), resourceMetrics("job2", "instance2", sumMetric(sum2, doublePoint(k1v1k2v2, t3, t3, 55)))), - }, - { - description: "Sum: round 4 - instance adjusted based on round 3", - metrics: metricsFromResourceMetrics(resourceMetrics("job1", "instance1", sumMetric(sum1, doublePoint(k1v1k2v2, t4, t4, 72))), resourceMetrics("job2", "instance2", sumMetric(sum2, doublePoint(k1v1k2v2, t4, t4, 72)))), - adjusted: metricsFromResourceMetrics(resourceMetrics("job1", "instance1", sumMetric(sum1, doublePoint(k1v1k2v2, t3, t4, 72))), resourceMetrics("job2", "instance2", sumMetric(sum2, doublePoint(k1v1k2v2, t3, t4, 72)))), - }, - { - description: "Sum: round 5 - instance adjusted based on round 4, sum2 metric resets but sum1 doesn't", - metrics: metricsFromResourceMetrics(resourceMetrics("job1", "instance1", sumMetric(sum1, doublePoint(k1v1k2v2, t5, t5, 72))), resourceMetrics("job2", "instance2", sumMetric(sum2, doublePoint(k1v1k2v2, t5, t5, 10)))), - adjusted: metricsFromResourceMetrics(resourceMetrics("job1", "instance1", sumMetric(sum1, doublePoint(k1v1k2v2, t3, t5, 72))), resourceMetrics("job2", "instance2", sumMetric(sum2, doublePoint(k1v1k2v2, t5, t5, 10)))), - }, - } - runScript(t, NewInitialPointAdjuster(zap.NewNop(), time.Minute, true), "job", "0", script) -} - -func TestSummaryNoCount(t *testing.T) { - script := []*metricsAdjusterTest{ - { - description: "Summary No Count: round 1 - initial instance, start time is established", - metrics: metrics(summaryMetric(summary1, summaryPoint(k1v1k2v2, t1, t1, 0, 40, percent0, []float64{1, 5, 8}))), - adjusted: metrics(summaryMetric(summary1, summaryPoint(k1v1k2v2, t1, t1, 0, 40, percent0, []float64{1, 5, 8}))), - }, - { - description: "Summary No Count: round 2 - instance adjusted based on round 1", - metrics: metrics(summaryMetric(summary1, summaryPoint(k1v1k2v2, t2, t2, 0, 70, percent0, []float64{7, 44, 9}))), - adjusted: metrics(summaryMetric(summary1, summaryPoint(k1v1k2v2, t1, t2, 0, 70, percent0, []float64{7, 44, 9}))), - }, - { - description: "Summary No Count: round 3 - instance reset (count less than previous), start time is reset", - metrics: metrics(summaryMetric(summary1, summaryPoint(k1v1k2v2, t3, t3, 0, 66, percent0, []float64{3, 22, 5}))), - adjusted: metrics(summaryMetric(summary1, summaryPoint(k1v1k2v2, t3, t3, 0, 66, percent0, []float64{3, 22, 5}))), - }, - { - description: "Summary No Count: round 4 - instance adjusted based on round 3", - metrics: metrics(summaryMetric(summary1, summaryPoint(k1v1k2v2, t4, t4, 0, 96, percent0, []float64{9, 47, 8}))), - adjusted: metrics(summaryMetric(summary1, summaryPoint(k1v1k2v2, t3, t4, 0, 96, percent0, []float64{9, 47, 8}))), - }, - } - - runScript(t, NewInitialPointAdjuster(zap.NewNop(), time.Minute, true), "job", "0", script) -} - -func TestSummaryFlagNoRecordedValue(t *testing.T) { - script := []*metricsAdjusterTest{ - { - description: "Summary No Count: round 1 - initial instance, start time is established", - metrics: metrics(summaryMetric(summary1, summaryPoint(k1v1k2v2, t1, t1, 0, 40, percent0, []float64{1, 5, 8}))), - adjusted: metrics(summaryMetric(summary1, summaryPoint(k1v1k2v2, t1, t1, 0, 40, percent0, []float64{1, 5, 8}))), - }, - { - description: "Summary Flag NoRecordedValue: round 2 - instance adjusted based on round 1", - metrics: metrics(summaryMetric(summary1, summaryPointNoValue(k1v1k2v2, t2, t2))), - adjusted: metrics(summaryMetric(summary1, summaryPointNoValue(k1v1k2v2, t1, t2))), - }, - } - - runScript(t, NewInitialPointAdjuster(zap.NewNop(), time.Minute, true), "job", "0", script) -} - -func TestSummary(t *testing.T) { - script := []*metricsAdjusterTest{ - { - description: "Summary: round 1 - initial instance, start time is established", - metrics: metrics( - summaryMetric(summary1, summaryPoint(k1v1k2v2, t1, t1, 10, 40, percent0, []float64{1, 5, 8})), - ), - adjusted: metrics( - summaryMetric(summary1, summaryPoint(k1v1k2v2, t1, t1, 10, 40, percent0, []float64{1, 5, 8})), - ), - }, - { - description: "Summary: round 2 - instance adjusted based on round 1", - metrics: metrics( - summaryMetric(summary1, summaryPoint(k1v1k2v2, t2, t2, 15, 70, percent0, []float64{7, 44, 9})), - ), - adjusted: metrics( - summaryMetric(summary1, summaryPoint(k1v1k2v2, t1, t2, 15, 70, percent0, []float64{7, 44, 9})), - ), - }, - { - description: "Summary: round 3 - instance reset (count less than previous), start time is reset", - metrics: metrics( - summaryMetric(summary1, summaryPoint(k1v1k2v2, t3, t3, 12, 66, percent0, []float64{3, 22, 5})), - ), - adjusted: metrics( - summaryMetric(summary1, summaryPoint(k1v1k2v2, t3, t3, 12, 66, percent0, []float64{3, 22, 5})), - ), - }, - { - description: "Summary: round 4 - instance adjusted based on round 3", - metrics: metrics( - summaryMetric(summary1, summaryPoint(k1v1k2v2, t4, t4, 14, 96, percent0, []float64{9, 47, 8})), - ), - adjusted: metrics( - summaryMetric(summary1, summaryPoint(k1v1k2v2, t3, t4, 14, 96, percent0, []float64{9, 47, 8})), - ), - }, - } - - runScript(t, NewInitialPointAdjuster(zap.NewNop(), time.Minute, true), "job", "0", script) -} - -func TestHistogram(t *testing.T) { - script := []*metricsAdjusterTest{ - { - description: "Histogram: round 1 - initial instance, start time is established", - metrics: metrics(histogramMetric(histogram1, histogramPoint(k1v1k2v2, t1, t1, bounds0, []uint64{4, 2, 3, 7}))), - adjusted: metrics(histogramMetric(histogram1, histogramPoint(k1v1k2v2, t1, t1, bounds0, []uint64{4, 2, 3, 7}))), - }, { - description: "Histogram: round 2 - instance adjusted based on round 1", - metrics: metrics(histogramMetric(histogram1, histogramPoint(k1v1k2v2, t2, t2, bounds0, []uint64{6, 3, 4, 8}))), - adjusted: metrics(histogramMetric(histogram1, histogramPoint(k1v1k2v2, t1, t2, bounds0, []uint64{6, 3, 4, 8}))), - }, { - description: "Histogram: round 3 - instance reset (value less than previous value), start time is reset", - metrics: metrics(histogramMetric(histogram1, histogramPoint(k1v1k2v2, t3, t3, bounds0, []uint64{5, 3, 2, 7}))), - adjusted: metrics(histogramMetric(histogram1, histogramPoint(k1v1k2v2, t3, t3, bounds0, []uint64{5, 3, 2, 7}))), - }, { - description: "Histogram: round 4 - instance adjusted based on round 3", - metrics: metrics(histogramMetric(histogram1, histogramPoint(k1v1k2v2, t4, t4, bounds0, []uint64{7, 4, 2, 12}))), - adjusted: metrics(histogramMetric(histogram1, histogramPoint(k1v1k2v2, t3, t4, bounds0, []uint64{7, 4, 2, 12}))), - }, - } - runScript(t, NewInitialPointAdjuster(zap.NewNop(), time.Minute, true), "job", "0", script) -} - -func TestHistogramFlagNoRecordedValue(t *testing.T) { - script := []*metricsAdjusterTest{ - { - description: "Histogram: round 1 - initial instance, start time is established", - metrics: metrics(histogramMetric(histogram1, histogramPoint(k1v1k2v2, t1, t1, bounds0, []uint64{7, 4, 2, 12}))), - adjusted: metrics(histogramMetric(histogram1, histogramPoint(k1v1k2v2, t1, t1, bounds0, []uint64{7, 4, 2, 12}))), - }, - { - description: "Histogram: round 2 - instance adjusted based on round 1", - metrics: metrics(histogramMetric(histogram1, histogramPointNoValue(k1v1k2v2, tUnknown, t2))), - adjusted: metrics(histogramMetric(histogram1, histogramPointNoValue(k1v1k2v2, t1, t2))), - }, - } - - runScript(t, NewInitialPointAdjuster(zap.NewNop(), time.Minute, true), "job", "0", script) -} - -func TestHistogramFlagNoRecordedValueFirstObservation(t *testing.T) { - script := []*metricsAdjusterTest{ - { - description: "Histogram: round 1 - initial instance, start time is unknown", - metrics: metrics(histogramMetric(histogram1, histogramPointNoValue(k1v1k2v2, tUnknown, t1))), - adjusted: metrics(histogramMetric(histogram1, histogramPointNoValue(k1v1k2v2, tUnknown, t1))), - }, - { - description: "Histogram: round 2 - instance unchanged", - metrics: metrics(histogramMetric(histogram1, histogramPointNoValue(k1v1k2v2, tUnknown, t2))), - adjusted: metrics(histogramMetric(histogram1, histogramPointNoValue(k1v1k2v2, tUnknown, t2))), - }, - } - - runScript(t, NewInitialPointAdjuster(zap.NewNop(), time.Minute, true), "job", "0", script) -} - -// In TestExponentHistogram we exclude negative buckets on purpose as they are -// not considered the main use case - response times that are most commonly -// observed are never negative. Negative buckets would make the Sum() non -// monotonic and cause unexpected resets. -func TestExponentialHistogram(t *testing.T) { - script := []*metricsAdjusterTest{ - { - description: "Exponential Histogram: round 1 - initial instance, start time is established", - metrics: metrics(exponentialHistogramMetric(exponentialHistogram1, exponentialHistogramPoint(k1v1k2v2, t1, t1, 3, 1, 0, []uint64{}, -2, []uint64{4, 2, 3, 7}))), - adjusted: metrics(exponentialHistogramMetric(exponentialHistogram1, exponentialHistogramPoint(k1v1k2v2, t1, t1, 3, 1, 0, []uint64{}, -2, []uint64{4, 2, 3, 7}))), - }, { - description: "Exponential Histogram: round 2 - instance adjusted based on round 1", - metrics: metrics(exponentialHistogramMetric(exponentialHistogram1, exponentialHistogramPoint(k1v1k2v2, t2, t2, 3, 1, 0, []uint64{}, -2, []uint64{6, 2, 3, 7}))), - adjusted: metrics(exponentialHistogramMetric(exponentialHistogram1, exponentialHistogramPoint(k1v1k2v2, t1, t2, 3, 1, 0, []uint64{}, -2, []uint64{6, 2, 3, 7}))), - }, { - description: "Exponential Histogram: round 3 - instance reset (value less than previous value), start time is reset", - metrics: metrics(exponentialHistogramMetric(histogram1, exponentialHistogramPoint(k1v1k2v2, t3, t3, 3, 1, 0, []uint64{}, -2, []uint64{5, 3, 2, 7}))), - adjusted: metrics(exponentialHistogramMetric(histogram1, exponentialHistogramPoint(k1v1k2v2, t3, t3, 3, 1, 0, []uint64{}, -2, []uint64{5, 3, 2, 7}))), - }, { - description: "Exponential Histogram: round 4 - instance adjusted based on round 3", - metrics: metrics(exponentialHistogramMetric(histogram1, exponentialHistogramPoint(k1v1k2v2, t4, t4, 3, 1, 0, []uint64{}, -2, []uint64{7, 4, 2, 12}))), - adjusted: metrics(exponentialHistogramMetric(histogram1, exponentialHistogramPoint(k1v1k2v2, t3, t4, 3, 1, 0, []uint64{}, -2, []uint64{7, 4, 2, 12}))), - }, - } - runScript(t, NewInitialPointAdjuster(zap.NewNop(), time.Minute, true), "job", "0", script) -} - -func TestExponentialHistogramFlagNoRecordedValue(t *testing.T) { - script := []*metricsAdjusterTest{ - { - description: "Histogram: round 1 - initial instance, start time is established", - metrics: metrics(exponentialHistogramMetric(histogram1, exponentialHistogramPoint(k1v1k2v2, t1, t1, 0, 2, 2, []uint64{7, 4, 2, 12}, 3, []uint64{}))), - adjusted: metrics(exponentialHistogramMetric(histogram1, exponentialHistogramPoint(k1v1k2v2, t1, t1, 0, 2, 2, []uint64{7, 4, 2, 12}, 3, []uint64{}))), - }, - { - description: "Histogram: round 2 - instance adjusted based on round 1", - metrics: metrics(exponentialHistogramMetric(histogram1, exponentialHistogramPointNoValue(k1v1k2v2, tUnknown, t2))), - adjusted: metrics(exponentialHistogramMetric(histogram1, exponentialHistogramPointNoValue(k1v1k2v2, t1, t2))), - }, - } - - runScript(t, NewInitialPointAdjuster(zap.NewNop(), time.Minute, true), "job", "0", script) -} - -func TestExponentialHistogramFlagNoRecordedValueFirstObservation(t *testing.T) { - script := []*metricsAdjusterTest{ - { - description: "Histogram: round 1 - initial instance, start time is unknown", - metrics: metrics(exponentialHistogramMetric(histogram1, exponentialHistogramPointNoValue(k1v1k2v2, tUnknown, t1))), - adjusted: metrics(exponentialHistogramMetric(histogram1, exponentialHistogramPointNoValue(k1v1k2v2, tUnknown, t1))), - }, - { - description: "Histogram: round 2 - instance unchanged", - metrics: metrics(exponentialHistogramMetric(histogram1, exponentialHistogramPointNoValue(k1v1k2v2, tUnknown, t2))), - adjusted: metrics(exponentialHistogramMetric(histogram1, exponentialHistogramPointNoValue(k1v1k2v2, tUnknown, t2))), - }, - } - - runScript(t, NewInitialPointAdjuster(zap.NewNop(), time.Minute, true), "job", "0", script) -} - -func TestSummaryFlagNoRecordedValueFirstObservation(t *testing.T) { - script := []*metricsAdjusterTest{ - { - description: "Summary: round 1 - initial instance, start time is unknown", - metrics: metrics(summaryMetric(summary1, summaryPointNoValue(k1v1k2v2, tUnknown, t1))), - adjusted: metrics(summaryMetric(summary1, summaryPointNoValue(k1v1k2v2, tUnknown, t1))), - }, - { - description: "Summary: round 2 - instance unchanged", - metrics: metrics(summaryMetric(summary1, summaryPointNoValue(k1v1k2v2, tUnknown, t2))), - adjusted: metrics(summaryMetric(summary1, summaryPointNoValue(k1v1k2v2, tUnknown, t2))), - }, - } - - runScript(t, NewInitialPointAdjuster(zap.NewNop(), time.Minute, true), "job", "0", script) -} - -func TestGaugeFlagNoRecordedValueFirstObservation(t *testing.T) { - script := []*metricsAdjusterTest{ - { - description: "Gauge: round 1 - initial instance, start time is unknown", - metrics: metrics(gaugeMetric(gauge1, doublePointNoValue(k1v1k2v2, tUnknown, t1))), - adjusted: metrics(gaugeMetric(gauge1, doublePointNoValue(k1v1k2v2, tUnknown, t1))), - }, - { - description: "Gauge: round 2 - instance unchanged", - metrics: metrics(gaugeMetric(gauge1, doublePointNoValue(k1v1k2v2, tUnknown, t2))), - adjusted: metrics(gaugeMetric(gauge1, doublePointNoValue(k1v1k2v2, tUnknown, t2))), - }, - } - - runScript(t, NewInitialPointAdjuster(zap.NewNop(), time.Minute, true), "job", "0", script) -} - -func TestSumFlagNoRecordedValueFirstObservation(t *testing.T) { - script := []*metricsAdjusterTest{ - { - description: "Sum: round 1 - initial instance, start time is unknown", - metrics: metrics(sumMetric("sum1", doublePointNoValue(k1v1k2v2, tUnknown, t1))), - adjusted: metrics(sumMetric("sum1", doublePointNoValue(k1v1k2v2, tUnknown, t1))), - }, - { - description: "Sum: round 2 - instance unchanged", - metrics: metrics(sumMetric("sum1", doublePointNoValue(k1v1k2v2, tUnknown, t2))), - adjusted: metrics(sumMetric("sum1", doublePointNoValue(k1v1k2v2, tUnknown, t2))), - }, - } - - runScript(t, NewInitialPointAdjuster(zap.NewNop(), time.Minute, true), "job", "0", script) -} - -func TestMultiMetrics(t *testing.T) { - script := []*metricsAdjusterTest{ - { - description: "MultiMetrics: round 1 - combined round 1 of individual metrics", - metrics: metrics( - gaugeMetric(gauge1, doublePoint(k1v1k2v2, t1, t1, 44)), - sumMetric(sum1, doublePoint(k1v1k2v2, t1, t1, 44)), - histogramMetric(histogram1, histogramPoint(k1v1k2v2, t1, t1, bounds0, []uint64{4, 2, 3, 7})), - summaryMetric(summary1, summaryPoint(k1v1k2v2, t1, t1, 10, 40, percent0, []float64{1, 5, 8})), - ), - adjusted: metrics( - gaugeMetric(gauge1, doublePoint(k1v1k2v2, t1, t1, 44)), - sumMetric(sum1, doublePoint(k1v1k2v2, t1, t1, 44)), - histogramMetric(histogram1, histogramPoint(k1v1k2v2, t1, t1, bounds0, []uint64{4, 2, 3, 7})), - summaryMetric(summary1, summaryPoint(k1v1k2v2, t1, t1, 10, 40, percent0, []float64{1, 5, 8})), - ), - }, - { - description: "MultiMetrics: round 2 - combined round 2 of individual metrics", - metrics: metrics( - gaugeMetric(gauge1, doublePoint(k1v1k2v2, t2, t2, 66)), - sumMetric(sum1, doublePoint(k1v1k2v2, t2, t2, 66)), - histogramMetric(histogram1, histogramPoint(k1v1k2v2, t2, t2, bounds0, []uint64{6, 3, 4, 8})), - summaryMetric(summary1, summaryPoint(k1v1k2v2, t2, t2, 15, 70, percent0, []float64{7, 44, 9})), - ), - adjusted: metrics( - gaugeMetric(gauge1, doublePoint(k1v1k2v2, t2, t2, 66)), - sumMetric(sum1, doublePoint(k1v1k2v2, t1, t2, 66)), - histogramMetric(histogram1, histogramPoint(k1v1k2v2, t1, t2, bounds0, []uint64{6, 3, 4, 8})), - summaryMetric(summary1, summaryPoint(k1v1k2v2, t1, t2, 15, 70, percent0, []float64{7, 44, 9})), - ), - }, - { - description: "MultiMetrics: round 3 - combined round 3 of individual metrics", - metrics: metrics( - gaugeMetric(gauge1, doublePoint(k1v1k2v2, t3, t3, 55)), - sumMetric(sum1, doublePoint(k1v1k2v2, t3, t3, 55)), - histogramMetric(histogram1, histogramPoint(k1v1k2v2, t3, t3, bounds0, []uint64{5, 3, 2, 7})), - summaryMetric(summary1, summaryPoint(k1v1k2v2, t3, t3, 12, 66, percent0, []float64{3, 22, 5})), - ), - adjusted: metrics( - gaugeMetric(gauge1, doublePoint(k1v1k2v2, t3, t3, 55)), - sumMetric(sum1, doublePoint(k1v1k2v2, t3, t3, 55)), - histogramMetric(histogram1, histogramPoint(k1v1k2v2, t3, t3, bounds0, []uint64{5, 3, 2, 7})), - summaryMetric(summary1, summaryPoint(k1v1k2v2, t3, t3, 12, 66, percent0, []float64{3, 22, 5})), - ), - }, - { - description: "MultiMetrics: round 4 - combined round 4 of individual metrics", - metrics: metrics( - sumMetric(sum1, doublePoint(k1v1k2v2, t4, t4, 72)), - histogramMetric(histogram1, histogramPoint(k1v1k2v2, t4, t4, bounds0, []uint64{7, 4, 2, 12})), - summaryMetric(summary1, summaryPoint(k1v1k2v2, t4, t4, 14, 96, percent0, []float64{9, 47, 8})), - ), - adjusted: metrics( - sumMetric(sum1, doublePoint(k1v1k2v2, t3, t4, 72)), - histogramMetric(histogram1, histogramPoint(k1v1k2v2, t3, t4, bounds0, []uint64{7, 4, 2, 12})), - summaryMetric(summary1, summaryPoint(k1v1k2v2, t3, t4, 14, 96, percent0, []float64{9, 47, 8})), - ), - }, - } - runScript(t, NewInitialPointAdjuster(zap.NewNop(), time.Minute, true), "job", "0", script) -} - -func TestNewDataPointsAdded(t *testing.T) { - script := []*metricsAdjusterTest{ - { - description: "New Datapoints: round 1 - two datapoints each", - metrics: metrics( - sumMetric(sum1, - doublePoint(k1v1k2v2, t1, t1, 44), - doublePoint(k1v100k2v200, t1, t1, 44)), - histogramMetric(histogram1, - histogramPoint(k1v1k2v2, t1, t1, bounds0, []uint64{4, 2, 3, 7}), - histogramPoint(k1v100k2v200, t1, t1, bounds0, []uint64{4, 2, 3, 7})), - summaryMetric(summary1, - summaryPoint(k1v1k2v2, t1, t1, 10, 40, percent0, []float64{1, 5, 8}), - summaryPoint(k1v100k2v200, t1, t1, 10, 40, percent0, []float64{1, 5, 8})), - ), - adjusted: metrics( - sumMetric(sum1, - doublePoint(k1v1k2v2, t1, t1, 44), - doublePoint(k1v100k2v200, t1, t1, 44)), - histogramMetric(histogram1, - histogramPoint(k1v1k2v2, t1, t1, bounds0, []uint64{4, 2, 3, 7}), - histogramPoint(k1v100k2v200, t1, t1, bounds0, []uint64{4, 2, 3, 7})), - summaryMetric(summary1, - summaryPoint(k1v1k2v2, t1, t1, 10, 40, percent0, []float64{1, 5, 8}), - summaryPoint(k1v100k2v200, t1, t1, 10, 40, percent0, []float64{1, 5, 8})), - ), - }, - { - description: "New Datapoints: round 2 - new datapoints unchanged, old datapoints adjusted", - metrics: metrics( - sumMetric(sum1, - doublePoint(k1v1k2v2, t2, t2, 44), - doublePoint(k1v10k2v20, t2, t2, 44), - doublePoint(k1v100k2v200, t2, t2, 44)), - histogramMetric(histogram1, - histogramPoint(k1v1k2v2, t2, t2, bounds0, []uint64{4, 2, 3, 7}), - histogramPoint(k1v10k2v20, t2, t2, bounds0, []uint64{4, 2, 3, 7}), - histogramPoint(k1v100k2v200, t2, t2, bounds0, []uint64{4, 2, 3, 7})), - summaryMetric(summary1, - summaryPoint(k1v1k2v2, t2, t2, 10, 40, percent0, []float64{1, 5, 8}), - summaryPoint(k1v10k2v20, t2, t2, 10, 40, percent0, []float64{1, 5, 8}), - summaryPoint(k1v100k2v200, t2, t2, 10, 40, percent0, []float64{1, 5, 8})), - ), - adjusted: metrics( - sumMetric(sum1, - doublePoint(k1v1k2v2, t1, t2, 44), - doublePoint(k1v10k2v20, t2, t2, 44), - doublePoint(k1v100k2v200, t1, t2, 44)), - histogramMetric(histogram1, - histogramPoint(k1v1k2v2, t1, t2, bounds0, []uint64{4, 2, 3, 7}), - histogramPoint(k1v10k2v20, t2, t2, bounds0, []uint64{4, 2, 3, 7}), - histogramPoint(k1v100k2v200, t1, t2, bounds0, []uint64{4, 2, 3, 7})), - summaryMetric(summary1, - summaryPoint(k1v1k2v2, t1, t2, 10, 40, percent0, []float64{1, 5, 8}), - summaryPoint(k1v10k2v20, t2, t2, 10, 40, percent0, []float64{1, 5, 8}), - summaryPoint(k1v100k2v200, t1, t2, 10, 40, percent0, []float64{1, 5, 8})), - ), - }, - } - runScript(t, NewInitialPointAdjuster(zap.NewNop(), time.Minute, true), "job", "0", script) -} - -func TestMultiTimeseries(t *testing.T) { - script := []*metricsAdjusterTest{ - { - description: "MultiTimeseries: round 1 - initial first instance, start time is established", - metrics: metrics(sumMetric(sum1, doublePoint(k1v1k2v2, t1, t1, 44))), - adjusted: metrics(sumMetric(sum1, doublePoint(k1v1k2v2, t1, t1, 44))), - }, - { - description: "MultiTimeseries: round 2 - first instance adjusted based on round 1, initial second instance", - metrics: metrics( - sumMetric(sum1, doublePoint(k1v1k2v2, t2, t2, 66)), - sumMetric(sum1, doublePoint(k1v10k2v20, t2, t2, 20.0)), - ), - adjusted: metrics( - sumMetric(sum1, doublePoint(k1v1k2v2, t1, t2, 66)), - sumMetric(sum1, doublePoint(k1v10k2v20, t2, t2, 20.0)), - ), - }, - { - description: "MultiTimeseries: round 3 - first instance adjusted based on round 1, second based on round 2", - metrics: metrics( - sumMetric(sum1, doublePoint(k1v1k2v2, t3, t3, 88.0)), - sumMetric(sum1, doublePoint(k1v10k2v20, t3, t3, 49.0)), - ), - adjusted: metrics( - sumMetric(sum1, doublePoint(k1v1k2v2, t1, t3, 88.0)), - sumMetric(sum1, doublePoint(k1v10k2v20, t2, t3, 49.0)), - ), - }, - { - description: "MultiTimeseries: round 4 - first instance reset, second instance adjusted based on round 2, initial third instance", - metrics: metrics( - sumMetric(sum1, doublePoint(k1v1k2v2, t4, t4, 87.0)), - sumMetric(sum1, doublePoint(k1v10k2v20, t4, t4, 57.0)), - sumMetric(sum1, doublePoint(k1v100k2v200, t4, t4, 10.0)), - ), - adjusted: metrics( - sumMetric(sum1, doublePoint(k1v1k2v2, t4, t4, 87.0)), - sumMetric(sum1, doublePoint(k1v10k2v20, t2, t4, 57.0)), - sumMetric(sum1, doublePoint(k1v100k2v200, t4, t4, 10.0)), - ), - }, - { - description: "MultiTimeseries: round 5 - first instance adjusted based on round 4, second on round 2, third on round 4", - metrics: metrics( - sumMetric(sum1, doublePoint(k1v1k2v2, t5, t5, 90.0)), - sumMetric(sum1, doublePoint(k1v10k2v20, t5, t5, 65.0)), - sumMetric(sum1, doublePoint(k1v100k2v200, t5, t5, 22.0)), - ), - adjusted: metrics( - sumMetric(sum1, doublePoint(k1v1k2v2, t4, t5, 90.0)), - sumMetric(sum1, doublePoint(k1v10k2v20, t2, t5, 65.0)), - sumMetric(sum1, doublePoint(k1v100k2v200, t4, t5, 22.0)), - ), - }, - } - runScript(t, NewInitialPointAdjuster(zap.NewNop(), time.Minute, true), "job", "0", script) -} - -func TestEmptyLabels(t *testing.T) { - script := []*metricsAdjusterTest{ - { - description: "EmptyLabels: round 1 - initial instance, implicitly empty labels, start time is established", - metrics: metrics(sumMetric(sum1, doublePoint(emptyLabels, t1, t1, 44))), - adjusted: metrics(sumMetric(sum1, doublePoint(emptyLabels, t1, t1, 44))), - }, - { - description: "EmptyLabels: round 2 - instance adjusted based on round 1", - metrics: metrics(sumMetric(sum1, doublePoint(emptyLabels, t2, t2, 66))), - adjusted: metrics(sumMetric(sum1, doublePoint(emptyLabels, t1, t2, 66))), - }, - { - description: "EmptyLabels: round 3 - one explicitly empty label, instance adjusted based on round 1", - metrics: metrics(sumMetric(sum1, doublePoint(k1vEmpty, t3, t3, 77))), - adjusted: metrics(sumMetric(sum1, doublePoint(k1vEmpty, t1, t3, 77))), - }, - { - description: "EmptyLabels: round 4 - three explicitly empty labels, instance adjusted based on round 1", - metrics: metrics(sumMetric(sum1, doublePoint(k1vEmptyk2vEmptyk3vEmpty, t3, t3, 88))), - adjusted: metrics(sumMetric(sum1, doublePoint(k1vEmptyk2vEmptyk3vEmpty, t1, t3, 88))), - }, - } - runScript(t, NewInitialPointAdjuster(zap.NewNop(), time.Minute, true), "job", "0", script) -} - -func TestTsGC(t *testing.T) { - script1 := []*metricsAdjusterTest{ - { - description: "TsGC: round 1 - initial instances, start time is established", - metrics: metrics( - sumMetric(sum1, doublePoint(k1v1k2v2, t1, t1, 44)), - sumMetric(sum1, doublePoint(k1v10k2v20, t1, t1, 20)), - histogramMetric(histogram1, histogramPoint(k1v1k2v2, t1, t1, bounds0, []uint64{4, 2, 3, 7})), - histogramMetric(histogram1, histogramPoint(k1v10k2v20, t1, t1, bounds0, []uint64{40, 20, 30, 70})), - ), - adjusted: metrics( - sumMetric(sum1, doublePoint(k1v1k2v2, t1, t1, 44)), - sumMetric(sum1, doublePoint(k1v10k2v20, t1, t1, 20)), - histogramMetric(histogram1, histogramPoint(k1v1k2v2, t1, t1, bounds0, []uint64{4, 2, 3, 7})), - histogramMetric(histogram1, histogramPoint(k1v10k2v20, t1, t1, bounds0, []uint64{40, 20, 30, 70})), - ), - }, - } - - script2 := []*metricsAdjusterTest{ - { - description: "TsGC: round 2 - metrics first timeseries adjusted based on round 2, second timeseries not updated", - metrics: metrics( - sumMetric(sum1, doublePoint(k1v1k2v2, t2, t2, 88)), - histogramMetric(histogram1, histogramPoint(k1v1k2v2, t2, t2, bounds0, []uint64{8, 7, 9, 14})), - ), - adjusted: metrics( - sumMetric(sum1, doublePoint(k1v1k2v2, t1, t2, 88)), - histogramMetric(histogram1, histogramPoint(k1v1k2v2, t1, t2, bounds0, []uint64{8, 7, 9, 14})), - ), - }, - } - - script3 := []*metricsAdjusterTest{ - { - description: "TsGC: round 3 - metrics first timeseries adjusted based on round 2, second timeseries empty due to timeseries gc()", - metrics: metrics( - sumMetric(sum1, doublePoint(k1v1k2v2, t3, t3, 99)), - sumMetric(sum1, doublePoint(k1v10k2v20, t3, t3, 80)), - histogramMetric(histogram1, histogramPoint(k1v1k2v2, t3, t3, bounds0, []uint64{9, 8, 10, 15})), - histogramMetric(histogram1, histogramPoint(k1v10k2v20, t3, t3, bounds0, []uint64{55, 66, 33, 77})), - ), - adjusted: metrics( - sumMetric(sum1, doublePoint(k1v1k2v2, t1, t3, 99)), - sumMetric(sum1, doublePoint(k1v10k2v20, t3, t3, 80)), - histogramMetric(histogram1, histogramPoint(k1v1k2v2, t1, t3, bounds0, []uint64{9, 8, 10, 15})), - histogramMetric(histogram1, histogramPoint(k1v10k2v20, t3, t3, bounds0, []uint64{55, 66, 33, 77})), - ), - }, - } - - ma := NewInitialPointAdjuster(zap.NewNop(), time.Minute, true) - - // run round 1 - runScript(t, ma, "job", "0", script1) - // gc the tsmap, unmarking all entries - ma.(*initialPointAdjuster).jobsMap.get("job", "0").gc() - // run round 2 - update metrics first timeseries only - runScript(t, ma, "job", "0", script2) - // gc the tsmap, collecting umarked entries - ma.(*initialPointAdjuster).jobsMap.get("job", "0").gc() - // run round 3 - verify that metrics second timeseries have been gc'd - runScript(t, ma, "job", "0", script3) -} - -func TestJobGC(t *testing.T) { - job1Script1 := []*metricsAdjusterTest{ - { - description: "JobGC: job 1, round 1 - initial instances, adjusted should be empty", - metrics: metrics( - sumMetric(sum1, doublePoint(k1v1k2v2, t1, t1, 44)), - sumMetric(sum1, doublePoint(k1v10k2v20, t1, t1, 20)), - histogramMetric(histogram1, histogramPoint(k1v1k2v2, t1, t1, bounds0, []uint64{4, 2, 3, 7})), - histogramMetric(histogram1, histogramPoint(k1v10k2v20, t1, t1, bounds0, []uint64{40, 20, 30, 70})), - ), - adjusted: metrics( - sumMetric(sum1, doublePoint(k1v1k2v2, t1, t1, 44)), - sumMetric(sum1, doublePoint(k1v10k2v20, t1, t1, 20)), - histogramMetric(histogram1, histogramPoint(k1v1k2v2, t1, t1, bounds0, []uint64{4, 2, 3, 7})), - histogramMetric(histogram1, histogramPoint(k1v10k2v20, t1, t1, bounds0, []uint64{40, 20, 30, 70})), - ), - }, - } - - job2Script1 := []*metricsAdjusterTest{ - { - description: "JobGC: job2, round 1 - no metrics adjusted, just trigger gc", - metrics: metrics(), - adjusted: metrics(), - }, - } - - job1Script2 := []*metricsAdjusterTest{ - { - description: "JobGC: job 1, round 2 - metrics timeseries empty due to job-level gc", - metrics: metrics( - sumMetric(sum1, doublePoint(k1v1k2v2, t4, t4, 99)), - sumMetric(sum1, doublePoint(k1v10k2v20, t4, t4, 80)), - histogramMetric(histogram1, histogramPoint(k1v1k2v2, t4, t4, bounds0, []uint64{9, 8, 10, 15})), - histogramMetric(histogram1, histogramPoint(k1v10k2v20, t4, t4, bounds0, []uint64{55, 66, 33, 77})), - ), - adjusted: metrics( - sumMetric(sum1, doublePoint(k1v1k2v2, t4, t4, 99)), - sumMetric(sum1, doublePoint(k1v10k2v20, t4, t4, 80)), - histogramMetric(histogram1, histogramPoint(k1v1k2v2, t4, t4, bounds0, []uint64{9, 8, 10, 15})), - histogramMetric(histogram1, histogramPoint(k1v10k2v20, t4, t4, bounds0, []uint64{55, 66, 33, 77})), - ), - }, - } - - gcInterval := 10 * time.Millisecond - ma := NewInitialPointAdjuster(zap.NewNop(), gcInterval, true) - - // run job 1, round 1 - all entries marked - runScript(t, ma, "job1", "0", job1Script1) - // sleep longer than gcInterval to enable job gc in the next run - time.Sleep(2 * gcInterval) - // run job 2, round1 - trigger job gc, unmarking all entries - runScript(t, ma, "job1", "1", job2Script1) - // sleep longer than gcInterval to enable job gc in the next run - time.Sleep(2 * gcInterval) - // re-run job 2, round1 - trigger job gc, removing unmarked entries - runScript(t, ma, "job1", "1", job2Script1) - // ensure that at least one jobsMap.gc() completed - ma.(*initialPointAdjuster).jobsMap.gc() - // run job 1, round 2 - verify that all job 1 timeseries have been gc'd - runScript(t, ma, "job1", "0", job1Script2) -} - -type metricsAdjusterTest struct { - description string - metrics pmetric.Metrics - adjusted pmetric.Metrics -} - -func runScript(t *testing.T, ma MetricsAdjuster, job, instance string, tests []*metricsAdjusterTest) { - for _, test := range tests { - t.Run(test.description, func(t *testing.T) { - adjusted := pmetric.NewMetrics() - test.metrics.CopyTo(adjusted) - // Add the instance/job to the input metrics if they aren't already present. - for i := 0; i < adjusted.ResourceMetrics().Len(); i++ { - rm := adjusted.ResourceMetrics().At(i) - _, found := rm.Resource().Attributes().Get(string(semconv.ServiceNameKey)) - if !found { - rm.Resource().Attributes().PutStr(string(semconv.ServiceNameKey), job) - } - _, found = rm.Resource().Attributes().Get(string(semconv.ServiceInstanceIDKey)) - if !found { - rm.Resource().Attributes().PutStr(string(semconv.ServiceInstanceIDKey), instance) - } - } - assert.NoError(t, ma.AdjustMetrics(adjusted)) - - // Add the instance/job to the expected metrics as well if they aren't already present. - for i := 0; i < test.adjusted.ResourceMetrics().Len(); i++ { - rm := test.adjusted.ResourceMetrics().At(i) - _, found := rm.Resource().Attributes().Get(string(semconv.ServiceNameKey)) - if !found { - rm.Resource().Attributes().PutStr(string(semconv.ServiceNameKey), job) - } - _, found = rm.Resource().Attributes().Get(string(semconv.ServiceInstanceIDKey)) - if !found { - rm.Resource().Attributes().PutStr(string(semconv.ServiceInstanceIDKey), instance) - } - } - assert.Equal(t, test.adjusted, adjusted) - }) - } -} - -func BenchmarkGetAttributesSignature(b *testing.B) { - attrs := pcommon.NewMap() - attrs.PutStr("key1", "some-random-test-value-1") - attrs.PutStr("key2", "some-random-test-value-2") - attrs.PutStr("key6", "some-random-test-value-6") - attrs.PutStr("key3", "some-random-test-value-3") - attrs.PutStr("key4", "some-random-test-value-4") - attrs.PutStr("key5", "some-random-test-value-5") - attrs.PutStr("key7", "some-random-test-value-7") - attrs.PutStr("key8", "some-random-test-value-8") - - b.ResetTimer() - b.ReportAllocs() - - for i := 0; i < b.N; i++ { - getAttributesSignature(attrs) - } -} diff --git a/otelcollector/prometheusreceiver/internal/metricsutil_test.go b/otelcollector/prometheusreceiver/internal/metricsutil_test.go deleted file mode 100644 index ed3496d6c..000000000 --- a/otelcollector/prometheusreceiver/internal/metricsutil_test.go +++ /dev/null @@ -1,298 +0,0 @@ -// Copyright The OpenTelemetry Authors -// SPDX-License-Identifier: Apache-2.0 - -package internal - -import ( - "go.opentelemetry.io/collector/pdata/pcommon" - "go.opentelemetry.io/collector/pdata/pmetric" - semconv "go.opentelemetry.io/otel/semconv/v1.27.0" -) - -type kv struct { - Key, Value string -} - -func metrics(metrics ...pmetric.Metric) pmetric.Metrics { - md := pmetric.NewMetrics() - ms := md.ResourceMetrics().AppendEmpty().ScopeMetrics().AppendEmpty().Metrics() - for _, metric := range metrics { - destMetric := ms.AppendEmpty() - metric.CopyTo(destMetric) - } - - return md -} - -func metricsFromResourceMetrics(metrics ...pmetric.ResourceMetrics) pmetric.Metrics { - md := pmetric.NewMetrics() - for _, metric := range metrics { - mr := md.ResourceMetrics().AppendEmpty() - metric.CopyTo(mr) - } - return md -} - -func resourceMetrics(job, instance string, metrics ...pmetric.Metric) pmetric.ResourceMetrics { - mr := pmetric.NewResourceMetrics() - mr.Resource().Attributes().PutStr(string(semconv.ServiceNameKey), job) - mr.Resource().Attributes().PutStr(string(semconv.ServiceInstanceIDKey), instance) - ms := mr.ScopeMetrics().AppendEmpty().Metrics() - - for _, metric := range metrics { - destMetric := ms.AppendEmpty() - metric.CopyTo(destMetric) - } - return mr -} - -func histogramPointRaw(attributes []*kv, startTimestamp, timestamp pcommon.Timestamp) pmetric.HistogramDataPoint { - hdp := pmetric.NewHistogramDataPoint() - hdp.SetStartTimestamp(startTimestamp) - hdp.SetTimestamp(timestamp) - - attrs := hdp.Attributes() - for _, kv := range attributes { - attrs.PutStr(kv.Key, kv.Value) - } - - return hdp -} - -func histogramPoint(attributes []*kv, startTimestamp, timestamp pcommon.Timestamp, bounds []float64, counts []uint64) pmetric.HistogramDataPoint { - hdp := histogramPointRaw(attributes, startTimestamp, timestamp) - hdp.ExplicitBounds().FromRaw(bounds) - hdp.BucketCounts().FromRaw(counts) - - var sum float64 - var count uint64 - for i, bcount := range counts { - count += bcount - if i > 0 { - sum += float64(bcount) * bounds[i-1] - } - } - hdp.SetCount(count) - hdp.SetSum(sum) - - return hdp -} - -func histogramPointNoValue(attributes []*kv, startTimestamp, timestamp pcommon.Timestamp) pmetric.HistogramDataPoint { - hdp := histogramPointRaw(attributes, startTimestamp, timestamp) - hdp.SetFlags(pmetric.DefaultDataPointFlags.WithNoRecordedValue(true)) - - return hdp -} - -func histogramMetric(name string, points ...pmetric.HistogramDataPoint) pmetric.Metric { - metric := pmetric.NewMetric() - metric.SetName(name) - metric.Metadata().PutStr("prometheus.type", "histogram") - histogram := metric.SetEmptyHistogram() - histogram.SetAggregationTemporality(pmetric.AggregationTemporalityCumulative) - - destPointL := histogram.DataPoints() - // By default the AggregationTemporality is Cumulative until it'll be changed by the caller. - for _, point := range points { - destPoint := destPointL.AppendEmpty() - point.CopyTo(destPoint) - } - - return metric -} - -func exponentialHistogramMetric(name string, points ...pmetric.ExponentialHistogramDataPoint) pmetric.Metric { - metric := pmetric.NewMetric() - metric.SetName(name) - metric.Metadata().PutStr("prometheus.type", "histogram") - histogram := metric.SetEmptyExponentialHistogram() - histogram.SetAggregationTemporality(pmetric.AggregationTemporalityCumulative) - - destPointL := histogram.DataPoints() - // By default the AggregationTemporality is Cumulative until it'll be changed by the caller. - for _, point := range points { - destPoint := destPointL.AppendEmpty() - point.CopyTo(destPoint) - } - - return metric -} - -func exponentialHistogramPointRaw(attributes []*kv, startTimestamp, timestamp pcommon.Timestamp) pmetric.ExponentialHistogramDataPoint { - hdp := pmetric.NewExponentialHistogramDataPoint() - hdp.SetStartTimestamp(startTimestamp) - hdp.SetTimestamp(timestamp) - - attrs := hdp.Attributes() - for _, kv := range attributes { - attrs.PutStr(kv.Key, kv.Value) - } - - return hdp -} - -func exponentialHistogramPoint(attributes []*kv, startTimestamp, timestamp pcommon.Timestamp, scale int32, zeroCount uint64, negativeOffset int32, negativeBuckets []uint64, positiveOffset int32, positiveBuckets []uint64) pmetric.ExponentialHistogramDataPoint { - hdp := exponentialHistogramPointRaw(attributes, startTimestamp, timestamp) - hdp.SetScale(scale) - hdp.SetZeroCount(zeroCount) - hdp.Negative().SetOffset(negativeOffset) - hdp.Negative().BucketCounts().FromRaw(negativeBuckets) - hdp.Positive().SetOffset(positiveOffset) - hdp.Positive().BucketCounts().FromRaw(positiveBuckets) - - count := uint64(0) - sum := float64(0) - for i, bCount := range positiveBuckets { - count += bCount - sum += float64(bCount) * float64(i) - } - for i, bCount := range negativeBuckets { - count += bCount - sum -= float64(bCount) * float64(i) - } - hdp.SetCount(count) - hdp.SetSum(sum) - return hdp -} - -func exponentialHistogramPointNoValue(attributes []*kv, startTimestamp, timestamp pcommon.Timestamp) pmetric.ExponentialHistogramDataPoint { - hdp := exponentialHistogramPointRaw(attributes, startTimestamp, timestamp) - hdp.SetFlags(pmetric.DefaultDataPointFlags.WithNoRecordedValue(true)) - - return hdp -} - -// exponentialHistogramPointSimplified let's you define an exponential -// histogram with just a few parameters. -// Scale and ZeroCount are set to the provided values. -// Positive and negative buckets are generated using the offset and bucketCount -// parameters by adding buckets from offset in both positive and negative -// directions. Bucket counts start from 1 and increase by 1 for each bucket. -// Sum and Count will be proportional to the bucket count. -func exponentialHistogramPointSimplified(attributes []*kv, startTimestamp, timestamp pcommon.Timestamp, scale int32, zeroCount uint64, offset int32, bucketCount int) pmetric.ExponentialHistogramDataPoint { - hdp := exponentialHistogramPointRaw(attributes, startTimestamp, timestamp) - hdp.SetScale(scale) - hdp.SetZeroCount(zeroCount) - - positive := hdp.Positive() - positive.SetOffset(offset) - positive.BucketCounts().EnsureCapacity(bucketCount) - negative := hdp.Negative() - negative.SetOffset(offset) - negative.BucketCounts().EnsureCapacity(bucketCount) - - var sum float64 - var count uint64 - for i := 0; i < bucketCount; i++ { - positive.BucketCounts().Append(uint64(i + 1)) - negative.BucketCounts().Append(uint64(i + 1)) - count += uint64(i+1) + uint64(i+1) - sum += float64(i+1)*10 + float64(i+1)*10.0 - } - hdp.SetCount(count) - hdp.SetSum(sum) - - return hdp -} - -func doublePointRaw(attributes []*kv, startTimestamp, timestamp pcommon.Timestamp) pmetric.NumberDataPoint { - ndp := pmetric.NewNumberDataPoint() - ndp.SetStartTimestamp(startTimestamp) - ndp.SetTimestamp(timestamp) - - for _, kv := range attributes { - ndp.Attributes().PutStr(kv.Key, kv.Value) - } - - return ndp -} - -func doublePoint(attributes []*kv, startTimestamp, timestamp pcommon.Timestamp, value float64) pmetric.NumberDataPoint { - ndp := doublePointRaw(attributes, startTimestamp, timestamp) - ndp.SetDoubleValue(value) - return ndp -} - -func doublePointNoValue(attributes []*kv, startTimestamp, timestamp pcommon.Timestamp) pmetric.NumberDataPoint { - ndp := doublePointRaw(attributes, startTimestamp, timestamp) - ndp.SetFlags(pmetric.DefaultDataPointFlags.WithNoRecordedValue(true)) - return ndp -} - -func gaugeMetric(name string, points ...pmetric.NumberDataPoint) pmetric.Metric { - metric := pmetric.NewMetric() - metric.SetName(name) - metric.Metadata().PutStr("prometheus.type", "gauge") - destPointL := metric.SetEmptyGauge().DataPoints() - for _, point := range points { - destPoint := destPointL.AppendEmpty() - point.CopyTo(destPoint) - } - - return metric -} - -func sumMetric(name string, points ...pmetric.NumberDataPoint) pmetric.Metric { - metric := pmetric.NewMetric() - metric.SetName(name) - metric.Metadata().PutStr("prometheus.type", "counter") - sum := metric.SetEmptySum() - sum.SetAggregationTemporality(pmetric.AggregationTemporalityCumulative) - sum.SetIsMonotonic(true) - - destPointL := sum.DataPoints() - for _, point := range points { - destPoint := destPointL.AppendEmpty() - point.CopyTo(destPoint) - } - - return metric -} - -func summaryPointRaw(attributes []*kv, startTimestamp, timestamp pcommon.Timestamp) pmetric.SummaryDataPoint { - sdp := pmetric.NewSummaryDataPoint() - sdp.SetStartTimestamp(startTimestamp) - sdp.SetTimestamp(timestamp) - - for _, kv := range attributes { - sdp.Attributes().PutStr(kv.Key, kv.Value) - } - - return sdp -} - -func summaryPoint(attributes []*kv, startTimestamp, timestamp pcommon.Timestamp, count uint64, sum float64, quantiles, values []float64) pmetric.SummaryDataPoint { - sdp := summaryPointRaw(attributes, startTimestamp, timestamp) - sdp.SetCount(count) - sdp.SetSum(sum) - - qvL := sdp.QuantileValues() - for i := 0; i < len(quantiles); i++ { - qvi := qvL.AppendEmpty() - qvi.SetQuantile(quantiles[i]) - qvi.SetValue(values[i]) - } - - return sdp -} - -func summaryPointNoValue(attributes []*kv, startTimestamp, timestamp pcommon.Timestamp) pmetric.SummaryDataPoint { - sdp := summaryPointRaw(attributes, startTimestamp, timestamp) - sdp.SetFlags(pmetric.DefaultDataPointFlags.WithNoRecordedValue(true)) - - return sdp -} - -func summaryMetric(name string, points ...pmetric.SummaryDataPoint) pmetric.Metric { - metric := pmetric.NewMetric() - metric.SetName(name) - metric.Metadata().PutStr("prometheus.type", "summary") - destPointL := metric.SetEmptySummary().DataPoints() - for _, point := range points { - destPoint := destPointL.AppendEmpty() - point.CopyTo(destPoint) - } - - return metric -} diff --git a/otelcollector/prometheusreceiver/internal/prom_to_otlp.go b/otelcollector/prometheusreceiver/internal/prom_to_otlp.go index c5161d1e6..738951869 100644 --- a/otelcollector/prometheusreceiver/internal/prom_to_otlp.go +++ b/otelcollector/prometheusreceiver/internal/prom_to_otlp.go @@ -10,7 +10,7 @@ import ( "github.com/prometheus/prometheus/model/labels" "go.opentelemetry.io/collector/featuregate" "go.opentelemetry.io/collector/pdata/pcommon" - conventions "go.opentelemetry.io/otel/semconv/v1.25.0" + conventions "go.opentelemetry.io/otel/semconv/v1.37.0" ) var _ = featuregate.GlobalRegistry().MustRegister( diff --git a/otelcollector/prometheusreceiver/internal/staleness_end_to_end_test.go b/otelcollector/prometheusreceiver/internal/staleness_end_to_end_test.go index 7a52f9901..8e25918fe 100644 --- a/otelcollector/prometheusreceiver/internal/staleness_end_to_end_test.go +++ b/otelcollector/prometheusreceiver/internal/staleness_end_to_end_test.go @@ -30,6 +30,7 @@ import ( "go.opentelemetry.io/collector/processor" "go.opentelemetry.io/collector/processor/batchprocessor" "go.opentelemetry.io/collector/receiver" + "go.opentelemetry.io/collector/service/telemetry" "go.uber.org/zap" "go.uber.org/zap/zapcore" @@ -119,9 +120,6 @@ exporters: insecure: true service: - telemetry: - metrics: - level: "none" pipelines: metrics: receivers: [prometheus] @@ -144,6 +142,9 @@ service: Receivers: receivers, Exporters: exporters, Processors: processors, + Telemetry: telemetry.NewFactory( + func() component.Config { return struct{}{} }, + ), } appSettings := otelcol.CollectorSettings{ @@ -188,7 +189,7 @@ service: // 5. Let's wait on 10 fetches. var wReqL []*prompb.WriteRequest - for i := 0; i < 10; i++ { + for range 10 { wReqL = append(wReqL, <-prweUploads) } defer cancel() diff --git a/otelcollector/prometheusreceiver/internal/starttimemetricadjuster.go b/otelcollector/prometheusreceiver/internal/starttimemetricadjuster.go deleted file mode 100644 index 1858bebc3..000000000 --- a/otelcollector/prometheusreceiver/internal/starttimemetricadjuster.go +++ /dev/null @@ -1,162 +0,0 @@ -// Copyright The OpenTelemetry Authors -// SPDX-License-Identifier: Apache-2.0 - -package internal // import "github.com/open-telemetry/opentelemetry-collector-contrib/receiver/prometheusreceiver/internal" - -import ( - "errors" - "regexp" - "time" - - "go.opentelemetry.io/collector/featuregate" - "go.opentelemetry.io/collector/pdata/pmetric" - "go.uber.org/zap" -) - -var ( - errNoStartTimeMetrics = errors.New("start_time metric is missing") - errNoDataPointsStartTimeMetric = errors.New("start time metric with no data points") - errUnsupportedTypeStartTimeMetric = errors.New("unsupported data type for start time metric") - - // approximateCollectorStartTime is the approximate start time of the - // collector. Used as a fallback start time for metrics that don't have a - // start time set (when the - // receiver.prometheusreceiver.UseCollectorStartTimeFallback feature gate is - // enabled). Set when the component is initialized. - approximateCollectorStartTime time.Time -) - -var useCollectorStartTimeFallbackGate = featuregate.GlobalRegistry().MustRegister( - "receiver.prometheusreceiver.UseCollectorStartTimeFallback", - featuregate.StageAlpha, - featuregate.WithRegisterDescription("When enabled, the Prometheus receiver's"+ - " start time metric adjuster will fallback to using the collector start time"+ - " when a start time is not available"), -) - -func init() { - approximateCollectorStartTime = time.Now() -} - -type startTimeMetricAdjuster struct { - startTimeMetricRegex *regexp.Regexp - resetPointAdjuster *initialPointAdjuster - logger *zap.Logger -} - -// NewStartTimeMetricAdjuster returns a new MetricsAdjuster that adjust metrics' start times based on a start time metric. -func NewStartTimeMetricAdjuster(logger *zap.Logger, startTimeMetricRegex *regexp.Regexp, gcInterval time.Duration) MetricsAdjuster { - resetPointAdjuster := &initialPointAdjuster{ - jobsMap: NewJobsMap(gcInterval), - logger: logger, - useCreatedMetric: false, - usePointTimeForReset: true, - } - return &startTimeMetricAdjuster{ - startTimeMetricRegex: startTimeMetricRegex, - resetPointAdjuster: resetPointAdjuster, - logger: logger, - } -} - -func (stma *startTimeMetricAdjuster) AdjustMetrics(metrics pmetric.Metrics) error { - if removeStartTimeAdjustment.IsEnabled() { - return nil - } - startTime, err := stma.getStartTime(metrics) - if err != nil { - if !useCollectorStartTimeFallbackGate.IsEnabled() { - return err - } - stma.logger.Info("Couldn't get start time for metrics. Using fallback start time.", zap.Error(err), zap.Time("fallback_start_time", approximateCollectorStartTime)) - startTime = float64(approximateCollectorStartTime.Unix()) - } - - startTimeTs := timestampFromFloat64(startTime) - for i := 0; i < metrics.ResourceMetrics().Len(); i++ { - rm := metrics.ResourceMetrics().At(i) - for j := 0; j < rm.ScopeMetrics().Len(); j++ { - ilm := rm.ScopeMetrics().At(j) - for k := 0; k < ilm.Metrics().Len(); k++ { - metric := ilm.Metrics().At(k) - switch metric.Type() { - case pmetric.MetricTypeGauge: - continue - - case pmetric.MetricTypeSum: - dataPoints := metric.Sum().DataPoints() - for l := 0; l < dataPoints.Len(); l++ { - dp := dataPoints.At(l) - dp.SetStartTimestamp(startTimeTs) - } - - case pmetric.MetricTypeSummary: - dataPoints := metric.Summary().DataPoints() - for l := 0; l < dataPoints.Len(); l++ { - dp := dataPoints.At(l) - dp.SetStartTimestamp(startTimeTs) - } - - case pmetric.MetricTypeHistogram: - dataPoints := metric.Histogram().DataPoints() - for l := 0; l < dataPoints.Len(); l++ { - dp := dataPoints.At(l) - dp.SetStartTimestamp(startTimeTs) - } - - case pmetric.MetricTypeExponentialHistogram: - dataPoints := metric.ExponentialHistogram().DataPoints() - for l := 0; l < dataPoints.Len(); l++ { - dp := dataPoints.At(l) - dp.SetStartTimestamp(startTimeTs) - } - - default: - stma.logger.Warn("Unknown metric type", zap.String("type", metric.Type().String())) - } - } - } - } - - // Handle resets. - return stma.resetPointAdjuster.AdjustMetrics(metrics) -} - -func (stma *startTimeMetricAdjuster) getStartTime(metrics pmetric.Metrics) (float64, error) { - for i := 0; i < metrics.ResourceMetrics().Len(); i++ { - rm := metrics.ResourceMetrics().At(i) - for j := 0; j < rm.ScopeMetrics().Len(); j++ { - ilm := rm.ScopeMetrics().At(j) - for k := 0; k < ilm.Metrics().Len(); k++ { - metric := ilm.Metrics().At(k) - if stma.matchStartTimeMetric(metric.Name()) { - switch metric.Type() { - case pmetric.MetricTypeGauge: - if metric.Gauge().DataPoints().Len() == 0 { - return 0.0, errNoDataPointsStartTimeMetric - } - return metric.Gauge().DataPoints().At(0).DoubleValue(), nil - - case pmetric.MetricTypeSum: - if metric.Sum().DataPoints().Len() == 0 { - return 0.0, errNoDataPointsStartTimeMetric - } - return metric.Sum().DataPoints().At(0).DoubleValue(), nil - - default: - return 0, errUnsupportedTypeStartTimeMetric - } - } - } - } - } - return 0.0, errNoStartTimeMetrics -} - -func (stma *startTimeMetricAdjuster) matchStartTimeMetric(metricName string) bool { - if stma.startTimeMetricRegex != nil { - return stma.startTimeMetricRegex.MatchString(metricName) - } - - return metricName == startTimeMetricName -} diff --git a/otelcollector/prometheusreceiver/internal/starttimemetricadjuster_test.go b/otelcollector/prometheusreceiver/internal/starttimemetricadjuster_test.go deleted file mode 100644 index fa90c6083..000000000 --- a/otelcollector/prometheusreceiver/internal/starttimemetricadjuster_test.go +++ /dev/null @@ -1,474 +0,0 @@ -// Copyright The OpenTelemetry Authors -// SPDX-License-Identifier: Apache-2.0 - -package internal - -import ( - "regexp" - "testing" - "time" - - "github.com/stretchr/testify/assert" - "go.opentelemetry.io/collector/pdata/pcommon" - "go.opentelemetry.io/collector/pdata/pmetric" - semconv "go.opentelemetry.io/otel/semconv/v1.27.0" - "go.uber.org/zap" - - "github.com/open-telemetry/opentelemetry-collector-contrib/internal/common/testutil" -) - -func TestStartTimeMetricMatch(t *testing.T) { - t.Skip("Skipping test since it is flaky; see https://github.com/open-telemetry/opentelemetry-collector-contrib/issues/42684.") - const startTime = pcommon.Timestamp(123 * 1e9) - const currentTime = pcommon.Timestamp(126 * 1e9) - const matchBuilderStartTime = 124 - - tests := []struct { - name string - inputs pmetric.Metrics - startTimeMetricRegex *regexp.Regexp - expectedStartTime pcommon.Timestamp - expectedErr error - }{ - { - name: "regexp_match_sum_metric", - inputs: metrics( - sumMetric("test_sum_metric", doublePoint(nil, startTime, currentTime, 16)), - histogramMetric("test_histogram_metric", histogramPoint(nil, startTime, currentTime, []float64{1, 2}, []uint64{2, 3, 4})), - summaryMetric("test_summary_metric", summaryPoint(nil, startTime, currentTime, 10, 100, []float64{10, 50, 90}, []float64{9, 15, 48})), - sumMetric("example_process_start_time_seconds", doublePoint(nil, startTime, currentTime, matchBuilderStartTime)), - sumMetric("process_start_time_seconds", doublePoint(nil, startTime, currentTime, matchBuilderStartTime+1)), - exponentialHistogramMetric("test_exponential_histogram_metric", exponentialHistogramPointSimplified(nil, startTime, currentTime, 3, 1, -5, 3)), - ), - startTimeMetricRegex: regexp.MustCompile("^.*_process_start_time_seconds$"), - expectedStartTime: timestampFromFloat64(matchBuilderStartTime), - }, - { - name: "match_default_sum_start_time_metric", - inputs: metrics( - sumMetric("test_sum_metric", doublePoint(nil, startTime, currentTime, 16)), - histogramMetric("test_histogram_metric", histogramPoint(nil, startTime, currentTime, []float64{1, 2}, []uint64{2, 3, 4})), - summaryMetric("test_summary_metric", summaryPoint(nil, startTime, currentTime, 10, 100, []float64{10, 50, 90}, []float64{9, 15, 48})), - sumMetric("example_process_start_time_seconds", doublePoint(nil, startTime, currentTime, matchBuilderStartTime)), - sumMetric("process_start_time_seconds", doublePoint(nil, startTime, currentTime, matchBuilderStartTime+1)), - exponentialHistogramMetric("test_exponential_histogram_metric", exponentialHistogramPointSimplified(nil, startTime, currentTime, 3, 1, -5, 3)), - ), - expectedStartTime: timestampFromFloat64(matchBuilderStartTime + 1), - }, - { - name: "regexp_match_gauge_metric", - inputs: metrics( - sumMetric("test_sum_metric", doublePoint(nil, startTime, currentTime, 16)), - histogramMetric("test_histogram_metric", histogramPoint(nil, startTime, currentTime, []float64{1, 2}, []uint64{2, 3, 4})), - summaryMetric("test_summary_metric", summaryPoint(nil, startTime, currentTime, 10, 100, []float64{10, 50, 90}, []float64{9, 15, 48})), - gaugeMetric("example_process_start_time_seconds", doublePoint(nil, startTime, currentTime, matchBuilderStartTime)), - gaugeMetric("process_start_time_seconds", doublePoint(nil, startTime, currentTime, matchBuilderStartTime+1)), - ), - startTimeMetricRegex: regexp.MustCompile("^.*_process_start_time_seconds$"), - expectedStartTime: timestampFromFloat64(matchBuilderStartTime), - }, - { - name: "match_default_gauge_start_time_metric", - inputs: metrics( - sumMetric("test_sum_metric", doublePoint(nil, startTime, currentTime, 16)), - histogramMetric("test_histogram_metric", histogramPoint(nil, startTime, currentTime, []float64{1, 2}, []uint64{2, 3, 4})), - summaryMetric("test_summary_metric", summaryPoint(nil, startTime, currentTime, 10, 100, []float64{10, 50, 90}, []float64{9, 15, 48})), - gaugeMetric("example_process_start_time_seconds", doublePoint(nil, startTime, currentTime, matchBuilderStartTime)), - gaugeMetric("process_start_time_seconds", doublePoint(nil, startTime, currentTime, matchBuilderStartTime+1)), - ), - expectedStartTime: timestampFromFloat64(matchBuilderStartTime + 1), - }, - { - name: "empty gauge start time metrics", - inputs: metrics( - gaugeMetric("process_start_time_seconds"), - ), - expectedErr: errNoDataPointsStartTimeMetric, - }, - { - name: "empty sum start time metrics", - inputs: metrics( - sumMetric("process_start_time_seconds"), - ), - expectedErr: errNoDataPointsStartTimeMetric, - }, - { - name: "unsupported type start time metric", - inputs: metrics( - histogramMetric("process_start_time_seconds"), - ), - expectedErr: errUnsupportedTypeStartTimeMetric, - }, - { - name: "regexp_nomatch", - inputs: metrics( - sumMetric("subprocess_start_time_seconds", doublePoint(nil, startTime, currentTime, matchBuilderStartTime)), - ), - startTimeMetricRegex: regexp.MustCompile("^.+_process_start_time_seconds$"), - expectedErr: errNoStartTimeMetrics, - }, - { - name: "nomatch_default_start_time_metric", - inputs: metrics( - gaugeMetric("subprocess_start_time_seconds", doublePoint(nil, startTime, currentTime, matchBuilderStartTime)), - ), - expectedErr: errNoStartTimeMetrics, - }, - } - - for _, tt := range tests { - t.Run(tt.name, func(t *testing.T) { - gcInterval := 10 * time.Millisecond - stma := NewStartTimeMetricAdjuster(zap.NewNop(), tt.startTimeMetricRegex, gcInterval) - if tt.expectedErr != nil { - assert.ErrorIs(t, stma.AdjustMetrics(tt.inputs), tt.expectedErr) - return - } - - // We need to make sure the job and instance labels are set before the adjuster is used. - pmetrics := tt.inputs - pmetrics.ResourceMetrics().At(0).Resource().Attributes().PutStr(string(semconv.ServiceInstanceIDKey), "0") - pmetrics.ResourceMetrics().At(0).Resource().Attributes().PutStr(string(semconv.ServiceNameKey), "job") - assert.NoError(t, stma.AdjustMetrics(tt.inputs)) - for i := 0; i < tt.inputs.ResourceMetrics().Len(); i++ { - rm := tt.inputs.ResourceMetrics().At(i) - for j := 0; j < rm.ScopeMetrics().Len(); j++ { - ilm := rm.ScopeMetrics().At(j) - for k := 0; k < ilm.Metrics().Len(); k++ { - metric := ilm.Metrics().At(k) - switch metric.Type() { - case pmetric.MetricTypeSum: - dps := metric.Sum().DataPoints() - for l := 0; l < dps.Len(); l++ { - assert.Equal(t, tt.expectedStartTime, dps.At(l).StartTimestamp()) - } - case pmetric.MetricTypeSummary: - dps := metric.Summary().DataPoints() - for l := 0; l < dps.Len(); l++ { - assert.Equal(t, tt.expectedStartTime, dps.At(l).StartTimestamp()) - } - case pmetric.MetricTypeHistogram: - dps := metric.Histogram().DataPoints() - for l := 0; l < dps.Len(); l++ { - assert.Equal(t, tt.expectedStartTime, dps.At(l).StartTimestamp()) - } - case pmetric.MetricTypeExponentialHistogram: - dps := metric.ExponentialHistogram().DataPoints() - for l := 0; l < dps.Len(); l++ { - assert.Equal(t, tt.expectedStartTime, dps.At(l).StartTimestamp()) - } - case pmetric.MetricTypeEmpty, pmetric.MetricTypeGauge: - } - } - } - } - }) - } -} - -func TestStartTimeMetricFallback(t *testing.T) { - const startTime = pcommon.Timestamp(123 * 1e9) - const currentTime = pcommon.Timestamp(126 * 1e9) - mockStartTime := time.Now().Add(-10 * time.Hour) - mockStartTimeSeconds := float64(mockStartTime.Unix()) - processStartTime := mockStartTime.Add(-10 * time.Hour) - processStartTimeSeconds := float64(processStartTime.Unix()) - - tests := []struct { - name string - inputs pmetric.Metrics - startTimeMetricRegex *regexp.Regexp - expectedStartTime pcommon.Timestamp - expectedErr error - }{ - { - name: "regexp_match_metric_no_fallback", - inputs: metrics( - sumMetric("test_sum_metric", doublePoint(nil, startTime, currentTime, 16)), - histogramMetric("test_histogram_metric", histogramPoint(nil, startTime, currentTime, []float64{1, 2}, []uint64{2, 3, 4})), - summaryMetric("test_summary_metric", summaryPoint(nil, startTime, currentTime, 10, 100, []float64{10, 50, 90}, []float64{9, 15, 48})), - sumMetric("example_process_start_time_seconds", doublePoint(nil, startTime, currentTime, processStartTimeSeconds)), - sumMetric("process_start_time_seconds", doublePoint(nil, startTime, currentTime, processStartTimeSeconds)), - exponentialHistogramMetric("test_exponential_histogram_metric", exponentialHistogramPointSimplified(nil, startTime, currentTime, 3, 1, -5, 3)), - ), - startTimeMetricRegex: regexp.MustCompile("^.*_process_start_time_seconds$"), - expectedStartTime: timestampFromFloat64(processStartTimeSeconds), - }, - { - name: "regexp_no_regex_match_metric_fallback", - inputs: metrics( - sumMetric("test_sum_metric", doublePoint(nil, startTime, currentTime, 16)), - histogramMetric("test_histogram_metric", histogramPoint(nil, startTime, currentTime, []float64{1, 2}, []uint64{2, 3, 4})), - summaryMetric("test_summary_metric", summaryPoint(nil, startTime, currentTime, 10, 100, []float64{10, 50, 90}, []float64{9, 15, 48})), - ), - startTimeMetricRegex: regexp.MustCompile("^.*_process_start_time_seconds$"), - expectedStartTime: timestampFromFloat64(mockStartTimeSeconds), - }, - { - name: "match_no_match_metric_fallback", - inputs: metrics( - sumMetric("test_sum_metric", doublePoint(nil, startTime, currentTime, 16)), - histogramMetric("test_histogram_metric", histogramPoint(nil, startTime, currentTime, []float64{1, 2}, []uint64{2, 3, 4})), - summaryMetric("test_summary_metric", summaryPoint(nil, startTime, currentTime, 10, 100, []float64{10, 50, 90}, []float64{9, 15, 48})), - ), - expectedStartTime: timestampFromFloat64(mockStartTimeSeconds), - }, - } - - for _, tt := range tests { - t.Run(tt.name, func(t *testing.T) { - testutil.SetFeatureGateForTest(t, useCollectorStartTimeFallbackGate, true) - gcInterval := 10 * time.Millisecond - stma := NewStartTimeMetricAdjuster(zap.NewNop(), tt.startTimeMetricRegex, gcInterval) - if tt.expectedErr != nil { - assert.ErrorIs(t, stma.AdjustMetrics(tt.inputs), tt.expectedErr) - return - } - - // To test that the adjuster is using the fallback correctly, override the fallback time to use - // directly. - approximateCollectorStartTime = mockStartTime - - // We need to make sure the job and instance labels are set before the adjuster is used. - pmetrics := tt.inputs - pmetrics.ResourceMetrics().At(0).Resource().Attributes().PutStr(string(semconv.ServiceInstanceIDKey), "0") - pmetrics.ResourceMetrics().At(0).Resource().Attributes().PutStr(string(semconv.ServiceNameKey), "job") - assert.NoError(t, stma.AdjustMetrics(tt.inputs)) - for i := 0; i < tt.inputs.ResourceMetrics().Len(); i++ { - rm := tt.inputs.ResourceMetrics().At(i) - for j := 0; j < rm.ScopeMetrics().Len(); j++ { - ilm := rm.ScopeMetrics().At(j) - for k := 0; k < ilm.Metrics().Len(); k++ { - metric := ilm.Metrics().At(k) - switch metric.Type() { - case pmetric.MetricTypeSum: - dps := metric.Sum().DataPoints() - for l := 0; l < dps.Len(); l++ { - assert.Equal(t, tt.expectedStartTime, dps.At(l).StartTimestamp()) - } - case pmetric.MetricTypeSummary: - dps := metric.Summary().DataPoints() - for l := 0; l < dps.Len(); l++ { - assert.Equal(t, tt.expectedStartTime, dps.At(l).StartTimestamp()) - } - case pmetric.MetricTypeHistogram: - dps := metric.Histogram().DataPoints() - for l := 0; l < dps.Len(); l++ { - assert.Equal(t, tt.expectedStartTime, dps.At(l).StartTimestamp()) - } - } - } - } - } - }) - } -} - -func TestFallbackAndReset(t *testing.T) { - mockStartTime := time.Now().Add(-10 * time.Hour).Truncate(time.Second) - mockTimestamp := pcommon.NewTimestampFromTime(mockStartTime) - t1 := pcommon.Timestamp(126 * 1e9) - t2 := pcommon.NewTimestampFromTime(t1.AsTime().Add(1 * time.Hour)) - t3 := pcommon.NewTimestampFromTime(t2.AsTime().Add(1 * time.Hour)) - t4 := pcommon.NewTimestampFromTime(t3.AsTime().Add(1 * time.Hour)) - t5 := pcommon.NewTimestampFromTime(t4.AsTime().Add(1 * time.Hour)) - tests := []struct { - name string - useFallback bool - scenario []*metricsAdjusterTest - }{ - { - name: "sum no fallback and reset", - useFallback: false, - scenario: []*metricsAdjusterTest{ - { - description: "Sum: round 1 - initial instance, start time is established", - metrics: metrics( - sumMetric("test_sum", doublePoint(nil, t1, t1, 44)), - gaugeMetric("process_start_time_seconds", doublePoint(nil, t1, t1, float64(mockTimestamp.AsTime().Unix()))), - ), - adjusted: metrics( - sumMetric("test_sum", doublePoint(nil, mockTimestamp, t1, 44)), - gaugeMetric("process_start_time_seconds", doublePoint(nil, t1, t1, float64(mockTimestamp.AsTime().Unix()))), - ), - }, - { - description: "Sum: round 2 - instance reset (value less than previous value), start time is reset", - metrics: metrics( - sumMetric("test_sum", doublePoint(nil, t2, t2, 33)), - gaugeMetric("process_start_time_seconds", doublePoint(nil, t2, t2, float64(mockTimestamp.AsTime().Unix()))), - ), - adjusted: metrics( - sumMetric("test_sum", doublePoint(nil, t2, t2, 33)), - gaugeMetric("process_start_time_seconds", doublePoint(nil, t2, t2, float64(mockTimestamp.AsTime().Unix()))), - ), - }, - { - description: "Sum: round 3 - instance adjusted based on round 2", - metrics: metrics( - sumMetric("test_sum", doublePoint(nil, t3, t3, 55)), - gaugeMetric("process_start_time_seconds", doublePoint(nil, t2, t2, float64(mockTimestamp.AsTime().Unix()))), - ), - adjusted: metrics( - sumMetric("test_sum", doublePoint(nil, t2, t3, 55)), - gaugeMetric("process_start_time_seconds", doublePoint(nil, t2, t2, float64(mockTimestamp.AsTime().Unix()))), - ), - }, - }, - }, - { - name: "sum fallback and reset", - useFallback: true, - scenario: []*metricsAdjusterTest{ - { - description: "Sum: round 1 - initial instance, start time is established", - metrics: metrics(sumMetric("test_sum", doublePoint(nil, t1, t1, 44))), - adjusted: metrics(sumMetric("test_sum", doublePoint(nil, mockTimestamp, t1, 44))), - }, - { - description: "Sum: round 2 - instance adjusted based on round 1", - metrics: metrics(sumMetric("test_sum", doublePoint(nil, t2, t2, 66))), - adjusted: metrics(sumMetric("test_sum", doublePoint(nil, mockTimestamp, t2, 66))), - }, - { - description: "Sum: round 3 - instance reset (value less than previous value), start time is reset", - metrics: metrics(sumMetric("test_sum", doublePoint(nil, t3, t3, 55))), - adjusted: metrics(sumMetric("test_sum", doublePoint(nil, t3, t3, 55))), - }, - { - description: "Sum: round 4 - instance adjusted based on round 3", - metrics: metrics(sumMetric("test_sum", doublePoint(nil, t4, t4, 72))), - adjusted: metrics(sumMetric("test_sum", doublePoint(nil, t3, t4, 72))), - }, - { - description: "Sum: round 5 - instance adjusted based on round 4", - metrics: metrics(sumMetric("test_sum", doublePoint(nil, t5, t5, 72))), - adjusted: metrics(sumMetric("test_sum", doublePoint(nil, t3, t5, 72))), - }, - }, - }, - { - name: "gauge fallback and reset", - useFallback: true, - scenario: []*metricsAdjusterTest{ - { - description: "Gauge: round 1 - gauge not adjusted", - metrics: metrics(gaugeMetric("test_gauge", doublePoint(nil, t1, t1, 44))), - adjusted: metrics(gaugeMetric("test_gauge", doublePoint(nil, t1, t1, 44))), - }, - { - description: "Gauge: round 2 - gauge not adjusted", - metrics: metrics(gaugeMetric("test_gauge", doublePoint(nil, t2, t2, 66))), - adjusted: metrics(gaugeMetric("test_gauge", doublePoint(nil, t2, t2, 66))), - }, - { - description: "Gauge: round 3 - value less than previous value - gauge is not adjusted", - metrics: metrics(gaugeMetric("test_gauge", doublePoint(nil, t3, t3, 55))), - adjusted: metrics(gaugeMetric("test_gauge", doublePoint(nil, t3, t3, 55))), - }, - }, - }, - { - name: "histogram fallback and reset", - useFallback: true, - scenario: []*metricsAdjusterTest{ - { - description: "Histogram: round 1 - initial instance, start time is established", - metrics: metrics(histogramMetric("test_histogram", histogramPoint(nil, t1, t1, bounds0, []uint64{4, 2, 3, 7}))), - adjusted: metrics(histogramMetric("test_histogram", histogramPoint(nil, mockTimestamp, t1, bounds0, []uint64{4, 2, 3, 7}))), - }, { - description: "Histogram: round 2 - instance adjusted based on round 1", - metrics: metrics(histogramMetric("test_histogram", histogramPoint(nil, t2, t2, bounds0, []uint64{6, 3, 4, 8}))), - adjusted: metrics(histogramMetric("test_histogram", histogramPoint(nil, mockTimestamp, t2, bounds0, []uint64{6, 3, 4, 8}))), - }, { - description: "Histogram: round 3 - instance reset (value less than previous value), start time is reset", - metrics: metrics(histogramMetric("test_histogram", histogramPoint(nil, t3, t3, bounds0, []uint64{5, 3, 2, 7}))), - adjusted: metrics(histogramMetric("test_histogram", histogramPoint(nil, t3, t3, bounds0, []uint64{5, 3, 2, 7}))), - }, { - description: "Histogram: round 4 - instance adjusted based on round 3", - metrics: metrics(histogramMetric("test_histogram", histogramPoint(nil, t4, t4, bounds0, []uint64{7, 4, 2, 12}))), - adjusted: metrics(histogramMetric("test_histogram", histogramPoint(nil, t3, t4, bounds0, []uint64{7, 4, 2, 12}))), - }, - }, - }, - { - name: "exponential histogram fallback and reset", - useFallback: true, - scenario: []*metricsAdjusterTest{ - { - description: "Exponential Histogram: round 1 - initial instance, start time is established", - metrics: metrics(exponentialHistogramMetric(exponentialHistogram1, exponentialHistogramPoint(nil, t1, t1, 3, 1, 0, []uint64{}, -2, []uint64{4, 2, 3, 7}))), - adjusted: metrics(exponentialHistogramMetric(exponentialHistogram1, exponentialHistogramPoint(nil, mockTimestamp, t1, 3, 1, 0, []uint64{}, -2, []uint64{4, 2, 3, 7}))), - }, - { - description: "Exponential Histogram: round 2 - instance adjusted based on round 1", - metrics: metrics(exponentialHistogramMetric(exponentialHistogram1, exponentialHistogramPoint(nil, t2, t2, 3, 1, 0, []uint64{}, -2, []uint64{6, 2, 3, 7}))), - adjusted: metrics(exponentialHistogramMetric(exponentialHistogram1, exponentialHistogramPoint(nil, mockTimestamp, t2, 3, 1, 0, []uint64{}, -2, []uint64{6, 2, 3, 7}))), - }, - { - description: "Exponential Histogram: round 3 - instance reset (value less than previous value), start time is reset", - metrics: metrics(exponentialHistogramMetric(exponentialHistogram1, exponentialHistogramPoint(nil, t3, t3, 3, 1, 0, []uint64{}, -2, []uint64{5, 3, 2, 7}))), - adjusted: metrics(exponentialHistogramMetric(exponentialHistogram1, exponentialHistogramPoint(nil, t3, t3, 3, 1, 0, []uint64{}, -2, []uint64{5, 3, 2, 7}))), - }, - { - description: "Exponential Histogram: round 4 - instance adjusted based on round 3", - metrics: metrics(exponentialHistogramMetric(exponentialHistogram1, exponentialHistogramPoint(nil, t4, t4, 3, 1, 0, []uint64{}, -2, []uint64{7, 4, 2, 12}))), - adjusted: metrics(exponentialHistogramMetric(exponentialHistogram1, exponentialHistogramPoint(nil, t3, t4, 3, 1, 0, []uint64{}, -2, []uint64{7, 4, 2, 12}))), - }, - }, - }, - { - name: "summary fallback and reset", - useFallback: true, - scenario: []*metricsAdjusterTest{ - { - description: "Summary: round 1 - initial instance, start time is established", - metrics: metrics( - summaryMetric("test_summary", summaryPoint(nil, t1, t1, 10, 40, percent0, []float64{1, 5, 8})), - ), - adjusted: metrics( - summaryMetric("test_summary", summaryPoint(nil, mockTimestamp, t1, 10, 40, percent0, []float64{1, 5, 8})), - ), - }, - { - description: "Summary: round 2 - instance adjusted based on round 1", - metrics: metrics( - summaryMetric("test_summary", summaryPoint(nil, t2, t2, 15, 70, percent0, []float64{7, 44, 9})), - ), - adjusted: metrics( - summaryMetric("test_summary", summaryPoint(nil, mockTimestamp, t2, 15, 70, percent0, []float64{7, 44, 9})), - ), - }, - { - description: "Summary: round 3 - instance reset (count less than previous), start time is reset", - metrics: metrics( - summaryMetric("test_summary", summaryPoint(nil, t3, t3, 12, 66, percent0, []float64{3, 22, 5})), - ), - adjusted: metrics( - summaryMetric("test_summary", summaryPoint(nil, t3, t3, 12, 66, percent0, []float64{3, 22, 5})), - ), - }, - { - description: "Summary: round 4 - instance adjusted based on round 3", - metrics: metrics( - summaryMetric("test_summary", summaryPoint(nil, t4, t4, 14, 96, percent0, []float64{9, 47, 8})), - ), - adjusted: metrics( - summaryMetric("test_summary", summaryPoint(nil, t3, t4, 14, 96, percent0, []float64{9, 47, 8})), - ), - }, - }, - }, - } - for _, tt := range tests { - t.Run(tt.name, func(t *testing.T) { - testutil.SetFeatureGateForTest(t, useCollectorStartTimeFallbackGate, tt.useFallback) - gcInterval := 10 * time.Millisecond - stma := NewStartTimeMetricAdjuster(zap.NewNop(), nil, gcInterval) - // To test that the adjuster is using the fallback correctly, override the fallback time to use - // directly. - approximateCollectorStartTime = mockStartTime - runScript(t, stma, "job", "0", tt.scenario) - }) - } -} diff --git a/otelcollector/prometheusreceiver/targetallocator/config.go b/otelcollector/prometheusreceiver/internal/targetallocator/config.go similarity index 87% rename from otelcollector/prometheusreceiver/targetallocator/config.go rename to otelcollector/prometheusreceiver/internal/targetallocator/config.go index eaa9ea966..8d78eef27 100644 --- a/otelcollector/prometheusreceiver/targetallocator/config.go +++ b/otelcollector/prometheusreceiver/internal/targetallocator/config.go @@ -1,7 +1,7 @@ // Copyright The OpenTelemetry Authors // SPDX-License-Identifier: Apache-2.0 -package targetallocator // import "github.com/open-telemetry/opentelemetry-collector-contrib/receiver/prometheusreceiver/targetallocator" +package targetallocator // import "github.com/open-telemetry/opentelemetry-collector-contrib/receiver/prometheusreceiver/internal/targetallocator" import ( "encoding/base64" @@ -47,12 +47,10 @@ func (cfg *Config) Validate() error { var _ confmap.Unmarshaler = (*PromHTTPSDConfig)(nil) func (cfg *PromHTTPSDConfig) Unmarshal(componentParser *confmap.Conf) error { - cfgMap := componentParser.ToStringMap() - if len(cfgMap) == 0 { - return nil - } - cfgMap["url"] = "http://placeholder" // we have to set it as else marshaling will fail - return unmarshalYAML(cfgMap, (*promHTTP.SDConfig)(cfg)) + return unmarshalConf(componentParser, func(m map[string]any) { + // we have to set it as else marshaling will fail + m["url"] = "http://placeholder" + }, (*promHTTP.SDConfig)(cfg)) } type PromHTTPClientConfig commonconfig.HTTPClientConfig @@ -60,11 +58,7 @@ type PromHTTPClientConfig commonconfig.HTTPClientConfig var _ confmap.Unmarshaler = (*PromHTTPClientConfig)(nil) func (cfg *PromHTTPClientConfig) Unmarshal(componentParser *confmap.Conf) error { - cfgMap := componentParser.ToStringMap() - if len(cfgMap) == 0 { - return nil - } - return unmarshalYAML(cfgMap, (*commonconfig.HTTPClientConfig)(cfg)) + return unmarshalConf(componentParser, nil, (*commonconfig.HTTPClientConfig)(cfg)) } func (cfg *PromHTTPClientConfig) Validate() error { @@ -109,13 +103,21 @@ func checkTLSConfig(tlsConfig commonconfig.TLSConfig) error { return nil } -func unmarshalYAML(in map[string]any, out any) error { - yamlOut, err := yaml.MarshalWithOptions( - in, - yaml.CustomMarshaler[commonconfig.Secret](func(s commonconfig.Secret) ([]byte, error) { - return []byte(s), nil - }), - ) +// unmarshalConf unmarshals conf to out. +// YAML is used as an intermediary format, because confmap.Conf.Unmarshal is incompatible with Prometheus types, +// as the former uses mapstructure tags . +// If cb is not nil, it's called to mutate the map representation of conf. +func unmarshalConf(conf *confmap.Conf, cb func(map[string]any), out any) error { + in := conf.ToStringMap() + if len(in) == 0 { + return nil + } + + if cb != nil { + cb(in) + } + + yamlOut, err := yaml.Marshal(in) if err != nil { return fmt.Errorf("prometheus receiver: failed to marshal config to yaml: %w", err) } diff --git a/otelcollector/prometheusreceiver/internal/targetallocator/config_test.go b/otelcollector/prometheusreceiver/internal/targetallocator/config_test.go new file mode 100644 index 000000000..58c5ad62f --- /dev/null +++ b/otelcollector/prometheusreceiver/internal/targetallocator/config_test.go @@ -0,0 +1,556 @@ +// Copyright The OpenTelemetry Authors +// SPDX-License-Identifier: Apache-2.0 + +package targetallocator // import "github.com/open-telemetry/opentelemetry-collector-contrib/receiver/prometheusreceiver/internal/targetallocator" + +import ( + "path/filepath" + "testing" + "time" + + promConfig "github.com/prometheus/common/config" + promHTTP "github.com/prometheus/prometheus/discovery/http" + "github.com/stretchr/testify/assert" + "github.com/stretchr/testify/require" + "go.opentelemetry.io/collector/component/componenttest" + "go.opentelemetry.io/collector/config/configopaque" + "go.opentelemetry.io/collector/config/configtls" + "go.opentelemetry.io/collector/confmap" + "go.opentelemetry.io/collector/confmap/confmaptest" + "go.opentelemetry.io/collector/confmap/xconfmap" +) + +func TestComponentConfigStruct(t *testing.T) { + require.NoError(t, componenttest.CheckConfigStruct(Config{})) +} + +func TestLoadTargetAllocatorConfig(t *testing.T) { + t.Run("basic", func(t *testing.T) { + cm, err := confmaptest.LoadConf(filepath.Join("testdata", "config.yaml")) + require.NoError(t, err) + cfg := &Config{} + + sub, err := cm.Sub("target_allocator") + require.NoError(t, err) + require.NoError(t, sub.Unmarshal(cfg)) + require.NoError(t, xconfmap.Validate(cfg)) + + assert.Equal(t, "http://localhost:8080", cfg.Endpoint) + assert.Equal(t, 5*time.Second, cfg.Timeout) + assert.Equal(t, "client.crt", cfg.TLS.CertFile) + assert.Equal(t, 30*time.Second, cfg.Interval) + assert.Equal(t, "collector-1", cfg.CollectorID) + }) + + t.Run("special characters in password", func(t *testing.T) { + cm, err := confmaptest.LoadConf(filepath.Join("testdata", "config_with_special_chars.yaml")) + require.NoError(t, err) + + var cfg Config + sub, err := cm.Sub("target_allocator") + require.NoError(t, err) + require.NoError(t, sub.Unmarshal(&cfg)) + + require.NotNil(t, cfg.HTTPSDConfig, "http_sd_config should be present") + require.NotNil(t, cfg.HTTPScrapeConfig, "http_scrape_config should be present") + require.NotNil(t, cfg.HTTPScrapeConfig.BasicAuth, "basic_auth should be present") + assert.Equal(t, "testuser", cfg.HTTPScrapeConfig.BasicAuth.Username) + assert.Equal(t, "%password-with-percent", string(cfg.HTTPScrapeConfig.BasicAuth.Password), + "password with special YAML characters should be preserved") + }) +} + +func TestPromHTTPClientConfigValidateAuthorization(t *testing.T) { + cfg := PromHTTPClientConfig{} + require.NoError(t, xconfmap.Validate(cfg)) + cfg.Authorization = &promConfig.Authorization{} + require.NoError(t, xconfmap.Validate(cfg)) + cfg.Authorization.CredentialsFile = "none" + require.Error(t, xconfmap.Validate(cfg)) + cfg.Authorization.CredentialsFile = filepath.Join("testdata", "dummy-tls-cert-file") + require.NoError(t, xconfmap.Validate(cfg)) +} + +func TestPromHTTPClientConfigValidateTLSConfig(t *testing.T) { + cfg := PromHTTPClientConfig{} + require.NoError(t, xconfmap.Validate(cfg)) + cfg.TLSConfig.CertFile = "none" + require.Error(t, xconfmap.Validate(cfg)) + cfg.TLSConfig.CertFile = filepath.Join("testdata", "dummy-tls-cert-file") + cfg.TLSConfig.KeyFile = "none" + require.Error(t, xconfmap.Validate(cfg)) + cfg.TLSConfig.KeyFile = filepath.Join("testdata", "dummy-tls-key-file") + require.NoError(t, xconfmap.Validate(cfg)) +} + +func TestPromHTTPClientConfigValidateMain(t *testing.T) { + cfg := PromHTTPClientConfig{} + require.NoError(t, xconfmap.Validate(cfg)) + cfg.BearerToken = "foo" + cfg.BearerTokenFile = filepath.Join("testdata", "dummy-tls-key-file") + require.Error(t, xconfmap.Validate(cfg)) +} + +func TestConfigValidate_InvalidEndpoint(t *testing.T) { + tests := []struct { + name string + endpoint string + collectorID string + expectError bool + }{ + { + name: "valid config", + endpoint: "http://localhost:8080", + collectorID: "collector-1", + expectError: false, + }, + { + name: "invalid endpoint - malformed", + endpoint: "://invalid", + collectorID: "collector-1", + expectError: true, + }, + { + name: "invalid endpoint - empty", + endpoint: "", + collectorID: "collector-1", + expectError: true, + }, + { + name: "invalid collectorID - empty", + endpoint: "http://localhost:8080", + collectorID: "", + expectError: true, + }, + { + name: "invalid collectorID - contains variable", + endpoint: "http://localhost:8080", + collectorID: "${POD_NAME}", + expectError: true, + }, + } + + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + cfg := &Config{ + CollectorID: tt.collectorID, + } + cfg.Endpoint = tt.endpoint + err := xconfmap.Validate(cfg) + if tt.expectError { + assert.Error(t, err) + } else { + assert.NoError(t, err) + } + }) + } +} + +func TestConvertTLSVersion(t *testing.T) { + tests := []struct { + name string + version string + expectError bool + }{ + { + name: "TLS 1.2", + version: "1.2", + expectError: false, + }, + { + name: "TLS 1.3", + version: "1.3", + expectError: false, + }, + { + name: "TLS 1.0", + version: "1.0", + expectError: false, + }, + { + name: "TLS 1.1", + version: "1.1", + expectError: false, + }, + { + name: "invalid version", + version: "2.0", + expectError: true, + }, + { + name: "invalid format", + version: "invalid", + expectError: true, + }, + } + + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + _, err := convertTLSVersion(tt.version) + if tt.expectError { + assert.Error(t, err) + } else { + assert.NoError(t, err) + } + }) + } +} + +func TestCheckTLSConfig(t *testing.T) { + tests := []struct { + name string + certFile string + keyFile string + expectError bool + }{ + { + name: "empty config", + certFile: "", + keyFile: "", + expectError: false, + }, + { + name: "valid cert and key", + certFile: filepath.Join("testdata", "dummy-tls-cert-file"), + keyFile: filepath.Join("testdata", "dummy-tls-key-file"), + expectError: false, + }, + { + name: "invalid cert file", + certFile: "nonexistent-cert.pem", + keyFile: filepath.Join("testdata", "dummy-tls-key-file"), + expectError: true, + }, + { + name: "invalid key file", + certFile: filepath.Join("testdata", "dummy-tls-cert-file"), + keyFile: "nonexistent-key.pem", + expectError: true, + }, + } + + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + tlsConfig := promConfig.TLSConfig{ + CertFile: tt.certFile, + KeyFile: tt.keyFile, + } + cfg := &Config{ + CollectorID: "collector-1", + HTTPScrapeConfig: &PromHTTPClientConfig{ + TLSConfig: tlsConfig, + }, + } + cfg.Endpoint = "http://localhost:8080" + err := xconfmap.Validate(cfg) + if tt.expectError { + assert.Error(t, err) + } else { + assert.NoError(t, err) + } + }) + } +} + +func TestPromHTTPSDConfigUnmarshal(t *testing.T) { + tests := []struct { + name string + input map[string]any + errorContains string + validate func(*testing.T, *PromHTTPSDConfig) + }{ + { + name: "empty config", + input: map[string]any{}, + validate: func(t *testing.T, cfg *PromHTTPSDConfig) { assert.NotNil(t, cfg) }, + }, + { + name: "valid config with refresh interval", + input: map[string]any{ + "refresh_interval": "30s", + }, + validate: func(t *testing.T, cfg *PromHTTPSDConfig) { assert.NotNil(t, cfg) }, + }, + { + name: "valid config with multiple fields", + input: map[string]any{ + "refresh_interval": "1m", + "proxy_url": "http://proxy.example.com:8080", + }, + validate: func(t *testing.T, cfg *PromHTTPSDConfig) { assert.NotNil(t, cfg) }, + }, + { + name: "invalid config with bad refresh interval", + input: map[string]any{ + "refresh_interval": "invalid", + }, + errorContains: "not a valid duration string", + }, + } + + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + cfg := &PromHTTPSDConfig{} + conf := confmap.NewFromStringMap(tt.input) + err := cfg.Unmarshal(conf) + if tt.errorContains != "" { + assert.ErrorContains(t, err, tt.errorContains) + } else { + require.NoError(t, err) + if tt.validate != nil { + tt.validate(t, cfg) + } + } + }) + } +} + +func TestPromHTTPClientConfigUnmarshal(t *testing.T) { + tests := []struct { + name string + input map[string]any + errorContains string + validate func(*testing.T, *PromHTTPClientConfig) + }{ + { + name: "empty config", + input: map[string]any{}, + validate: func(t *testing.T, cfg *PromHTTPClientConfig) { assert.NotNil(t, cfg) }, + }, + { + name: "valid config with bearer token", + input: map[string]any{ + "bearer_token": "test-token", + }, + validate: func(t *testing.T, cfg *PromHTTPClientConfig) { + assert.NotNil(t, cfg) + // Note: bearer_token gets unmarshaled correctly but Secret type + // redaction makes it hard to test the exact value + }, + }, + { + name: "valid config with TLS", + input: map[string]any{ + "tls_config": map[string]any{ + "insecure_skip_verify": true, + }, + }, + validate: func(t *testing.T, cfg *PromHTTPClientConfig) { + assert.NotNil(t, cfg) + assert.True(t, cfg.TLSConfig.InsecureSkipVerify) + }, + }, + { + name: "valid config with authorization", + input: map[string]any{ + "authorization": map[string]any{ + "type": "Bearer", + }, + }, + validate: func(t *testing.T, cfg *PromHTTPClientConfig) { + assert.NotNil(t, cfg) + assert.NotNil(t, cfg.Authorization) + }, + }, + { + name: "valid config with proxy URL", + input: map[string]any{ + "proxy_url": "http://proxy.example.com:8080", + }, + validate: func(t *testing.T, cfg *PromHTTPClientConfig) { assert.NotNil(t, cfg) }, + }, + { + name: "valid config with follow redirects", + input: map[string]any{ + "follow_redirects": true, + }, + validate: func(t *testing.T, cfg *PromHTTPClientConfig) { + assert.NotNil(t, cfg) + assert.True(t, cfg.FollowRedirects) + }, + }, + { + name: "valid config with enable http2", + input: map[string]any{ + "enable_http2": false, + }, + validate: func(t *testing.T, cfg *PromHTTPClientConfig) { assert.NotNil(t, cfg) }, + }, + { + name: "basic auth password starting with percent sign", + input: map[string]any{ + "basic_auth": map[string]any{ + "username": "user", + "password": "%password-with-percent", + }, + }, + validate: func(t *testing.T, cfg *PromHTTPClientConfig) { + assert.NotNil(t, cfg) + assert.NotNil(t, cfg.BasicAuth) + assert.Equal(t, "user", cfg.BasicAuth.Username) + assert.Equal(t, "%password-with-percent", string(cfg.BasicAuth.Password)) + }, + }, + { + name: "invalid config with bad tls version", + input: map[string]any{ + "tls_config": map[string]any{ + "min_version": "TLS99", + }, + }, + errorContains: "unknown TLS version", + }, + } + + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + cfg := &PromHTTPClientConfig{} + conf := confmap.NewFromStringMap(tt.input) + err := cfg.Unmarshal(conf) + if tt.errorContains != "" { + assert.ErrorContains(t, err, tt.errorContains) + } else { + require.NoError(t, err) + if tt.validate != nil { + tt.validate(t, cfg) + } + } + }) + } +} + +func TestConfigureSDHTTPClientConfigFromTA_Errors(t *testing.T) { + tests := []struct { + name string + setupConfig func() *Config + errorContains string + }{ + { + name: "invalid base64 in CAPem", + setupConfig: func() *Config { + cfg := &Config{} + cfg.TLS.CAPem = configopaque.String("not-valid-base64!@#$%") + return cfg + }, + errorContains: "failed to decode CA", + }, + { + name: "invalid base64 in CertPem", + setupConfig: func() *Config { + cfg := &Config{} + cfg.TLS.CertPem = configopaque.String("not-valid-base64!@#$%") + return cfg + }, + errorContains: "failed to decode Cert", + }, + { + name: "invalid base64 in KeyPem", + setupConfig: func() *Config { + cfg := &Config{} + cfg.TLS.KeyPem = configopaque.String("not-valid-base64!@#$%") + return cfg + }, + errorContains: "failed to decode Key", + }, + { + name: "invalid TLS MinVersion", + setupConfig: func() *Config { + cfg := &Config{} + cfg.TLS.MinVersion = "99.9" + return cfg + }, + errorContains: "unsupported TLS version", + }, + { + name: "invalid TLS MaxVersion", + setupConfig: func() *Config { + cfg := &Config{} + cfg.TLS.MaxVersion = "invalid-version" + return cfg + }, + errorContains: "unsupported TLS version", + }, + { + name: "invalid ProxyURL", + setupConfig: func() *Config { + cfg := &Config{} + cfg.ProxyURL = "://invalid-url-scheme" + return cfg + }, + errorContains: "missing protocol scheme", + }, + { + name: "valid config - no errors", + setupConfig: func() *Config { + cfg := &Config{} + cfg.TLS = configtls.ClientConfig{ + InsecureSkipVerify: true, + ServerName: "test.example.com", + } + return cfg + }, + }, + } + + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + allocConf := tt.setupConfig() + httpSD := &promHTTP.SDConfig{} + + err := configureSDHTTPClientConfigFromTA(httpSD, allocConf) + + if tt.errorContains != "" { + assert.ErrorContains(t, err, tt.errorContains) + } else { + require.NoError(t, err) + } + }) + } +} + +func TestUnmarshalConf(t *testing.T) { + t.Run("empty config", func(t *testing.T) { + var cfg promConfig.HTTPClientConfig + err := unmarshalConf(confmap.NewFromStringMap(map[string]any{}), nil, &cfg) + require.NoError(t, err) + assert.Zero(t, cfg) + }) + + t.Run("special YAML characters preserved", func(t *testing.T) { + var cfg promConfig.HTTPClientConfig + input := map[string]any{ + "basic_auth": map[string]any{ + "username": "user", + "password": "%password-with-percent", + }, + } + err := unmarshalConf(confmap.NewFromStringMap(input), nil, &cfg) + require.NoError(t, err) + require.NotNil(t, cfg.BasicAuth) + assert.Equal(t, "%password-with-percent", string(cfg.BasicAuth.Password)) + }) + + t.Run("callback mutates config", func(t *testing.T) { + var cfg promConfig.HTTPClientConfig + input := map[string]any{ + "basic_auth": map[string]any{ + "username": "original", + }, + } + cb := func(m map[string]any) { + m["basic_auth"].(map[string]any)["username"] = "mutated" + } + require.NoError(t, unmarshalConf(confmap.NewFromStringMap(input), cb, &cfg)) + require.NotNil(t, cfg.BasicAuth) + assert.Equal(t, "mutated", cfg.BasicAuth.Username) + }) + + t.Run("marshal error", func(t *testing.T) { + var cfg promConfig.HTTPClientConfig + input := map[string]any{ + "invalid": make(chan int), // channels can't be marshaled to YAML + } + err := unmarshalConf(confmap.NewFromStringMap(input), nil, &cfg) + require.ErrorContains(t, err, "failed to marshal") + }) +} diff --git a/otelcollector/prometheusreceiver/targetallocator/manager.go b/otelcollector/prometheusreceiver/internal/targetallocator/manager.go similarity index 85% rename from otelcollector/prometheusreceiver/targetallocator/manager.go rename to otelcollector/prometheusreceiver/internal/targetallocator/manager.go index 0f401669e..b1c7d83a9 100644 --- a/otelcollector/prometheusreceiver/targetallocator/manager.go +++ b/otelcollector/prometheusreceiver/internal/targetallocator/manager.go @@ -1,7 +1,7 @@ // Copyright The OpenTelemetry Authors // SPDX-License-Identifier: Apache-2.0 -package targetallocator // import "github.com/open-telemetry/opentelemetry-collector-contrib/receiver/prometheusreceiver/targetallocator" +package targetallocator // import "github.com/open-telemetry/opentelemetry-collector-contrib/receiver/prometheusreceiver/internal/targetallocator" import ( "bytes" @@ -14,6 +14,7 @@ import ( "net/url" "os" "sort" + "sync" "sync/atomic" "syscall" "time" @@ -32,29 +33,28 @@ import ( ) type Manager struct { - settings receiver.Settings - shutdown chan struct{} - cfg *Config - promCfg *promconfig.Config - initialScrapeConfigs []*promconfig.ScrapeConfig - scrapeManager *scrape.Manager - discoveryManager *discovery.Manager - enableNativeHistograms bool + settings receiver.Settings + shutdown chan struct{} + cfg *Config + promCfg *promconfig.Config + initialScrapeConfigs []*promconfig.ScrapeConfig + scrapeManager *scrape.Manager + discoveryManager *discovery.Manager + wg sync.WaitGroup // configUpdateCount tracks how many times the config has changed, for // testing. configUpdateCount *atomic.Int64 } -func NewManager(set receiver.Settings, cfg *Config, promCfg *promconfig.Config, enableNativeHistograms bool) *Manager { +func NewManager(set receiver.Settings, cfg *Config, promCfg *promconfig.Config) *Manager { return &Manager{ - shutdown: make(chan struct{}), - settings: set, - cfg: cfg, - promCfg: promCfg, - initialScrapeConfigs: promCfg.ScrapeConfigs, - enableNativeHistograms: enableNativeHistograms, - configUpdateCount: &atomic.Int64{}, + shutdown: make(chan struct{}), + settings: set, + cfg: cfg, + promCfg: promCfg, + initialScrapeConfigs: promCfg.ScrapeConfigs, + configUpdateCount: &atomic.Int64{}, } } @@ -70,7 +70,7 @@ func (m *Manager) Start(ctx context.Context, host component.Host, sm *scrape.Man // the target allocator is disabled return nil } - httpClient, err := m.cfg.ToClient(ctx, host, m.settings.TelemetrySettings) + httpClient, err := m.cfg.ToClient(ctx, host.GetExtensions(), m.settings.TelemetrySettings) if err != nil { m.settings.Logger.Error("Failed to create http client", zap.Error(err)) return err @@ -92,7 +92,9 @@ 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() targetAllocatorIntervalTicker := time.NewTicker(m.cfg.Interval) for { select { @@ -115,6 +117,7 @@ func (m *Manager) Start(ctx context.Context, host component.Host, sm *scrape.Man func (m *Manager) Shutdown() { close(m.shutdown) + m.wg.Wait() } // sync request jobs from targetAllocator and update underlying receiver, if the response does not match the provided compareHash. @@ -198,16 +201,9 @@ func (m *Manager) sync(compareHash uint64, httpClient *http.Client) (uint64, err func (m *Manager) applyCfg() error { scrapeConfigs, err := m.promCfg.GetScrapeConfigs() - truePtr := true if err != nil { return fmt.Errorf("could not get scrape configs: %w", err) } - if !m.enableNativeHistograms { - // Enforce scraping classic histograms to avoid dropping them. - for _, scrapeConfig := range m.promCfg.ScrapeConfigs { - scrapeConfig.AlwaysScrapeClassicHistograms = &truePtr - } - } if err := m.scrapeManager.ApplyConfig(m.promCfg); err != nil { return err @@ -232,6 +228,7 @@ func getScrapeConfigsResponse(httpClient *http.Client, baseURL string) (map[stri if err != nil { return nil, err } + defer resp.Body.Close() body, err := io.ReadAll(resp.Body) if err != nil { @@ -239,21 +236,18 @@ func getScrapeConfigsResponse(httpClient *http.Client, baseURL string) (map[stri } jobToScrapeConfig := map[string]*promconfig.ScrapeConfig{} - envReplacedBody := instantiateShard(body) + envReplacedBody := instantiateShard(body, os.LookupEnv) err = yaml.Unmarshal(envReplacedBody, &jobToScrapeConfig) if err != nil { return nil, err } - err = resp.Body.Close() - if err != nil { - return nil, err - } return jobToScrapeConfig, nil } // instantiateShard inserts the SHARD environment variable in the returned configuration -func instantiateShard(body []byte) []byte { - shard, ok := os.LookupEnv("SHARD") +func instantiateShard(body []byte, lookup func(string) (string, bool)) []byte { + shard, ok := lookup("SHARD") + if !ok { shard = "0" } diff --git a/otelcollector/prometheusreceiver/internal/targetallocator/manager_test.go b/otelcollector/prometheusreceiver/internal/targetallocator/manager_test.go new file mode 100644 index 000000000..e91603073 --- /dev/null +++ b/otelcollector/prometheusreceiver/internal/targetallocator/manager_test.go @@ -0,0 +1,194 @@ +// Copyright The OpenTelemetry Authors +// SPDX-License-Identifier: Apache-2.0 + +package targetallocator + +import ( + "net/http" + "net/http/httptest" + "testing" + "time" + + "github.com/prometheus/client_golang/prometheus" + "github.com/prometheus/common/promslog" + promconfig "github.com/prometheus/prometheus/config" + "github.com/prometheus/prometheus/discovery" + "github.com/prometheus/prometheus/scrape" + "github.com/stretchr/testify/assert" + "github.com/stretchr/testify/require" + "go.opentelemetry.io/collector/component/componenttest" + "go.opentelemetry.io/collector/receiver/receivertest" + "go.uber.org/zap" + "go.uber.org/zap/zapcore" + "go.uber.org/zap/zaptest/observer" + + "github.com/open-telemetry/opentelemetry-collector-contrib/receiver/prometheusreceiver/internal/metadata" +) + +func TestNewManager(t *testing.T) { + 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) + + 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.configUpdateCount) + assert.Len(t, manager.initialScrapeConfigs, 1) +} + +func TestManagerShutdown(t *testing.T) { + // Create a mock target allocator server + server := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { + w.WriteHeader(http.StatusOK) + if r.URL.Path == "/scrape_configs" { + _, _ = w.Write([]byte("{}")) + } + })) + defer server.Close() + + cfg := &Config{ + Interval: 100 * time.Millisecond, + CollectorID: "test-collector", + } + cfg.Endpoint = server.URL + promCfg, err := promconfig.Load("", nil) + require.NoError(t, err) + + // Create a logger with observer to capture logs + core, logs := observer.New(zapcore.InfoLevel) + logger := zap.New(core) + settings := receivertest.NewNopSettings(metadata.Type) + settings.Logger = logger + + manager := NewManager(settings, cfg, promCfg) + + // Start the manager so the goroutine is running + ctx := t.Context() + + // Initialize Prometheus managers using the same pattern as manager_test.go + promLogger := promslog.NewNopLogger() + reg := prometheus.NewRegistry() + sdMetrics, err := discovery.RegisterSDMetrics(reg, discovery.NewRefreshMetrics(reg)) + require.NoError(t, err) + discoveryManager := discovery.NewManager(ctx, promLogger, reg, sdMetrics) + require.NotNil(t, discoveryManager) + + scrapeManager, err := scrape.NewManager(&scrape.Options{}, promLogger, nil, nil, reg) + require.NoError(t, err) + defer scrapeManager.Stop() + + err = manager.Start(ctx, componenttest.NewNopHost(), scrapeManager, discoveryManager) + require.NoError(t, err) + + // Shutdown the manager + manager.Shutdown() + + // Wait for the shutdown to complete with a timeout + require.Eventually(t, func() bool { + // Check if the log message "Stopping target allocator" was logged + logEntries := logs.FilterMessage("Stopping target allocator") + return logEntries.Len() > 0 + }, 5*time.Second, 50*time.Millisecond, "expected shutdown log message") +} + +func TestInstantiateShard(t *testing.T) { + tests := []struct { + name string + input []byte + envVar string + expected []byte + setEnv bool + }{ + { + name: "shard environment variable set", + input: []byte("replica-$(SHARD)"), + envVar: "5", + expected: []byte("replica-5"), + setEnv: true, + }, + { + name: "shard environment variable not set", + input: []byte("replica-$(SHARD)"), + expected: []byte("replica-0"), + setEnv: false, + }, + { + name: "multiple shard placeholders", + input: []byte("job-$(SHARD)-replica-$(SHARD)"), + envVar: "3", + expected: []byte("job-3-replica-3"), + setEnv: true, + }, + { + name: "no shard placeholder", + input: []byte("static-config"), + expected: []byte("static-config"), + setEnv: false, + }, + } + + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + var lookup func(string) (string, bool) + if tt.setEnv { + lookup = func(_ string) (string, bool) { + return tt.envVar, true + } + } else { + lookup = func(_ string) (string, bool) { + return "", false + } + } + + result := instantiateShard(tt.input, lookup) + assert.Equal(t, tt.expected, result) + }) + } +} + +func TestGetScrapeConfigsResponse_InvalidURL(t *testing.T) { + httpClient := &http.Client{} + invalidURL := "://invalid-url" + + _, err := getScrapeConfigsResponse(httpClient, invalidURL) + assert.Error(t, err) +} + +func TestGetScrapeConfigsResponse_HTTPError(t *testing.T) { + // Create a test server that returns an error + server := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, _ *http.Request) { + w.WriteHeader(http.StatusInternalServerError) + })) + defer server.Close() + + httpClient := &http.Client{} + + config, err := getScrapeConfigsResponse(httpClient, server.URL) + // This should succeed in reading the response but return empty config + assert.NoError(t, err) + assert.Empty(t, config) +} + +func TestGetScrapeConfigsResponse_InvalidYAML(t *testing.T) { + // Create a test server that returns invalid YAML + server := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, _ *http.Request) { + w.WriteHeader(http.StatusOK) + _, _ = w.Write([]byte("invalid: yaml: content: [[[")) + })) + defer server.Close() + + httpClient := &http.Client{} + + _, err := getScrapeConfigsResponse(httpClient, server.URL) + assert.Error(t, err) +} diff --git a/otelcollector/prometheusreceiver/targetallocator/manager_test.go b/otelcollector/prometheusreceiver/internal/targetallocator/manager_unsafe_test.go similarity index 98% rename from otelcollector/prometheusreceiver/targetallocator/manager_test.go rename to otelcollector/prometheusreceiver/internal/targetallocator/manager_unsafe_test.go index b41cd21d5..4da315738 100644 --- a/otelcollector/prometheusreceiver/targetallocator/manager_test.go +++ b/otelcollector/prometheusreceiver/internal/targetallocator/manager_unsafe_test.go @@ -37,7 +37,7 @@ import ( "github.com/open-telemetry/opentelemetry-collector-contrib/receiver/prometheusreceiver/internal/metadata" ) -type MockTargetAllocator struct { +type mockTargetAllocator struct { mu sync.Mutex // mu protects the fields below. endpoints map[string][]mockTargetAllocatorResponse accessIndex map[string]*atomic.Int32 @@ -78,7 +78,7 @@ type expectedTestResult struct { jobMap map[string]expectedTestResultJobMap } -func (mta *MockTargetAllocator) ServeHTTP(rw http.ResponseWriter, req *http.Request) { +func (mta *mockTargetAllocator) ServeHTTP(rw http.ResponseWriter, req *http.Request) { mta.mu.Lock() defer mta.mu.Unlock() @@ -105,11 +105,11 @@ func (mta *MockTargetAllocator) ServeHTTP(rw http.ResponseWriter, req *http.Requ } } -func (mta *MockTargetAllocator) Start() { +func (mta *mockTargetAllocator) Start() { mta.srv.Start() } -func (mta *MockTargetAllocator) Stop() { +func (mta *mockTargetAllocator) Stop() { mta.srv.Close() } @@ -136,13 +136,13 @@ func transformTAResponseMap(rawResponses map[string][]mockTargetAllocatorRespons return responsesMap, responsesIndexMap, nil } -func setupMockTargetAllocator(responses Responses) (*MockTargetAllocator, error) { +func setupMockTargetAllocator(responses Responses) (*mockTargetAllocator, error) { responsesMap, responsesIndexMap, err := transformTAResponseMap(responses.responses) if err != nil { return nil, err } - mockTA := &MockTargetAllocator{ + mockTA := &mockTargetAllocator{ endpoints: responsesMap, accessIndex: responsesIndexMap, waitIndex: responses.releaserMap, @@ -736,7 +736,7 @@ func TestTargetAllocatorJobRetrieval(t *testing.T) { baseCfg, err := promconfig.Load("", nil) require.NoError(t, err) - manager := NewManager(receivertest.NewNopSettings(metadata.Type), tc.cfg, baseCfg, false) + manager := NewManager(receivertest.NewNopSettings(metadata.Type), tc.cfg, baseCfg) require.NoError(t, manager.Start(ctx, componenttest.NewNopHost(), scrapeManager, discoveryManager)) allocator.wg.Wait() @@ -938,7 +938,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, false) + manager := NewManager(receivertest.NewNopSettings(metadata.Type), cfg, baseCfg) require.NoError(t, manager.Start(ctx, componenttest.NewNopHost(), scrapeManager, discoveryManager)) allocator.wg.Wait() diff --git a/otelcollector/prometheusreceiver/targetallocator/testdata/config.yaml b/otelcollector/prometheusreceiver/internal/targetallocator/testdata/config.yaml similarity index 100% rename from otelcollector/prometheusreceiver/targetallocator/testdata/config.yaml rename to otelcollector/prometheusreceiver/internal/targetallocator/testdata/config.yaml diff --git a/otelcollector/prometheusreceiver/internal/targetallocator/testdata/config_with_special_chars.yaml b/otelcollector/prometheusreceiver/internal/targetallocator/testdata/config_with_special_chars.yaml new file mode 100644 index 000000000..c705da528 --- /dev/null +++ b/otelcollector/prometheusreceiver/internal/targetallocator/testdata/config_with_special_chars.yaml @@ -0,0 +1,10 @@ +target_allocator: + endpoint: http://localhost:8080 + interval: 30s + collector_id: collector-1 + http_sd_config: + refresh_interval: 60s + http_scrape_config: + basic_auth: + username: testuser + password: "%password-with-percent" diff --git a/otelcollector/prometheusreceiver/targetallocator/testdata/dummy-tls-cert-file b/otelcollector/prometheusreceiver/internal/targetallocator/testdata/dummy-tls-cert-file similarity index 100% rename from otelcollector/prometheusreceiver/targetallocator/testdata/dummy-tls-cert-file rename to otelcollector/prometheusreceiver/internal/targetallocator/testdata/dummy-tls-cert-file diff --git a/otelcollector/prometheusreceiver/targetallocator/testdata/dummy-tls-key-file b/otelcollector/prometheusreceiver/internal/targetallocator/testdata/dummy-tls-key-file similarity index 100% rename from otelcollector/prometheusreceiver/targetallocator/testdata/dummy-tls-key-file rename to otelcollector/prometheusreceiver/internal/targetallocator/testdata/dummy-tls-key-file diff --git a/otelcollector/prometheusreceiver/internal/transaction.go b/otelcollector/prometheusreceiver/internal/transaction.go index 768e448dd..9067784be 100644 --- a/otelcollector/prometheusreceiver/internal/transaction.go +++ b/otelcollector/prometheusreceiver/internal/transaction.go @@ -30,9 +30,11 @@ import ( mdata "github.com/open-telemetry/opentelemetry-collector-contrib/receiver/prometheusreceiver/internal/metadata" ) -var removeStartTimeAdjustment = featuregate.GlobalRegistry().MustRegister( +var _ = featuregate.GlobalRegistry().MustRegister( "receiver.prometheusreceiver.RemoveStartTimeAdjustment", - featuregate.StageAlpha, + featuregate.StageStable, + featuregate.WithRegisterFromVersion("v0.121.0"), + featuregate.WithRegisterToVersion("v0.142.0"), featuregate.WithRegisterDescription("When enabled, the Prometheus receiver will"+ " leave the start time unset. Use the new metricstarttime processor instead."), ) @@ -52,21 +54,21 @@ type metricFamilyKey struct { } type transaction struct { - isNew bool - trimSuffixes bool - enableNativeHistograms bool - addingNativeHistogram bool // true if the last sample was a native histogram. - ctx context.Context - families map[resourceKey]map[scopeID]map[metricFamilyKey]*metricFamily - mc scrape.MetricMetadataStore - sink consumer.Metrics - externalLabels labels.Labels - nodeResources map[resourceKey]pcommon.Resource - scopeAttributes map[resourceKey]map[scopeID]pcommon.Map - logger *zap.Logger - buildInfo component.BuildInfo - metricAdjuster MetricsAdjuster - obsrecv *receiverhelper.ObsReport + isNew bool + trimSuffixes bool + useMetadata bool + addingNativeHistogram bool // true if the last sample was a native histogram. + addingNHCB bool // true if the last sample was a NHCB. + ctx context.Context + families map[resourceKey]map[scopeID]map[metricFamilyKey]*metricFamily + mc scrape.MetricMetadataStore + sink consumer.Metrics + externalLabels labels.Labels + nodeResources map[resourceKey]pcommon.Resource + scopeAttributes map[resourceKey]map[scopeID]pcommon.Map + logger *zap.Logger + buildInfo component.BuildInfo + obsrecv *receiverhelper.ObsReport // Used as buffer to calculate series ref hash. bufBytes []byte } @@ -81,35 +83,34 @@ type scopeID struct { func newTransaction( ctx context.Context, - metricAdjuster MetricsAdjuster, sink consumer.Metrics, externalLabels labels.Labels, settings receiver.Settings, obsrecv *receiverhelper.ObsReport, trimSuffixes bool, - enableNativeHistograms bool, + useMetadata bool, ) *transaction { return &transaction{ - ctx: ctx, - families: make(map[resourceKey]map[scopeID]map[metricFamilyKey]*metricFamily), - isNew: true, - trimSuffixes: trimSuffixes, - enableNativeHistograms: enableNativeHistograms, - sink: sink, - metricAdjuster: metricAdjuster, - 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), + nodeResources: map[resourceKey]pcommon.Resource{}, } } // Append always returns 0 to disable label caching. func (t *transaction) Append(_ storage.SeriesRef, ls labels.Labels, atMs int64, val float64) (storage.SeriesRef, error) { t.addingNativeHistogram = false + t.addingNHCB = false select { case <-t.ctx.Done(): @@ -173,7 +174,7 @@ func (t *transaction) Append(_ storage.SeriesRef, ls labels.Labels, atMs int64, scope := getScopeID(ls) - if t.enableNativeHistograms && value.IsStaleNaN(val) { + if value.IsStaleNaN(val) { if t.detectAndStoreNativeHistogramStaleness(atMs, rKey, scope, metricName, ls) { return 0, nil } @@ -185,9 +186,14 @@ func (t *transaction) Append(_ storage.SeriesRef, ls labels.Labels, atMs int64, err = curMF.addSeries(seriesRef, metricName, ls, atMs, val) if err != nil { t.logger.Warn("failed to add datapoint", zap.Error(err), zap.String("metric_name", metricName), zap.Any("labels", ls)) + // never return errors, as that fails the while scrape + // return ref==0 indicating that the series was not added + return 0, nil } - return 0, nil // never return errors, as that fails the whole scrape + // never return errors, as that fails the whole scrape + // return ref==1 indicating that the series was added and needs staleness tracking + return 1, nil } // detectAndStoreNativeHistogramStaleness returns true if it detects @@ -211,6 +217,7 @@ func (t *transaction) detectAndStoreNativeHistogramStaleness(atMs int64, key *re } // Store the staleness marker as a native histogram. t.addingNativeHistogram = true + t.addingNHCB = false curMF := t.getOrCreateMetricFamily(*key, scope, metricName) seriesRef := t.getSeriesRef(ls, curMF.mtype) @@ -243,10 +250,7 @@ func (t *transaction) getOrCreateMetricFamily(key resourceKey, scope scopeID, mn fnKey := metricFamilyKey{isExponentialHistogram: mfKey.isExponentialHistogram, name: fn} mf, ok := t.families[key][scope][fnKey] if !ok || !mf.includesMetric(mn) { - curMf = newMetricFamily(mn, t.mc, t.logger) - if curMf.mtype == pmetric.MetricTypeHistogram && mfKey.isExponentialHistogram { - curMf.mtype = pmetric.MetricTypeExponentialHistogram - } + curMf = newMetricFamily(mn, t.mc, t.logger, t.addingNativeHistogram, t.addingNHCB) t.families[key][scope][metricFamilyKey{isExponentialHistogram: mfKey.isExponentialHistogram, name: curMf.name}] = curMf return curMf } @@ -285,17 +289,20 @@ func (t *transaction) AppendExemplar(_ storage.SeriesRef, l labels.Labels, e exe } func (t *transaction) AppendHistogram(_ storage.SeriesRef, ls labels.Labels, atMs int64, h *histogram.Histogram, fh *histogram.FloatHistogram) (storage.SeriesRef, error) { - if !t.enableNativeHistograms { - return 0, nil - } - select { case <-t.ctx.Done(): return 0, errTransactionAborted default: } + var schema int32 + if h != nil { + schema = h.Schema + } else if fh != nil { + schema = fh.Schema + } t.addingNativeHistogram = true + t.addingNHCB = schema == -53 if t.externalLabels.Len() != 0 { b := labels.NewBuilder(ls) @@ -332,21 +339,38 @@ func (t *transaction) AppendHistogram(_ storage.SeriesRef, ls labels.Labels, atM t.logger.Warn("dropping unsupported gauge histogram datapoint", zap.String("metric_name", metricName), zap.Any("labels", ls)) } - err = curMF.addExponentialHistogramSeries(t.getSeriesRef(ls, curMF.mtype), metricName, ls, atMs, h, fh) + if schema == -53 { + err = curMF.addNHCBSeries(t.getSeriesRef(ls, curMF.mtype), metricName, ls, atMs, h, fh) + } else { + err = curMF.addExponentialHistogramSeries(t.getSeriesRef(ls, curMF.mtype), metricName, ls, atMs, h, fh) + } if err != nil { t.logger.Warn("failed to add histogram datapoint", zap.Error(err), zap.String("metric_name", metricName), zap.Any("labels", ls)) + // never return errors, as that fails the while scrape + // return ref==0 indicating that the series was not added + return 0, nil } - return 0, nil // never return errors, as that fails the whole scrape + // never return errors, as that fails the whole scrape + // return ref==1 indicating that the series was added and needs staleness tracking + return 1, nil } func (t *transaction) AppendCTZeroSample(_ storage.SeriesRef, ls labels.Labels, atMs, ctMs int64) (storage.SeriesRef, error) { t.addingNativeHistogram = false + t.addingNHCB = false return t.setCreationTimestamp(ls, atMs, ctMs) } -func (t *transaction) AppendHistogramCTZeroSample(_ storage.SeriesRef, ls labels.Labels, atMs, ctMs int64, _ *histogram.Histogram, _ *histogram.FloatHistogram) (storage.SeriesRef, error) { +func (t *transaction) AppendHistogramCTZeroSample(_ storage.SeriesRef, ls labels.Labels, atMs, ctMs int64, h *histogram.Histogram, fh *histogram.FloatHistogram) (storage.SeriesRef, error) { + var schema int32 + if h != nil { + schema = h.Schema + } else if fh != nil { + schema = fh.Schema + } t.addingNativeHistogram = true + t.addingNHCB = schema == -53 return t.setCreationTimestamp(ls, atMs, ctMs) } @@ -488,9 +512,13 @@ func (t *transaction) initTransaction(lbs labels.Labels) (*resourceKey, error) { if !ok { return nil, errors.New("unable to find target in context") } - t.mc, ok = scrape.MetricMetadataStoreFromContext(t.ctx) - if !ok { - return nil, errors.New("unable to find MetricMetadataStore in context") + if t.useMetadata { + t.mc, ok = scrape.MetricMetadataStoreFromContext(t.ctx) + if !ok { + return nil, errors.New("unable to find MetricMetadataStore in context") + } + } else { + t.mc = &emptyMetadataStore{} } rKey, err := t.getJobAndInstance(lbs) @@ -554,13 +582,6 @@ func (t *transaction) Commit() error { return nil } - if !removeStartTimeAdjustment.IsEnabled() { - if err = t.metricAdjuster.AdjustMetrics(md); err != nil { - t.obsrecv.EndMetricsOp(ctx, dataformat, numPoints, err) - return err - } - } - err = t.sink.ConsumeMetrics(ctx, md) t.obsrecv.EndMetricsOp(ctx, dataformat, numPoints, err) return err @@ -577,6 +598,7 @@ func (*transaction) UpdateMetadata(_ storage.SeriesRef, _ labels.Labels, _ metad func (t *transaction) AddTargetInfo(key resourceKey, ls labels.Labels) { t.addingNativeHistogram = false + t.addingNHCB = false if resource, ok := t.nodeResources[key]; ok { attrs := resource.Attributes() ls.Range(func(lbl labels.Label) { @@ -590,6 +612,7 @@ func (t *transaction) AddTargetInfo(key resourceKey, ls labels.Labels) { func (t *transaction) addScopeInfo(key resourceKey, ls labels.Labels) { t.addingNativeHistogram = false + t.addingNHCB = false attrs := pcommon.NewMap() scope := scopeID{} ls.Range(func(lbl labels.Label) { diff --git a/otelcollector/prometheusreceiver/internal/transaction_bench_test.go b/otelcollector/prometheusreceiver/internal/transaction_bench_test.go new file mode 100644 index 000000000..27d73dce8 --- /dev/null +++ b/otelcollector/prometheusreceiver/internal/transaction_bench_test.go @@ -0,0 +1,285 @@ +// Copyright The OpenTelemetry Authors +// SPDX-License-Identifier: Apache-2.0 + +package internal + +import ( + "context" + "fmt" + "testing" + + "github.com/prometheus/common/model" + "github.com/prometheus/prometheus/config" + "github.com/prometheus/prometheus/model/histogram" + "github.com/prometheus/prometheus/model/labels" + "github.com/prometheus/prometheus/scrape" + "github.com/prometheus/prometheus/tsdb/tsdbutil" + "github.com/stretchr/testify/assert" + "go.opentelemetry.io/collector/component" + "go.opentelemetry.io/collector/consumer/consumertest" + "go.opentelemetry.io/collector/receiver/receiverhelper" + "go.opentelemetry.io/collector/receiver/receivertest" + + "github.com/open-telemetry/opentelemetry-collector-contrib/pkg/translator/prometheus" + "github.com/open-telemetry/opentelemetry-collector-contrib/receiver/prometheusreceiver/internal/metadata" +) + +const ( + numSeries = 10000 +) + +var ( + benchTarget = scrape.NewTarget( + labels.FromMap(map[string]string{ + model.InstanceLabel: "localhost:8080", + model.JobLabel: "benchmark", + }), + &config.ScrapeConfig{}, + map[model.LabelName]model.LabelValue{ + model.AddressLabel: "localhost:8080", + model.SchemeLabel: "http", + }, + nil, + ) + + benchCtx = scrape.ContextWithTarget(context.Background(), benchTarget) +) + +// BenchmarkAppend benchmarks the Append method of the transaction. +// It tests the performance of appending classic metric types (counters, gauges, summaries, histograms). +func BenchmarkAppend(b *testing.B) { + benchmarkAppend(b) +} + +func benchmarkAppend(b *testing.B) { + labelSets := generateLabelSets(numSeries, 50) + timestamp := int64(1234567890) + + b.ResetTimer() + b.ReportAllocs() + + for i := 0; i < b.N; i++ { + b.StopTimer() + tx := newBenchmarkTransaction(b) + b.StartTimer() + + for j, ls := range labelSets { + value := float64(j) + _, err := tx.Append(0, ls, timestamp, value) + assert.NoError(b, err) + } + } +} + +// BenchmarkAppendHistogram benchmarks the AppendHistogram method of the transaction. +// It tests the performance of appending native histogram metrics. +func BenchmarkAppendHistogram(b *testing.B) { + benchmarkAppendHistogram(b) +} + +func benchmarkAppendHistogram(b *testing.B) { + labelSets := generateLabelSets(numSeries, 50) + histograms := generateNativeHistograms(numSeries) + timestamp := int64(1234567890) + + b.ResetTimer() + b.ReportAllocs() + + for i := 0; i < b.N; i++ { + b.StopTimer() + tx := newBenchmarkTransaction(b) + b.StartTimer() + + for j := range labelSets { + _, err := tx.AppendHistogram(0, labelSets[j], timestamp, histograms[j], nil) + assert.NoError(b, err) + } + } +} + +// BenchmarkCommit benchmarks the Commit method which converts accumulated metrics to pmetrics format +// and delivers them to the consumer. This is separate from Append/AppendHistogram to measure the +// conversion and delivery overhead independently. +// Note: The presence of target_info and otel_scope_info metrics affects the performance of the Commit method, +// so they are benchmarked in sub-benchmarks. +func BenchmarkCommit(b *testing.B) { + b.Run("ClassicMetrics", func(b *testing.B) { + b.Run("Baseline", func(b *testing.B) { + benchmarkCommit(b, false, false, false) + }) + + b.Run("WithTargetInfo", func(b *testing.B) { + benchmarkCommit(b, false, true, false) + }) + + b.Run("WithScopeInfo", func(b *testing.B) { + benchmarkCommit(b, false, false, true) + }) + }) + + b.Run("NativeHistogram", func(b *testing.B) { + b.Run("Baseline", func(b *testing.B) { + benchmarkCommit(b, true, false, false) + }) + + b.Run("WithTargetInfo", func(b *testing.B) { + benchmarkCommit(b, true, true, false) + }) + + b.Run("WithScopeInfo", func(b *testing.B) { + benchmarkCommit(b, true, false, true) + }) + }) +} + +func benchmarkCommit(b *testing.B, useNativeHistograms, withTargetInfo, withScopeInfo bool) { + labelSets := generateLabelSets(numSeries, 50) + var histograms []*histogram.Histogram + if useNativeHistograms { + histograms = generateNativeHistograms(numSeries) + } + timestamp := int64(1234567890) + + b.ResetTimer() + b.ReportAllocs() + + for i := 0; i < b.N; i++ { + // Setup: Create transaction and append all data (not timed) + b.StopTimer() + tx := newBenchmarkTransaction(b) + + if withTargetInfo { + targetInfoLabels := createTargetInfoLabels() + _, _ = tx.Append(0, targetInfoLabels, timestamp, 1) + } + + if withScopeInfo { + scopeInfoLabels := createScopeInfoLabels() + _, _ = tx.Append(0, scopeInfoLabels, timestamp, 1) + } + + if useNativeHistograms { + for j := range labelSets { + _, _ = tx.AppendHistogram(0, labelSets[j], timestamp, histograms[j], nil) + } + } else { + for j, ls := range labelSets { + _, _ = tx.Append(0, ls, timestamp, float64(j)) + } + } + b.StartTimer() + + // Benchmark: Only measure Commit + err := tx.Commit() + assert.NoError(b, err) + } +} + +// newBenchmarkTransaction creates a new transaction configured for benchmarking. +// It uses a no-op consumer and minimal configuration to isolate transaction performance. +func newBenchmarkTransaction(b *testing.B) *transaction { + b.Helper() + + sink := new(consumertest.MetricsSink) + settings := receivertest.NewNopSettings(metadata.Type) + obsrecv, err := receiverhelper.NewObsReport(receiverhelper.ObsReportSettings{ + ReceiverID: component.MustNewID("prometheus"), + Transport: "http", + ReceiverCreateSettings: settings, + }) + if err != nil { + b.Fatalf("Failed to create ObsReport: %v", err) + } + + tx := newTransaction( + benchCtx, + sink, + labels.EmptyLabels(), // no external labels + settings, + obsrecv, + false, // trimSuffixes + false, // useMetadata + ) + + // Set a mock MetricMetadataStore to avoid nil pointer issues + tx.mc = &mockMetadataStore{} + + return tx +} + +// generateLabelSets creates label sets for benchmarking with the specified cardinality. +func generateLabelSets(seriesCount, cardinality int) []labels.Labels { + result := make([]labels.Labels, seriesCount) + + for i := range seriesCount { + lbls := labels.NewBuilder(labels.EmptyLabels()) + lbls.Set(model.MetricNameLabel, fmt.Sprintf("metric_%d", i)) + + for j := range cardinality { + lbls.Set(fmt.Sprintf("label_%d", j), fmt.Sprintf("value_%d_%d", i, j)) + } + + result[i] = lbls.Labels() + } + + return result +} + +// generateNativeHistograms creates native histogram instances for benchmarking. +// Uses Prometheus's test histogram generator for realistic histogram structures. +func generateNativeHistograms(count int) []*histogram.Histogram { + result := make([]*histogram.Histogram, count) + + for i := range count { + // Use tsdbutil.GenerateTestHistogram to create realistic native histograms + // The parameter controls the histogram ID, which varies the bucket counts slightly + result[i] = tsdbutil.GenerateTestHistogram(int64(i)) + } + + return result +} + +// createTargetInfoLabels creates labels for a target_info metric. +// The target_info metric is used to add resource attributes to metrics. +func createTargetInfoLabels() labels.Labels { + return labels.FromMap(map[string]string{ + model.MetricNameLabel: prometheus.TargetInfoMetricName, + model.JobLabel: "benchmark", + model.InstanceLabel: "localhost:8080", + "environment": "test", + "region": "us-west-2", + "cluster": "benchmark-cluster", + }) +} + +// createScopeInfoLabels creates labels for an otel_scope_info metric. +// The otel_scope_info metric is used to add scope-level attributes. +func createScopeInfoLabels() labels.Labels { + return labels.FromMap(map[string]string{ + model.MetricNameLabel: prometheus.ScopeInfoMetricName, + model.JobLabel: "benchmark", + model.InstanceLabel: "localhost:8080", + prometheus.ScopeNameLabelKey: "benchmark.scope", + prometheus.ScopeVersionLabelKey: "1.0.0", + "scope_attribute": "test_value", + }) +} + +// mockMetadataStore is a minimal implementation of scrape.MetricMetadataStore for testing +type mockMetadataStore struct{} + +func (*mockMetadataStore) ListMetadata() []scrape.MetricMetadata { + return nil +} + +func (*mockMetadataStore) GetMetadata(_ string) (scrape.MetricMetadata, bool) { + return scrape.MetricMetadata{}, false +} + +func (*mockMetadataStore) SizeMetadata() int { + return 0 +} + +func (*mockMetadataStore) LengthMetadata() int { + return 0 +} diff --git a/otelcollector/prometheusreceiver/internal/transaction_test.go b/otelcollector/prometheusreceiver/internal/transaction_test.go index 49e42ef48..995bf5d4d 100644 --- a/otelcollector/prometheusreceiver/internal/transaction_test.go +++ b/otelcollector/prometheusreceiver/internal/transaction_test.go @@ -5,8 +5,6 @@ package internal import ( "context" - "errors" - "fmt" "testing" "time" @@ -29,12 +27,9 @@ import ( conventions "go.opentelemetry.io/otel/semconv/v1.27.0" "go.uber.org/zap" "go.uber.org/zap/zaptest/observer" - - "github.com/open-telemetry/opentelemetry-collector-contrib/internal/common/testutil" ) const ( - startTimestamp = pcommon.Timestamp(1555366608340000000) ts = int64(1555366610000) interval = int64(15 * 1000) tsNanos = pcommon.Timestamp(ts * 1e6) @@ -60,89 +55,65 @@ var ( ) func TestTransactionCommitWithoutAdding(t *testing.T) { - for _, enableNativeHistograms := range []bool{true, false} { - t.Run(fmt.Sprintf("enableNativeHistograms=%v", enableNativeHistograms), func(t *testing.T) { - testTransactionCommitWithoutAdding(t, enableNativeHistograms) - }) - } + testTransactionCommitWithoutAdding(t) } -func testTransactionCommitWithoutAdding(t *testing.T, enableNativeHistograms bool) { - tr := newTransaction(scrapeCtx, &startTimeAdjuster{startTime: startTimestamp}, consumertest.NewNop(), labels.EmptyLabels(), receivertest.NewNopSettings(receivertest.NopType), nopObsRecv(t), false, enableNativeHistograms) +func testTransactionCommitWithoutAdding(t *testing.T) { + tr := newTransaction(scrapeCtx, consumertest.NewNop(), labels.EmptyLabels(), receivertest.NewNopSettings(receivertest.NopType), nopObsRecv(t), false, true) assert.NoError(t, tr.Commit()) } func TestTransactionRollbackDoesNothing(t *testing.T) { - for _, enableNativeHistograms := range []bool{true, false} { - t.Run(fmt.Sprintf("enableNativeHistograms=%v", enableNativeHistograms), func(t *testing.T) { - testTransactionRollbackDoesNothing(t, enableNativeHistograms) - }) - } + testTransactionRollbackDoesNothing(t) } -func testTransactionRollbackDoesNothing(t *testing.T, enableNativeHistograms bool) { - tr := newTransaction(scrapeCtx, &startTimeAdjuster{startTime: startTimestamp}, consumertest.NewNop(), labels.EmptyLabels(), receivertest.NewNopSettings(receivertest.NopType), nopObsRecv(t), false, enableNativeHistograms) +func testTransactionRollbackDoesNothing(t *testing.T) { + tr := newTransaction(scrapeCtx, consumertest.NewNop(), labels.EmptyLabels(), receivertest.NewNopSettings(receivertest.NopType), nopObsRecv(t), false, true) assert.NoError(t, tr.Rollback()) } func TestTransactionUpdateMetadataDoesNothing(t *testing.T) { - for _, enableNativeHistograms := range []bool{true, false} { - t.Run(fmt.Sprintf("enableNativeHistograms=%v", enableNativeHistograms), func(t *testing.T) { - testTransactionUpdateMetadataDoesNothing(t, enableNativeHistograms) - }) - } + testTransactionUpdateMetadataDoesNothing(t) } -func testTransactionUpdateMetadataDoesNothing(t *testing.T, enableNativeHistograms bool) { - tr := newTransaction(scrapeCtx, &startTimeAdjuster{startTime: startTimestamp}, consumertest.NewNop(), labels.EmptyLabels(), receivertest.NewNopSettings(receivertest.NopType), nopObsRecv(t), false, enableNativeHistograms) +func testTransactionUpdateMetadataDoesNothing(t *testing.T) { + tr := newTransaction(scrapeCtx, consumertest.NewNop(), labels.EmptyLabels(), receivertest.NewNopSettings(receivertest.NopType), nopObsRecv(t), false, true) _, err := tr.UpdateMetadata(0, labels.New(), metadata.Metadata{}) assert.NoError(t, err) } func TestTransactionAppendNoTarget(t *testing.T) { - for _, enableNativeHistograms := range []bool{true, false} { - t.Run(fmt.Sprintf("enableNativeHistograms=%v", enableNativeHistograms), func(t *testing.T) { - testTransactionAppendNoTarget(t, enableNativeHistograms) - }) - } + testTransactionAppendNoTarget(t) } -func testTransactionAppendNoTarget(t *testing.T, enableNativeHistograms bool) { +func testTransactionAppendNoTarget(t *testing.T) { badLabels := labels.FromStrings(model.MetricNameLabel, "counter_test") - tr := newTransaction(scrapeCtx, &startTimeAdjuster{startTime: startTimestamp}, consumertest.NewNop(), labels.EmptyLabels(), receivertest.NewNopSettings(receivertest.NopType), nopObsRecv(t), false, enableNativeHistograms) + tr := newTransaction(scrapeCtx, consumertest.NewNop(), labels.EmptyLabels(), receivertest.NewNopSettings(receivertest.NopType), nopObsRecv(t), false, true) _, err := tr.Append(0, badLabels, time.Now().Unix()*1000, 1.0) assert.Error(t, err) } func TestTransactionAppendNoMetricName(t *testing.T) { - for _, enableNativeHistograms := range []bool{true, false} { - t.Run(fmt.Sprintf("enableNativeHistograms=%v", enableNativeHistograms), func(t *testing.T) { - testTransactionAppendNoMetricName(t, enableNativeHistograms) - }) - } + testTransactionAppendNoMetricName(t) } -func testTransactionAppendNoMetricName(t *testing.T, enableNativeHistograms bool) { +func testTransactionAppendNoMetricName(t *testing.T) { jobNotFoundLb := labels.FromMap(map[string]string{ model.InstanceLabel: "localhost:8080", model.JobLabel: "test2", }) - tr := newTransaction(scrapeCtx, &startTimeAdjuster{startTime: startTimestamp}, consumertest.NewNop(), labels.EmptyLabels(), receivertest.NewNopSettings(receivertest.NopType), nopObsRecv(t), false, enableNativeHistograms) + tr := newTransaction(scrapeCtx, consumertest.NewNop(), labels.EmptyLabels(), receivertest.NewNopSettings(receivertest.NopType), nopObsRecv(t), false, true) _, err := tr.Append(0, jobNotFoundLb, time.Now().Unix()*1000, 1.0) assert.ErrorIs(t, err, errMetricNameNotFound) assert.ErrorIs(t, tr.Commit(), errNoDataToBuild) } func TestTransactionAppendEmptyMetricName(t *testing.T) { - for _, enableNativeHistograms := range []bool{true, false} { - t.Run(fmt.Sprintf("enableNativeHistograms=%v", enableNativeHistograms), func(t *testing.T) { - testTransactionAppendEmptyMetricName(t, enableNativeHistograms) - }) - } + testTransactionAppendEmptyMetricName(t) } -func testTransactionAppendEmptyMetricName(t *testing.T, enableNativeHistograms bool) { - tr := newTransaction(scrapeCtx, &startTimeAdjuster{startTime: startTimestamp}, consumertest.NewNop(), labels.EmptyLabels(), receivertest.NewNopSettings(receivertest.NopType), nopObsRecv(t), false, enableNativeHistograms) +func testTransactionAppendEmptyMetricName(t *testing.T) { + tr := newTransaction(scrapeCtx, consumertest.NewNop(), labels.EmptyLabels(), receivertest.NewNopSettings(receivertest.NopType), nopObsRecv(t), false, true) _, err := tr.Append(0, labels.FromMap(map[string]string{ model.InstanceLabel: "localhost:8080", model.JobLabel: "test2", @@ -152,16 +123,12 @@ func testTransactionAppendEmptyMetricName(t *testing.T, enableNativeHistograms b } func TestTransactionAppendResource(t *testing.T) { - for _, enableNativeHistograms := range []bool{true, false} { - t.Run(fmt.Sprintf("enableNativeHistograms=%v", enableNativeHistograms), func(t *testing.T) { - testTransactionAppendResource(t, enableNativeHistograms) - }) - } + testTransactionAppendResource(t) } -func testTransactionAppendResource(t *testing.T, enableNativeHistograms bool) { +func testTransactionAppendResource(t *testing.T) { sink := new(consumertest.MetricsSink) - tr := newTransaction(scrapeCtx, &startTimeAdjuster{startTime: startTimestamp}, sink, labels.EmptyLabels(), receivertest.NewNopSettings(receivertest.NopType), nopObsRecv(t), false, enableNativeHistograms) + tr := newTransaction(scrapeCtx, sink, labels.EmptyLabels(), receivertest.NewNopSettings(receivertest.NopType), nopObsRecv(t), false, true) _, err := tr.Append(0, labels.FromMap(map[string]string{ model.InstanceLabel: "localhost:8080", model.JobLabel: "test", @@ -183,16 +150,12 @@ func testTransactionAppendResource(t *testing.T, enableNativeHistograms bool) { } func TestTransactionAppendMultipleResources(t *testing.T) { - for _, enableNativeHistograms := range []bool{true, false} { - t.Run(fmt.Sprintf("enableNativeHistograms=%v", enableNativeHistograms), func(t *testing.T) { - testTransactionAppendMultipleResources(t, enableNativeHistograms) - }) - } + testTransactionAppendMultipleResources(t) } -func testTransactionAppendMultipleResources(t *testing.T, enableNativeHistograms bool) { +func testTransactionAppendMultipleResources(t *testing.T) { sink := new(consumertest.MetricsSink) - tr := newTransaction(scrapeCtx, &startTimeAdjuster{startTime: startTimestamp}, sink, labels.EmptyLabels(), receivertest.NewNopSettings(receivertest.NopType), nopObsRecv(t), false, enableNativeHistograms) + tr := newTransaction(scrapeCtx, sink, labels.EmptyLabels(), receivertest.NewNopSettings(receivertest.NopType), nopObsRecv(t), false, true) _, err := tr.Append(0, labels.FromMap(map[string]string{ model.InstanceLabel: "localhost:8080", model.JobLabel: "test-1", @@ -234,16 +197,12 @@ func testTransactionAppendMultipleResources(t *testing.T, enableNativeHistograms } func TestReceiverVersionAndNameAreAttached(t *testing.T) { - for _, enableNativeHistograms := range []bool{true, false} { - t.Run(fmt.Sprintf("enableNativeHistograms=%v", enableNativeHistograms), func(t *testing.T) { - testReceiverVersionAndNameAreAttached(t, enableNativeHistograms) - }) - } + testReceiverVersionAndNameAreAttached(t) } -func testReceiverVersionAndNameAreAttached(t *testing.T, enableNativeHistograms bool) { +func testReceiverVersionAndNameAreAttached(t *testing.T) { sink := new(consumertest.MetricsSink) - tr := newTransaction(scrapeCtx, &startTimeAdjuster{startTime: startTimestamp}, sink, labels.EmptyLabels(), receivertest.NewNopSettings(receivertest.NopType), nopObsRecv(t), false, enableNativeHistograms) + tr := newTransaction(scrapeCtx, sink, labels.EmptyLabels(), receivertest.NewNopSettings(receivertest.NopType), nopObsRecv(t), false, true) _, err := tr.Append(0, labels.FromMap(map[string]string{ model.InstanceLabel: "localhost:8080", model.JobLabel: "test", @@ -263,40 +222,14 @@ func testReceiverVersionAndNameAreAttached(t *testing.T, enableNativeHistograms require.Equal(t, component.NewDefaultBuildInfo().Version, gotScope.Version()) } -func TestTransactionCommitErrorWhenAdjusterError(t *testing.T) { - for _, enableNativeHistograms := range []bool{true, false} { - t.Run(fmt.Sprintf("enableNativeHistograms=%v", enableNativeHistograms), func(t *testing.T) { - testTransactionCommitErrorWhenAdjusterError(t, enableNativeHistograms) - }) - } -} - -func testTransactionCommitErrorWhenAdjusterError(t *testing.T, enableNativeHistograms bool) { - goodLabels := labels.FromMap(map[string]string{ - model.InstanceLabel: "localhost:8080", - model.JobLabel: "test", - model.MetricNameLabel: "counter_test", - }) - sink := new(consumertest.MetricsSink) - adjusterErr := errors.New("adjuster error") - tr := newTransaction(scrapeCtx, &errorAdjuster{err: adjusterErr}, sink, labels.EmptyLabels(), receivertest.NewNopSettings(receivertest.NopType), nopObsRecv(t), false, enableNativeHistograms) - _, err := tr.Append(0, goodLabels, time.Now().Unix()*1000, 1.0) - assert.NoError(t, err) - assert.ErrorIs(t, tr.Commit(), adjusterErr) -} - // Ensure that we reject duplicate label keys. See https://github.com/open-telemetry/wg-prometheus/issues/44. func TestTransactionAppendDuplicateLabels(t *testing.T) { - for _, enableNativeHistograms := range []bool{true, false} { - t.Run(fmt.Sprintf("enableNativeHistograms=%v", enableNativeHistograms), func(t *testing.T) { - testTransactionAppendDuplicateLabels(t, enableNativeHistograms) - }) - } + testTransactionAppendDuplicateLabels(t) } -func testTransactionAppendDuplicateLabels(t *testing.T, enableNativeHistograms bool) { +func testTransactionAppendDuplicateLabels(t *testing.T) { sink := new(consumertest.MetricsSink) - tr := newTransaction(scrapeCtx, &startTimeAdjuster{startTime: startTimestamp}, sink, labels.EmptyLabels(), receivertest.NewNopSettings(receivertest.NopType), nopObsRecv(t), false, enableNativeHistograms) + tr := newTransaction(scrapeCtx, sink, labels.EmptyLabels(), receivertest.NewNopSettings(receivertest.NopType), nopObsRecv(t), false, true) dupLabels := labels.FromStrings( model.InstanceLabel, "0.0.0.0:8855", @@ -312,27 +245,22 @@ func testTransactionAppendDuplicateLabels(t *testing.T, enableNativeHistograms b } func TestTransactionAppendHistogramNoLe(t *testing.T) { - for _, enableNativeHistograms := range []bool{true, false} { - t.Run(fmt.Sprintf("enableNativeHistograms=%v", enableNativeHistograms), func(t *testing.T) { - testTransactionAppendHistogramNoLe(t, enableNativeHistograms) - }) - } + testTransactionAppendHistogramNoLe(t) } -func testTransactionAppendHistogramNoLe(t *testing.T, enableNativeHistograms bool) { +func testTransactionAppendHistogramNoLe(t *testing.T) { sink := new(consumertest.MetricsSink) receiverSettings := receivertest.NewNopSettings(receivertest.NopType) core, observedLogs := observer.New(zap.InfoLevel) receiverSettings.Logger = zap.New(core) tr := newTransaction( scrapeCtx, - &startTimeAdjuster{startTime: startTimestamp}, sink, labels.EmptyLabels(), receiverSettings, nopObsRecv(t), false, - enableNativeHistograms, + true, ) goodLabels := labels.FromStrings( @@ -351,27 +279,22 @@ func testTransactionAppendHistogramNoLe(t *testing.T, enableNativeHistograms boo } func TestTransactionAppendSummaryNoQuantile(t *testing.T) { - for _, enableNativeHistograms := range []bool{true, false} { - t.Run(fmt.Sprintf("enableNativeHistograms=%v", enableNativeHistograms), func(t *testing.T) { - testTransactionAppendSummaryNoQuantile(t, enableNativeHistograms) - }) - } + testTransactionAppendSummaryNoQuantile(t) } -func testTransactionAppendSummaryNoQuantile(t *testing.T, enableNativeHistograms bool) { +func testTransactionAppendSummaryNoQuantile(t *testing.T) { sink := new(consumertest.MetricsSink) receiverSettings := receivertest.NewNopSettings(receivertest.NopType) core, observedLogs := observer.New(zap.InfoLevel) receiverSettings.Logger = zap.New(core) tr := newTransaction( scrapeCtx, - &startTimeAdjuster{startTime: startTimestamp}, sink, labels.EmptyLabels(), receiverSettings, nopObsRecv(t), false, - enableNativeHistograms, + true, ) goodLabels := labels.FromStrings( @@ -390,27 +313,22 @@ func testTransactionAppendSummaryNoQuantile(t *testing.T, enableNativeHistograms } func TestTransactionAppendValidAndInvalid(t *testing.T) { - for _, enableNativeHistograms := range []bool{true, false} { - t.Run(fmt.Sprintf("enableNativeHistograms=%v", enableNativeHistograms), func(t *testing.T) { - testTransactionAppendValidAndInvalid(t, enableNativeHistograms) - }) - } + testTransactionAppendValidAndInvalid(t) } -func testTransactionAppendValidAndInvalid(t *testing.T, enableNativeHistograms bool) { +func testTransactionAppendValidAndInvalid(t *testing.T) { sink := new(consumertest.MetricsSink) receiverSettings := receivertest.NewNopSettings(receivertest.NopType) core, observedLogs := observer.New(zap.InfoLevel) receiverSettings.Logger = zap.New(core) tr := newTransaction( scrapeCtx, - &startTimeAdjuster{startTime: startTimestamp}, sink, labels.EmptyLabels(), receiverSettings, nopObsRecv(t), false, - enableNativeHistograms, + true, ) // a valid counter @@ -444,14 +362,10 @@ func testTransactionAppendValidAndInvalid(t *testing.T, enableNativeHistograms b } func TestTransactionAppendWithEmptyLabelArrayFallbackToTargetLabels(t *testing.T) { - for _, enableNativeHistograms := range []bool{true, false} { - t.Run(fmt.Sprintf("enableNativeHistograms=%v", enableNativeHistograms), func(t *testing.T) { - testTransactionAppendWithEmptyLabelArrayFallbackToTargetLabels(t, enableNativeHistograms) - }) - } + testTransactionAppendWithEmptyLabelArrayFallbackToTargetLabels(t) } -func testTransactionAppendWithEmptyLabelArrayFallbackToTargetLabels(t *testing.T, enableNativeHistograms bool) { +func testTransactionAppendWithEmptyLabelArrayFallbackToTargetLabels(t *testing.T) { sink := new(consumertest.MetricsSink) scrapeTarget := scrape.NewTarget( @@ -471,7 +385,7 @@ func testTransactionAppendWithEmptyLabelArrayFallbackToTargetLabels(t *testing.T scrape.ContextWithTarget(t.Context(), scrapeTarget), testMetadataStore(testMetadata)) - tr := newTransaction(ctx, &startTimeAdjuster{startTime: startTimestamp}, sink, labels.EmptyLabels(), receivertest.NewNopSettings(receivertest.NopType), nopObsRecv(t), false, enableNativeHistograms) + tr := newTransaction(ctx, sink, labels.EmptyLabels(), receivertest.NewNopSettings(receivertest.NopType), nopObsRecv(t), false, true) _, err := tr.Append(0, labels.FromMap(map[string]string{ model.MetricNameLabel: "counter_test", @@ -480,16 +394,12 @@ func testTransactionAppendWithEmptyLabelArrayFallbackToTargetLabels(t *testing.T } func TestAppendExemplarWithNoMetricName(t *testing.T) { - for _, enableNativeHistograms := range []bool{true, false} { - t.Run(fmt.Sprintf("enableNativeHistograms=%v", enableNativeHistograms), func(t *testing.T) { - testAppendExemplarWithNoMetricName(t, enableNativeHistograms) - }) - } + testAppendExemplarWithNoMetricName(t) } -func testAppendExemplarWithNoMetricName(t *testing.T, enableNativeHistograms bool) { +func testAppendExemplarWithNoMetricName(t *testing.T) { sink := new(consumertest.MetricsSink) - tr := newTransaction(scrapeCtx, &startTimeAdjuster{startTime: startTimestamp}, sink, labels.EmptyLabels(), receivertest.NewNopSettings(receivertest.NopType), nopObsRecv(t), false, enableNativeHistograms) + tr := newTransaction(scrapeCtx, sink, labels.EmptyLabels(), receivertest.NewNopSettings(receivertest.NopType), nopObsRecv(t), false, true) labels := labels.FromStrings( model.InstanceLabel, "0.0.0.0:8855", @@ -501,16 +411,12 @@ func testAppendExemplarWithNoMetricName(t *testing.T, enableNativeHistograms boo } func TestAppendExemplarWithEmptyMetricName(t *testing.T) { - for _, enableNativeHistograms := range []bool{true, false} { - t.Run(fmt.Sprintf("enableNativeHistograms=%v", enableNativeHistograms), func(t *testing.T) { - testAppendExemplarWithEmptyMetricName(t, enableNativeHistograms) - }) - } + testAppendExemplarWithEmptyMetricName(t) } -func testAppendExemplarWithEmptyMetricName(t *testing.T, enableNativeHistograms bool) { +func testAppendExemplarWithEmptyMetricName(t *testing.T) { sink := new(consumertest.MetricsSink) - tr := newTransaction(scrapeCtx, &startTimeAdjuster{startTime: startTimestamp}, sink, labels.EmptyLabels(), receivertest.NewNopSettings(receivertest.NopType), nopObsRecv(t), false, enableNativeHistograms) + tr := newTransaction(scrapeCtx, sink, labels.EmptyLabels(), receivertest.NewNopSettings(receivertest.NopType), nopObsRecv(t), false, true) labels := labels.FromStrings( model.InstanceLabel, "0.0.0.0:8855", @@ -522,16 +428,12 @@ func testAppendExemplarWithEmptyMetricName(t *testing.T, enableNativeHistograms } func TestAppendExemplarWithDuplicateLabels(t *testing.T) { - for _, enableNativeHistograms := range []bool{true, false} { - t.Run(fmt.Sprintf("enableNativeHistograms=%v", enableNativeHistograms), func(t *testing.T) { - testAppendExemplarWithDuplicateLabels(t, enableNativeHistograms) - }) - } + testAppendExemplarWithDuplicateLabels(t) } -func testAppendExemplarWithDuplicateLabels(t *testing.T, enableNativeHistograms bool) { +func testAppendExemplarWithDuplicateLabels(t *testing.T) { sink := new(consumertest.MetricsSink) - tr := newTransaction(scrapeCtx, &startTimeAdjuster{startTime: startTimestamp}, sink, labels.EmptyLabels(), receivertest.NewNopSettings(receivertest.NopType), nopObsRecv(t), false, enableNativeHistograms) + tr := newTransaction(scrapeCtx, sink, labels.EmptyLabels(), receivertest.NewNopSettings(receivertest.NopType), nopObsRecv(t), false, true) labels := labels.FromStrings( model.InstanceLabel, "0.0.0.0:8855", @@ -545,16 +447,12 @@ func testAppendExemplarWithDuplicateLabels(t *testing.T, enableNativeHistograms } func TestAppendExemplarWithoutAddingMetric(t *testing.T) { - for _, enableNativeHistograms := range []bool{true, false} { - t.Run(fmt.Sprintf("enableNativeHistograms=%v", enableNativeHistograms), func(t *testing.T) { - testAppendExemplarWithoutAddingMetric(t, enableNativeHistograms) - }) - } + testAppendExemplarWithoutAddingMetric(t) } -func testAppendExemplarWithoutAddingMetric(t *testing.T, enableNativeHistograms bool) { +func testAppendExemplarWithoutAddingMetric(t *testing.T) { sink := new(consumertest.MetricsSink) - tr := newTransaction(scrapeCtx, &startTimeAdjuster{startTime: startTimestamp}, sink, labels.EmptyLabels(), receivertest.NewNopSettings(receivertest.NopType), nopObsRecv(t), false, enableNativeHistograms) + tr := newTransaction(scrapeCtx, sink, labels.EmptyLabels(), receivertest.NewNopSettings(receivertest.NopType), nopObsRecv(t), false, true) labels := labels.FromStrings( model.InstanceLabel, "0.0.0.0:8855", @@ -567,32 +465,24 @@ func testAppendExemplarWithoutAddingMetric(t *testing.T, enableNativeHistograms } func TestAppendExemplarWithNoLabels(t *testing.T) { - for _, enableNativeHistograms := range []bool{true, false} { - t.Run(fmt.Sprintf("enableNativeHistograms=%v", enableNativeHistograms), func(t *testing.T) { - testAppendExemplarWithNoLabels(t, enableNativeHistograms) - }) - } + testAppendExemplarWithNoLabels(t) } -func testAppendExemplarWithNoLabels(t *testing.T, enableNativeHistograms bool) { +func testAppendExemplarWithNoLabels(t *testing.T) { sink := new(consumertest.MetricsSink) - tr := newTransaction(scrapeCtx, &startTimeAdjuster{startTime: startTimestamp}, sink, labels.EmptyLabels(), receivertest.NewNopSettings(receivertest.NopType), nopObsRecv(t), false, enableNativeHistograms) + tr := newTransaction(scrapeCtx, sink, labels.EmptyLabels(), receivertest.NewNopSettings(receivertest.NopType), nopObsRecv(t), false, true) _, err := tr.AppendExemplar(0, labels.EmptyLabels(), exemplar.Exemplar{Value: 0}) assert.Equal(t, errNoJobInstance, err) } func TestAppendExemplarWithEmptyLabelArray(t *testing.T) { - for _, enableNativeHistograms := range []bool{true, false} { - t.Run(fmt.Sprintf("enableNativeHistograms=%v", enableNativeHistograms), func(t *testing.T) { - testAppendExemplarWithEmptyLabelArray(t, enableNativeHistograms) - }) - } + testAppendExemplarWithEmptyLabelArray(t) } -func testAppendExemplarWithEmptyLabelArray(t *testing.T, enableNativeHistograms bool) { +func testAppendExemplarWithEmptyLabelArray(t *testing.T) { sink := new(consumertest.MetricsSink) - tr := newTransaction(scrapeCtx, &startTimeAdjuster{startTime: startTimestamp}, sink, labels.EmptyLabels(), receivertest.NewNopSettings(receivertest.NopType), nopObsRecv(t), false, enableNativeHistograms) + tr := newTransaction(scrapeCtx, sink, labels.EmptyLabels(), receivertest.NewNopSettings(receivertest.NopType), nopObsRecv(t), false, true) _, err := tr.AppendExemplar(0, labels.FromStrings(), exemplar.Exemplar{Value: 0}) assert.Equal(t, errNoJobInstance, err) @@ -600,7 +490,7 @@ func testAppendExemplarWithEmptyLabelArray(t *testing.T, enableNativeHistograms func TestAppendCTZeroSampleNoLabels(t *testing.T) { sink := new(consumertest.MetricsSink) - tr := newTransaction(scrapeCtx, &startTimeAdjuster{startTime: startTimestamp}, sink, labels.EmptyLabels(), receivertest.NewNopSettings(receivertest.NopType), nopObsRecv(t), false, false) + tr := newTransaction(scrapeCtx, sink, labels.EmptyLabels(), receivertest.NewNopSettings(receivertest.NopType), nopObsRecv(t), false, true) _, err := tr.AppendCTZeroSample(0, labels.FromStrings(), 0, 100) assert.ErrorContains(t, err, "job or instance cannot be found from labels") @@ -608,7 +498,7 @@ func TestAppendCTZeroSampleNoLabels(t *testing.T) { func TestAppendHistogramCTZeroSampleNoLabels(t *testing.T) { sink := new(consumertest.MetricsSink) - tr := newTransaction(scrapeCtx, &startTimeAdjuster{startTime: startTimestamp}, sink, labels.EmptyLabels(), receivertest.NewNopSettings(receivertest.NopType), nopObsRecv(t), false, false) + tr := newTransaction(scrapeCtx, sink, labels.EmptyLabels(), receivertest.NewNopSettings(receivertest.NopType), nopObsRecv(t), false, true) _, err := tr.AppendHistogramCTZeroSample(0, labels.FromStrings(), 0, 100, nil, nil) assert.ErrorContains(t, err, "job or instance cannot be found from labels") @@ -616,7 +506,7 @@ func TestAppendHistogramCTZeroSampleNoLabels(t *testing.T) { func TestAppendCTZeroSampleDuplicateLabels(t *testing.T) { sink := new(consumertest.MetricsSink) - tr := newTransaction(scrapeCtx, &startTimeAdjuster{startTime: startTimestamp}, sink, labels.EmptyLabels(), receivertest.NewNopSettings(receivertest.NopType), nopObsRecv(t), false, false) + tr := newTransaction(scrapeCtx, sink, labels.EmptyLabels(), receivertest.NewNopSettings(receivertest.NopType), nopObsRecv(t), false, true) _, err := tr.AppendCTZeroSample(0, labels.FromStrings( model.InstanceLabel, "0.0.0.0:8855", @@ -630,7 +520,7 @@ func TestAppendCTZeroSampleDuplicateLabels(t *testing.T) { func TestAppendHistogramCTZeroSampleDuplicateLabels(t *testing.T) { sink := new(consumertest.MetricsSink) - tr := newTransaction(scrapeCtx, &startTimeAdjuster{startTime: startTimestamp}, sink, labels.EmptyLabels(), receivertest.NewNopSettings(receivertest.NopType), nopObsRecv(t), false, false) + tr := newTransaction(scrapeCtx, sink, labels.EmptyLabels(), receivertest.NewNopSettings(receivertest.NopType), nopObsRecv(t), false, true) _, err := tr.AppendHistogramCTZeroSample(0, labels.FromStrings( model.InstanceLabel, "0.0.0.0:8855", @@ -644,7 +534,7 @@ func TestAppendHistogramCTZeroSampleDuplicateLabels(t *testing.T) { func TestAppendCTZeroSampleEmptyMetricName(t *testing.T) { sink := new(consumertest.MetricsSink) - tr := newTransaction(scrapeCtx, &startTimeAdjuster{startTime: startTimestamp}, sink, labels.EmptyLabels(), receivertest.NewNopSettings(receivertest.NopType), nopObsRecv(t), false, false) + tr := newTransaction(scrapeCtx, sink, labels.EmptyLabels(), receivertest.NewNopSettings(receivertest.NopType), nopObsRecv(t), false, true) _, err := tr.AppendCTZeroSample(0, labels.FromStrings( model.InstanceLabel, "0.0.0.0:8855", @@ -656,7 +546,7 @@ func TestAppendCTZeroSampleEmptyMetricName(t *testing.T) { func TestAppendHistogramCTZeroSampleEmptyMetricName(t *testing.T) { sink := new(consumertest.MetricsSink) - tr := newTransaction(scrapeCtx, &startTimeAdjuster{startTime: startTimestamp}, sink, labels.EmptyLabels(), receivertest.NewNopSettings(receivertest.NopType), nopObsRecv(t), false, false) + tr := newTransaction(scrapeCtx, sink, labels.EmptyLabels(), receivertest.NewNopSettings(receivertest.NopType), nopObsRecv(t), false, true) _, err := tr.AppendHistogramCTZeroSample(0, labels.FromStrings( model.InstanceLabel, "0.0.0.0:8855", @@ -668,7 +558,7 @@ func TestAppendHistogramCTZeroSampleEmptyMetricName(t *testing.T) { func TestAppendCTZeroSample(t *testing.T) { sink := new(consumertest.MetricsSink) - tr := newTransaction(scrapeCtx, &nopAdjuster{}, sink, labels.EmptyLabels(), receivertest.NewNopSettings(receivertest.NopType), nopObsRecv(t), false, false) + tr := newTransaction(scrapeCtx, sink, labels.EmptyLabels(), receivertest.NewNopSettings(receivertest.NopType), nopObsRecv(t), false, true) var atMs, ctMs int64 atMs, ctMs = 200, 100 @@ -702,7 +592,7 @@ func TestAppendCTZeroSample(t *testing.T) { func TestAppendHistogramCTZeroSample(t *testing.T) { sink := new(consumertest.MetricsSink) - tr := newTransaction(scrapeCtx, &nopAdjuster{}, sink, labels.EmptyLabels(), receivertest.NewNopSettings(receivertest.NopType), nopObsRecv(t), false, true) + tr := newTransaction(scrapeCtx, sink, labels.EmptyLabels(), receivertest.NewNopSettings(receivertest.NopType), nopObsRecv(t), false, true) var atMs, ctMs int64 atMs, ctMs = 200, 100 @@ -746,248 +636,217 @@ func nopObsRecv(t *testing.T) *receiverhelper.ObsReport { } func TestMetricBuilderCounters(t *testing.T) { - for _, disableMetricAdjustment := range []bool{true, false} { - tests := []buildTestData{ - { - name: "single-item", - inputs: []*testScrapedPage{ - { - pts: []*testDataPoint{ - createDataPoint("counter_test", 100, nil, "foo", "bar"), - }, + tests := []buildTestData{ + { + name: "single-item", + inputs: []*testScrapedPage{ + { + pts: []*testDataPoint{ + createDataPoint("counter_test", 100, nil, "foo", "bar"), }, }, - wants: func() []pmetric.Metrics { - md0 := pmetric.NewMetrics() - mL0 := md0.ResourceMetrics().AppendEmpty().ScopeMetrics().AppendEmpty().Metrics() - m0 := mL0.AppendEmpty() - m0.SetName("counter_test") - m0.Metadata().PutStr("prometheus.type", "counter") - sum := m0.SetEmptySum() - sum.SetAggregationTemporality(pmetric.AggregationTemporalityCumulative) - sum.SetIsMonotonic(true) - pt0 := sum.DataPoints().AppendEmpty() - pt0.SetDoubleValue(100.0) - if !disableMetricAdjustment { - pt0.SetStartTimestamp(startTimestamp) - } - pt0.SetTimestamp(tsNanos) - pt0.Attributes().PutStr("foo", "bar") - - return []pmetric.Metrics{md0} - }, }, - { - name: "single-item-with-exemplars", - inputs: []*testScrapedPage{ - { - pts: []*testDataPoint{ - createDataPoint( - "counter_test", - 100, - []exemplar.Exemplar{ - { - Value: 1, - Ts: 1663113420863, - Labels: labels.New([]labels.Label{{Name: model.MetricNameLabel, Value: "counter_test"}, {Name: model.JobLabel, Value: "job"}, {Name: model.InstanceLabel, Value: "instance"}, {Name: "foo", Value: "bar"}}...), - }, - { - Value: 1, - Ts: 1663113420863, - Labels: labels.New([]labels.Label{{Name: "foo", Value: "bar"}, {Name: "trace_id", Value: ""}, {Name: "span_id", Value: ""}}...), - }, - { - Value: 1, - Ts: 1663113420863, - Labels: labels.New([]labels.Label{{Name: "foo", Value: "bar"}, {Name: "trace_id", Value: "10a47365b8aa04e08291fab9deca84db6170"}, {Name: "span_id", Value: "719cee4a669fd7d109ff"}}...), - }, - { - Value: 1, - Ts: 1663113420863, - Labels: labels.New([]labels.Label{{Name: "foo", Value: "bar"}, {Name: "trace_id", Value: "174137cab66dc880"}, {Name: "span_id", Value: "dfa4597a9d"}}...), - }, + wants: func() []pmetric.Metrics { + md0 := pmetric.NewMetrics() + mL0 := md0.ResourceMetrics().AppendEmpty().ScopeMetrics().AppendEmpty().Metrics() + m0 := mL0.AppendEmpty() + m0.SetName("counter_test") + m0.Metadata().PutStr("prometheus.type", "counter") + sum := m0.SetEmptySum() + sum.SetAggregationTemporality(pmetric.AggregationTemporalityCumulative) + sum.SetIsMonotonic(true) + pt0 := sum.DataPoints().AppendEmpty() + pt0.SetDoubleValue(100.0) + pt0.SetTimestamp(tsNanos) + pt0.Attributes().PutStr("foo", "bar") + + return []pmetric.Metrics{md0} + }, + }, + { + name: "single-item-with-exemplars", + inputs: []*testScrapedPage{ + { + pts: []*testDataPoint{ + createDataPoint( + "counter_test", + 100, + []exemplar.Exemplar{ + { + Value: 1, + Ts: 1663113420863, + Labels: labels.New([]labels.Label{{Name: model.MetricNameLabel, Value: "counter_test"}, {Name: model.JobLabel, Value: "job"}, {Name: model.InstanceLabel, Value: "instance"}, {Name: "foo", Value: "bar"}}...), + }, + { + Value: 1, + Ts: 1663113420863, + Labels: labels.New([]labels.Label{{Name: "foo", Value: "bar"}, {Name: "trace_id", Value: ""}, {Name: "span_id", Value: ""}}...), + }, + { + Value: 1, + Ts: 1663113420863, + Labels: labels.New([]labels.Label{{Name: "foo", Value: "bar"}, {Name: "trace_id", Value: "10a47365b8aa04e08291fab9deca84db6170"}, {Name: "span_id", Value: "719cee4a669fd7d109ff"}}...), }, - "foo", "bar"), - }, + { + Value: 1, + Ts: 1663113420863, + Labels: labels.New([]labels.Label{{Name: "foo", Value: "bar"}, {Name: "trace_id", Value: "174137cab66dc880"}, {Name: "span_id", Value: "dfa4597a9d"}}...), + }, + }, + "foo", "bar"), }, }, - wants: func() []pmetric.Metrics { - md0 := pmetric.NewMetrics() - mL0 := md0.ResourceMetrics().AppendEmpty().ScopeMetrics().AppendEmpty().Metrics() - m0 := mL0.AppendEmpty() - m0.SetName("counter_test") - m0.Metadata().PutStr("prometheus.type", "counter") - sum := m0.SetEmptySum() - sum.SetAggregationTemporality(pmetric.AggregationTemporalityCumulative) - sum.SetIsMonotonic(true) - pt0 := sum.DataPoints().AppendEmpty() - pt0.SetDoubleValue(100.0) - if !disableMetricAdjustment { - pt0.SetStartTimestamp(startTimestamp) - } - pt0.SetTimestamp(tsNanos) - pt0.Attributes().PutStr("foo", "bar") - - e0 := pt0.Exemplars().AppendEmpty() - e0.SetTimestamp(timestampFromMs(1663113420863)) - e0.SetDoubleValue(1) - e0.FilteredAttributes().PutStr(model.MetricNameLabel, "counter_test") - e0.FilteredAttributes().PutStr("foo", "bar") - e0.FilteredAttributes().PutStr(model.InstanceLabel, "instance") - e0.FilteredAttributes().PutStr(model.JobLabel, "job") - - e1 := pt0.Exemplars().AppendEmpty() - e1.SetTimestamp(timestampFromMs(1663113420863)) - e1.SetDoubleValue(1) - e1.FilteredAttributes().PutStr("foo", "bar") - - e2 := pt0.Exemplars().AppendEmpty() - e2.SetTimestamp(timestampFromMs(1663113420863)) - e2.SetDoubleValue(1) - e2.FilteredAttributes().PutStr("foo", "bar") - e2.SetTraceID([16]byte{0x10, 0xa4, 0x73, 0x65, 0xb8, 0xaa, 0x04, 0xe0, 0x82, 0x91, 0xfa, 0xb9, 0xde, 0xca, 0x84, 0xdb}) - e2.SetSpanID([8]byte{0x71, 0x9c, 0xee, 0x4a, 0x66, 0x9f, 0xd7, 0xd1}) - - e3 := pt0.Exemplars().AppendEmpty() - e3.SetTimestamp(timestampFromMs(1663113420863)) - e3.SetDoubleValue(1) - e3.FilteredAttributes().PutStr("foo", "bar") - e3.SetTraceID([16]byte{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x17, 0x41, 0x37, 0xca, 0xb6, 0x6d, 0xc8, 0x80}) - e3.SetSpanID([8]byte{0x00, 0x00, 0x00, 0xdf, 0xa4, 0x59, 0x7a, 0x9d}) - - return []pmetric.Metrics{md0} - }, }, - { - name: "two-items", - inputs: []*testScrapedPage{ - { - pts: []*testDataPoint{ - createDataPoint("counter_test", 150, nil, "foo", "bar"), - createDataPoint("counter_test", 25, nil, "foo", "other"), - }, + wants: func() []pmetric.Metrics { + md0 := pmetric.NewMetrics() + mL0 := md0.ResourceMetrics().AppendEmpty().ScopeMetrics().AppendEmpty().Metrics() + m0 := mL0.AppendEmpty() + m0.SetName("counter_test") + m0.Metadata().PutStr("prometheus.type", "counter") + sum := m0.SetEmptySum() + sum.SetAggregationTemporality(pmetric.AggregationTemporalityCumulative) + sum.SetIsMonotonic(true) + pt0 := sum.DataPoints().AppendEmpty() + pt0.SetDoubleValue(100.0) + pt0.SetTimestamp(tsNanos) + pt0.Attributes().PutStr("foo", "bar") + + e0 := pt0.Exemplars().AppendEmpty() + e0.SetTimestamp(timestampFromMs(1663113420863)) + e0.SetDoubleValue(1) + e0.FilteredAttributes().PutStr(model.MetricNameLabel, "counter_test") + e0.FilteredAttributes().PutStr("foo", "bar") + e0.FilteredAttributes().PutStr(model.InstanceLabel, "instance") + e0.FilteredAttributes().PutStr(model.JobLabel, "job") + + e1 := pt0.Exemplars().AppendEmpty() + e1.SetTimestamp(timestampFromMs(1663113420863)) + e1.SetDoubleValue(1) + e1.FilteredAttributes().PutStr("foo", "bar") + + e2 := pt0.Exemplars().AppendEmpty() + e2.SetTimestamp(timestampFromMs(1663113420863)) + e2.SetDoubleValue(1) + e2.FilteredAttributes().PutStr("foo", "bar") + e2.SetTraceID([16]byte{0x10, 0xa4, 0x73, 0x65, 0xb8, 0xaa, 0x04, 0xe0, 0x82, 0x91, 0xfa, 0xb9, 0xde, 0xca, 0x84, 0xdb}) + e2.SetSpanID([8]byte{0x71, 0x9c, 0xee, 0x4a, 0x66, 0x9f, 0xd7, 0xd1}) + + e3 := pt0.Exemplars().AppendEmpty() + e3.SetTimestamp(timestampFromMs(1663113420863)) + e3.SetDoubleValue(1) + e3.FilteredAttributes().PutStr("foo", "bar") + e3.SetTraceID([16]byte{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x17, 0x41, 0x37, 0xca, 0xb6, 0x6d, 0xc8, 0x80}) + e3.SetSpanID([8]byte{0x00, 0x00, 0x00, 0xdf, 0xa4, 0x59, 0x7a, 0x9d}) + + return []pmetric.Metrics{md0} + }, + }, + { + name: "two-items", + inputs: []*testScrapedPage{ + { + pts: []*testDataPoint{ + createDataPoint("counter_test", 150, nil, "foo", "bar"), + createDataPoint("counter_test", 25, nil, "foo", "other"), }, }, - wants: func() []pmetric.Metrics { - md0 := pmetric.NewMetrics() - mL0 := md0.ResourceMetrics().AppendEmpty().ScopeMetrics().AppendEmpty().Metrics() - m0 := mL0.AppendEmpty() - m0.SetName("counter_test") - m0.Metadata().PutStr("prometheus.type", "counter") - sum := m0.SetEmptySum() - sum.SetAggregationTemporality(pmetric.AggregationTemporalityCumulative) - sum.SetIsMonotonic(true) - pt0 := sum.DataPoints().AppendEmpty() - pt0.SetDoubleValue(150.0) - if !disableMetricAdjustment { - pt0.SetStartTimestamp(startTimestamp) - } - pt0.SetTimestamp(tsNanos) - pt0.Attributes().PutStr("foo", "bar") - - pt1 := sum.DataPoints().AppendEmpty() - pt1.SetDoubleValue(25.0) - if !disableMetricAdjustment { - pt1.SetStartTimestamp(startTimestamp) - } - pt1.SetTimestamp(tsNanos) - pt1.Attributes().PutStr("foo", "other") - - return []pmetric.Metrics{md0} - }, }, - { - name: "two-metrics", - inputs: []*testScrapedPage{ - { - pts: []*testDataPoint{ - createDataPoint("counter_test", 150, nil, "foo", "bar"), - createDataPoint("counter_test", 25, nil, "foo", "other"), - createDataPoint("counter_test2", 100, nil, "foo", "bar"), - }, + wants: func() []pmetric.Metrics { + md0 := pmetric.NewMetrics() + mL0 := md0.ResourceMetrics().AppendEmpty().ScopeMetrics().AppendEmpty().Metrics() + m0 := mL0.AppendEmpty() + m0.SetName("counter_test") + m0.Metadata().PutStr("prometheus.type", "counter") + sum := m0.SetEmptySum() + sum.SetAggregationTemporality(pmetric.AggregationTemporalityCumulative) + sum.SetIsMonotonic(true) + pt0 := sum.DataPoints().AppendEmpty() + pt0.SetDoubleValue(150.0) + pt0.SetTimestamp(tsNanos) + pt0.Attributes().PutStr("foo", "bar") + + pt1 := sum.DataPoints().AppendEmpty() + pt1.SetDoubleValue(25.0) + pt1.SetTimestamp(tsNanos) + pt1.Attributes().PutStr("foo", "other") + + return []pmetric.Metrics{md0} + }, + }, + { + name: "two-metrics", + inputs: []*testScrapedPage{ + { + pts: []*testDataPoint{ + createDataPoint("counter_test", 150, nil, "foo", "bar"), + createDataPoint("counter_test", 25, nil, "foo", "other"), + createDataPoint("counter_test2", 100, nil, "foo", "bar"), }, }, - wants: func() []pmetric.Metrics { - md0 := pmetric.NewMetrics() - mL0 := md0.ResourceMetrics().AppendEmpty().ScopeMetrics().AppendEmpty().Metrics() - m0 := mL0.AppendEmpty() - m0.SetName("counter_test") - m0.Metadata().PutStr("prometheus.type", "counter") - sum0 := m0.SetEmptySum() - sum0.SetAggregationTemporality(pmetric.AggregationTemporalityCumulative) - sum0.SetIsMonotonic(true) - pt0 := sum0.DataPoints().AppendEmpty() - pt0.SetDoubleValue(150.0) - if !disableMetricAdjustment { - pt0.SetStartTimestamp(startTimestamp) - } - pt0.SetTimestamp(tsNanos) - pt0.Attributes().PutStr("foo", "bar") - - pt1 := sum0.DataPoints().AppendEmpty() - pt1.SetDoubleValue(25.0) - if !disableMetricAdjustment { - pt1.SetStartTimestamp(startTimestamp) - } - pt1.SetTimestamp(tsNanos) - pt1.Attributes().PutStr("foo", "other") - - m1 := mL0.AppendEmpty() - m1.SetName("counter_test2") - m1.Metadata().PutStr("prometheus.type", "counter") - sum1 := m1.SetEmptySum() - sum1.SetAggregationTemporality(pmetric.AggregationTemporalityCumulative) - sum1.SetIsMonotonic(true) - pt2 := sum1.DataPoints().AppendEmpty() - pt2.SetDoubleValue(100.0) - if !disableMetricAdjustment { - pt2.SetStartTimestamp(startTimestamp) - } - pt2.SetTimestamp(tsNanos) - pt2.Attributes().PutStr("foo", "bar") - - return []pmetric.Metrics{md0} - }, }, - { - name: "metrics-with-poor-names", - inputs: []*testScrapedPage{ - { - pts: []*testDataPoint{ - createDataPoint("poor_name_count", 100, nil, "foo", "bar"), - }, + wants: func() []pmetric.Metrics { + md0 := pmetric.NewMetrics() + mL0 := md0.ResourceMetrics().AppendEmpty().ScopeMetrics().AppendEmpty().Metrics() + m0 := mL0.AppendEmpty() + m0.SetName("counter_test") + m0.Metadata().PutStr("prometheus.type", "counter") + sum0 := m0.SetEmptySum() + sum0.SetAggregationTemporality(pmetric.AggregationTemporalityCumulative) + sum0.SetIsMonotonic(true) + pt0 := sum0.DataPoints().AppendEmpty() + pt0.SetDoubleValue(150.0) + pt0.SetTimestamp(tsNanos) + pt0.Attributes().PutStr("foo", "bar") + + pt1 := sum0.DataPoints().AppendEmpty() + pt1.SetDoubleValue(25.0) + pt1.SetTimestamp(tsNanos) + pt1.Attributes().PutStr("foo", "other") + + m1 := mL0.AppendEmpty() + m1.SetName("counter_test2") + m1.Metadata().PutStr("prometheus.type", "counter") + sum1 := m1.SetEmptySum() + sum1.SetAggregationTemporality(pmetric.AggregationTemporalityCumulative) + sum1.SetIsMonotonic(true) + pt2 := sum1.DataPoints().AppendEmpty() + pt2.SetDoubleValue(100.0) + pt2.SetTimestamp(tsNanos) + pt2.Attributes().PutStr("foo", "bar") + + return []pmetric.Metrics{md0} + }, + }, + { + name: "metrics-with-poor-names", + inputs: []*testScrapedPage{ + { + pts: []*testDataPoint{ + createDataPoint("poor_name_count", 100, nil, "foo", "bar"), }, }, - wants: func() []pmetric.Metrics { - md0 := pmetric.NewMetrics() - mL0 := md0.ResourceMetrics().AppendEmpty().ScopeMetrics().AppendEmpty().Metrics() - m0 := mL0.AppendEmpty() - m0.SetName("poor_name_count") - m0.Metadata().PutStr("prometheus.type", "counter") - sum := m0.SetEmptySum() - sum.SetAggregationTemporality(pmetric.AggregationTemporalityCumulative) - sum.SetIsMonotonic(true) - pt0 := sum.DataPoints().AppendEmpty() - pt0.SetDoubleValue(100.0) - if !disableMetricAdjustment { - pt0.SetStartTimestamp(startTimestamp) - } - pt0.SetTimestamp(tsNanos) - pt0.Attributes().PutStr("foo", "bar") - - return []pmetric.Metrics{md0} - }, }, - } + wants: func() []pmetric.Metrics { + md0 := pmetric.NewMetrics() + mL0 := md0.ResourceMetrics().AppendEmpty().ScopeMetrics().AppendEmpty().Metrics() + m0 := mL0.AppendEmpty() + m0.SetName("poor_name_count") + m0.Metadata().PutStr("prometheus.type", "counter") + sum := m0.SetEmptySum() + sum.SetAggregationTemporality(pmetric.AggregationTemporalityCumulative) + sum.SetIsMonotonic(true) + pt0 := sum.DataPoints().AppendEmpty() + pt0.SetDoubleValue(100.0) + pt0.SetTimestamp(tsNanos) + pt0.Attributes().PutStr("foo", "bar") - for _, tt := range tests { - for _, enableNativeHistograms := range []bool{true, false} { - t.Run(fmt.Sprintf("%s/enableNativeHistograms=%v/disableMetricAdjustment=%v", tt.name, enableNativeHistograms, disableMetricAdjustment), func(t *testing.T) { - defer testutil.SetFeatureGateForTest(t, removeStartTimeAdjustment, disableMetricAdjustment)() - tt.run(t, enableNativeHistograms) - }) - } - } + return []pmetric.Metrics{md0} + }, + }, + } + + for _, tt := range tests { + tt.run(t) } } @@ -1215,11 +1074,9 @@ func TestMetricBuilderGauges(t *testing.T) { } for _, tt := range tests { - for _, enableNativeHistograms := range []bool{true, false} { - t.Run(fmt.Sprintf("%s/enableNativeHistograms=%v", tt.name, enableNativeHistograms), func(t *testing.T) { - tt.run(t, enableNativeHistograms) - }) - } + t.Run(tt.name, func(t *testing.T) { + tt.run(t) + }) } } @@ -1317,11 +1174,9 @@ func TestMetricBuilderUntyped(t *testing.T) { } for _, tt := range tests { - for _, enableNativeHistograms := range []bool{true, false} { - t.Run(fmt.Sprintf("%s/enableNativeHistograms=%v", tt.name, enableNativeHistograms), func(t *testing.T) { - tt.run(t, enableNativeHistograms) - }) - } + t.Run(tt.name, func(t *testing.T) { + tt.run(t) + }) } } @@ -1354,7 +1209,6 @@ func TestMetricBuilderHistogram(t *testing.T) { pt0.ExplicitBounds().FromRaw([]float64{10, 20}) pt0.BucketCounts().FromRaw([]uint64{1, 1, 8}) pt0.SetTimestamp(tsNanos) - pt0.SetStartTimestamp(startTimestamp) pt0.Attributes().PutStr("foo", "bar") return []pmetric.Metrics{md0} @@ -1417,7 +1271,6 @@ func TestMetricBuilderHistogram(t *testing.T) { pt0.ExplicitBounds().FromRaw([]float64{10, 20}) pt0.BucketCounts().FromRaw([]uint64{1, 1, 8}) pt0.SetTimestamp(tsNanos) - pt0.SetStartTimestamp(startTimestamp) pt0.Attributes().PutStr("foo", "bar") e0 := pt0.Exemplars().AppendEmpty() @@ -1491,7 +1344,6 @@ func TestMetricBuilderHistogram(t *testing.T) { pt0.ExplicitBounds().FromRaw([]float64{10, 20}) pt0.BucketCounts().FromRaw([]uint64{1, 1, 8}) pt0.SetTimestamp(tsNanos) - pt0.SetStartTimestamp(startTimestamp) pt0.Attributes().PutStr("foo", "bar") pt1 := hist0.DataPoints().AppendEmpty() @@ -1500,7 +1352,6 @@ func TestMetricBuilderHistogram(t *testing.T) { pt1.ExplicitBounds().FromRaw([]float64{10, 20}) pt1.BucketCounts().FromRaw([]uint64{1, 1, 1}) pt1.SetTimestamp(tsNanos) - pt1.SetStartTimestamp(startTimestamp) pt1.Attributes().PutStr("key2", "v2") return []pmetric.Metrics{md0} @@ -1543,7 +1394,6 @@ func TestMetricBuilderHistogram(t *testing.T) { pt0.ExplicitBounds().FromRaw([]float64{10, 20}) pt0.BucketCounts().FromRaw([]uint64{1, 1, 8}) pt0.SetTimestamp(tsNanos) - pt0.SetStartTimestamp(startTimestamp) pt0.Attributes().PutStr("foo", "bar") pt1 := hist0.DataPoints().AppendEmpty() @@ -1552,7 +1402,6 @@ func TestMetricBuilderHistogram(t *testing.T) { pt1.ExplicitBounds().FromRaw([]float64{10, 20}) pt1.BucketCounts().FromRaw([]uint64{1, 1, 1}) pt1.SetTimestamp(tsNanos) - pt1.SetStartTimestamp(startTimestamp) pt1.Attributes().PutStr("key2", "v2") m1 := mL0.AppendEmpty() @@ -1566,7 +1415,6 @@ func TestMetricBuilderHistogram(t *testing.T) { pt2.ExplicitBounds().FromRaw([]float64{10, 20}) pt2.BucketCounts().FromRaw([]uint64{1, 1, 1}) pt2.SetTimestamp(tsNanos) - pt2.SetStartTimestamp(startTimestamp) pt2.Attributes().PutStr("foo", "bar") return []pmetric.Metrics{md0} @@ -1599,7 +1447,6 @@ func TestMetricBuilderHistogram(t *testing.T) { pt0.ExplicitBounds().FromRaw([]float64{10, 20}) pt0.BucketCounts().FromRaw([]uint64{1, 1, 8}) pt0.SetTimestamp(tsNanos) - pt0.SetStartTimestamp(startTimestamp) pt0.Attributes().PutStr("foo", "bar") return []pmetric.Metrics{md0} @@ -1630,7 +1477,6 @@ func TestMetricBuilderHistogram(t *testing.T) { pt0.SetSum(100) pt0.BucketCounts().FromRaw([]uint64{3}) pt0.SetTimestamp(tsNanos) - pt0.SetStartTimestamp(startTimestamp) pt0.Attributes().PutStr("foo", "bar") return []pmetric.Metrics{md0} @@ -1662,7 +1508,6 @@ func TestMetricBuilderHistogram(t *testing.T) { pt0.BucketCounts().FromRaw([]uint64{3, 0}) pt0.ExplicitBounds().FromRaw([]float64{20}) pt0.SetTimestamp(tsNanos) - pt0.SetStartTimestamp(startTimestamp) pt0.Attributes().PutStr("foo", "bar") return []pmetric.Metrics{md0} @@ -1693,7 +1538,6 @@ func TestMetricBuilderHistogram(t *testing.T) { pt0.ExplicitBounds().FromRaw([]float64{10, 20}) pt0.BucketCounts().FromRaw([]uint64{1, 1, 1}) pt0.SetTimestamp(tsNanos) - pt0.SetStartTimestamp(startTimestamp) pt0.Attributes().PutStr("foo", "bar") return []pmetric.Metrics{md0} @@ -1722,7 +1566,6 @@ func TestMetricBuilderHistogram(t *testing.T) { pt0.SetSum(99) pt0.BucketCounts().FromRaw([]uint64{10}) pt0.SetTimestamp(tsNanos) - pt0.SetStartTimestamp(startTimestamp) pt0.Attributes().PutStr("foo", "bar") return []pmetric.Metrics{md0} @@ -1747,12 +1590,7 @@ func TestMetricBuilderHistogram(t *testing.T) { } for _, tt := range tests { - for _, enableNativeHistograms := range []bool{true, false} { - // None of the histograms above have native histogram versions, so enabling native histograms has no effect. - t.Run(fmt.Sprintf("%s/enableNativeHistograms=%v", tt.name, enableNativeHistograms), func(t *testing.T) { - tt.run(t, enableNativeHistograms) - }) - } + tt.run(t) } } @@ -1808,7 +1646,6 @@ func TestMetricBuilderSummary(t *testing.T) { sum0 := m0.SetEmptySummary() pt0 := sum0.DataPoints().AppendEmpty() pt0.SetTimestamp(tsNanos) - pt0.SetStartTimestamp(startTimestamp) pt0.SetCount(500) pt0.SetSum(0.0) pt0.Attributes().PutStr("foo", "bar") @@ -1843,7 +1680,6 @@ func TestMetricBuilderSummary(t *testing.T) { m0.Metadata().PutStr("prometheus.type", "summary") sum0 := m0.SetEmptySummary() pt0 := sum0.DataPoints().AppendEmpty() - pt0.SetStartTimestamp(startTimestamp) pt0.SetTimestamp(tsNanos) pt0.SetCount(500) pt0.SetSum(100.0) @@ -1873,7 +1709,6 @@ func TestMetricBuilderSummary(t *testing.T) { m0.Metadata().PutStr("prometheus.type", "summary") sum0 := m0.SetEmptySummary() pt0 := sum0.DataPoints().AppendEmpty() - pt0.SetStartTimestamp(startTimestamp) pt0.SetTimestamp(tsNanos) pt0.SetCount(500) pt0.SetSum(100.0) @@ -1895,110 +1730,94 @@ func TestMetricBuilderSummary(t *testing.T) { } for _, tt := range tests { - for _, enableNativeHistograms := range []bool{false, true} { - t.Run(fmt.Sprintf("%s/enableNativeHistograms=%v", tt.name, enableNativeHistograms), func(t *testing.T) { - tt.run(t, enableNativeHistograms) - }) - } + tt.run(t) } } func TestMetricBuilderNativeHistogram(t *testing.T) { - for _, enableNativeHistograms := range []bool{false, true} { - emptyH := &histogram.Histogram{ - Schema: 1, - Count: 0, - Sum: 0, - ZeroThreshold: 0.001, - ZeroCount: 0, - } - h0 := tsdbutil.GenerateTestHistogram(0) - - tests := []buildTestData{ - { - name: "empty integer histogram", - inputs: []*testScrapedPage{ - { - pts: []*testDataPoint{ - createHistogramDataPoint("hist_test", emptyH, nil, nil, "foo", "bar"), - }, + emptyH := &histogram.Histogram{ + Schema: 1, + Count: 0, + Sum: 0, + ZeroThreshold: 0.001, + ZeroCount: 0, + } + h0 := tsdbutil.GenerateTestHistogram(0) + + tests := []buildTestData{ + { + name: "empty integer histogram", + inputs: []*testScrapedPage{ + { + pts: []*testDataPoint{ + createHistogramDataPoint("hist_test", emptyH, nil, nil, "foo", "bar"), }, }, - wants: func() []pmetric.Metrics { - md0 := pmetric.NewMetrics() - if !enableNativeHistograms { - return []pmetric.Metrics{md0} - } - mL0 := md0.ResourceMetrics().AppendEmpty().ScopeMetrics().AppendEmpty().Metrics() - m0 := mL0.AppendEmpty() - m0.SetName("hist_test") - m0.Metadata().PutStr("prometheus.type", "histogram") - m0.SetEmptyExponentialHistogram() - m0.ExponentialHistogram().SetAggregationTemporality(pmetric.AggregationTemporalityCumulative) - pt0 := m0.ExponentialHistogram().DataPoints().AppendEmpty() - pt0.Attributes().PutStr("foo", "bar") - pt0.SetStartTimestamp(startTimestamp) - pt0.SetTimestamp(tsNanos) - pt0.SetCount(0) - pt0.SetSum(0) - pt0.SetZeroThreshold(0.001) - pt0.SetScale(1) - - return []pmetric.Metrics{md0} - }, }, - { - name: "integer histogram", - inputs: []*testScrapedPage{ - { - pts: []*testDataPoint{ - createHistogramDataPoint("hist_test", h0, nil, nil, "foo", "bar"), - }, + wants: func() []pmetric.Metrics { + md0 := pmetric.NewMetrics() + mL0 := md0.ResourceMetrics().AppendEmpty().ScopeMetrics().AppendEmpty().Metrics() + m0 := mL0.AppendEmpty() + m0.SetName("hist_test") + m0.Metadata().PutStr("prometheus.type", "histogram") + m0.SetEmptyExponentialHistogram() + m0.ExponentialHistogram().SetAggregationTemporality(pmetric.AggregationTemporalityCumulative) + pt0 := m0.ExponentialHistogram().DataPoints().AppendEmpty() + pt0.Attributes().PutStr("foo", "bar") + pt0.SetTimestamp(tsNanos) + pt0.SetCount(0) + pt0.SetSum(0) + pt0.SetZeroThreshold(0.001) + pt0.SetScale(1) + + return []pmetric.Metrics{md0} + }, + }, + { + name: "integer histogram", + inputs: []*testScrapedPage{ + { + pts: []*testDataPoint{ + createHistogramDataPoint("hist_test", h0, nil, nil, "foo", "bar"), }, }, - wants: func() []pmetric.Metrics { - md0 := pmetric.NewMetrics() - if !enableNativeHistograms { - return []pmetric.Metrics{md0} - } - mL0 := md0.ResourceMetrics().AppendEmpty().ScopeMetrics().AppendEmpty().Metrics() - m0 := mL0.AppendEmpty() - m0.SetName("hist_test") - m0.Metadata().PutStr("prometheus.type", "histogram") - m0.SetEmptyExponentialHistogram() - m0.ExponentialHistogram().SetAggregationTemporality(pmetric.AggregationTemporalityCumulative) - pt0 := m0.ExponentialHistogram().DataPoints().AppendEmpty() - pt0.Attributes().PutStr("foo", "bar") - pt0.SetStartTimestamp(startTimestamp) - pt0.SetTimestamp(tsNanos) - pt0.SetCount(12) - pt0.SetSum(18.4) - pt0.SetScale(1) - pt0.SetZeroThreshold(0.001) - pt0.SetZeroCount(2) - pt0.Positive().SetOffset(-1) - pt0.Positive().BucketCounts().Append(1) - pt0.Positive().BucketCounts().Append(2) - pt0.Positive().BucketCounts().Append(0) - pt0.Positive().BucketCounts().Append(1) - pt0.Positive().BucketCounts().Append(1) - pt0.Negative().SetOffset(-1) - pt0.Negative().BucketCounts().Append(1) - pt0.Negative().BucketCounts().Append(2) - pt0.Negative().BucketCounts().Append(0) - pt0.Negative().BucketCounts().Append(1) - pt0.Negative().BucketCounts().Append(1) - - return []pmetric.Metrics{md0} - }, }, - } + wants: func() []pmetric.Metrics { + md0 := pmetric.NewMetrics() + mL0 := md0.ResourceMetrics().AppendEmpty().ScopeMetrics().AppendEmpty().Metrics() + m0 := mL0.AppendEmpty() + m0.SetName("hist_test") + m0.Metadata().PutStr("prometheus.type", "histogram") + m0.SetEmptyExponentialHistogram() + m0.ExponentialHistogram().SetAggregationTemporality(pmetric.AggregationTemporalityCumulative) + pt0 := m0.ExponentialHistogram().DataPoints().AppendEmpty() + pt0.Attributes().PutStr("foo", "bar") + pt0.SetTimestamp(tsNanos) + pt0.SetCount(12) + pt0.SetSum(18.4) + pt0.SetScale(1) + pt0.SetZeroThreshold(0.001) + pt0.SetZeroCount(2) + pt0.Positive().SetOffset(-1) + pt0.Positive().BucketCounts().Append(1) + pt0.Positive().BucketCounts().Append(2) + pt0.Positive().BucketCounts().Append(0) + pt0.Positive().BucketCounts().Append(1) + pt0.Positive().BucketCounts().Append(1) + pt0.Negative().SetOffset(-1) + pt0.Negative().BucketCounts().Append(1) + pt0.Negative().BucketCounts().Append(2) + pt0.Negative().BucketCounts().Append(0) + pt0.Negative().BucketCounts().Append(1) + pt0.Negative().BucketCounts().Append(1) - for _, tt := range tests { - t.Run(tt.name, func(t *testing.T) { - tt.run(t, enableNativeHistograms) - }) - } + return []pmetric.Metrics{md0} + }, + }, + } + + for _, tt := range tests { + tt.run(t) } } @@ -2008,13 +1827,13 @@ type buildTestData struct { wants func() []pmetric.Metrics } -func (tt buildTestData) run(t *testing.T, enableNativeHistograms bool) { +func (tt buildTestData) run(t *testing.T) { wants := tt.wants() assert.Len(t, tt.inputs, len(wants)) st := ts for i, page := range tt.inputs { sink := new(consumertest.MetricsSink) - tr := newTransaction(scrapeCtx, &startTimeAdjuster{startTime: startTimestamp}, sink, labels.EmptyLabels(), receivertest.NewNopSettings(receivertest.NopType), nopObsRecv(t), false, enableNativeHistograms) + tr := newTransaction(scrapeCtx, sink, labels.EmptyLabels(), receivertest.NewNopSettings(receivertest.NopType), nopObsRecv(t), false, true) for _, pt := range page.pts { // set ts for testing pt.t = st @@ -2048,60 +1867,6 @@ func (tt buildTestData) run(t *testing.T, enableNativeHistograms bool) { } } -type errorAdjuster struct { - err error -} - -func (ea *errorAdjuster) AdjustMetrics(pmetric.Metrics) error { - return ea.err -} - -type nopAdjuster struct{} - -func (*nopAdjuster) AdjustMetrics(_ pmetric.Metrics) error { - return nil -} - -type startTimeAdjuster struct { - startTime pcommon.Timestamp -} - -func (s *startTimeAdjuster) AdjustMetrics(metrics pmetric.Metrics) error { - for i := 0; i < metrics.ResourceMetrics().Len(); i++ { - rm := metrics.ResourceMetrics().At(i) - for j := 0; j < rm.ScopeMetrics().Len(); j++ { - ilm := rm.ScopeMetrics().At(j) - for k := 0; k < ilm.Metrics().Len(); k++ { - metric := ilm.Metrics().At(k) - switch metric.Type() { - case pmetric.MetricTypeSum: - dps := metric.Sum().DataPoints() - for l := 0; l < dps.Len(); l++ { - dps.At(l).SetStartTimestamp(s.startTime) - } - case pmetric.MetricTypeSummary: - dps := metric.Summary().DataPoints() - for l := 0; l < dps.Len(); l++ { - dps.At(l).SetStartTimestamp(s.startTime) - } - case pmetric.MetricTypeHistogram: - dps := metric.Histogram().DataPoints() - for l := 0; l < dps.Len(); l++ { - dps.At(l).SetStartTimestamp(s.startTime) - } - case pmetric.MetricTypeExponentialHistogram: - dps := metric.ExponentialHistogram().DataPoints() - for l := 0; l < dps.Len(); l++ { - dps.At(l).SetStartTimestamp(s.startTime) - } - case pmetric.MetricTypeEmpty, pmetric.MetricTypeGauge: - } - } - } - } - return nil -} - type testDataPoint struct { lb labels.Labels t int64 @@ -2166,3 +1931,126 @@ func assertEquivalentMetrics(t *testing.T, want, got pmetric.Metrics) { } } } + +func newObs(t *testing.T) *receiverhelper.ObsReport { + obs, err := receiverhelper.NewObsReport(receiverhelper.ObsReportSettings{ + Transport: "http", + ReceiverCreateSettings: receivertest.NewNopSettings(receivertest.NopType), + }) + require.NoError(t, err) + return obs +} + +func TestDetectAndStoreNativeHistogramStaleness_NonHistogramReturnsFalse(t *testing.T) { + tr := newTxn(t, true) + // metadata says "gauge" → should not be considered native histogram staleness + tr.mc = newFakeMetadataStore(map[string]scrape.MetricMetadata{ + "foo": {MetricFamily: "foo", Type: model.MetricTypeGauge}, + }) + + rk := resourceKey{job: "job-a", instance: "localhost:1234"} + ok := tr.detectAndStoreNativeHistogramStaleness(time.Now().UnixMilli(), &rk, emptyScopeID, "foo", labels.FromMap(map[string]string{ + string(model.MetricNameLabel): "foo", + })) + require.False(t, ok, "expected false when metadata type != histogram") +} + +func TestGetOrCreateMetricFamily_DistinctFamiliesForNativeVsClassic(t *testing.T) { + tr := newTxn(t, true) + // Provide metadata so normalization doesn't kick in; name is the same family + tr.mc = newFakeMetadataStore(map[string]scrape.MetricMetadata{ + "same_family": {MetricFamily: "same_family", Type: model.MetricTypeHistogram}, + }) + + rk := resourceKey{job: "job-a", instance: "localhost:1234"} + + // First: classic path (addingNativeHistogram=false) + tr.addingNativeHistogram = false + mfClassic := tr.getOrCreateMetricFamily(rk, emptyScopeID, "same_family") + + // Second: native path (addingNativeHistogram=true) + tr.addingNativeHistogram = true + mfNative := tr.getOrCreateMetricFamily(rk, emptyScopeID, "same_family") + + require.NotNil(t, mfClassic) + require.NotNil(t, mfNative) + // Even with the same name, keys include native flag → distinct entries + require.NotEqual(t, mfClassic, mfNative, "expected distinct metric family instances for native vs classic") +} + +func TestGetSeriesRef_IgnoresNotUsefulLabels(t *testing.T) { + // Build two label sets that differ only in labels likely excluded by getSortedNotUsefulLabels (e.g., _otel_* scope labels) + lsA := labels.FromStrings( + string(model.MetricNameLabel), "metric_x", + "env", "prod", + "__name__", "metric_x", // already the metric name label + "otel_scope_name", "scope_a", + ) + lsB := labels.FromStrings( + string(model.MetricNameLabel), "metric_x", + "env", "prod", + "otel_scope_name", "scope_b", // differs only in an excluded label + ) + + var buf []byte + hashA, buf := getSeriesRef(buf, lsA, pmetric.MetricTypeSum) + hashB, _ := getSeriesRef(buf, lsB, pmetric.MetricTypeSum) + + require.Equal(t, hashA, hashB, "series ref should be equal when differing only by excluded labels") +} + +func TestAddTargetInfo_DoesNotCopyJobInstanceOrMetricName(t *testing.T) { + tr := newTxn(t, false) + rk := resourceKey{job: "job-a", instance: "localhost:1234"} + // Prime nodeResources + tr.nodeResources[rk] = CreateResource(rk.job, rk.instance, labels.FromStrings(model.SchemeLabel, "http")) + + ls := labels.FromStrings( + string(model.MetricNameLabel), "target_info", + string(model.JobLabel), rk.job, + string(model.InstanceLabel), rk.instance, + "extra", "v", + "another", "x", + ) + tr.AddTargetInfo(rk, ls) + + res := tr.nodeResources[rk] + attrs := res.Attributes() + _, hasJob := attrs.Get(string(model.JobLabel)) + _, hasInstance := attrs.Get(string(model.InstanceLabel)) + _, hasName := attrs.Get(string(model.MetricNameLabel)) + _, hasExtra := attrs.Get("extra") + _, hasAnother := attrs.Get("another") + + require.False(t, hasJob, "job label must not be copied to resource attributes") + require.False(t, hasInstance, "instance label must not be copied to resource attributes") + require.False(t, hasName, "metric name label must not be copied to resource attributes") + require.True(t, hasExtra, "custom label should be copied") + require.True(t, hasAnother, "custom label should be copied") +} + +func newTxn(t *testing.T, useMetadata bool) *transaction { + ctx := t.Context() + lbls := labels.FromMap(map[string]string{ + string(model.InstanceLabel): "localhost:1234", + string(model.JobLabel): "job-a", + }) + target := scrape.NewTarget( + lbls, + &config.ScrapeConfig{}, + map[model.LabelName]model.LabelValue{ + model.AddressLabel: "localhost:1234", + model.SchemeLabel: "http", + }, + nil, + ) + ctx = scrape.ContextWithTarget(ctx, target) + if useMetadata { + ctx = scrape.ContextWithMetricMetadataStore(ctx, newFakeMetadataStore(map[string]scrape.MetricMetadata{})) + } + sink := &consumertest.MetricsSink{} + settings := receivertest.NewNopSettings(receivertest.NopType) + // quiet logger + settings.Logger = zap.NewNop() + return newTransaction(ctx, sink, labels.EmptyLabels(), settings, newObs(t), false, useMetadata) +} diff --git a/otelcollector/prometheusreceiver/internal/util.go b/otelcollector/prometheusreceiver/internal/util.go index 84308bb9d..cb6fd0478 100644 --- a/otelcollector/prometheusreceiver/internal/util.go +++ b/otelcollector/prometheusreceiver/internal/util.go @@ -96,7 +96,7 @@ func getBoundary(metricType pmetric.MetricType, labels labels.Labels) (float64, } // convToMetricType returns the data type and if it is monotonic -func convToMetricType(metricType model.MetricType) (pmetric.MetricType, bool) { +func convToMetricType(metricType model.MetricType, exponentialHistogram bool) (pmetric.MetricType, bool) { switch metricType { case model.MetricTypeCounter: // always use float64, as it's the internal data type used in prometheus @@ -105,6 +105,9 @@ func convToMetricType(metricType model.MetricType) (pmetric.MetricType, bool) { case model.MetricTypeGauge, model.MetricTypeUnknown: return pmetric.MetricTypeGauge, false case model.MetricTypeHistogram: + if exponentialHistogram { + return pmetric.MetricTypeExponentialHistogram, true + } return pmetric.MetricTypeHistogram, true // dropping support for gaugehistogram for now until we have an official spec of its implementation // a draft can be found in: https://docs.google.com/document/d/1KwV0mAXwwbvvifBvDKH_LU1YjyXE_wxCkHNoCGq1GX0/edit#heading=h.1cvzqd4ksd23 diff --git a/otelcollector/prometheusreceiver/internal/util_test.go b/otelcollector/prometheusreceiver/internal/util_test.go index a9a4cef35..452ddc391 100644 --- a/otelcollector/prometheusreceiver/internal/util_test.go +++ b/otelcollector/prometheusreceiver/internal/util_test.go @@ -59,6 +59,7 @@ func TestConvToMetricType(t *testing.T) { tests := []struct { name string mtype model.MetricType + isExponential bool want pmetric.MetricType wantMonotonic bool }{ @@ -86,6 +87,13 @@ func TestConvToMetricType(t *testing.T) { want: pmetric.MetricTypeHistogram, wantMonotonic: true, }, + { + name: "model.histogram", + mtype: model.MetricTypeHistogram, + isExponential: true, + want: pmetric.MetricTypeExponentialHistogram, + wantMonotonic: true, + }, { name: "model.summary", mtype: model.MetricTypeSummary, @@ -114,7 +122,7 @@ func TestConvToMetricType(t *testing.T) { for _, tt := range tests { t.Run(tt.name, func(t *testing.T) { - got, monotonic := convToMetricType(tt.mtype) + got, monotonic := convToMetricType(tt.mtype, tt.isExponential) require.Equal(t, got.String(), tt.want.String()) require.Equal(t, tt.wantMonotonic, monotonic) }) diff --git a/otelcollector/prometheusreceiver/metrics_receiver.go b/otelcollector/prometheusreceiver/metrics_receiver.go index 156ef6877..8c800a9e9 100644 --- a/otelcollector/prometheusreceiver/metrics_receiver.go +++ b/otelcollector/prometheusreceiver/metrics_receiver.go @@ -28,7 +28,7 @@ import ( "github.com/open-telemetry/opentelemetry-collector-contrib/receiver/prometheusreceiver/apiserver" "github.com/open-telemetry/opentelemetry-collector-contrib/receiver/prometheusreceiver/internal" - "github.com/open-telemetry/opentelemetry-collector-contrib/receiver/prometheusreceiver/targetallocator" + "github.com/open-telemetry/opentelemetry-collector-contrib/receiver/prometheusreceiver/internal/targetallocator" ) const ( @@ -81,7 +81,6 @@ func newPrometheusReceiver(set receiver.Settings, cfg *Config, next consumer.Met set, cfg.TargetAllocator.Get(), &baseCfg, - enableNativeHistogramsGate.IsEnabled(), ), apiServerManager: apiServerManager, } @@ -149,11 +148,9 @@ func (r *pReceiver) initPrometheusComponents(ctx context.Context, logger *slog.L store, err := internal.NewAppendable( r.consumer, r.settings, - gcInterval(r.cfg.PrometheusConfig), r.cfg.UseStartTimeMetric, startTimeMetricRegex, - useCreatedMetricGate.IsEnabled(), - enableNativeHistogramsGate.IsEnabled(), + !r.cfg.ignoreMetadata, r.cfg.PrometheusConfig.GlobalConfig.ExternalLabels, r.cfg.TrimMetricSuffixes, ) @@ -211,12 +208,11 @@ func (r *pReceiver) initPrometheusComponents(ctx context.Context, logger *slog.L func (r *pReceiver) initScrapeOptions() *scrape.Options { opts := &scrape.Options{ PassMetadataInContext: true, - ExtraMetrics: r.cfg.ReportExtraScrapeMetrics, + ExtraMetrics: enableReportExtraScrapeMetricsGate.IsEnabled() || r.cfg.ReportExtraScrapeMetrics, HTTPClientOptions: []commonconfig.HTTPClientOption{ commonconfig.WithUserAgent(r.settings.BuildInfo.Command + "/" + r.settings.BuildInfo.Version), }, EnableCreatedTimestampZeroIngestion: enableCreatedTimestampZeroIngestionGate.IsEnabled(), - EnableNativeHistogramsIngestion: enableNativeHistogramsGate.IsEnabled(), } return opts @@ -226,10 +222,7 @@ func (r *pReceiver) initScrapeOptions() *scrape.Options { // plus a delta to prevent race conditions. // This ensures jobs are not garbage collected between scrapes. func gcInterval(cfg *PromConfig) time.Duration { - gcInterval := defaultGCInterval - if time.Duration(cfg.GlobalConfig.ScrapeInterval)+gcIntervalDelta > gcInterval { - gcInterval = time.Duration(cfg.GlobalConfig.ScrapeInterval) + gcIntervalDelta - } + gcInterval := max(time.Duration(cfg.GlobalConfig.ScrapeInterval)+gcIntervalDelta, defaultGCInterval) for _, scrapeConfig := range cfg.ScrapeConfigs { if time.Duration(scrapeConfig.ScrapeInterval)+gcIntervalDelta > gcInterval { gcInterval = time.Duration(scrapeConfig.ScrapeInterval) + gcIntervalDelta diff --git a/otelcollector/prometheusreceiver/metrics_receiver_created_timestamp_zero_ingestion_test.go b/otelcollector/prometheusreceiver/metrics_receiver_created_timestamp_zero_ingestion_test.go index 8190164cf..c16626298 100644 --- a/otelcollector/prometheusreceiver/metrics_receiver_created_timestamp_zero_ingestion_test.go +++ b/otelcollector/prometheusreceiver/metrics_receiver_created_timestamp_zero_ingestion_test.go @@ -141,7 +141,7 @@ func verifyOpenMetricsCreatedTimestampZeroIngestionDisabled(t *testing.T, td *te []dataPointExpectation{ { numberPointComparator: []numberPointComparator{ - compareStartTimestamp(ts1), + compareStartTimestamp(tsZero), compareTimestamp(ts1), compareDoubleValue(1.0), }, diff --git a/otelcollector/prometheusreceiver/metrics_receiver_helper_test.go b/otelcollector/prometheusreceiver/metrics_receiver_helper_test.go index 3e34b0fc1..b294ddea0 100644 --- a/otelcollector/prometheusreceiver/metrics_receiver_helper_test.go +++ b/otelcollector/prometheusreceiver/metrics_receiver_helper_test.go @@ -33,7 +33,7 @@ import ( "go.opentelemetry.io/collector/pdata/pcommon" "go.opentelemetry.io/collector/pdata/pmetric" "go.opentelemetry.io/collector/receiver/receivertest" - semconv "go.opentelemetry.io/otel/semconv/v1.27.0" + conventions "go.opentelemetry.io/otel/semconv/v1.27.0" "github.com/open-telemetry/opentelemetry-collector-contrib/receiver/prometheusreceiver/internal" "github.com/open-telemetry/opentelemetry-collector-contrib/receiver/prometheusreceiver/internal/metadata" @@ -141,7 +141,7 @@ func setupMockPrometheus(tds ...*testData) (*mockPrometheus, *PromConfig, error) } mp := newMockPrometheus(endpoints) u, _ := url.Parse(mp.srv.URL) - for i := 0; i < len(tds); i++ { + for i := range tds { job := make(map[string]any) job["job_name"] = tds[i].name job["metrics_path"] = metricPaths[i] @@ -244,7 +244,7 @@ func getValidScrapes(t *testing.T, rms []pmetric.ResourceMetrics, target *testDa // for metrics retrieved with 'honor_labels: true', there will be a resource metric containing the scrape metrics, based on the scrape job config, // and resources containing only the retrieved metrics, without additional scrape metrics, based on the job/instance label pairs that are detected // during a scrape - for i := 0; i < len(rms); i++ { + for i := range rms { allMetrics := getMetrics(rms[i]) if expectedScrapeMetricCount <= len(allMetrics) && countScrapeMetrics(allMetrics, target.normalizedName) == expectedScrapeMetricCount || expectedExtraScrapeMetricCount <= len(allMetrics) && countScrapeMetrics(allMetrics, target.normalizedName) == expectedExtraScrapeMetricCount { @@ -265,20 +265,20 @@ func getValidScrapes(t *testing.T, rms []pmetric.ResourceMetrics, target *testDa } func isScrapeConfigResource(rms pmetric.ResourceMetrics, target *testData) bool { - targetJobName, ok := target.attributes.Get(string(semconv.ServiceNameKey)) + targetJobName, ok := target.attributes.Get(string(conventions.ServiceNameKey)) if !ok { return false } - targetInstanceID, ok := target.attributes.Get(string(semconv.ServiceInstanceIDKey)) + targetInstanceID, ok := target.attributes.Get(string(conventions.ServiceInstanceIDKey)) if !ok { return false } - resourceJobName, ok := rms.Resource().Attributes().Get(string(semconv.ServiceNameKey)) + resourceJobName, ok := rms.Resource().Attributes().Get(string(conventions.ServiceNameKey)) if !ok { return false } - resourceInstanceID, ok := rms.Resource().Attributes().Get(string(semconv.ServiceInstanceIDKey)) + resourceInstanceID, ok := rms.Resource().Attributes().Get(string(conventions.ServiceInstanceIDKey)) if !ok { return false } diff --git a/otelcollector/prometheusreceiver/metrics_receiver_honor_timestamp_test.go b/otelcollector/prometheusreceiver/metrics_receiver_honor_timestamp_test.go index 5a0416ad8..c857fe9ba 100644 --- a/otelcollector/prometheusreceiver/metrics_receiver_honor_timestamp_test.go +++ b/otelcollector/prometheusreceiver/metrics_receiver_honor_timestamp_test.go @@ -226,7 +226,7 @@ func verifyHonorTimeStampsTrue(t *testing.T, td *testData, resourceMetrics []pme []dataPointExpectation{ { numberPointComparator: []numberPointComparator{ - compareStartTimestamp(pcommon.NewTimestampFromTime(time.UnixMilli(ts2))), + compareStartTimestamp(tsZero), compareTimestamp(pcommon.NewTimestampFromTime(time.UnixMilli(ts2))), compareDoubleValue(100), compareAttributes(map[string]string{"method": "post", "code": "200"}), @@ -234,7 +234,7 @@ func verifyHonorTimeStampsTrue(t *testing.T, td *testData, resourceMetrics []pme }, { numberPointComparator: []numberPointComparator{ - compareStartTimestamp(pcommon.NewTimestampFromTime(time.UnixMilli(ts3))), + compareStartTimestamp(tsZero), compareTimestamp(pcommon.NewTimestampFromTime(time.UnixMilli(ts3))), compareDoubleValue(5), compareAttributes(map[string]string{"method": "post", "code": "400"}), @@ -250,7 +250,7 @@ func verifyHonorTimeStampsTrue(t *testing.T, td *testData, resourceMetrics []pme []dataPointExpectation{ { histogramPointComparator: []histogramPointComparator{ - compareHistogramStartTimestamp(pcommon.NewTimestampFromTime(time.UnixMilli(ts4))), + compareHistogramStartTimestamp(tsZero), compareHistogramTimestamp(pcommon.NewTimestampFromTime(time.UnixMilli(ts4))), compareHistogram(2500, 5000, []float64{0.05, 0.5, 1}, []uint64{1000, 500, 500, 500}), }, @@ -265,7 +265,7 @@ func verifyHonorTimeStampsTrue(t *testing.T, td *testData, resourceMetrics []pme []dataPointExpectation{ { summaryPointComparator: []summaryPointComparator{ - compareSummaryStartTimestamp(pcommon.NewTimestampFromTime(time.UnixMilli(ts5))), + compareSummaryStartTimestamp(tsZero), compareSummaryTimestamp(pcommon.NewTimestampFromTime(time.UnixMilli(ts5))), compareSummary(1000, 5000, [][]float64{{0.01, 1}, {0.9, 5}, {0.99, 8}}), }, @@ -302,7 +302,7 @@ func verifyHonorTimeStampsTrue(t *testing.T, td *testData, resourceMetrics []pme []dataPointExpectation{ { numberPointComparator: []numberPointComparator{ - compareStartTimestamp(pcommon.NewTimestampFromTime(time.UnixMilli(ts7))), + compareStartTimestamp(tsZero), compareTimestamp(pcommon.NewTimestampFromTime(time.UnixMilli(ts7))), compareDoubleValue(99), compareAttributes(map[string]string{"method": "post", "code": "200"}), @@ -310,7 +310,7 @@ func verifyHonorTimeStampsTrue(t *testing.T, td *testData, resourceMetrics []pme }, { numberPointComparator: []numberPointComparator{ - compareStartTimestamp(pcommon.NewTimestampFromTime(time.UnixMilli(ts8))), + compareStartTimestamp(tsZero), compareTimestamp(pcommon.NewTimestampFromTime(time.UnixMilli(ts8))), compareDoubleValue(3), compareAttributes(map[string]string{"method": "post", "code": "400"}), @@ -326,7 +326,7 @@ func verifyHonorTimeStampsTrue(t *testing.T, td *testData, resourceMetrics []pme []dataPointExpectation{ { histogramPointComparator: []histogramPointComparator{ - compareHistogramStartTimestamp(pcommon.NewTimestampFromTime(time.UnixMilli(ts9))), + compareHistogramStartTimestamp(tsZero), compareHistogramTimestamp(pcommon.NewTimestampFromTime(time.UnixMilli(ts9))), compareHistogram(2400, 4950, []float64{0.05, 0.5, 1}, []uint64{900, 500, 500, 500}), }, @@ -341,7 +341,7 @@ func verifyHonorTimeStampsTrue(t *testing.T, td *testData, resourceMetrics []pme []dataPointExpectation{ { summaryPointComparator: []summaryPointComparator{ - compareSummaryStartTimestamp(pcommon.NewTimestampFromTime(time.UnixMilli(ts10))), + compareSummaryStartTimestamp(tsZero), compareSummaryTimestamp(pcommon.NewTimestampFromTime(time.UnixMilli(ts10))), compareSummary(900, 4980, [][]float64{{0.01, 1}, {0.9, 6}, {0.99, 8}}), }, @@ -378,7 +378,7 @@ func verifyHonorTimeStampsTrue(t *testing.T, td *testData, resourceMetrics []pme []dataPointExpectation{ { numberPointComparator: []numberPointComparator{ - compareStartTimestamp(pcommon.NewTimestampFromTime(time.UnixMilli(ts7))), + compareStartTimestamp(tsZero), compareTimestamp(pcommon.NewTimestampFromTime(time.UnixMilli(ts12))), compareDoubleValue(100), compareAttributes(map[string]string{"method": "post", "code": "200"}), @@ -386,7 +386,7 @@ func verifyHonorTimeStampsTrue(t *testing.T, td *testData, resourceMetrics []pme }, { numberPointComparator: []numberPointComparator{ - compareStartTimestamp(pcommon.NewTimestampFromTime(time.UnixMilli(ts8))), + compareStartTimestamp(tsZero), compareTimestamp(pcommon.NewTimestampFromTime(time.UnixMilli(ts13))), compareDoubleValue(5), compareAttributes(map[string]string{"method": "post", "code": "400"}), @@ -402,7 +402,7 @@ func verifyHonorTimeStampsTrue(t *testing.T, td *testData, resourceMetrics []pme []dataPointExpectation{ { histogramPointComparator: []histogramPointComparator{ - compareHistogramStartTimestamp(pcommon.NewTimestampFromTime(time.UnixMilli(ts9))), + compareHistogramStartTimestamp(tsZero), compareHistogramTimestamp(pcommon.NewTimestampFromTime(time.UnixMilli(ts14))), compareHistogram(2500, 5000, []float64{0.05, 0.5, 1}, []uint64{1000, 500, 500, 500}), }, @@ -417,7 +417,7 @@ func verifyHonorTimeStampsTrue(t *testing.T, td *testData, resourceMetrics []pme []dataPointExpectation{ { summaryPointComparator: []summaryPointComparator{ - compareSummaryStartTimestamp(pcommon.NewTimestampFromTime(time.UnixMilli(ts10))), + compareSummaryStartTimestamp(tsZero), compareSummaryTimestamp(pcommon.NewTimestampFromTime(time.UnixMilli(ts15))), compareSummary(1000, 5000, [][]float64{{0.01, 1}, {0.9, 5}, {0.99, 8}}), }, @@ -462,7 +462,7 @@ func verifyHonorTimeStampsFalse(t *testing.T, td *testData, resourceMetrics []pm []dataPointExpectation{ { numberPointComparator: []numberPointComparator{ - compareStartTimestamp(ts1), + compareStartTimestamp(tsZero), compareTimestamp(ts1), compareDoubleValue(100), compareAttributes(map[string]string{"method": "post", "code": "200"}), @@ -470,7 +470,7 @@ func verifyHonorTimeStampsFalse(t *testing.T, td *testData, resourceMetrics []pm }, { numberPointComparator: []numberPointComparator{ - compareStartTimestamp(ts1), + compareStartTimestamp(tsZero), compareTimestamp(ts1), compareDoubleValue(5), compareAttributes(map[string]string{"method": "post", "code": "400"}), @@ -486,7 +486,7 @@ func verifyHonorTimeStampsFalse(t *testing.T, td *testData, resourceMetrics []pm []dataPointExpectation{ { histogramPointComparator: []histogramPointComparator{ - compareHistogramStartTimestamp(ts1), + compareHistogramStartTimestamp(tsZero), compareHistogramTimestamp(ts1), compareHistogram(2500, 5000, []float64{0.05, 0.5, 1}, []uint64{1000, 500, 500, 500}), }, @@ -501,7 +501,7 @@ func verifyHonorTimeStampsFalse(t *testing.T, td *testData, resourceMetrics []pm []dataPointExpectation{ { summaryPointComparator: []summaryPointComparator{ - compareSummaryStartTimestamp(ts1), + compareSummaryStartTimestamp(tsZero), compareSummaryTimestamp(ts1), compareSummary(1000, 5000, [][]float64{{0.01, 1}, {0.9, 5}, {0.99, 8}}), }, @@ -540,7 +540,7 @@ func verifyHonorTimeStampsFalse(t *testing.T, td *testData, resourceMetrics []pm []dataPointExpectation{ { numberPointComparator: []numberPointComparator{ - compareStartTimestamp(ts2), + compareStartTimestamp(tsZero), compareTimestamp(ts2), compareDoubleValue(99), compareAttributes(map[string]string{"method": "post", "code": "200"}), @@ -548,7 +548,7 @@ func verifyHonorTimeStampsFalse(t *testing.T, td *testData, resourceMetrics []pm }, { numberPointComparator: []numberPointComparator{ - compareStartTimestamp(ts2), + compareStartTimestamp(tsZero), compareTimestamp(ts2), compareDoubleValue(3), compareAttributes(map[string]string{"method": "post", "code": "400"}), @@ -564,7 +564,7 @@ func verifyHonorTimeStampsFalse(t *testing.T, td *testData, resourceMetrics []pm []dataPointExpectation{ { histogramPointComparator: []histogramPointComparator{ - compareHistogramStartTimestamp(ts2), + compareHistogramStartTimestamp(tsZero), compareHistogramTimestamp(ts2), compareHistogram(2400, 4950, []float64{0.05, 0.5, 1}, []uint64{900, 500, 500, 500}), }, @@ -579,7 +579,7 @@ func verifyHonorTimeStampsFalse(t *testing.T, td *testData, resourceMetrics []pm []dataPointExpectation{ { summaryPointComparator: []summaryPointComparator{ - compareSummaryStartTimestamp(ts2), + compareSummaryStartTimestamp(tsZero), compareSummaryTimestamp(ts2), compareSummary(900, 4980, [][]float64{{0.01, 1}, {0.9, 6}, {0.99, 8}}), }, diff --git a/otelcollector/prometheusreceiver/metrics_receiver_labels_test.go b/otelcollector/prometheusreceiver/metrics_receiver_labels_test.go index a04b9b8e9..da9546004 100644 --- a/otelcollector/prometheusreceiver/metrics_receiver_labels_test.go +++ b/otelcollector/prometheusreceiver/metrics_receiver_labels_test.go @@ -11,7 +11,7 @@ import ( "github.com/stretchr/testify/require" "go.opentelemetry.io/collector/pdata/pcommon" "go.opentelemetry.io/collector/pdata/pmetric" - semconv "go.opentelemetry.io/otel/semconv/v1.27.0" + conventions "go.opentelemetry.io/otel/semconv/v1.27.0" ) const targetExternalLabels = ` @@ -178,7 +178,7 @@ func verifyLabelConfigTarget1(t *testing.T, td *testData, rms []pmetric.Resource []dataPointExpectation{ { numberPointComparator: []numberPointComparator{ - compareStartTimestamp(ts1), + compareStartTimestamp(tsZero), compareTimestamp(ts1), compareDoubleValue(1), compareAttributes(map[string]string{"label1": "value1", "label2": "value2"}), @@ -209,7 +209,7 @@ func verifyLabelConfigTarget1(t *testing.T, td *testData, rms []pmetric.Resource []dataPointExpectation{ { histogramPointComparator: []histogramPointComparator{ - compareHistogramStartTimestamp(ts1), + compareHistogramStartTimestamp(tsZero), compareHistogramTimestamp(ts1), compareHistogram(2500, 5000, []float64{0.1, 0.5, 1}, []uint64{1000, 500, 500, 500}), compareHistogramAttributes(map[string]string{"label1": "value1", "label2": "value2"}), @@ -225,7 +225,7 @@ func verifyLabelConfigTarget1(t *testing.T, td *testData, rms []pmetric.Resource []dataPointExpectation{ { summaryPointComparator: []summaryPointComparator{ - compareSummaryStartTimestamp(ts1), + compareSummaryStartTimestamp(tsZero), compareSummaryTimestamp(ts1), compareSummary(1000, 5000, [][]float64{{0.1, 1}, {0.5, 5}, {0.99, 8}}), compareSummaryAttributes(map[string]string{"label1": "value1", "label2": "value2"}), @@ -383,7 +383,7 @@ func verifyEmptyLabelValuesTarget1(t *testing.T, td *testData, rms []pmetric.Res []dataPointExpectation{ { histogramPointComparator: []histogramPointComparator{ - compareHistogramStartTimestamp(ts1), + compareHistogramStartTimestamp(tsZero), compareHistogramTimestamp(ts1), compareHistogram(2500, 5000, []float64{0.1, 0.5, 1}, []uint64{1000, 500, 500, 500}), compareHistogramAttributes(map[string]string{"id": "1"}), @@ -399,7 +399,7 @@ func verifyEmptyLabelValuesTarget1(t *testing.T, td *testData, rms []pmetric.Res []dataPointExpectation{ { summaryPointComparator: []summaryPointComparator{ - compareSummaryStartTimestamp(ts1), + compareSummaryStartTimestamp(tsZero), compareSummaryTimestamp(ts1), compareSummary(1000, 5000, [][]float64{{0.1, 1}, {0.5, 5}, {0.99, 8}}), compareSummaryAttributes(map[string]string{"id": "1"}), @@ -632,7 +632,7 @@ func verifyHonorLabelsTrue(t *testing.T, td *testData, rms []pmetric.ResourceMet var scrapeConfigResourceMetrics pmetric.ResourceMetrics gotScrapeConfigMetrics, gotResourceMetrics := false, false for _, rm := range rms { - serviceInstance, ok := rm.Resource().Attributes().Get(string(semconv.ServiceInstanceIDKey)) + serviceInstance, ok := rm.Resource().Attributes().Get(string(conventions.ServiceInstanceIDKey)) require.True(t, ok) if serviceInstance.AsString() == "hostname:8080" { resourceMetric = rm diff --git a/otelcollector/prometheusreceiver/metrics_receiver_non_numerical_test.go b/otelcollector/prometheusreceiver/metrics_receiver_non_numerical_test.go index 444d9389d..4296db81f 100644 --- a/otelcollector/prometheusreceiver/metrics_receiver_non_numerical_test.go +++ b/otelcollector/prometheusreceiver/metrics_receiver_non_numerical_test.go @@ -10,7 +10,6 @@ import ( "github.com/prometheus/prometheus/model/value" "github.com/stretchr/testify/assert" - "go.opentelemetry.io/collector/pdata/pcommon" "go.opentelemetry.io/collector/pdata/pmetric" ) @@ -47,7 +46,7 @@ var totalScrapes = 10 // TestStaleNaNs validates that staleness marker gets generated when the timeseries is no longer present func TestStaleNaNs(t *testing.T) { var mockResponses []mockPrometheusResponse - for i := 0; i < totalScrapes; i++ { + for i := range totalScrapes { if i%2 == 0 { mockResponses = append(mockResponses, mockPrometheusResponse{ code: 200, @@ -73,18 +72,16 @@ func TestStaleNaNs(t *testing.T) { func verifyStaleNaNs(t *testing.T, td *testData, resourceMetrics []pmetric.ResourceMetrics) { verifyNumTotalScrapeResults(t, td, resourceMetrics) - metrics1 := resourceMetrics[0].ScopeMetrics().At(0).Metrics() - ts := getTS(metrics1) - for i := 0; i < totalScrapes; i++ { + for i := range totalScrapes { if i%2 == 0 { - verifyStaleNaNsSuccessfulScrape(t, td, resourceMetrics[i], ts, i+1) + verifyStaleNaNsSuccessfulScrape(t, td, resourceMetrics[i], i+1) } else { - verifyStaleNaNsFailedScrape(t, td, resourceMetrics[i], ts, i+1) + verifyStaleNaNsFailedScrape(t, td, resourceMetrics[i], i+1) } } } -func verifyStaleNaNsSuccessfulScrape(t *testing.T, td *testData, resourceMetric pmetric.ResourceMetrics, startTimestamp pcommon.Timestamp, iteration int) { +func verifyStaleNaNsSuccessfulScrape(t *testing.T, td *testData, resourceMetric pmetric.ResourceMetrics, iteration int) { // m1 has 4 metrics + 5 internal scraper metrics assert.Equal(t, 9, metricsCount(resourceMetric)) wantAttributes := td.attributes // should want attribute be part of complete target or each scrape? @@ -112,7 +109,7 @@ func verifyStaleNaNsSuccessfulScrape(t *testing.T, td *testData, resourceMetric []dataPointExpectation{ { numberPointComparator: []numberPointComparator{ - compareStartTimestamp(startTimestamp), + compareStartTimestamp(tsZero), compareTimestamp(ts1), compareDoubleValue(100), compareAttributes(map[string]string{"method": "post", "code": "200"}), @@ -120,7 +117,7 @@ func verifyStaleNaNsSuccessfulScrape(t *testing.T, td *testData, resourceMetric }, { numberPointComparator: []numberPointComparator{ - compareStartTimestamp(startTimestamp), + compareStartTimestamp(tsZero), compareTimestamp(ts1), compareDoubleValue(5), compareAttributes(map[string]string{"method": "post", "code": "400"}), @@ -136,7 +133,7 @@ func verifyStaleNaNsSuccessfulScrape(t *testing.T, td *testData, resourceMetric []dataPointExpectation{ { histogramPointComparator: []histogramPointComparator{ - compareHistogramStartTimestamp(startTimestamp), + compareHistogramStartTimestamp(tsZero), compareHistogramTimestamp(ts1), compareHistogram(2500, 5000, []float64{0.05, 0.5, 1}, []uint64{1000, 500, 500, 500}), }, @@ -151,7 +148,7 @@ func verifyStaleNaNsSuccessfulScrape(t *testing.T, td *testData, resourceMetric []dataPointExpectation{ { summaryPointComparator: []summaryPointComparator{ - compareSummaryStartTimestamp(startTimestamp), + compareSummaryStartTimestamp(tsZero), compareSummaryTimestamp(ts1), compareSummary(1000, 5000, [][]float64{{0.01, 1}, {0.9, 5}, {0.99, 8}}), }, @@ -163,7 +160,7 @@ func verifyStaleNaNsSuccessfulScrape(t *testing.T, td *testData, resourceMetric doCompare(t, fmt.Sprintf("validScrape-scrape-%d", iteration), wantAttributes, resourceMetric, e1) } -func verifyStaleNaNsFailedScrape(t *testing.T, td *testData, resourceMetric pmetric.ResourceMetrics, startTimestamp pcommon.Timestamp, iteration int) { +func verifyStaleNaNsFailedScrape(t *testing.T, td *testData, resourceMetric pmetric.ResourceMetrics, iteration int) { // m1 has 4 metrics + 5 internal scraper metrics assert.Equal(t, 9, metricsCount(resourceMetric)) wantAttributes := td.attributes @@ -194,14 +191,14 @@ func verifyStaleNaNsFailedScrape(t *testing.T, td *testData, resourceMetric pmet []dataPointExpectation{ { numberPointComparator: []numberPointComparator{ - compareStartTimestamp(startTimestamp), + compareStartTimestamp(tsZero), compareTimestamp(ts1), assertNumberPointFlagNoRecordedValue(), }, }, { numberPointComparator: []numberPointComparator{ - compareStartTimestamp(startTimestamp), + compareStartTimestamp(tsZero), compareTimestamp(ts1), assertNumberPointFlagNoRecordedValue(), }, @@ -216,7 +213,7 @@ func verifyStaleNaNsFailedScrape(t *testing.T, td *testData, resourceMetric pmet []dataPointExpectation{ { histogramPointComparator: []histogramPointComparator{ - compareHistogramStartTimestamp(startTimestamp), + compareHistogramStartTimestamp(tsZero), compareHistogramTimestamp(ts1), assertHistogramPointFlagNoRecordedValue(), }, @@ -231,7 +228,7 @@ func verifyStaleNaNsFailedScrape(t *testing.T, td *testData, resourceMetric pmet []dataPointExpectation{ { summaryPointComparator: []summaryPointComparator{ - compareSummaryStartTimestamp(startTimestamp), + compareSummaryStartTimestamp(tsZero), compareSummaryTimestamp(ts1), assertSummaryPointFlagNoRecordedValue(), }, @@ -325,7 +322,7 @@ func verifyNormalNaNs(t *testing.T, td *testData, resourceMetrics []pmetric.Reso []dataPointExpectation{ { summaryPointComparator: []summaryPointComparator{ - compareSummaryStartTimestamp(ts1), + compareSummaryStartTimestamp(tsZero), compareSummaryTimestamp(ts1), compareSummary(1000, 5000, [][]float64{ {0.01, math.Float64frombits(value.NormalNaN)}, @@ -424,7 +421,7 @@ func verifyInfValues(t *testing.T, td *testData, resourceMetrics []pmetric.Resou []dataPointExpectation{ { numberPointComparator: []numberPointComparator{ - compareStartTimestamp(ts1), + compareStartTimestamp(tsZero), compareTimestamp(ts1), compareDoubleValue(math.Inf(1)), compareAttributes(map[string]string{"method": "post", "code": "200"}), @@ -440,7 +437,7 @@ func verifyInfValues(t *testing.T, td *testData, resourceMetrics []pmetric.Resou []dataPointExpectation{ { summaryPointComparator: []summaryPointComparator{ - compareSummaryStartTimestamp(ts1), + compareSummaryStartTimestamp(tsZero), compareSummaryTimestamp(ts1), compareSummary(1000, 5000, [][]float64{{0.01, math.Inf(1)}, {0.9, math.Inf(1)}, {0.99, math.Inf(1)}}), }, diff --git a/otelcollector/prometheusreceiver/metrics_receiver_protobuf_test.go b/otelcollector/prometheusreceiver/metrics_receiver_protobuf_test.go index 5c4caf5f2..b05930a29 100644 --- a/otelcollector/prometheusreceiver/metrics_receiver_protobuf_test.go +++ b/otelcollector/prometheusreceiver/metrics_receiver_protobuf_test.go @@ -4,6 +4,7 @@ package prometheusreceiver import ( + "fmt" "math" "testing" @@ -11,7 +12,6 @@ import ( "github.com/prometheus/prometheus/config" dto "github.com/prometheus/prometheus/prompb/io/prometheus/client" "github.com/stretchr/testify/require" - "go.opentelemetry.io/collector/featuregate" "go.opentelemetry.io/collector/pdata/pmetric" ) @@ -165,6 +165,9 @@ func TestScrapeViaProtobuf(t *testing.T) { }) } +// TestNativeVsClassicHistogramScrapeViaProtobuf checks the classic and native histograms +// can co-exists, regardless whether metadata is available or not. +// When there is no metadata, float series are all mapped 1:1 to Gauge metrics. func TestNativeVsClassicHistogramScrapeViaProtobuf(t *testing.T) { classicHistogram := &dto.MetricFamily{ Name: "test_classic_histogram", @@ -325,13 +328,22 @@ func TestNativeVsClassicHistogramScrapeViaProtobuf(t *testing.T) { require.Contains(t, values, 111.0) } + // Test cases for native histogram scraping behavior. + // The feature gate receiver.prometheusreceiver.EnableNativeHistograms is now stable and always enabled. + // Native histogram scraping is controlled by the Prometheus scrape config option scrape_native_histograms. testCases := map[string]struct { mutCfg func(*PromConfig) - enableNativeHistograms bool expected []metricExpectation + expectedIgnoreMetadata []metricExpectation }{ - "feature enabled scrape classic off": { - enableNativeHistograms: true, + // Default behavior: native histograms enabled via scrape config, classic histograms only when no native available. + "scrape native on, scrape classic off": { + mutCfg: func(cfg *PromConfig) { + truePtr := true + for _, sc := range cfg.ScrapeConfigs { + sc.ScrapeNativeHistograms = &truePtr + } + }, expected: []metricExpectation{ { // Scrape classic only histograms as is. "test_classic_histogram", @@ -370,44 +382,63 @@ func TestNativeVsClassicHistogramScrapeViaProtobuf(t *testing.T) { nil, }, }, - }, - "feature disabled scrape classic off": { - enableNativeHistograms: false, - expected: []metricExpectation{ - { // Scrape classic only histograms as is. - "test_classic_histogram", - pmetric.MetricTypeHistogram, + expectedIgnoreMetadata: []metricExpectation{ + { + "test_classic_histogram_bucket", + pmetric.MetricTypeGauge, + "", + nil, + nil, + }, + { + "test_classic_histogram_count", + pmetric.MetricTypeGauge, + "", + nil, + nil, + }, + { + "test_classic_histogram_sum", + pmetric.MetricTypeGauge, + "", + nil, + nil, + }, + { + "test_mixed_histogram", + pmetric.MetricTypeExponentialHistogram, "", []dataPointExpectation{{ - histogramPointComparator: []histogramPointComparator{ - compareHistogram(1213, 456, []float64{0.5, 10}, []uint64{789, 222, 202}), - checkClassicHistogramExemplars, + exponentialHistogramComparator: []exponentialHistogramComparator{ + compareExponentialHistogram(3, 1213, 456, 2, -1, []uint64{1, 0, 2}, -3, []uint64{1, 0, 1}), + checkMixedHistogramNativeExemplars, }, }}, nil, }, - { // Fallback to scraping classic histograms if feature is off. - "test_mixed_histogram", - pmetric.MetricTypeHistogram, + { + "test_native_histogram", + pmetric.MetricTypeExponentialHistogram, "", []dataPointExpectation{{ - histogramPointComparator: []histogramPointComparator{ - compareHistogram(1213, 456, []float64{0.5, 10}, []uint64{789, 222, 202}), - checkMixedHistogramClassicExemplars, + exponentialHistogramComparator: []exponentialHistogramComparator{ + compareExponentialHistogram(3, 1214, 3456, 5, -3, []uint64{1, 0, 2}, 2, []uint64{1, 0, 0, 1}), + checkNativeHistogramExemplars, }, }}, nil, }, }, }, - "feature enabled scrape classic on": { + // Scrape both classic and native histograms when AlwaysScrapeClassicHistograms is enabled. + "scrape native on, scrape classic on": { mutCfg: func(cfg *PromConfig) { truePtr := true for _, scrapeConfig := range cfg.ScrapeConfigs { + scrapeConfig.ScrapeNativeHistograms = &truePtr scrapeConfig.AlwaysScrapeClassicHistograms = &truePtr } }, - enableNativeHistograms: true, expected: []metricExpectation{ { // Scrape classic only histograms as is. "test_classic_histogram", @@ -458,36 +489,69 @@ func TestNativeVsClassicHistogramScrapeViaProtobuf(t *testing.T) { nil, }, }, - }, - "feature disabled scrape classic on": { - mutCfg: func(cfg *PromConfig) { - truePtr := true - for _, scrapeConfig := range cfg.ScrapeConfigs { - scrapeConfig.AlwaysScrapeClassicHistograms = &truePtr - } - }, - enableNativeHistograms: false, - expected: []metricExpectation{ - { // Scrape classic only histograms as is. - "test_classic_histogram", - pmetric.MetricTypeHistogram, + expectedIgnoreMetadata: []metricExpectation{ + { + "test_classic_histogram_bucket", + pmetric.MetricTypeGauge, + "", + nil, + nil, + }, + { + "test_classic_histogram_count", + pmetric.MetricTypeGauge, + "", + nil, + nil, + }, + { + "test_classic_histogram_sum", + pmetric.MetricTypeGauge, + "", + nil, + nil, + }, + { + "test_mixed_histogram_bucket", + pmetric.MetricTypeGauge, + "", + nil, + nil, + }, + { + "test_mixed_histogram_count", + pmetric.MetricTypeGauge, + "", + nil, + nil, + }, + { + "test_mixed_histogram_sum", + pmetric.MetricTypeGauge, + "", + nil, + nil, + }, + { // Scrape both classic and native buckets from mixed histograms. + "test_mixed_histogram", + pmetric.MetricTypeExponentialHistogram, "", []dataPointExpectation{{ - histogramPointComparator: []histogramPointComparator{ - compareHistogram(1213, 456, []float64{0.5, 10}, []uint64{789, 222, 202}), - checkClassicHistogramExemplars, + exponentialHistogramComparator: []exponentialHistogramComparator{ + compareExponentialHistogram(3, 1213, 456, 2, -1, []uint64{1, 0, 2}, -3, []uint64{1, 0, 1}), + checkMixedHistogramNativeExemplars, }, }}, nil, }, - { // Only scrape classic buckets from mixed histograms. - "test_mixed_histogram", - pmetric.MetricTypeHistogram, + { // Scrape native only histograms as is. + "test_native_histogram", + pmetric.MetricTypeExponentialHistogram, "", []dataPointExpectation{{ - histogramPointComparator: []histogramPointComparator{ - compareHistogram(1213, 456, []float64{0.5, 10}, []uint64{789, 222, 202}), - checkMixedHistogramClassicExemplars, + exponentialHistogramComparator: []exponentialHistogramComparator{ + compareExponentialHistogram(3, 1214, 3456, 5, -3, []uint64{1, 0, 2}, 2, []uint64{1, 0, 0, 1}), + checkNativeHistogramExemplars, }, }}, nil, @@ -496,34 +560,34 @@ func TestNativeVsClassicHistogramScrapeViaProtobuf(t *testing.T) { }, } - defer func() { - _ = featuregate.GlobalRegistry().Set("receiver.prometheusreceiver.EnableNativeHistograms", false) - }() + for _, ignoreMetadata := range []bool{false, true} { + t.Run(fmt.Sprintf("skip metadata=%v", ignoreMetadata), func(t *testing.T) { + for name, tc := range testCases { + t.Run(name, func(t *testing.T) { + t.Parallel() - for name, tc := range testCases { - t.Run(name, func(t *testing.T) { - err := featuregate.GlobalRegistry().Set("receiver.prometheusreceiver.EnableNativeHistograms", tc.enableNativeHistograms) - require.NoError(t, err) - - targets := []*testData{ - { - name: "target1", - pages: []mockPrometheusResponse{ - {code: 200, useProtoBuf: true, buf: buffer.Bytes()}, - }, - validateFunc: func(t *testing.T, td *testData, result []pmetric.ResourceMetrics) { - verifyNumValidScrapeResults(t, td, result) - doCompare(t, "target1", td.attributes, result[0], tc.expected) - }, - }, - } - mutCfg := tc.mutCfg - if mutCfg == nil { - mutCfg = func(*PromConfig) {} + targets := []*testData{ + { + name: "target1", + pages: []mockPrometheusResponse{ + {code: 200, useProtoBuf: true, buf: buffer.Bytes()}, + }, + validateFunc: func(t *testing.T, td *testData, result []pmetric.ResourceMetrics) { + verifyNumValidScrapeResults(t, td, result) + if ignoreMetadata { + doCompare(t, "target1", td.attributes, result[0], tc.expectedIgnoreMetadata) + } else { + doCompare(t, "target1", td.attributes, result[0], tc.expected) + } + }, + }, + } + testComponent(t, targets, func(c *Config) { + c.ignoreMetadata = ignoreMetadata + c.PrometheusConfig.GlobalConfig.ScrapeProtocols = []config.ScrapeProtocol{config.PrometheusProto} + }, tc.mutCfg) + }) } - testComponent(t, targets, func(c *Config) { - c.PrometheusConfig.GlobalConfig.ScrapeProtocols = []config.ScrapeProtocol{config.PrometheusProto} - }, mutCfg) }) } } @@ -650,13 +714,14 @@ func TestStaleExponentialHistogram(t *testing.T) { }, }, } - err := featuregate.GlobalRegistry().Set("receiver.prometheusreceiver.EnableNativeHistograms", true) - require.NoError(t, err) - defer func() { - _ = featuregate.GlobalRegistry().Set("receiver.prometheusreceiver.EnableNativeHistograms", false) - }() + testComponent(t, targets, func(c *Config) { c.PrometheusConfig.GlobalConfig.ScrapeProtocols = []config.ScrapeProtocol{config.PrometheusProto} + }, func(cfg *PromConfig) { + truePtr := true + for _, sc := range cfg.ScrapeConfigs { + sc.ScrapeNativeHistograms = &truePtr + } }) } @@ -715,12 +780,13 @@ func TestFloatCounterHistogram(t *testing.T) { }, }, } - err := featuregate.GlobalRegistry().Set("receiver.prometheusreceiver.EnableNativeHistograms", true) - require.NoError(t, err) - defer func() { - _ = featuregate.GlobalRegistry().Set("receiver.prometheusreceiver.EnableNativeHistograms", false) - }() + testComponent(t, targets, func(c *Config) { c.PrometheusConfig.GlobalConfig.ScrapeProtocols = []config.ScrapeProtocol{config.PrometheusProto} + }, func(cfg *PromConfig) { + truePtr := true + for _, sc := range cfg.ScrapeConfigs { + sc.ScrapeNativeHistograms = &truePtr + } }) } diff --git a/otelcollector/prometheusreceiver/metrics_receiver_report_extra_scrape_metrics_test.go b/otelcollector/prometheusreceiver/metrics_receiver_report_extra_scrape_metrics_test.go index fa3c77944..5da14dc2f 100644 --- a/otelcollector/prometheusreceiver/metrics_receiver_report_extra_scrape_metrics_test.go +++ b/otelcollector/prometheusreceiver/metrics_receiver_report_extra_scrape_metrics_test.go @@ -13,6 +13,7 @@ import ( "go.opentelemetry.io/collector/pdata/pmetric" "go.opentelemetry.io/collector/receiver/receivertest" + "github.com/open-telemetry/opentelemetry-collector-contrib/internal/common/testutil" "github.com/open-telemetry/opentelemetry-collector-contrib/receiver/prometheusreceiver/internal/metadata" ) @@ -48,6 +49,8 @@ func TestReportExtraScrapeMetrics(t *testing.T) { // starts prometheus receiver with custom config, retrieves metrics from MetricsSink func testScraperMetrics(t *testing.T, targets []*testData, reportExtraScrapeMetrics bool) { + defer testutil.SetFeatureGateForTest(t, enableReportExtraScrapeMetricsGate, reportExtraScrapeMetrics)() + ctx := t.Context() mp, cfg, err := setupMockPrometheus(targets...) require.NoErrorf(t, err, "Failed to create Prometheus config: %v", err) @@ -55,10 +58,9 @@ func testScraperMetrics(t *testing.T, targets []*testData, reportExtraScrapeMetr cms := new(consumertest.MetricsSink) receiver, err := newPrometheusReceiver(receivertest.NewNopSettings(metadata.Type), &Config{ - PrometheusConfig: cfg, - UseStartTimeMetric: false, - StartTimeMetricRegex: "", - ReportExtraScrapeMetrics: reportExtraScrapeMetrics, + PrometheusConfig: cfg, + UseStartTimeMetric: false, + StartTimeMetricRegex: "", }, cms) require.NoError(t, err, "Failed to create Prometheus receiver: %v", err) diff --git a/otelcollector/prometheusreceiver/metrics_receiver_scrape_config_files_test.go b/otelcollector/prometheusreceiver/metrics_receiver_scrape_config_files_test.go index 48a4ff34f..b3512c330 100644 --- a/otelcollector/prometheusreceiver/metrics_receiver_scrape_config_files_test.go +++ b/otelcollector/prometheusreceiver/metrics_receiver_scrape_config_files_test.go @@ -12,7 +12,7 @@ import ( "github.com/stretchr/testify/assert" "github.com/stretchr/testify/require" "go.opentelemetry.io/collector/pdata/pmetric" - semconv "go.opentelemetry.io/otel/semconv/v1.27.0" + conventions "go.opentelemetry.io/otel/semconv/v1.27.0" ) var scrapeFileTargetPage = ` @@ -52,7 +52,7 @@ func TestScrapeConfigFiles(t *testing.T) { func verifyScrapeConfigFiles(t *testing.T, _ *testData, result []pmetric.ResourceMetrics) { require.Len(t, result, 1) - serviceName, ok := result[0].Resource().Attributes().Get(string(semconv.ServiceNameKey)) + serviceName, ok := result[0].Resource().Attributes().Get(string(conventions.ServiceNameKey)) assert.True(t, ok) assert.Equal(t, "target1", serviceName.Str()) assert.Equal(t, 6, result[0].ScopeMetrics().At(0).Metrics().Len()) diff --git a/otelcollector/prometheusreceiver/metrics_receiver_target_allocator_test.go b/otelcollector/prometheusreceiver/metrics_receiver_target_allocator_test.go index 7fc917c16..dee7bcdd6 100644 --- a/otelcollector/prometheusreceiver/metrics_receiver_target_allocator_test.go +++ b/otelcollector/prometheusreceiver/metrics_receiver_target_allocator_test.go @@ -31,7 +31,7 @@ import ( "go.uber.org/zap/zapcore" "github.com/open-telemetry/opentelemetry-collector-contrib/receiver/prometheusreceiver/internal/metadata" - "github.com/open-telemetry/opentelemetry-collector-contrib/receiver/prometheusreceiver/targetallocator" + "github.com/open-telemetry/opentelemetry-collector-contrib/receiver/prometheusreceiver/internal/targetallocator" ) const exportedMetrics = ` diff --git a/otelcollector/prometheusreceiver/metrics_receiver_test.go b/otelcollector/prometheusreceiver/metrics_receiver_test.go index a0b892b69..ce85cb569 100644 --- a/otelcollector/prometheusreceiver/metrics_receiver_test.go +++ b/otelcollector/prometheusreceiver/metrics_receiver_test.go @@ -18,6 +18,7 @@ import ( "github.com/stretchr/testify/require" "go.opentelemetry.io/collector/component/componenttest" "go.opentelemetry.io/collector/consumer/consumertest" + "go.opentelemetry.io/collector/pdata/pcommon" "go.opentelemetry.io/collector/pdata/pmetric" "go.opentelemetry.io/collector/receiver/receivertest" "google.golang.org/protobuf/types/known/timestamppb" @@ -25,6 +26,8 @@ import ( "github.com/open-telemetry/opentelemetry-collector-contrib/receiver/prometheusreceiver/internal/metadata" ) +var tsZero = pcommon.Timestamp(0) + // Test data and validation functions for all four core metrics for Prometheus Receiver. // Make sure every page has a gauge, we are relying on it to figure out the start time if needed @@ -149,7 +152,7 @@ func verifyTarget1(t *testing.T, td *testData, resourceMetrics []pmetric.Resourc []dataPointExpectation{ { numberPointComparator: []numberPointComparator{ - compareStartTimestamp(ts1), + compareStartTimestamp(tsZero), compareTimestamp(ts1), compareDoubleValue(100), compareAttributes(map[string]string{"method": "post", "code": "200"}), @@ -157,7 +160,7 @@ func verifyTarget1(t *testing.T, td *testData, resourceMetrics []pmetric.Resourc }, { numberPointComparator: []numberPointComparator{ - compareStartTimestamp(ts1), + compareStartTimestamp(tsZero), compareTimestamp(ts1), compareDoubleValue(5), compareAttributes(map[string]string{"method": "post", "code": "400"}), @@ -173,7 +176,7 @@ func verifyTarget1(t *testing.T, td *testData, resourceMetrics []pmetric.Resourc []dataPointExpectation{ { histogramPointComparator: []histogramPointComparator{ - compareHistogramStartTimestamp(ts1), + compareHistogramStartTimestamp(tsZero), compareHistogramTimestamp(ts1), compareHistogram(2500, 5000, []float64{0.05, 0.5, 1}, []uint64{1000, 500, 500, 500}), }, @@ -188,7 +191,7 @@ func verifyTarget1(t *testing.T, td *testData, resourceMetrics []pmetric.Resourc []dataPointExpectation{ { summaryPointComparator: []summaryPointComparator{ - compareSummaryStartTimestamp(ts1), + compareSummaryStartTimestamp(tsZero), compareSummaryTimestamp(ts1), compareSummary(1000, 5000, [][]float64{{0.01, 1}, {0.9, 5}, {0.99, 8}}), }, @@ -227,7 +230,7 @@ func verifyTarget1(t *testing.T, td *testData, resourceMetrics []pmetric.Resourc []dataPointExpectation{ { numberPointComparator: []numberPointComparator{ - compareStartTimestamp(ts1), + compareStartTimestamp(tsZero), compareTimestamp(ts2), compareDoubleValue(199), compareAttributes(map[string]string{"method": "post", "code": "200"}), @@ -235,7 +238,7 @@ func verifyTarget1(t *testing.T, td *testData, resourceMetrics []pmetric.Resourc }, { numberPointComparator: []numberPointComparator{ - compareStartTimestamp(ts1), + compareStartTimestamp(tsZero), compareTimestamp(ts2), compareDoubleValue(12), compareAttributes(map[string]string{"method": "post", "code": "400"}), @@ -252,7 +255,7 @@ func verifyTarget1(t *testing.T, td *testData, resourceMetrics []pmetric.Resourc { histogramPointComparator: []histogramPointComparator{ // TODO: Prometheus Receiver Issue- start_timestamp are incorrect for Summary and Histogram metrics after a failed scrape (issue not yet posted on collector-contrib repo) - compareHistogramStartTimestamp(ts1), + compareHistogramStartTimestamp(tsZero), compareHistogramTimestamp(ts2), compareHistogram(2600, 5050, []float64{0.05, 0.5, 1}, []uint64{1100, 500, 500, 500}), }, @@ -268,7 +271,7 @@ func verifyTarget1(t *testing.T, td *testData, resourceMetrics []pmetric.Resourc { summaryPointComparator: []summaryPointComparator{ // TODO: Prometheus Receiver Issue- start_timestamp are incorrect for Summary and Histogram metrics after a failed scrape (issue not yet posted on collector-contrib repo) - compareSummaryStartTimestamp(ts1), + compareSummaryStartTimestamp(tsZero), compareSummaryTimestamp(ts2), compareSummary(1001, 5002, [][]float64{{0.01, 1}, {0.9, 6}, {0.99, 8}}), }, @@ -307,7 +310,7 @@ func verifyTarget1(t *testing.T, td *testData, resourceMetrics []pmetric.Resourc { numberPointComparator: []numberPointComparator{ // TODO: #6360 Prometheus Receiver Issue- start_timestamp should reset if the prior scrape had higher value - compareStartTimestamp(ts3), + compareStartTimestamp(tsZero), compareTimestamp(ts3), compareDoubleValue(99), compareAttributes(map[string]string{"method": "post", "code": "200"}), @@ -316,7 +319,7 @@ func verifyTarget1(t *testing.T, td *testData, resourceMetrics []pmetric.Resourc { numberPointComparator: []numberPointComparator{ // TODO: #6360 Prometheus Receiver Issue- start_timestamp should reset if the prior scrape had higher value - compareStartTimestamp(ts3), + compareStartTimestamp(tsZero), compareTimestamp(ts3), compareDoubleValue(3), compareAttributes(map[string]string{"method": "post", "code": "400"}), @@ -333,7 +336,7 @@ func verifyTarget1(t *testing.T, td *testData, resourceMetrics []pmetric.Resourc { histogramPointComparator: []histogramPointComparator{ // TODO: #6360 Prometheus Receiver Issue- start_timestamp should reset if the prior scrape had higher value - compareHistogramStartTimestamp(ts3), + compareHistogramStartTimestamp(tsZero), compareHistogramTimestamp(ts3), compareHistogram(2400, 4900, []float64{0.05, 0.5, 1}, []uint64{900, 500, 500, 500}), }, @@ -349,7 +352,7 @@ func verifyTarget1(t *testing.T, td *testData, resourceMetrics []pmetric.Resourc { summaryPointComparator: []summaryPointComparator{ // TODO: #6360 Prometheus Receiver Issue- start_timestamp should reset if the prior scrape had higher value - compareSummaryStartTimestamp(ts3), + compareSummaryStartTimestamp(tsZero), compareSummaryTimestamp(ts3), compareSummary(900, 4900, [][]float64{{0.01, 1}, {0.9, 4}, {0.99, 6}}), }, @@ -583,7 +586,7 @@ func verifyTarget2(t *testing.T, td *testData, resourceMetrics []pmetric.Resourc []dataPointExpectation{ { histogramPointComparator: []histogramPointComparator{ - compareHistogramStartTimestamp(ts1), + compareHistogramStartTimestamp(tsZero), compareHistogramTimestamp(ts1), compareHistogramAttributes(map[string]string{"method": "post", "code": "200"}), compareHistogram(10, 7, []float64{1}, []uint64{8, 2}), @@ -591,7 +594,7 @@ func verifyTarget2(t *testing.T, td *testData, resourceMetrics []pmetric.Resourc }, { histogramPointComparator: []histogramPointComparator{ - compareHistogramStartTimestamp(ts1), + compareHistogramStartTimestamp(tsZero), compareHistogramTimestamp(ts1), compareHistogramAttributes(map[string]string{"method": "post", "code": "400"}), compareHistogram(50, 25, []float64{1}, []uint64{30, 20}), @@ -607,7 +610,7 @@ func verifyTarget2(t *testing.T, td *testData, resourceMetrics []pmetric.Resourc []dataPointExpectation{ { numberPointComparator: []numberPointComparator{ - compareStartTimestamp(ts1), + compareStartTimestamp(tsZero), compareTimestamp(ts1), compareDoubleValue(10), compareAttributes(map[string]string{"method": "post", "code": "200"}), @@ -615,7 +618,7 @@ func verifyTarget2(t *testing.T, td *testData, resourceMetrics []pmetric.Resourc }, { numberPointComparator: []numberPointComparator{ - compareStartTimestamp(ts1), + compareStartTimestamp(tsZero), compareTimestamp(ts1), compareDoubleValue(50), compareAttributes(map[string]string{"method": "post", "code": "400"}), @@ -631,7 +634,7 @@ func verifyTarget2(t *testing.T, td *testData, resourceMetrics []pmetric.Resourc []dataPointExpectation{ { summaryPointComparator: []summaryPointComparator{ - compareSummaryStartTimestamp(ts1), + compareSummaryStartTimestamp(tsZero), compareSummaryTimestamp(ts1), compareSummaryAttributes(map[string]string{"code": "0"}), compareSummary(50, 100, [][]float64{{0.5, 47}}), @@ -639,7 +642,7 @@ func verifyTarget2(t *testing.T, td *testData, resourceMetrics []pmetric.Resourc }, { summaryPointComparator: []summaryPointComparator{ - compareSummaryStartTimestamp(ts1), + compareSummaryStartTimestamp(tsZero), compareSummaryTimestamp(ts1), compareSummaryAttributes(map[string]string{"code": "5"}), compareSummary(400, 180, [][]float64{{0.5, 35}}), @@ -679,7 +682,7 @@ func verifyTarget2(t *testing.T, td *testData, resourceMetrics []pmetric.Resourc []dataPointExpectation{ { histogramPointComparator: []histogramPointComparator{ - compareHistogramStartTimestamp(ts1), + compareHistogramStartTimestamp(tsZero), compareHistogramTimestamp(ts2), compareHistogramAttributes(map[string]string{"method": "post", "code": "200"}), compareHistogram(50, 43, []float64{1}, []uint64{40, 10}), @@ -687,7 +690,7 @@ func verifyTarget2(t *testing.T, td *testData, resourceMetrics []pmetric.Resourc }, { histogramPointComparator: []histogramPointComparator{ - compareHistogramStartTimestamp(ts2), + compareHistogramStartTimestamp(tsZero), compareHistogramTimestamp(ts2), compareHistogramAttributes(map[string]string{"method": "post", "code": "300"}), compareHistogram(3, 2, []float64{1}, []uint64{3, 0}), @@ -695,7 +698,7 @@ func verifyTarget2(t *testing.T, td *testData, resourceMetrics []pmetric.Resourc }, { histogramPointComparator: []histogramPointComparator{ - compareHistogramStartTimestamp(ts1), + compareHistogramStartTimestamp(tsZero), compareHistogramTimestamp(ts2), compareHistogramAttributes(map[string]string{"method": "post", "code": "400"}), compareHistogram(60, 30, []float64{1}, []uint64{35, 25}), @@ -711,7 +714,7 @@ func verifyTarget2(t *testing.T, td *testData, resourceMetrics []pmetric.Resourc []dataPointExpectation{ { numberPointComparator: []numberPointComparator{ - compareStartTimestamp(ts1), + compareStartTimestamp(tsZero), compareTimestamp(ts2), compareDoubleValue(50), compareAttributes(map[string]string{"method": "post", "code": "200"}), @@ -719,7 +722,7 @@ func verifyTarget2(t *testing.T, td *testData, resourceMetrics []pmetric.Resourc }, { numberPointComparator: []numberPointComparator{ - compareStartTimestamp(ts2), + compareStartTimestamp(tsZero), compareTimestamp(ts2), compareDoubleValue(3), compareAttributes(map[string]string{"method": "post", "code": "300"}), @@ -727,7 +730,7 @@ func verifyTarget2(t *testing.T, td *testData, resourceMetrics []pmetric.Resourc }, { numberPointComparator: []numberPointComparator{ - compareStartTimestamp(ts1), + compareStartTimestamp(tsZero), compareTimestamp(ts2), compareDoubleValue(60), compareAttributes(map[string]string{"method": "post", "code": "400"}), @@ -743,7 +746,7 @@ func verifyTarget2(t *testing.T, td *testData, resourceMetrics []pmetric.Resourc []dataPointExpectation{ { summaryPointComparator: []summaryPointComparator{ - compareSummaryStartTimestamp(ts1), + compareSummaryStartTimestamp(tsZero), compareSummaryTimestamp(ts2), compareSummaryAttributes(map[string]string{"code": "0"}), compareSummary(60, 110, [][]float64{{0.5, 57}}), @@ -751,7 +754,7 @@ func verifyTarget2(t *testing.T, td *testData, resourceMetrics []pmetric.Resourc }, { summaryPointComparator: []summaryPointComparator{ - compareSummaryStartTimestamp(ts2), + compareSummaryStartTimestamp(tsZero), compareSummaryTimestamp(ts2), compareSummaryAttributes(map[string]string{"code": "3"}), compareSummary(30, 50, [][]float64{{0.5, 42}}), @@ -759,7 +762,7 @@ func verifyTarget2(t *testing.T, td *testData, resourceMetrics []pmetric.Resourc }, { summaryPointComparator: []summaryPointComparator{ - compareSummaryStartTimestamp(ts1), + compareSummaryStartTimestamp(tsZero), compareSummaryTimestamp(ts2), compareSummaryAttributes(map[string]string{"code": "5"}), compareSummary(410, 190, [][]float64{{0.5, 45}}), @@ -799,7 +802,7 @@ func verifyTarget2(t *testing.T, td *testData, resourceMetrics []pmetric.Resourc []dataPointExpectation{ { histogramPointComparator: []histogramPointComparator{ - compareHistogramStartTimestamp(ts1), + compareHistogramStartTimestamp(tsZero), compareHistogramTimestamp(ts3), compareHistogramAttributes(map[string]string{"method": "post", "code": "200"}), compareHistogram(50, 43, []float64{1}, []uint64{40, 10}), @@ -807,7 +810,7 @@ func verifyTarget2(t *testing.T, td *testData, resourceMetrics []pmetric.Resourc }, { histogramPointComparator: []histogramPointComparator{ - compareHistogramStartTimestamp(ts2), + compareHistogramStartTimestamp(tsZero), compareHistogramTimestamp(ts3), compareHistogramAttributes(map[string]string{"method": "post", "code": "300"}), compareHistogram(5, 7, []float64{1}, []uint64{3, 2}), @@ -815,7 +818,7 @@ func verifyTarget2(t *testing.T, td *testData, resourceMetrics []pmetric.Resourc }, { histogramPointComparator: []histogramPointComparator{ - compareHistogramStartTimestamp(ts1), + compareHistogramStartTimestamp(tsZero), compareHistogramTimestamp(ts3), compareHistogramAttributes(map[string]string{"method": "post", "code": "400"}), compareHistogram(60, 30, []float64{1}, []uint64{35, 25}), @@ -831,7 +834,7 @@ func verifyTarget2(t *testing.T, td *testData, resourceMetrics []pmetric.Resourc []dataPointExpectation{ { numberPointComparator: []numberPointComparator{ - compareStartTimestamp(ts1), + compareStartTimestamp(tsZero), compareTimestamp(ts3), compareDoubleValue(50), compareAttributes(map[string]string{"method": "post", "code": "200"}), @@ -839,7 +842,7 @@ func verifyTarget2(t *testing.T, td *testData, resourceMetrics []pmetric.Resourc }, { numberPointComparator: []numberPointComparator{ - compareStartTimestamp(ts2), + compareStartTimestamp(tsZero), compareTimestamp(ts3), compareDoubleValue(5), compareAttributes(map[string]string{"method": "post", "code": "300"}), @@ -847,7 +850,7 @@ func verifyTarget2(t *testing.T, td *testData, resourceMetrics []pmetric.Resourc }, { numberPointComparator: []numberPointComparator{ - compareStartTimestamp(ts1), + compareStartTimestamp(tsZero), compareTimestamp(ts3), compareDoubleValue(60), compareAttributes(map[string]string{"method": "post", "code": "400"}), @@ -863,7 +866,7 @@ func verifyTarget2(t *testing.T, td *testData, resourceMetrics []pmetric.Resourc []dataPointExpectation{ { summaryPointComparator: []summaryPointComparator{ - compareSummaryStartTimestamp(ts1), + compareSummaryStartTimestamp(tsZero), compareSummaryTimestamp(ts3), compareSummaryAttributes(map[string]string{"code": "0"}), compareSummary(70, 120, [][]float64{{0.5, 67}}), @@ -871,7 +874,7 @@ func verifyTarget2(t *testing.T, td *testData, resourceMetrics []pmetric.Resourc }, { summaryPointComparator: []summaryPointComparator{ - compareSummaryStartTimestamp(ts2), + compareSummaryStartTimestamp(tsZero), compareSummaryTimestamp(ts3), compareSummaryAttributes(map[string]string{"code": "3"}), compareSummary(40, 60, [][]float64{{0.5, 52}}), @@ -879,7 +882,7 @@ func verifyTarget2(t *testing.T, td *testData, resourceMetrics []pmetric.Resourc }, { summaryPointComparator: []summaryPointComparator{ - compareSummaryStartTimestamp(ts1), + compareSummaryStartTimestamp(tsZero), compareSummaryTimestamp(ts3), compareSummaryAttributes(map[string]string{"code": "5"}), compareSummary(420, 200, [][]float64{{0.5, 55}}), @@ -919,7 +922,7 @@ func verifyTarget2(t *testing.T, td *testData, resourceMetrics []pmetric.Resourc []dataPointExpectation{ { histogramPointComparator: []histogramPointComparator{ - compareHistogramStartTimestamp(ts4), + compareHistogramStartTimestamp(tsZero), compareHistogramTimestamp(ts4), compareHistogramAttributes(map[string]string{"method": "post", "code": "200"}), compareHistogram(49, 42, []float64{1}, []uint64{40, 9}), @@ -927,7 +930,7 @@ func verifyTarget2(t *testing.T, td *testData, resourceMetrics []pmetric.Resourc }, { histogramPointComparator: []histogramPointComparator{ - compareHistogramStartTimestamp(ts4), + compareHistogramStartTimestamp(tsZero), compareHistogramTimestamp(ts4), compareHistogramAttributes(map[string]string{"method": "post", "code": "300"}), compareHistogram(3, 4, []float64{1}, []uint64{2, 1}), @@ -935,7 +938,7 @@ func verifyTarget2(t *testing.T, td *testData, resourceMetrics []pmetric.Resourc }, { histogramPointComparator: []histogramPointComparator{ - compareHistogramStartTimestamp(ts4), + compareHistogramStartTimestamp(tsZero), compareHistogramTimestamp(ts4), compareHistogramAttributes(map[string]string{"method": "post", "code": "400"}), compareHistogram(59, 29, []float64{1}, []uint64{34, 25}), @@ -951,7 +954,7 @@ func verifyTarget2(t *testing.T, td *testData, resourceMetrics []pmetric.Resourc []dataPointExpectation{ { numberPointComparator: []numberPointComparator{ - compareStartTimestamp(ts4), + compareStartTimestamp(tsZero), compareTimestamp(ts4), compareDoubleValue(49), compareAttributes(map[string]string{"method": "post", "code": "200"}), @@ -959,7 +962,7 @@ func verifyTarget2(t *testing.T, td *testData, resourceMetrics []pmetric.Resourc }, { numberPointComparator: []numberPointComparator{ - compareStartTimestamp(ts4), + compareStartTimestamp(tsZero), compareTimestamp(ts4), compareDoubleValue(3), compareAttributes(map[string]string{"method": "post", "code": "300"}), @@ -967,7 +970,7 @@ func verifyTarget2(t *testing.T, td *testData, resourceMetrics []pmetric.Resourc }, { numberPointComparator: []numberPointComparator{ - compareStartTimestamp(ts4), + compareStartTimestamp(tsZero), compareTimestamp(ts4), compareDoubleValue(59), compareAttributes(map[string]string{"method": "post", "code": "400"}), @@ -983,7 +986,7 @@ func verifyTarget2(t *testing.T, td *testData, resourceMetrics []pmetric.Resourc []dataPointExpectation{ { summaryPointComparator: []summaryPointComparator{ - compareSummaryStartTimestamp(ts4), + compareSummaryStartTimestamp(tsZero), compareSummaryTimestamp(ts4), compareSummaryAttributes(map[string]string{"code": "0"}), compareSummary(69, 119, [][]float64{{0.5, 66}}), @@ -991,7 +994,7 @@ func verifyTarget2(t *testing.T, td *testData, resourceMetrics []pmetric.Resourc }, { summaryPointComparator: []summaryPointComparator{ - compareSummaryStartTimestamp(ts4), + compareSummaryStartTimestamp(tsZero), compareSummaryTimestamp(ts4), compareSummaryAttributes(map[string]string{"code": "3"}), compareSummary(39, 59, [][]float64{{0.5, 51}}), @@ -999,7 +1002,7 @@ func verifyTarget2(t *testing.T, td *testData, resourceMetrics []pmetric.Resourc }, { summaryPointComparator: []summaryPointComparator{ - compareSummaryStartTimestamp(ts4), + compareSummaryStartTimestamp(tsZero), compareSummaryTimestamp(ts4), compareSummaryAttributes(map[string]string{"code": "5"}), compareSummary(419, 199, [][]float64{{0.5, 54}}), @@ -1039,7 +1042,7 @@ func verifyTarget2(t *testing.T, td *testData, resourceMetrics []pmetric.Resourc []dataPointExpectation{ { histogramPointComparator: []histogramPointComparator{ - compareHistogramStartTimestamp(ts4), + compareHistogramStartTimestamp(tsZero), compareHistogramTimestamp(ts5), compareHistogramAttributes(map[string]string{"method": "post", "code": "200"}), compareHistogram(50, 43, []float64{1}, []uint64{41, 9}), @@ -1047,7 +1050,7 @@ func verifyTarget2(t *testing.T, td *testData, resourceMetrics []pmetric.Resourc }, { histogramPointComparator: []histogramPointComparator{ - compareHistogramStartTimestamp(ts4), + compareHistogramStartTimestamp(tsZero), compareHistogramTimestamp(ts5), compareHistogramAttributes(map[string]string{"method": "post", "code": "300"}), compareHistogram(5, 4, []float64{1}, []uint64{4, 1}), @@ -1055,7 +1058,7 @@ func verifyTarget2(t *testing.T, td *testData, resourceMetrics []pmetric.Resourc }, { histogramPointComparator: []histogramPointComparator{ - compareHistogramStartTimestamp(ts4), + compareHistogramStartTimestamp(tsZero), compareHistogramTimestamp(ts5), compareHistogramAttributes(map[string]string{"method": "post", "code": "400"}), compareHistogram(59, 29, []float64{1}, []uint64{34, 25}), @@ -1071,7 +1074,7 @@ func verifyTarget2(t *testing.T, td *testData, resourceMetrics []pmetric.Resourc []dataPointExpectation{ { numberPointComparator: []numberPointComparator{ - compareStartTimestamp(ts4), + compareStartTimestamp(tsZero), compareTimestamp(ts5), compareDoubleValue(50), compareAttributes(map[string]string{"method": "post", "code": "200"}), @@ -1079,7 +1082,7 @@ func verifyTarget2(t *testing.T, td *testData, resourceMetrics []pmetric.Resourc }, { numberPointComparator: []numberPointComparator{ - compareStartTimestamp(ts4), + compareStartTimestamp(tsZero), compareTimestamp(ts5), compareDoubleValue(5), compareAttributes(map[string]string{"method": "post", "code": "300"}), @@ -1087,7 +1090,7 @@ func verifyTarget2(t *testing.T, td *testData, resourceMetrics []pmetric.Resourc }, { numberPointComparator: []numberPointComparator{ - compareStartTimestamp(ts4), + compareStartTimestamp(tsZero), compareTimestamp(ts5), compareDoubleValue(59), compareAttributes(map[string]string{"method": "post", "code": "400"}), @@ -1103,7 +1106,7 @@ func verifyTarget2(t *testing.T, td *testData, resourceMetrics []pmetric.Resourc []dataPointExpectation{ { summaryPointComparator: []summaryPointComparator{ - compareSummaryStartTimestamp(ts4), + compareSummaryStartTimestamp(tsZero), compareSummaryTimestamp(ts5), compareSummaryAttributes(map[string]string{"code": "0"}), compareSummary(79, 129, [][]float64{{0.5, 76}}), @@ -1111,7 +1114,7 @@ func verifyTarget2(t *testing.T, td *testData, resourceMetrics []pmetric.Resourc }, { summaryPointComparator: []summaryPointComparator{ - compareSummaryStartTimestamp(ts4), + compareSummaryStartTimestamp(tsZero), compareSummaryTimestamp(ts5), compareSummaryAttributes(map[string]string{"code": "3"}), compareSummary(49, 69, [][]float64{{0.5, 61}}), @@ -1119,7 +1122,7 @@ func verifyTarget2(t *testing.T, td *testData, resourceMetrics []pmetric.Resourc }, { summaryPointComparator: []summaryPointComparator{ - compareSummaryStartTimestamp(ts4), + compareSummaryStartTimestamp(tsZero), compareSummaryTimestamp(ts5), compareSummaryAttributes(map[string]string{"code": "5"}), compareSummary(429, 209, [][]float64{{0.5, 64}}), @@ -1245,7 +1248,7 @@ func verifyTarget3(t *testing.T, td *testData, resourceMetrics []pmetric.Resourc []dataPointExpectation{ { histogramPointComparator: []histogramPointComparator{ - compareHistogramStartTimestamp(ts1), + compareHistogramStartTimestamp(tsZero), compareHistogramTimestamp(ts1), compareHistogram(13003, 50000, []float64{0.2, 0.5, 1}, []uint64{10000, 1000, 1001, 1002}), }, @@ -1260,7 +1263,7 @@ func verifyTarget3(t *testing.T, td *testData, resourceMetrics []pmetric.Resourc []dataPointExpectation{ { histogramPointComparator: []histogramPointComparator{ - compareHistogramStartTimestamp(ts1), + compareHistogramStartTimestamp(tsZero), compareHistogramTimestamp(ts1), compareHistogram(10, 100, nil, []uint64{10}), }, @@ -1275,7 +1278,7 @@ func verifyTarget3(t *testing.T, td *testData, resourceMetrics []pmetric.Resourc []dataPointExpectation{ { summaryPointComparator: []summaryPointComparator{ - compareSummaryStartTimestamp(ts1), + compareSummaryStartTimestamp(tsZero), compareSummaryTimestamp(ts1), compareSummaryAttributes(map[string]string{"foo": "bar"}), compareSummary(900, 8000, [][]float64{{0.01, 31}, {0.05, 35}, {0.5, 47}, {0.9, 70}, {0.99, 76}}), @@ -1283,7 +1286,7 @@ func verifyTarget3(t *testing.T, td *testData, resourceMetrics []pmetric.Resourc }, { summaryPointComparator: []summaryPointComparator{ - compareSummaryStartTimestamp(ts1), + compareSummaryStartTimestamp(tsZero), compareSummaryTimestamp(ts1), compareSummaryAttributes(map[string]string{"foo": "no_quantile"}), compareSummary(50, 100, [][]float64{}), @@ -1323,7 +1326,7 @@ func verifyTarget3(t *testing.T, td *testData, resourceMetrics []pmetric.Resourc []dataPointExpectation{ { histogramPointComparator: []histogramPointComparator{ - compareHistogramStartTimestamp(ts1), + compareHistogramStartTimestamp(tsZero), compareHistogramTimestamp(ts2), compareHistogram(14003, 50100, []float64{0.2, 0.5, 1}, []uint64{11000, 1000, 1001, 1002}), }, @@ -1338,7 +1341,7 @@ func verifyTarget3(t *testing.T, td *testData, resourceMetrics []pmetric.Resourc []dataPointExpectation{ { histogramPointComparator: []histogramPointComparator{ - compareHistogramStartTimestamp(ts1), + compareHistogramStartTimestamp(tsZero), compareHistogramTimestamp(ts2), compareHistogram(15, 101, nil, []uint64{15}), }, @@ -1353,7 +1356,7 @@ func verifyTarget3(t *testing.T, td *testData, resourceMetrics []pmetric.Resourc []dataPointExpectation{ { summaryPointComparator: []summaryPointComparator{ - compareSummaryStartTimestamp(ts1), + compareSummaryStartTimestamp(tsZero), compareSummaryTimestamp(ts2), compareSummaryAttributes(map[string]string{"foo": "bar"}), compareSummary(950, 8100, [][]float64{{0.01, 32}, {0.05, 35}, {0.5, 47}, {0.9, 70}, {0.99, 77}}), @@ -1361,7 +1364,7 @@ func verifyTarget3(t *testing.T, td *testData, resourceMetrics []pmetric.Resourc }, { summaryPointComparator: []summaryPointComparator{ - compareSummaryStartTimestamp(ts1), + compareSummaryStartTimestamp(tsZero), compareSummaryTimestamp(ts2), compareSummaryAttributes(map[string]string{"foo": "no_quantile"}), compareSummary(55, 101, [][]float64{}), @@ -1504,7 +1507,7 @@ func verifyStartTimeMetricPage(t *testing.T, td *testData, result []pmetric.Reso numTimeseries := 0 for _, rm := range result { metrics := getMetrics(rm) - for i := 0; i < len(metrics); i++ { + for i := range metrics { timestamp := startTimeMetricPageStartTimestamp switch metrics[i].Type() { case pmetric.MetricTypeGauge: @@ -1539,22 +1542,6 @@ func verifyStartTimeMetricPage(t *testing.T, td *testData, result []pmetric.Reso } } -// TestStartTimeMetric validates that timeseries have start time set to 'process_start_time_seconds' -func TestStartTimeMetric(t *testing.T) { - targets := []*testData{ - { - name: "target1", - pages: []mockPrometheusResponse{ - {code: 200, data: startTimeMetricPage}, - }, - validateFunc: verifyStartTimeMetricPage, - }, - } - testComponent(t, targets, func(c *Config) { - c.UseStartTimeMetric = true - }) -} - var startTimeMetricRegexPage = ` # HELP go_threads Number of OS threads created # TYPE go_threads gauge diff --git a/otelcollector/prometheusreceiver/metrics_reciever_metric_rename_test.go b/otelcollector/prometheusreceiver/metrics_reciever_metric_rename_test.go index 3f9cd5ed3..a52e07d41 100644 --- a/otelcollector/prometheusreceiver/metrics_reciever_metric_rename_test.go +++ b/otelcollector/prometheusreceiver/metrics_reciever_metric_rename_test.go @@ -185,7 +185,6 @@ func verifyRenameMetricKeepAction(t *testing.T, td *testData, resourceMetrics [] { numberPointComparator: []numberPointComparator{ compareTimestamp(ts1), - compareStartTimestamp(ts1), compareDoubleValue(100), compareAttributes(map[string]string{"method": "post", "port": "6380"}), }, diff --git a/otelcollector/prometheusreceiver/targetallocator/config_test.go b/otelcollector/prometheusreceiver/targetallocator/config_test.go deleted file mode 100644 index 0b441fa2a..000000000 --- a/otelcollector/prometheusreceiver/targetallocator/config_test.go +++ /dev/null @@ -1,69 +0,0 @@ -// Copyright The OpenTelemetry Authors -// SPDX-License-Identifier: Apache-2.0 - -package targetallocator // import "github.com/open-telemetry/opentelemetry-collector-contrib/receiver/prometheusreceiver/targetallocator" - -import ( - "path/filepath" - "testing" - "time" - - promConfig "github.com/prometheus/common/config" - "github.com/stretchr/testify/assert" - "github.com/stretchr/testify/require" - "go.opentelemetry.io/collector/component/componenttest" - "go.opentelemetry.io/collector/confmap/confmaptest" - "go.opentelemetry.io/collector/confmap/xconfmap" -) - -func TestComponentConfigStruct(t *testing.T) { - require.NoError(t, componenttest.CheckConfigStruct(Config{})) -} - -func TestLoadTargetAllocatorConfig(t *testing.T) { - cm, err := confmaptest.LoadConf(filepath.Join("testdata", "config.yaml")) - require.NoError(t, err) - cfg := &Config{} - - sub, err := cm.Sub("target_allocator") - require.NoError(t, err) - require.NoError(t, sub.Unmarshal(cfg)) - require.NoError(t, xconfmap.Validate(cfg)) - - assert.Equal(t, "http://localhost:8080", cfg.Endpoint) - assert.Equal(t, 5*time.Second, cfg.Timeout) - assert.Equal(t, "client.crt", cfg.TLS.CertFile) - assert.Equal(t, 30*time.Second, cfg.Interval) - assert.Equal(t, "collector-1", cfg.CollectorID) -} - -func TestPromHTTPClientConfigValidateAuthorization(t *testing.T) { - cfg := PromHTTPClientConfig{} - require.NoError(t, xconfmap.Validate(cfg)) - cfg.Authorization = &promConfig.Authorization{} - require.NoError(t, xconfmap.Validate(cfg)) - cfg.Authorization.CredentialsFile = "none" - require.Error(t, xconfmap.Validate(cfg)) - cfg.Authorization.CredentialsFile = filepath.Join("testdata", "dummy-tls-cert-file") - require.NoError(t, xconfmap.Validate(cfg)) -} - -func TestPromHTTPClientConfigValidateTLSConfig(t *testing.T) { - cfg := PromHTTPClientConfig{} - require.NoError(t, xconfmap.Validate(cfg)) - cfg.TLSConfig.CertFile = "none" - require.Error(t, xconfmap.Validate(cfg)) - cfg.TLSConfig.CertFile = filepath.Join("testdata", "dummy-tls-cert-file") - cfg.TLSConfig.KeyFile = "none" - require.Error(t, xconfmap.Validate(cfg)) - cfg.TLSConfig.KeyFile = filepath.Join("testdata", "dummy-tls-key-file") - require.NoError(t, xconfmap.Validate(cfg)) -} - -func TestPromHTTPClientConfigValidateMain(t *testing.T) { - cfg := PromHTTPClientConfig{} - require.NoError(t, xconfmap.Validate(cfg)) - cfg.BearerToken = "foo" - cfg.BearerTokenFile = filepath.Join("testdata", "dummy-tls-key-file") - require.Error(t, xconfmap.Validate(cfg)) -} diff --git a/otelcollector/test/ginkgo-e2e/configprocessing/go.mod b/otelcollector/test/ginkgo-e2e/configprocessing/go.mod index 6a1e4524d..c83818d01 100644 --- a/otelcollector/test/ginkgo-e2e/configprocessing/go.mod +++ b/otelcollector/test/ginkgo-e2e/configprocessing/go.mod @@ -1,8 +1,8 @@ module prometheus-collector/otelcollector/test/configprocessing -go 1.23.0 +go 1.24.0 -toolchain go1.23.2 +toolchain go1.24.11 replace prometheus-collector/otelcollector/test/utils => ../utils @@ -10,61 +10,62 @@ require ( github.com/onsi/ginkgo/v2 v2.21.0 github.com/onsi/gomega v1.35.1 github.com/prometheus/client_golang v1.23.2 - github.com/prometheus/prometheus v0.305.1-0.20250808193045-294f36e80261 - k8s.io/client-go v0.32.3 + github.com/prometheus/prometheus v0.308.1 + k8s.io/client-go v0.34.1 prometheus-collector/otelcollector/test/utils v0.0.0-00010101000000-000000000000 ) require ( - cloud.google.com/go/auth v0.16.2 // indirect + cloud.google.com/go/auth v0.17.0 // indirect cloud.google.com/go/auth/oauth2adapt v0.2.8 // indirect - cloud.google.com/go/compute/metadata v0.7.0 // indirect - github.com/Azure/azure-sdk-for-go/sdk/azcore v1.18.0 // indirect - github.com/Azure/azure-sdk-for-go/sdk/azidentity v1.10.1 // indirect - github.com/Azure/azure-sdk-for-go/sdk/internal v1.11.1 // indirect + cloud.google.com/go/compute/metadata v0.9.0 // indirect + github.com/Azure/azure-sdk-for-go/sdk/azcore v1.19.1 // indirect + github.com/Azure/azure-sdk-for-go/sdk/azidentity v1.12.0 // 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/Azure/go-ansiterm v0.0.0-20250102033503-faa5f7b0171c // indirect - github.com/AzureAD/microsoft-authentication-library-for-go v1.4.2 // indirect + github.com/AzureAD/microsoft-authentication-library-for-go v1.5.0 // indirect github.com/Code-Hex/go-generics-cache v1.5.1 // indirect github.com/Microsoft/go-winio v0.6.1 // indirect github.com/alecthomas/units v0.0.0-20240927000941-0f3dac36c52b // indirect github.com/armon/go-metrics v0.4.1 // indirect - github.com/aws/aws-sdk-go-v2 v1.37.0 // indirect - github.com/aws/aws-sdk-go-v2/config v1.29.14 // indirect - github.com/aws/aws-sdk-go-v2/credentials v1.17.67 // indirect - github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.16.30 // indirect - github.com/aws/aws-sdk-go-v2/internal/configsources v1.4.0 // indirect - github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.7.0 // indirect - github.com/aws/aws-sdk-go-v2/internal/ini v1.8.3 // indirect - github.com/aws/aws-sdk-go-v2/service/ec2 v1.237.0 // indirect - github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding v1.13.0 // indirect - github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.13.0 // indirect - github.com/aws/aws-sdk-go-v2/service/lightsail v1.44.0 // indirect - github.com/aws/aws-sdk-go-v2/service/sso v1.25.3 // indirect - github.com/aws/aws-sdk-go-v2/service/ssooidc v1.30.1 // indirect - github.com/aws/aws-sdk-go-v2/service/sts v1.33.19 // indirect - github.com/aws/smithy-go v1.22.5 // indirect + github.com/aws/aws-sdk-go-v2 v1.39.6 // indirect + github.com/aws/aws-sdk-go-v2/config v1.31.17 // indirect + github.com/aws/aws-sdk-go-v2/credentials v1.18.21 // indirect + github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.18.13 // indirect + github.com/aws/aws-sdk-go-v2/internal/configsources v1.4.13 // indirect + github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.7.13 // indirect + github.com/aws/aws-sdk-go-v2/internal/ini v1.8.4 // indirect + github.com/aws/aws-sdk-go-v2/service/ec2 v1.262.0 // indirect + github.com/aws/aws-sdk-go-v2/service/ecs v1.67.2 // indirect + github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding v1.13.3 // indirect + github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.13.13 // indirect + github.com/aws/aws-sdk-go-v2/service/lightsail v1.50.4 // indirect + github.com/aws/aws-sdk-go-v2/service/sso v1.30.1 // indirect + github.com/aws/aws-sdk-go-v2/service/ssooidc v1.35.5 // indirect + github.com/aws/aws-sdk-go-v2/service/sts v1.39.1 // indirect + github.com/aws/smithy-go v1.23.2 // indirect github.com/beorn7/perks v1.0.1 // indirect github.com/cespare/xxhash/v2 v2.3.0 // indirect - github.com/cncf/xds/go v0.0.0-20250326154945-ae57f3c0d45f // indirect + github.com/cncf/xds/go v0.0.0-20250501225837-2ac532fd4443 // indirect github.com/containerd/errdefs v1.0.0 // indirect github.com/containerd/errdefs/pkg v0.3.0 // indirect github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc // indirect - github.com/digitalocean/godo v1.157.0 // indirect + github.com/digitalocean/godo v1.168.0 // indirect github.com/distribution/reference v0.5.0 // indirect - github.com/docker/docker v28.3.3+incompatible // indirect + github.com/docker/docker v28.5.2+incompatible // indirect github.com/docker/go-connections v0.4.0 // indirect github.com/docker/go-units v0.5.0 // indirect - github.com/emicklei/go-restful/v3 v3.11.0 // indirect - github.com/envoyproxy/go-control-plane/envoy v1.32.4 // indirect + github.com/emicklei/go-restful/v3 v3.12.2 // indirect + github.com/envoyproxy/go-control-plane/envoy v1.35.0 // indirect github.com/envoyproxy/protoc-gen-validate v1.2.1 // indirect github.com/fatih/color v1.16.0 // indirect github.com/felixge/httpsnoop v1.0.4 // indirect - github.com/fsnotify/fsnotify v1.8.0 // indirect - github.com/fxamacker/cbor/v2 v2.7.0 // indirect + github.com/fsnotify/fsnotify v1.9.0 // indirect + github.com/fxamacker/cbor/v2 v2.9.0 // indirect github.com/ghodss/yaml v1.0.0 // indirect - github.com/go-logr/logr v1.4.2 // indirect + github.com/go-logr/logr v1.4.3 // indirect github.com/go-logr/stdr v1.2.2 // indirect github.com/go-openapi/jsonpointer v0.21.0 // indirect github.com/go-openapi/jsonreference v0.21.0 // indirect @@ -73,22 +74,20 @@ require ( github.com/go-task/slim-sprig/v3 v3.0.0 // 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.2.2 // indirect - github.com/golang/protobuf v1.5.4 // indirect - github.com/google/gnostic-models v0.6.8 // indirect + github.com/golang-jwt/jwt/v5 v5.3.0 // indirect + github.com/google/gnostic-models v0.7.0 // indirect github.com/google/go-cmp v0.7.0 // indirect github.com/google/go-querystring v1.1.0 // indirect - github.com/google/gofuzz v1.2.0 // indirect - github.com/google/pprof v0.0.0-20250607225305-033d6d78b36a // indirect + github.com/google/pprof v0.0.0-20250923004556-9e5a51aed1e8 // indirect github.com/google/s2a-go v0.1.9 // indirect github.com/google/uuid v1.6.0 // indirect github.com/googleapis/enterprise-certificate-proxy v0.3.6 // indirect - github.com/googleapis/gax-go/v2 v2.14.2 // indirect - github.com/gophercloud/gophercloud/v2 v2.7.0 // indirect - github.com/gorilla/websocket v1.5.0 // indirect - github.com/grafana/regexp v0.0.0-20240518133315-a468a5bfb3bc // indirect + github.com/googleapis/gax-go/v2 v2.15.0 // indirect + github.com/gophercloud/gophercloud/v2 v2.8.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.0 // indirect - github.com/hashicorp/cronexpr v1.1.2 // indirect + github.com/hashicorp/cronexpr v1.1.3 // indirect github.com/hashicorp/errwrap v1.1.0 // indirect github.com/hashicorp/go-cleanhttp v0.5.2 // indirect github.com/hashicorp/go-hclog v1.6.3 // indirect @@ -97,27 +96,28 @@ require ( github.com/hashicorp/go-retryablehttp v0.7.7 // indirect github.com/hashicorp/go-rootcerts v1.0.2 // indirect github.com/hashicorp/golang-lru v0.6.0 // indirect - github.com/hashicorp/nomad/api v0.0.0-20241218080744-e3ac00f30eec // indirect + github.com/hashicorp/nomad/api v0.0.0-20250930071859-eaa0fe0e27af // indirect github.com/hashicorp/serf v0.10.1 // indirect - github.com/hetznercloud/hcloud-go/v2 v2.21.1 // indirect + github.com/hetznercloud/hcloud-go/v2 v2.29.0 // indirect github.com/ionos-cloud/sdk-go/v6 v6.3.4 // indirect github.com/josharian/intern v1.0.0 // indirect github.com/jpillora/backoff v1.0.0 // indirect github.com/json-iterator/go v1.1.12 // indirect + github.com/klauspost/compress v1.18.2 // indirect github.com/kolo/xmlrpc v0.0.0-20220921171641-a4b6fa1dd06b // indirect github.com/kylelemons/godebug v1.1.0 // indirect - github.com/linode/linodego v1.52.2 // indirect + github.com/linode/linodego v1.60.0 // indirect github.com/mailru/easyjson v0.7.7 // indirect github.com/mattn/go-colorable v0.1.13 // indirect github.com/mattn/go-isatty v0.0.20 // indirect - github.com/miekg/dns v1.1.66 // indirect + github.com/miekg/dns v1.1.68 // indirect github.com/mitchellh/go-homedir v1.1.0 // indirect github.com/mitchellh/mapstructure v1.5.0 // indirect github.com/moby/docker-image-spec v1.3.1 // indirect github.com/moby/spdystream v0.5.0 // indirect github.com/moby/sys/sequential v0.6.0 // indirect github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd // indirect - github.com/modern-go/reflect2 v1.0.2 // indirect + github.com/modern-go/reflect2 v1.0.3-0.20250322232337-35a7c28c31ee // indirect github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822 // indirect github.com/mwitkow/go-conntrack v0.0.0-20190716064945-2f068394615f // indirect github.com/mxk/go-flowrate v0.0.0-20140419014527-cca7078d478f // indirect @@ -127,49 +127,53 @@ require ( 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/client_golang/exp v0.0.0-20251212205219-7ba246a648ca // indirect github.com/prometheus/client_model v0.6.2 // indirect - github.com/prometheus/common v0.66.1 // indirect - github.com/prometheus/otlptranslator v0.0.2 // indirect + github.com/prometheus/common v0.67.4 // indirect + github.com/prometheus/otlptranslator v1.0.0 // indirect github.com/prometheus/procfs v0.16.1 // indirect - github.com/prometheus/sigv4 v0.2.0 // indirect - github.com/scaleway/scaleway-sdk-go v1.0.0-beta.33 // indirect - github.com/spf13/pflag v1.0.5 // indirect - github.com/stackitcloud/stackit-sdk-go/core v0.17.2 // indirect + github.com/prometheus/sigv4 v0.3.0 // indirect + github.com/scaleway/scaleway-sdk-go v1.0.0-beta.35 // indirect + github.com/spf13/pflag v1.0.6 // indirect + github.com/stackitcloud/stackit-sdk-go/core v0.17.3 // indirect github.com/vultr/govultr/v2 v2.17.2 // indirect github.com/x448/float16 v0.8.4 // indirect go.opentelemetry.io/auto/sdk v1.1.0 // indirect - go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.61.0 // indirect - go.opentelemetry.io/otel v1.36.0 // indirect - go.opentelemetry.io/otel/metric v1.36.0 // indirect - go.opentelemetry.io/otel/trace v1.36.0 // indirect - go.yaml.in/yaml/v2 v2.4.2 // indirect - golang.org/x/crypto v0.41.0 // indirect - golang.org/x/exp v0.0.0-20250106191152-7588d65b2ba8 // indirect - golang.org/x/mod v0.26.0 // indirect - golang.org/x/net v0.43.0 // indirect - golang.org/x/oauth2 v0.30.0 // indirect - golang.org/x/sync v0.16.0 // indirect - golang.org/x/sys v0.35.0 // indirect - golang.org/x/term v0.34.0 // indirect - golang.org/x/text v0.28.0 // indirect - golang.org/x/time v0.12.0 // indirect - golang.org/x/tools v0.35.0 // indirect - google.golang.org/api v0.239.0 // indirect - google.golang.org/genproto/googleapis/api v0.0.0-20250603155806-513f23925822 // indirect - google.golang.org/genproto/googleapis/rpc v0.0.0-20250603155806-513f23925822 // indirect - google.golang.org/grpc v1.73.0 // indirect - google.golang.org/protobuf v1.36.8 // indirect + go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.63.0 // indirect + go.opentelemetry.io/otel v1.38.0 // indirect + go.opentelemetry.io/otel/metric v1.38.0 // indirect + go.opentelemetry.io/otel/trace v1.38.0 // indirect + go.yaml.in/yaml/v2 v2.4.3 // indirect + go.yaml.in/yaml/v3 v3.0.4 // indirect + golang.org/x/crypto v0.43.0 // indirect + golang.org/x/exp v0.0.0-20250808145144-a408d31f581a // indirect + golang.org/x/mod v0.28.0 // indirect + golang.org/x/net v0.46.0 // indirect + golang.org/x/oauth2 v0.32.0 // indirect + golang.org/x/sync v0.17.0 // indirect + golang.org/x/sys v0.37.0 // indirect + golang.org/x/term v0.36.0 // indirect + golang.org/x/text v0.30.0 // indirect + golang.org/x/time v0.13.0 // indirect + golang.org/x/tools v0.37.0 // indirect + google.golang.org/api v0.252.0 // indirect + google.golang.org/genproto/googleapis/api v0.0.0-20250929231259-57b25ae835d4 // indirect + google.golang.org/genproto/googleapis/rpc v0.0.0-20251002232023-7c0ddcbb5797 // indirect + google.golang.org/grpc v1.76.0 // indirect + google.golang.org/protobuf v1.36.10 // indirect gopkg.in/evanphx/json-patch.v4 v4.12.0 // indirect gopkg.in/inf.v0 v0.9.1 // indirect gopkg.in/ini.v1 v1.67.0 // indirect gopkg.in/yaml.v2 v2.4.0 // indirect gopkg.in/yaml.v3 v3.0.1 // indirect - k8s.io/api v0.32.3 // indirect - k8s.io/apimachinery v0.32.3 // indirect + k8s.io/api v0.34.1 // indirect + k8s.io/apimachinery v0.34.1 // indirect k8s.io/klog/v2 v2.130.1 // indirect - k8s.io/kube-openapi v0.0.0-20241105132330-32ad38e42d3f // indirect - k8s.io/utils v0.0.0-20241104100929-3ea5e8cea738 // indirect - sigs.k8s.io/json v0.0.0-20241010143419-9aa6b5e7a4b3 // indirect - sigs.k8s.io/structured-merge-diff/v4 v4.4.2 // indirect - sigs.k8s.io/yaml v1.4.0 // indirect + k8s.io/kube-openapi v0.0.0-20250710124328-f3f2b991d03b // indirect + k8s.io/utils v0.0.0-20250604170112-4c0f3b243397 // indirect + sigs.k8s.io/json v0.0.0-20241014173422-cfa47c3a1cc8 // indirect + sigs.k8s.io/randfill v1.0.0 // indirect + sigs.k8s.io/structured-merge-diff/v6 v6.3.0 // indirect + sigs.k8s.io/yaml v1.6.0 // indirect ) diff --git a/otelcollector/test/ginkgo-e2e/configprocessing/go.sum b/otelcollector/test/ginkgo-e2e/configprocessing/go.sum index 9e8eb1479..e7dc3ba4b 100644 --- a/otelcollector/test/ginkgo-e2e/configprocessing/go.sum +++ b/otelcollector/test/ginkgo-e2e/configprocessing/go.sum @@ -1,17 +1,17 @@ -cloud.google.com/go/auth v0.16.2 h1:QvBAGFPLrDeoiNjyfVunhQ10HKNYuOwZ5noee0M5df4= -cloud.google.com/go/auth v0.16.2/go.mod h1:sRBas2Y1fB1vZTdurouM0AzuYQBMZinrUYL8EufhtEA= +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/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.7.0 h1:PBWF+iiAerVNe8UCHxdOt6eHLVc3ydFeOCw78U8ytSU= -cloud.google.com/go/compute/metadata v0.7.0/go.mod h1:j5MvL9PprKL39t166CoB1uVHfQMs4tFQZZcKwksXUjo= -github.com/Azure/azure-sdk-for-go/sdk/azcore v1.18.0 h1:Gt0j3wceWMwPmiazCa8MzMA0MfhmPIz0Qp0FJ6qcM0U= -github.com/Azure/azure-sdk-for-go/sdk/azcore v1.18.0/go.mod h1:Ot/6aikWnKWi4l9QB7qVSwa8iMphQNqkWALMoNT3rzM= -github.com/Azure/azure-sdk-for-go/sdk/azidentity v1.10.1 h1:B+blDbyVIG3WaikNxPnhPiJ1MThR03b3vKGtER95TP4= -github.com/Azure/azure-sdk-for-go/sdk/azidentity v1.10.1/go.mod h1:JdM5psgjfBf5fo2uWOZhflPWyDBZ/O/CNAH9CtsuZE4= +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.19.1 h1:5YTBM8QDVIBN3sxBil89WfdAAqDZbyJTgh688DSxX5w= +github.com/Azure/azure-sdk-for-go/sdk/azcore v1.19.1/go.mod h1:YD5h/ldMsG0XiIw7PdyNhLxaM317eFh5yNLccNfGdyw= +github.com/Azure/azure-sdk-for-go/sdk/azidentity v1.12.0 h1:wL5IEG5zb7BVv1Kv0Xm92orq+5hB5Nipn3B5tn4Rqfk= +github.com/Azure/azure-sdk-for-go/sdk/azidentity v1.12.0/go.mod h1:J7MUC/wtRpfGVbQ5sIItY5/FuVWmvzlY21WAOfQnq/I= github.com/Azure/azure-sdk-for-go/sdk/azidentity/cache v0.3.2 h1:yz1bePFlP5Vws5+8ez6T3HWXPmwOK7Yvq8QxDBD3SKY= github.com/Azure/azure-sdk-for-go/sdk/azidentity/cache v0.3.2/go.mod h1:Pa9ZNPuoNu/GztvBSKk9J1cDJW6vk/n0zLtV4mgd8N8= -github.com/Azure/azure-sdk-for-go/sdk/internal v1.11.1 h1:FPKJS1T+clwv+OLGt13a8UjqeRuh0O4SJ3lUriThc+4= -github.com/Azure/azure-sdk-for-go/sdk/internal v1.11.1/go.mod h1:j2chePtV91HrC22tGoRX3sGY42uF13WzmmV80/OdVAA= +github.com/Azure/azure-sdk-for-go/sdk/internal v1.11.2 h1:9iefClla7iYpfYWdzPCRDozdmndjTm8DXdpCzPajMgA= +github.com/Azure/azure-sdk-for-go/sdk/internal v1.11.2/go.mod h1:XtLgD3ZD34DAaVIIAyG3objl5DynM3CQ/vMcbBNJZGI= github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/compute/armcompute/v5 v5.7.0 h1:LkHbJbgF3YyvC53aqYGR+wWQDn2Rdp9AQdGndf9QvY4= github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/compute/armcompute/v5 v5.7.0/go.mod h1:QyiQdW4f4/BIfB8ZutZ2s+28RAgfa/pT+zS++ZHyM1I= github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/internal/v2 v2.0.0 h1:PTFGRSlMKCQelWwxUyYVEUqseBJVemLyqWJjvMyt0do= @@ -24,8 +24,8 @@ github.com/Azure/go-ansiterm v0.0.0-20250102033503-faa5f7b0171c h1:udKWzYgxTojEK github.com/Azure/go-ansiterm v0.0.0-20250102033503-faa5f7b0171c/go.mod h1:xomTg63KZ2rFqZQzSB4Vz2SUXa1BpHTVz9L5PTmPC4E= github.com/AzureAD/microsoft-authentication-extensions-for-go/cache v0.1.1 h1:WJTmL004Abzc5wDB5VtZG2PJk5ndYDgVacGqfirKxjM= github.com/AzureAD/microsoft-authentication-extensions-for-go/cache v0.1.1/go.mod h1:tCcJZ0uHAmvjsVYzEFivsRTN00oz5BEsRgQHu5JZ9WE= -github.com/AzureAD/microsoft-authentication-library-for-go v1.4.2 h1:oygO0locgZJe7PpYPXT5A29ZkwJaPqcva7BVeemZOZs= -github.com/AzureAD/microsoft-authentication-library-for-go v1.4.2/go.mod h1:wP83P5OoQ5p6ip3ScPr0BAq0BvuPAvacpEuSzyouqAI= +github.com/AzureAD/microsoft-authentication-library-for-go v1.5.0 h1:XkkQbfMyuH2jTSjQjSoihryI8GINRcs4xp8lNawg0FI= +github.com/AzureAD/microsoft-authentication-library-for-go v1.5.0/go.mod h1:HKpQxkWaGLJ+D/5H8QRpyQXA1eKjxkFlOMwck5+33Jk= github.com/Code-Hex/go-generics-cache v1.5.1 h1:6vhZGc5M7Y/YD8cIUcY8kcuQLB4cHR7U+0KMqAA0KcU= github.com/Code-Hex/go-generics-cache v1.5.1/go.mod h1:qxcC9kRVrct9rHeiYpFWSoW1vxyillCVzX13KZG8dl4= github.com/DataDog/datadog-go v3.2.0+incompatible/go.mod h1:LButxg5PwREeZtORoXG3tL4fMGNddJ+vMq1mwgfaqoQ= @@ -45,50 +45,52 @@ github.com/armon/go-radix v0.0.0-20180808171621-7fddfc383310/go.mod h1:ufUuZ+zHj github.com/armon/go-radix v1.0.0/go.mod h1:ufUuZ+zHj4x4TnLV4JWEpy2hxWSpsRywHrMgIH9cCH8= github.com/armon/go-socks5 v0.0.0-20160902184237-e75332964ef5 h1:0CwZNZbxp69SHPdPJAN/hZIm0C4OItdklCFmMRWYpio= github.com/armon/go-socks5 v0.0.0-20160902184237-e75332964ef5/go.mod h1:wHh0iHkYZB8zMSxRWpUBQtwG5a7fFgvEO+odwuTv2gs= -github.com/aws/aws-sdk-go-v2 v1.37.0 h1:YtCOESR/pN4j5oA7cVHSfOwIcuh/KwHC4DOSXFbv5F0= -github.com/aws/aws-sdk-go-v2 v1.37.0/go.mod h1:9Q0OoGQoboYIAJyslFyF1f5K1Ryddop8gqMhWx/n4Wg= -github.com/aws/aws-sdk-go-v2/config v1.29.14 h1:f+eEi/2cKCg9pqKBoAIwRGzVb70MRKqWX4dg1BDcSJM= -github.com/aws/aws-sdk-go-v2/config v1.29.14/go.mod h1:wVPHWcIFv3WO89w0rE10gzf17ZYy+UVS1Geq8Iei34g= -github.com/aws/aws-sdk-go-v2/credentials v1.17.67 h1:9KxtdcIA/5xPNQyZRgUSpYOE6j9Bc4+D7nZua0KGYOM= -github.com/aws/aws-sdk-go-v2/credentials v1.17.67/go.mod h1:p3C44m+cfnbv763s52gCqrjaqyPikj9Sg47kUVaNZQQ= -github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.16.30 h1:x793wxmUWVDhshP8WW2mlnXuFrO4cOd3HLBroh1paFw= -github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.16.30/go.mod h1:Jpne2tDnYiFascUEs2AWHJL9Yp7A5ZVy3TNyxaAjD6M= -github.com/aws/aws-sdk-go-v2/internal/configsources v1.4.0 h1:H2iZoqW/v2Jnrh1FnU725Bq6KJ0k2uP63yH+DcY+HUI= -github.com/aws/aws-sdk-go-v2/internal/configsources v1.4.0/go.mod h1:L0FqLbwMXHvNC/7crWV1iIxUlOKYZUE8KuTIA+TozAI= -github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.7.0 h1:EDped/rNzAhFPhVY0sDGbtD16OKqksfA8OjF/kLEgw8= -github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.7.0/go.mod h1:uUI335jvzpZRPpjYx6ODc/wg1qH+NnoSTK/FwVeK0C0= -github.com/aws/aws-sdk-go-v2/internal/ini v1.8.3 h1:bIqFDwgGXXN1Kpp99pDOdKMTTb5d2KyU5X/BZxjOkRo= -github.com/aws/aws-sdk-go-v2/internal/ini v1.8.3/go.mod h1:H5O/EsxDWyU+LP/V8i5sm8cxoZgc2fdNR9bxlOFrQTo= -github.com/aws/aws-sdk-go-v2/service/ec2 v1.237.0 h1:XHE2G+yaDQql32FZt19QmQt4WuisqQJIkMUSCxeCUl8= -github.com/aws/aws-sdk-go-v2/service/ec2 v1.237.0/go.mod h1:t11/j/nH9i6bbsPH9xc04BJOsV2nVPUqrB67/TLDsyM= -github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding v1.13.0 h1:6+lZi2JeGKtCraAj1rpoZfKqnQ9SptseRZioejfUOLM= -github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding v1.13.0/go.mod h1:eb3gfbVIxIoGgJsi9pGne19dhCBpK6opTYpQqAmdy44= -github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.13.0 h1:eRhU3Sh8dGbaniI6B+I48XJMrTPRkK4DKo+vqIxziOU= -github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.13.0/go.mod h1:paNLV18DZ6FnWE/bd06RIKPDIFpjuvCkGKWTG/GDBeM= -github.com/aws/aws-sdk-go-v2/service/lightsail v1.44.0 h1:QiiCqpKy0prxq+92uWfESzcb7/8Y9JAamcMOzVYLEoM= -github.com/aws/aws-sdk-go-v2/service/lightsail v1.44.0/go.mod h1:ESppxYqXQCpCY+KWl3BdkQjmsQX6zxKP39SnDtRDoU0= -github.com/aws/aws-sdk-go-v2/service/sso v1.25.3 h1:1Gw+9ajCV1jogloEv1RRnvfRFia2cL6c9cuKV2Ps+G8= -github.com/aws/aws-sdk-go-v2/service/sso v1.25.3/go.mod h1:qs4a9T5EMLl/Cajiw2TcbNt2UNo/Hqlyp+GiuG4CFDI= -github.com/aws/aws-sdk-go-v2/service/ssooidc v1.30.1 h1:hXmVKytPfTy5axZ+fYbR5d0cFmC3JvwLm5kM83luako= -github.com/aws/aws-sdk-go-v2/service/ssooidc v1.30.1/go.mod h1:MlYRNmYu/fGPoxBQVvBYr9nyr948aY/WLUvwBMBJubs= -github.com/aws/aws-sdk-go-v2/service/sts v1.33.19 h1:1XuUZ8mYJw9B6lzAkXhqHlJd/XvaX32evhproijJEZY= -github.com/aws/aws-sdk-go-v2/service/sts v1.33.19/go.mod h1:cQnB8CUnxbMU82JvlqjKR2HBOm3fe9pWorWBza6MBJ4= -github.com/aws/smithy-go v1.22.5 h1:P9ATCXPMb2mPjYBgueqJNCA5S9UfktsW0tTxi+a7eqw= -github.com/aws/smithy-go v1.22.5/go.mod h1:t1ufH5HMublsJYulve2RKmHDC15xu1f26kHCp/HgceI= +github.com/aws/aws-sdk-go-v2 v1.39.6 h1:2JrPCVgWJm7bm83BDwY5z8ietmeJUbh3O2ACnn+Xsqk= +github.com/aws/aws-sdk-go-v2 v1.39.6/go.mod h1:c9pm7VwuW0UPxAEYGyTmyurVcNrbF6Rt/wixFqDhcjE= +github.com/aws/aws-sdk-go-v2/config v1.31.17 h1:QFl8lL6RgakNK86vusim14P2k8BFSxjvUkcWLDjgz9Y= +github.com/aws/aws-sdk-go-v2/config v1.31.17/go.mod h1:V8P7ILjp/Uef/aX8TjGk6OHZN6IKPM5YW6S78QnRD5c= +github.com/aws/aws-sdk-go-v2/credentials v1.18.21 h1:56HGpsgnmD+2/KpG0ikvvR8+3v3COCwaF4r+oWwOeNA= +github.com/aws/aws-sdk-go-v2/credentials v1.18.21/go.mod h1:3YELwedmQbw7cXNaII2Wywd+YY58AmLPwX4LzARgmmA= +github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.18.13 h1:T1brd5dR3/fzNFAQch/iBKeX07/ffu/cLu+q+RuzEWk= +github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.18.13/go.mod h1:Peg/GBAQ6JDt+RoBf4meB1wylmAipb7Kg2ZFakZTlwk= +github.com/aws/aws-sdk-go-v2/internal/configsources v1.4.13 h1:a+8/MLcWlIxo1lF9xaGt3J/u3yOZx+CdSveSNwjhD40= +github.com/aws/aws-sdk-go-v2/internal/configsources v1.4.13/go.mod h1:oGnKwIYZ4XttyU2JWxFrwvhF6YKiK/9/wmE3v3Iu9K8= +github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.7.13 h1:HBSI2kDkMdWz4ZM7FjwE7e/pWDEZ+nR95x8Ztet1ooY= +github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.7.13/go.mod h1:YE94ZoDArI7awZqJzBAZ3PDD2zSfuP7w6P2knOzIn8M= +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.262.0 h1:5qBb1XV/D18qtCHd3bmmxoVglI+fZ4QWuS/EB8kIXYQ= +github.com/aws/aws-sdk-go-v2/service/ec2 v1.262.0/go.mod h1:NDdDLLW5PtLLXN661gKcvJvqAH5OBXsfhMlmKVu1/pY= +github.com/aws/aws-sdk-go-v2/service/ecs v1.67.2 h1:oeICOX/+D0XXV1aMYJPXVe3CO37zYr7fB6HFgxchleU= +github.com/aws/aws-sdk-go-v2/service/ecs v1.67.2/go.mod h1:rrhqfkXfa2DSNq0RyFhnnFEAyI+yJB4+2QlZKeJvMjs= +github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding v1.13.3 h1:x2Ibm/Af8Fi+BH+Hsn9TXGdT+hKbDd5XOTZxTMxDk7o= +github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding v1.13.3/go.mod h1:IW1jwyrQgMdhisceG8fQLmQIydcT/jWY21rFhzgaKwo= +github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.13.13 h1:kDqdFvMY4AtKoACfzIGD8A0+hbT41KTKF//gq7jITfM= +github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.13.13/go.mod h1:lmKuogqSU3HzQCwZ9ZtcqOc5XGMqtDK7OIc2+DxiUEg= +github.com/aws/aws-sdk-go-v2/service/lightsail v1.50.4 h1:/1o2AYwHJojUDeMvQNyJiKZwcWCc3e4kQuTXqRLuThc= +github.com/aws/aws-sdk-go-v2/service/lightsail v1.50.4/go.mod h1:Nn2xx6HojGuNMtUFxxz/nyNLSS+tHMRsMhe3+W3wB5k= +github.com/aws/aws-sdk-go-v2/service/sso v1.30.1 h1:0JPwLz1J+5lEOfy/g0SURC9cxhbQ1lIMHMa+AHZSzz0= +github.com/aws/aws-sdk-go-v2/service/sso v1.30.1/go.mod h1:fKvyjJcz63iL/ftA6RaM8sRCtN4r4zl4tjL3qw5ec7k= +github.com/aws/aws-sdk-go-v2/service/ssooidc v1.35.5 h1:OWs0/j2UYR5LOGi88sD5/lhN6TDLG6SfA7CqsQO9zF0= +github.com/aws/aws-sdk-go-v2/service/ssooidc v1.35.5/go.mod h1:klO+ejMvYsB4QATfEOIXk8WAEwN4N0aBfJpvC+5SZBo= +github.com/aws/aws-sdk-go-v2/service/sts v1.39.1 h1:mLlUgHn02ue8whiR4BmxxGJLR2gwU6s6ZzJ5wDamBUs= +github.com/aws/aws-sdk-go-v2/service/sts v1.39.1/go.mod h1:E19xDjpzPZC7LS2knI9E6BaRFDK43Eul7vd6rSq2HWk= +github.com/aws/smithy-go v1.23.2 h1:Crv0eatJUQhaManss33hS5r40CG3ZFH+21XSkqMrIUM= +github.com/aws/smithy-go v1.23.2/go.mod h1:LEj2LM3rBRQJxPZTB4KuzZkaZYnZPnvgIhb4pu07mx0= github.com/beorn7/perks v0.0.0-20180321164747-3a771d992973/go.mod h1:Dwedo/Wpr24TaqPxmxbtue+5NUziq4I4S80YR8gNf3Q= github.com/beorn7/perks v1.0.0/go.mod h1:KWe93zE9D1o94FZ5RNwFwVgaQK1VOXiVxmqh+CedLV8= github.com/beorn7/perks v1.0.1 h1:VlbKKnNfV8bJzeqoa4cOKqO6bYr3WgKZxO8Z16+hsOM= github.com/beorn7/perks v1.0.1/go.mod h1:G2ZrVWU2WbWT9wwq4/hrbKbnv/1ERSJQ0ibhJ6rlkpw= github.com/bgentry/speakeasy v0.1.0/go.mod h1:+zsyZBPWlz7T6j88CTgSN5bM796AkVf0kBD4zp0CCIs= -github.com/cenkalti/backoff/v5 v5.0.2 h1:rIfFVxEf1QsI7E1ZHfp/B4DF/6QBAUhmgkxc0H7Zss8= -github.com/cenkalti/backoff/v5 v5.0.2/go.mod h1:rkhZdG3JZukswDf7f0cwqPNk4K0sa+F97BxZthm/crw= +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= github.com/cespare/xxhash/v2 v2.3.0 h1:UL815xU9SqsFlibzuggzjXhog7bL6oX9BbNZnL2UFvs= github.com/cespare/xxhash/v2 v2.3.0/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs= github.com/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/cncf/xds/go v0.0.0-20250326154945-ae57f3c0d45f h1:C5bqEmzEPLsHm9Mv73lSE9e9bKV23aB1vxOsmZrkl3k= -github.com/cncf/xds/go v0.0.0-20250326154945-ae57f3c0d45f/go.mod h1:W+zGtBO5Y1IgJhy4+A9GOqVhqLpfZi+vwmdNXUehLA8= +github.com/cncf/xds/go v0.0.0-20250501225837-2ac532fd4443 h1:aQ3y1lwWyqYPiWZThqv1aFbZMiM9vblcSArJRf2Irls= +github.com/cncf/xds/go v0.0.0-20250501225837-2ac532fd4443/go.mod h1:W+zGtBO5Y1IgJhy4+A9GOqVhqLpfZi+vwmdNXUehLA8= github.com/containerd/errdefs v1.0.0 h1:tg5yIfIlQIrxYtu9ajqY42W3lpS19XqdxRQeEwYG8PI= github.com/containerd/errdefs v1.0.0/go.mod h1:+YBYIdtsnF4Iw6nWZhJcqGSg/dwvV7tyJ/kCkyJ2k+M= github.com/containerd/errdefs/pkg v0.3.0 h1:9IKJ06FvyNlexW690DXuQNx2KA2cUJXx151Xdx3ZPPE= @@ -99,24 +101,22 @@ github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSs github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc h1:U9qPSI2PIWSS1VwoXQT9A3Wy9MM3WgvqSxFWenqJduM= github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= -github.com/dgryski/go-rendezvous v0.0.0-20200823014737-9f7001d12a5f h1:lO4WD4F/rVNCu3HqELle0jiPLLBs70cWOduZpkS1E78= -github.com/dgryski/go-rendezvous v0.0.0-20200823014737-9f7001d12a5f/go.mod h1:cuUVRXasLTGF7a8hSLbxyZXjz+1KgoB3wDUb6vlszIc= -github.com/digitalocean/godo v1.157.0 h1:ReELaS6FxXNf8gryUiVH0wmyUmZN8/NCmBX4gXd3F0o= -github.com/digitalocean/godo v1.157.0/go.mod h1:tYeiWY5ZXVpU48YaFv0M5irUFHXGorZpDNm7zzdWMzM= +github.com/digitalocean/godo v1.168.0 h1:mlORtUcPD91LQeJoznrH3XvfvgK3t8Wvrpph9giUT/Q= +github.com/digitalocean/godo v1.168.0/go.mod h1:xQsWpVCCbkDrWisHA72hPzPlnC+4W5w/McZY5ij9uvU= github.com/distribution/reference v0.5.0 h1:/FUIFXtfc/x2gpa5/VGfiGLuOIdYa1t65IKK2OFGvA0= github.com/distribution/reference v0.5.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.3.3+incompatible h1:Dypm25kh4rmk49v1eiVbsAtpAsYURjYkaKubwuBdxEI= -github.com/docker/docker v28.3.3+incompatible/go.mod h1:eEKB0N0r5NX/I1kEveEz05bcu8tLC/8azJZsviup8Sk= +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-units v0.5.0 h1:69rxXcBk27SvSaaxTtLh/8llcHD8vYHT7WSdRZ/jvr4= github.com/docker/go-units v0.5.0/go.mod h1:fgPhTUdO+D/Jk86RDLlptpiXQzgHJF7gydDDbaIK4Dk= -github.com/emicklei/go-restful/v3 v3.11.0 h1:rAQeMHw1c7zTmncogyy8VvRZwtkmkZ4FxERmMY4rD+g= -github.com/emicklei/go-restful/v3 v3.11.0/go.mod h1:6n3XBCmQQb25CM2LCACGz8ukIrRry+4bhvbpWn3mrbc= -github.com/envoyproxy/go-control-plane/envoy v1.32.4 h1:jb83lalDRZSpPWW2Z7Mck/8kXZ5CQAFYVjQcdVIr83A= -github.com/envoyproxy/go-control-plane/envoy v1.32.4/go.mod h1:Gzjc5k8JcJswLjAx1Zm+wSYE20UrLtt7JZMWiWQXQEw= +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.35.0 h1:ixjkELDE+ru6idPxcHLj8LBVc2bFP7iBytj353BoHUo= +github.com/envoyproxy/go-control-plane/envoy v1.35.0/go.mod h1:09qwbGVuSWWAyN5t/b3iyVfz5+z8QWGrzkoqm/8SbEs= github.com/envoyproxy/protoc-gen-validate v1.2.1 h1:DEo3O99U8j4hBFwbJfrz9VtgcDfUKS7KJ7spH3d86P8= github.com/envoyproxy/protoc-gen-validate v1.2.1/go.mod h1:d/C80l/jxXLdfEIhX1W2TmLfsJ31lvEjwamM4DxlWXU= github.com/fatih/color v1.7.0/go.mod h1:Zm6kSWBoL9eyXnKyktHP6abPY2pDugNf5KwzbycvMj4= @@ -126,10 +126,10 @@ github.com/fatih/color v1.16.0 h1:zmkK9Ngbjj+K0yRhTVONQh1p/HknKYSlNT+vZCzyokM= github.com/fatih/color v1.16.0/go.mod h1:fL2Sau1YI5c0pdGEVCbKQbLXB6edEj1ZgiY4NijnWvE= github.com/felixge/httpsnoop v1.0.4 h1:NFTV2Zj1bL4mc9sqWACXbQFVBBg2W3GPvqp8/ESS2Wg= github.com/felixge/httpsnoop v1.0.4/go.mod h1:m8KPJKqk1gH5J9DgRY2ASl2lWCfGKXixSwevea8zH2U= -github.com/fsnotify/fsnotify v1.8.0 h1:dAwr6QBTBZIkG8roQaJjGof0pp0EeF+tNV7YBP3F/8M= -github.com/fsnotify/fsnotify v1.8.0/go.mod h1:8jBTzvmWwFyi3Pb8djgCCO5IBqzKJ/Jwo8TRcHyHii0= -github.com/fxamacker/cbor/v2 v2.7.0 h1:iM5WgngdRBanHcxugY4JySA0nk1wZorNOpTgCMedv5E= -github.com/fxamacker/cbor/v2 v2.7.0/go.mod h1:pxXPTn3joSm21Gbwsv0w9OSA2y1HFR9qXEeXQVeNoDQ= +github.com/fsnotify/fsnotify v1.9.0 h1:2Ml+OJNzbYCTzsxtv8vKSFD9PbJjmhYF14k/jKC7S9k= +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/ghodss/yaml v1.0.0 h1:wQHKEahhL6wmXdzwWG11gIVCkOv05bNOh+Rxn0yngAk= github.com/ghodss/yaml v1.0.0/go.mod h1:4dBDuWmgqj2HViK6kFavaiC9ZROes6MMH2rRYeMEF04= github.com/go-kit/kit v0.8.0/go.mod h1:xBxKIO96dXMWWy0MnWVtmwkA9/13aqxPnvrjFYMA2as= @@ -137,8 +137,8 @@ github.com/go-kit/kit v0.9.0/go.mod h1:xBxKIO96dXMWWy0MnWVtmwkA9/13aqxPnvrjFYMA2 github.com/go-logfmt/logfmt v0.3.0/go.mod h1:Qt1PoO58o5twSAckw1HlFXLmHsOX5/0LbT9GBnD5lWE= github.com/go-logfmt/logfmt v0.4.0/go.mod h1:3RMwSq7FuexP4Kalkev3ejPJsZTpXXBr9+V4qmtdjCk= github.com/go-logr/logr v1.2.2/go.mod h1:jdQByPbusPIv2/zmleS9BjJVeZ6kBagPoEUsqbVz/1A= -github.com/go-logr/logr v1.4.2 h1:6pFjapn8bFcIbiKo3XT4j/BhANplGihG6tvd+8rYgrY= -github.com/go-logr/logr v1.4.2/go.mod h1:9T104GzyrTigFIr8wt5mBrctHMim0Nb2HLGrmQ40KvY= +github.com/go-logr/logr v1.4.3 h1:CjnDlHq8ikf6E492q6eKboGOC0T8CDaOvkHCIg8idEI= +github.com/go-logr/logr v1.4.3/go.mod h1:9T104GzyrTigFIr8wt5mBrctHMim0Nb2HLGrmQ40KvY= github.com/go-logr/stdr v1.2.2 h1:hSWxHoqTgW2S2qGc0LTAI563KZ5YKYRhT3MFKZMbjag= github.com/go-logr/stdr v1.2.2/go.mod h1:mMo/vtBO5dYbehREoey6XUKy/eSumjCCveDpRre4VKE= github.com/go-openapi/jsonpointer v0.21.0 h1:YgdVicSA9vH5RiHs9TZW5oyafXZFc6+2Vc1rr/O9oNQ= @@ -157,53 +157,50 @@ github.com/go-zookeeper/zk v1.0.4/go.mod h1:nOB03cncLtlp4t+UAkGSV+9beXP/akpekBwL 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.2.2 h1:Rl4B7itRWVtYIHFrSNd7vhTiz9UpLdi6gZhZ3wEeDy8= -github.com/golang-jwt/jwt/v5 v5.2.2/go.mod h1:pqrtFR0X4osieyHYxtmOUWsAWrfe1Q5UVIyoH402zdk= +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/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= github.com/golang/protobuf v1.5.4 h1:i7eJL8qZTpSEXOPTxNKhASYpMn+8e5Q6AdndVa1dWek= github.com/golang/protobuf v1.5.4/go.mod h1:lnTiLA8Wa4RWRcIUkrtSVa5nRhsEGBg48fD6rSs7xps= github.com/google/btree v0.0.0-20180813153112-4030bb1f1f0c/go.mod h1:lNA+9X1NB3Zf8V7Ke586lFgjr2dZNuvo3lPJSGZ5JPQ= -github.com/google/btree v1.0.1 h1:gK4Kx5IaGY9CD5sPJ36FHiBJ6ZXl0kilRiiCj+jdYp4= -github.com/google/btree v1.0.1/go.mod h1:xXMiIv4Fb/0kKde4SpL7qlzvu5cMJDRkFDxJfI9uaxA= -github.com/google/gnostic-models v0.6.8 h1:yo/ABAfM5IMRsS1VnXjTBvUb61tFIHozhlYvRgGre9I= -github.com/google/gnostic-models v0.6.8/go.mod h1:5n7qKqH0f5wFt+aWF8CW6pZLLNOfYuF5OpfBSENuI8U= +github.com/google/btree v1.1.3 h1:CVpQJjYgC4VbzxeGVHfvZrv1ctoYCAI8vbl07Fcxlyg= +github.com/google/btree v1.1.3/go.mod h1:qOPhT0dTNdNzV6Z/lhRX0YXUafgPLFUh+gZMl761Gm4= +github.com/google/gnostic-models v0.7.0 h1:qwTtogB15McXDaNqTZdzPJRHvaVJlAl+HVQnLmJEJxo= +github.com/google/gnostic-models v0.7.0/go.mod h1:whL5G0m6dmc5cPxKc5bdKdEN3UjI7OUGxBlw57miDrQ= github.com/google/go-cmp v0.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.5.9/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY= github.com/google/go-cmp v0.7.0 h1:wk8382ETsv4JYUZwIsn6YpYiWiBsYLSJiTsyBybVuN8= github.com/google/go-cmp v0.7.0/go.mod h1:pXiqmnSA92OHEEa9HXL2W4E7lf9JzCmGVUdgjX3N/iU= github.com/google/go-querystring v1.1.0 h1:AnCroh3fv4ZBgVIf1Iwtovgjaw/GiKJo8M8yD/fhyJ8= github.com/google/go-querystring v1.1.0/go.mod h1:Kcdr2DB4koayq7X8pmAG4sNG59So17icRSOU623lUBU= 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-20250607225305-033d6d78b36a h1://KbezygeMJZCSHH+HgUZiTeSoiuFspbMg1ge+eFj18= -github.com/google/pprof v0.0.0-20250607225305-033d6d78b36a/go.mod h1:5hDyRhoBCxViHszMt12TnOpEI4VVi+U8Gm9iphldiMA= +github.com/google/pprof v0.0.0-20250923004556-9e5a51aed1e8 h1:ZI8gCoCjGzPsum4L21jHdQs8shFBIQih1TM9Rd/c+EQ= +github.com/google/pprof v0.0.0-20250923004556-9e5a51aed1e8/go.mod h1:I6V7YzU0XDpsHqbsyrghnFZLO1gwK6NPTNvmetQIk9U= 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.6 h1:GW/XbdyBFQ8Qe+YAmFU9uHLo7OnF5tL52HFAgMmyrf4= github.com/googleapis/enterprise-certificate-proxy v0.3.6/go.mod h1:MkHOF77EYAE7qfSuSS9PU6g4Nt4e11cnsDUowfwewLA= -github.com/googleapis/gax-go/v2 v2.14.2 h1:eBLnkZ9635krYIPD+ag1USrOAI0Nr0QYF3+/3GqO0k0= -github.com/googleapis/gax-go/v2 v2.14.2/go.mod h1:ON64QhlJkhVtSqp4v1uaK92VyZ2gmvDQsweuyLV+8+w= -github.com/gophercloud/gophercloud/v2 v2.7.0 h1:o0m4kgVcPgHlcXiWAjoVxGd8QCmvM5VU+YM71pFbn0E= -github.com/gophercloud/gophercloud/v2 v2.7.0/go.mod h1:Ki/ILhYZr/5EPebrPL9Ej+tUg4lqx71/YH2JWVeU+Qk= -github.com/gorilla/websocket v1.5.0 h1:PPwGk2jz7EePpoHN/+ClbZu8SPxiqlu12wZP/3sWmnc= -github.com/gorilla/websocket v1.5.0/go.mod h1:YR8l580nyteQvAITg2hZ9XVh4b55+EU/adAjf1fMHhE= -github.com/grafana/regexp v0.0.0-20240518133315-a468a5bfb3bc h1:GN2Lv3MGO7AS6PrRoT6yV5+wkrOpcszoIsO4+4ds248= -github.com/grafana/regexp v0.0.0-20240518133315-a468a5bfb3bc/go.mod h1:+JKpmjMGhpgPL+rXZ5nsZieVzvarn86asRlBg4uNGnk= -github.com/grpc-ecosystem/grpc-gateway/v2 v2.26.3 h1:5ZPtiqj0JL5oKWmcsq4VMaAW5ukBEgSGXEN89zeH1Jo= -github.com/grpc-ecosystem/grpc-gateway/v2 v2.26.3/go.mod h1:ndYquD05frm2vACXE1nsccT4oJzjhw2arTS2cpUD1PI= +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.8.0 h1:of2+8tT6+FbEYHfYC8GBu8TXJNsXYSNm9KuvpX7Neqo= +github.com/gophercloud/gophercloud/v2 v2.8.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= +github.com/grafana/regexp v0.0.0-20250905093917-f7b3be9d1853/go.mod h1:+JKpmjMGhpgPL+rXZ5nsZieVzvarn86asRlBg4uNGnk= +github.com/grpc-ecosystem/grpc-gateway/v2 v2.27.2 h1:8Tjv8EJ+pM1xP8mK6egEbD1OgnVTyacbefKhmbLhIhU= +github.com/grpc-ecosystem/grpc-gateway/v2 v2.27.2/go.mod h1:pkJQ2tZHJ0aFOVEEot6oZmaVEZcRme73eIFmhiVuRWs= github.com/hashicorp/consul/api v1.32.0 h1:5wp5u780Gri7c4OedGEPzmlUEzi0g2KyiPphSr6zjVg= github.com/hashicorp/consul/api v1.32.0/go.mod h1:Z8YgY0eVPukT/17ejW+l+C7zJmKwgPHtjU1q16v/Y40= github.com/hashicorp/consul/sdk v0.16.1 h1:V8TxTnImoPD5cj0U9Spl0TUxcytjcbbJeADFF07KdHg= github.com/hashicorp/consul/sdk v0.16.1/go.mod h1:fSXvwxB2hmh1FMZCNl6PwX0Q/1wdWtHJcZ7Ea5tns0s= -github.com/hashicorp/cronexpr v1.1.2 h1:wG/ZYIKT+RT3QkOdgYc+xsKWVRgnxJ1OJtjjy84fJ9A= -github.com/hashicorp/cronexpr v1.1.2/go.mod h1:P4wA0KBl9C5q2hABiMO7cp6jcIg96CDh1Efb3g1PWA4= +github.com/hashicorp/cronexpr v1.1.3 h1:rl5IkxXN2m681EfivTlccqIryzYJSXRGRNa0xeG7NA4= +github.com/hashicorp/cronexpr v1.1.3/go.mod h1:P4wA0KBl9C5q2hABiMO7cp6jcIg96CDh1Efb3g1PWA4= github.com/hashicorp/errwrap v1.0.0/go.mod h1:YH+1FKiLXxHSkmPseP+kNlulaMuP3n2brvKWEqk/Jc4= github.com/hashicorp/errwrap v1.1.0 h1:OxrOeh75EUXMY8TBjag2fzXGZ40LB6IKw45YeGUDY2I= github.com/hashicorp/errwrap v1.1.0/go.mod h1:YH+1FKiLXxHSkmPseP+kNlulaMuP3n2brvKWEqk/Jc4= @@ -244,16 +241,16 @@ github.com/hashicorp/logutils v1.0.0/go.mod h1:QIAnNjmIWmVIIkWDTG1z5v++HQmx9WQRO github.com/hashicorp/mdns v1.0.4/go.mod h1:mtBihi+LeNXGtG8L9dX59gAEa12BDtBQSp4v/YAJqrc= github.com/hashicorp/memberlist v0.5.0 h1:EtYPN8DpAURiapus508I4n9CzHs2W+8NZGbmmR/prTM= github.com/hashicorp/memberlist v0.5.0/go.mod h1:yvyXLpo0QaGE59Y7hDTsTzDD25JYBZ4mHgHUZ8lrOI0= -github.com/hashicorp/nomad/api v0.0.0-20241218080744-e3ac00f30eec h1:+YBzb977VrmffaCX/OBm17dEVJUcWn5dW+eqs3aIJ/A= -github.com/hashicorp/nomad/api v0.0.0-20241218080744-e3ac00f30eec/go.mod h1:svtxn6QnrQ69P23VvIWMR34tg3vmwLz4UdUzm1dSCgE= +github.com/hashicorp/nomad/api v0.0.0-20250930071859-eaa0fe0e27af h1:ScAYf8O+9xTqTJPZH8MIlUfO+ak8cb31rW1aYJgS+jE= +github.com/hashicorp/nomad/api v0.0.0-20250930071859-eaa0fe0e27af/go.mod h1:sldFTIgs+FsUeKU3LwVjviAIuksxD8TzDOn02MYwslE= 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.21.1 h1:IH3liW8/cCRjfJ4cyqYvw3s1ek+KWP8dl1roa0lD8JM= -github.com/hetznercloud/hcloud-go/v2 v2.21.1/go.mod h1:XOaYycZJ3XKMVWzmqQ24/+1V7ormJHmPdck/kxrNnQA= +github.com/hetznercloud/hcloud-go/v2 v2.29.0 h1:LzNFw5XLBfftyu3WM1sdSLjOZBlWORtz2hgGydHaYV8= +github.com/hetznercloud/hcloud-go/v2 v2.29.0/go.mod h1:XBU4+EDH2KVqu2KU7Ws0+ciZcX4ygukQl/J0L5GS8P8= github.com/ionos-cloud/sdk-go/v6 v6.3.4 h1:jTvGl4LOF8v8OYoEIBNVwbFoqSGAFqn6vGE7sp7/BqQ= github.com/ionos-cloud/sdk-go/v6 v6.3.4/go.mod h1:wCVwNJ/21W29FWFUv+fNawOTMlFoP1dS3L+ZuztFW48= -github.com/jarcoal/httpmock v1.4.0 h1:BvhqnH0JAYbNudL2GMJKgOHe2CtKlzJ/5rWKyp+hc2k= -github.com/jarcoal/httpmock v1.4.0/go.mod h1:ftW1xULwo+j0R0JJkJIIi7UKigZUXCLLanykgjwBXL0= +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/josharian/intern v1.0.0 h1:vlS4z54oSdjm0bgjRigI+G1HpF+tI+9rE5LLzOg8HmY= github.com/josharian/intern v1.0.0/go.mod h1:5DoeVV0s6jJacbCEi61lwdGj/aVlrQvzHFFd8Hwg//Y= github.com/jpillora/backoff v1.0.0 h1:uvFg412JmmHBHw7iwprIxkPMI+sGQ4kzOWsMeHnm2EA= @@ -267,8 +264,8 @@ 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.0 h1:c/Cqfb0r+Yi+JtIEq73FWXVkRonBlf0CRNYc8Zttxdo= -github.com/klauspost/compress v1.18.0/go.mod h1:2Pp+KzxcywXVXMr50+X0Q/Lsb43OQHYWRCY2AiWywWQ= +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/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= @@ -282,8 +279,8 @@ github.com/kr/text v0.2.0 h1:5Nx0Ya0ZqY2ygV366QzturHI13Jq95ApcVaJBhpS+AY= github.com/kr/text v0.2.0/go.mod h1:eLer722TekiGuMkidMxC/pM04lWEeraHUUmBw8l2grE= github.com/kylelemons/godebug v1.1.0 h1:RPNrshWIDI6G2gRW9EHilWtl7Z6Sb1BR0xunSBf0SNc= github.com/kylelemons/godebug v1.1.0/go.mod h1:9/0rRGxNHcop5bhtWyNeEfOS8JIWk580+fNqagV/RAw= -github.com/linode/linodego v1.52.2 h1:N9ozU27To1LMSrDd8WvJZ5STSz1eGYdyLnxhAR/dIZg= -github.com/linode/linodego v1.52.2/go.mod h1:bI949fZaVchjWyKIA08hNyvAcV6BAS+PM2op3p7PAWA= +github.com/linode/linodego v1.60.0 h1:SgsebJFRCi+lSmYy+C40wmKZeJllGGm+W12Qw4+yVdI= +github.com/linode/linodego v1.60.0/go.mod h1:1+Bt0oTz5rBnDOJbGhccxn7LYVytXTIIfAy7QYmijDs= github.com/mailru/easyjson v0.7.7 h1:UGYAvKxe3sBsEDzO8ZeWOSlIQfWFlxbzLZe7hwFURr0= github.com/mailru/easyjson v0.7.7/go.mod h1:xzfreul335JAWq5oZzymOObrkdz5UnU4kGfJJLY9Nlc= github.com/mattn/go-colorable v0.0.9/go.mod h1:9vuHe8Xs5qXnSaW/c/ABM9alt+Vo+STaOChaDxuIBZU= @@ -306,13 +303,11 @@ github.com/maxatome/go-testdeep v1.12.0 h1:Ql7Go8Tg0C1D/uMMX59LAoYK7LffeJQ6X2T04 github.com/maxatome/go-testdeep v1.12.0/go.mod h1:lPZc/HAcJMP92l7yI6TRz1aZN5URwUBUAfUNvrclaNM= 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.66 h1:FeZXOS3VCVsKnEAd+wBkjMC3D2K+ww66Cq3VnCINuJE= -github.com/miekg/dns v1.1.66/go.mod h1:jGFzBsSNbJw6z1HYut1RKBKHA9PBdxeHrZG8J+gC2WE= +github.com/miekg/dns v1.1.68 h1:jsSRkNozw7G/mnmXULynzMNIsgY2dHC8LO6U6Ij2JEA= +github.com/miekg/dns v1.1.68/go.mod h1:fujopn7TB3Pu3JM69XaawiU0wqjpL9/8xGop5UrTPps= 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= -github.com/mitchellh/go-testing-interface v1.14.1 h1:jrgshOhYAUVNMAJiKbEu7EqAwgJJ2JqpQmpLJOu07cU= -github.com/mitchellh/go-testing-interface v1.14.1/go.mod h1:gfgS7OtZj6MA4U1UrDRp04twqAjfvlZyCfX3sDjEym8= github.com/mitchellh/mapstructure v0.0.0-20160808181253-ca63d7c062ee/go.mod h1:FVVH3fgwuzCH5S8UJGiWEs2h04kUh9fWfEaFds41c1Y= github.com/mitchellh/mapstructure v1.5.0 h1:jeMsZIYE/09sWLaz43PL7Gy6RuMjD2eJVyuac5Z2hdY= github.com/mitchellh/mapstructure v1.5.0/go.mod h1:bFUtVrKA4DC2yAKiSyO/QUcy7e+RRV2QTWOzhPopBRo= @@ -331,8 +326,9 @@ github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd h1:TRLaZ9cD/w github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q= github.com/modern-go/reflect2 v0.0.0-20180701023420-4b7aa43c6742/go.mod h1:bx2lNnkwVCuqBIxFjflWJWanXIb3RllmbCylyMrvgv0= github.com/modern-go/reflect2 v1.0.1/go.mod h1:bx2lNnkwVCuqBIxFjflWJWanXIb3RllmbCylyMrvgv0= -github.com/modern-go/reflect2 v1.0.2 h1:xBagoLtFs94CBntxluKeaWgTMpvLxC4ur3nMaC9Gz0M= github.com/modern-go/reflect2 v1.0.2/go.mod h1:yWuevngMOJpCy52FWWMvUC8ws7m/LJsjYzDa0/r8luk= +github.com/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/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822 h1:C3w9PqII01/Oq1c1nUAm88MOHcQC9l5mIlSMApZMrHA= @@ -373,6 +369,8 @@ github.com/prometheus/client_golang v1.0.0/go.mod h1:db9x61etRT2tGnBNRi70OPL5Fsn github.com/prometheus/client_golang v1.4.0/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_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= @@ -380,38 +378,36 @@ github.com/prometheus/client_model v0.6.2 h1:oBsgwpGs7iVziMvrGhE53c/GrLUsZdHnqNw github.com/prometheus/client_model v0.6.2/go.mod h1:y3m2F6Gdpfy6Ut/GBsUqTWZqCUvMVzSfMLjcu6wAwpE= github.com/prometheus/common v0.4.1/go.mod h1:TNfzLD0ON7rHzMJeJkieUDPYmFC7Snx/y86RQel1bk4= github.com/prometheus/common v0.9.1/go.mod h1:yhUN8i9wzaXS3w1O07YhxHEBxD+W35wd8bs7vj7HSQ4= -github.com/prometheus/common v0.66.1 h1:h5E0h5/Y8niHc5DlaLlWLArTQI7tMrsfQjHV+d9ZoGs= -github.com/prometheus/common v0.66.1/go.mod h1:gcaUsgf3KfRSwHY4dIMXLPV0K/Wg1oZ8+SbZk/HH/dA= -github.com/prometheus/otlptranslator v0.0.2 h1:+1CdeLVrRQ6Psmhnobldo0kTp96Rj80DRXRd5OSnMEQ= -github.com/prometheus/otlptranslator v0.0.2/go.mod h1:P8AwMgdD7XEr6QRUJ2QWLpiAZTgTE2UYgjlu3svompI= +github.com/prometheus/common v0.67.4 h1:yR3NqWO1/UyO1w2PhUvXlGQs/PtFmoveVO0KZ4+Lvsc= +github.com/prometheus/common v0.67.4/go.mod h1:gP0fq6YjjNCLssJCQp0yk4M8W6ikLURwkdd/YKtTbyI= +github.com/prometheus/otlptranslator v1.0.0 h1:s0LJW/iN9dkIH+EnhiD3BlkkP5QVIUVEoIwkU+A6qos= +github.com/prometheus/otlptranslator v1.0.0/go.mod h1:vRYWnXvI6aWGpsdY/mOT/cbeVRBlPWtBNDb7kGR3uKM= github.com/prometheus/procfs v0.0.0-20181005140218-185b4288413d/go.mod h1:c3At6R/oaqEKCNdg8wHV1ftS6bRYblBhIjjI8uT2IGk= github.com/prometheus/procfs v0.0.2/go.mod h1:TjEm7ze935MbeOT/UhFTIMYKhuLP4wbCsTZCD3I8kEA= github.com/prometheus/procfs v0.0.8/go.mod h1:7Qr8sr6344vo1JqZ6HhLceV9o3AJ1Ff+GxbHq6oeK9A= github.com/prometheus/procfs v0.16.1 h1:hZ15bTNuirocR6u0JZ6BAHHmwS1p8B4P6MRqxtzMyRg= github.com/prometheus/procfs v0.16.1/go.mod h1:teAbpZRB1iIAJYREa1LsoWUXykVXA1KlTmWl8x/U+Is= -github.com/prometheus/prometheus v0.305.1-0.20250808193045-294f36e80261 h1:EtTzzd5UW9TXf9C8BUHv66RgdjG51efqGKWmlxMqjgs= -github.com/prometheus/prometheus v0.305.1-0.20250808193045-294f36e80261/go.mod h1:KMw//femth6oNhcWeCrh4Er45VNPkNac87cTK6er/dA= -github.com/prometheus/sigv4 v0.2.0 h1:qDFKnHYFswJxdzGeRP63c4HlH3Vbn1Yf/Ao2zabtVXk= -github.com/prometheus/sigv4 v0.2.0/go.mod h1:D04rqmAaPPEUkjRQxGqjoxdyJuyCh6E0M18fZr0zBiE= -github.com/redis/go-redis/v9 v9.8.0 h1:q3nRvjrlge/6UD7eTu/DSg2uYiU2mCL0G/uzBWqhicI= -github.com/redis/go-redis/v9 v9.8.0/go.mod h1:huWgSWd8mW6+m0VPhJjSSQ+d6Nh1VICQ6Q5lHuCH/Iw= +github.com/prometheus/prometheus v0.308.1 h1:ApMNI/3/es3Ze90Z7CMb+wwU2BsSYur0m5VKeqHj7h4= +github.com/prometheus/prometheus v0.308.1/go.mod h1:aHjYCDz9zKRyoUXvMWvu13K9XHOkBB12XrEqibs3e0A= +github.com/prometheus/sigv4 v0.3.0 h1:QIG7nTbu0JTnNidGI1Uwl5AGVIChWUACxn2B/BQ1kms= +github.com/prometheus/sigv4 v0.3.0/go.mod h1:fKtFYDus2M43CWKMNtGvFNHGXnAJJEGZbiYCmVp/F8I= github.com/rogpeppe/go-internal v1.13.1 h1:KvO1DLK/DRN07sQ1LQKScxyZJuNnedQ5/wKSR38lUII= github.com/rogpeppe/go-internal v1.13.1/go.mod h1:uMEvuHeurkdAXX61udpOXGD/AzZDWNMNyH2VO9fmH0o= 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.33 h1:KhF0WejiUTDbL5X55nXowP7zNopwpowa6qaMAWyIE+0= -github.com/scaleway/scaleway-sdk-go v1.0.0-beta.33/go.mod h1:792k1RTU+5JeMXm35/e2Wgp71qPH/DmDoZrRc+EFZDk= +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/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.7.1 h1:UJcjSAI3aUKx52kfcfhblgyhZceouhvvs3OYdWgn+PY= -github.com/shoenig/test v1.7.1/go.mod h1:UxJ6u/x2v/TNs/LoLxBNJRV9DiwBBKYxXSyczsBHFoI= +github.com/shoenig/test v1.12.2 h1:ZVT8NeIUwGWpZcKaepPmFMoNQ3sVpxvqUh/MAqwFiJI= +github.com/shoenig/test v1.12.2/go.mod h1:UxJ6u/x2v/TNs/LoLxBNJRV9DiwBBKYxXSyczsBHFoI= github.com/sirupsen/logrus v1.2.0/go.mod h1:LxeOpSwHxABJmUn/MG1IvRgCAasNZTLOkJPxbbu5VWo= github.com/sirupsen/logrus v1.4.2/go.mod h1:tLMulIdttU9McNUspp0xgXVQah82FyeX6MwdIuYE2rE= github.com/sirupsen/logrus v1.9.0 h1:trlNQbNUG3OdDrDil03MCb1H2o9nJ1x4/5LYw7byDE0= github.com/sirupsen/logrus v1.9.0/go.mod h1:naHLuLoDiP4jHNo9R0sCBMtWGeIprob74mVsIT4qYEQ= -github.com/spf13/pflag v1.0.5 h1:iy+VFUOCP1a+8yFto/drg2CJ5u0yRoB7fZw3DKv/JXA= -github.com/spf13/pflag v1.0.5/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg= -github.com/stackitcloud/stackit-sdk-go/core v0.17.2 h1:jPyn+i8rkp2hM80+hOg0B/1EVRbMt778Tr5RWyK1m2E= -github.com/stackitcloud/stackit-sdk-go/core v0.17.2/go.mod h1:8KIw3czdNJ9sdil9QQimxjR6vHjeINFrRv0iZ67wfn0= +github.com/spf13/pflag v1.0.6 h1:jFzHGLGAlb3ruxLB8MhbI6A8+AQX/2eW4qeyNZXNp2o= +github.com/spf13/pflag v1.0.6/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg= +github.com/stackitcloud/stackit-sdk-go/core v0.17.3 h1:GsZGmRRc/3GJLmCUnsZswirr5wfLRrwavbnL/renOqg= +github.com/stackitcloud/stackit-sdk-go/core v0.17.3/go.mod h1:HBCXJGPgdRulplDzhrmwC+Dak9B/x0nzNtmOpu+1Ahg= 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= @@ -437,43 +433,45 @@ github.com/yuin/goldmark v1.1.27/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9de github.com/yuin/goldmark v1.2.1/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= go.opentelemetry.io/auto/sdk v1.1.0 h1:cH53jehLUN6UFLY71z+NDOiNJqDdPRaXzTel0sJySYA= go.opentelemetry.io/auto/sdk v1.1.0/go.mod h1:3wSPjt5PWp2RhlCcmmOial7AvC4DQqZb7a7wCow3W8A= -go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.61.0 h1:F7Jx+6hwnZ41NSFTO5q4LYDtJRXBf2PD0rNBkeB/lus= -go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.61.0/go.mod h1:UHB22Z8QsdRDrnAtX4PntOl36ajSxcdUMt1sF7Y6E7Q= -go.opentelemetry.io/otel v1.36.0 h1:UumtzIklRBY6cI/lllNZlALOF5nNIzJVb16APdvgTXg= -go.opentelemetry.io/otel v1.36.0/go.mod h1:/TcFMXYjyRNh8khOAO9ybYkqaDBb/70aVwkNML4pP8E= -go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.36.0 h1:dNzwXjZKpMpE2JhmO+9HsPl42NIXFIFSUSSs0fiqra0= -go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.36.0/go.mod h1:90PoxvaEB5n6AOdZvi+yWJQoE95U8Dhhw2bSyRqnTD0= -go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp v1.36.0 h1:nRVXXvf78e00EwY6Wp0YII8ww2JVWshZ20HfTlE11AM= -go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp v1.36.0/go.mod h1:r49hO7CgrxY9Voaj3Xe8pANWtr0Oq916d0XAmOoCZAQ= -go.opentelemetry.io/otel/metric v1.36.0 h1:MoWPKVhQvJ+eeXWHFBOPoBOi20jh6Iq2CcCREuTYufE= -go.opentelemetry.io/otel/metric v1.36.0/go.mod h1:zC7Ks+yeyJt4xig9DEw9kuUFe5C3zLbVjV2PzT6qzbs= -go.opentelemetry.io/otel/sdk v1.36.0 h1:b6SYIuLRs88ztox4EyrvRti80uXIFy+Sqzoh9kFULbs= -go.opentelemetry.io/otel/sdk v1.36.0/go.mod h1:+lC+mTgD+MUWfjJubi2vvXWcVxyr9rmlshZni72pXeY= -go.opentelemetry.io/otel/sdk/metric v1.36.0 h1:r0ntwwGosWGaa0CrSt8cuNuTcccMXERFwHX4dThiPis= -go.opentelemetry.io/otel/sdk/metric v1.36.0/go.mod h1:qTNOhFDfKRwX0yXOqJYegL5WRaW376QbB7P4Pb0qva4= -go.opentelemetry.io/otel/trace v1.36.0 h1:ahxWNuqZjpdiFAyrIoQ4GIiAIhxAunQR6MUoKrsNd4w= -go.opentelemetry.io/otel/trace v1.36.0/go.mod h1:gQ+OnDZzrybY4k4seLzPAWNwVBBVlF2szhehOBB/tGA= -go.opentelemetry.io/proto/otlp v1.6.0 h1:jQjP+AQyTf+Fe7OKj/MfkDrmK4MNVtw2NpXsf9fefDI= -go.opentelemetry.io/proto/otlp v1.6.0/go.mod h1:cicgGehlFuNdgZkcALOCh3VE6K/u2tAjzlRhDwmVpZc= +go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.63.0 h1:RbKq8BG0FI8OiXhBfcRtqqHcZcka+gU3cskNuf05R18= +go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.63.0/go.mod h1:h06DGIukJOevXaj/xrNjhi/2098RZzcLTbc0jDAUbsg= +go.opentelemetry.io/otel v1.38.0 h1:RkfdswUDRimDg0m2Az18RKOsnI8UDzppJAtj01/Ymk8= +go.opentelemetry.io/otel v1.38.0/go.mod h1:zcmtmQ1+YmQM9wrNsTGV/q/uyusom3P8RxwExxkZhjM= +go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.38.0 h1:GqRJVj7UmLjCVyVJ3ZFLdPRmhDUp2zFmQe3RHIOsw24= +go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.38.0/go.mod h1:ri3aaHSmCTVYu2AWv44YMauwAQc0aqI9gHKIcSbI1pU= +go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp v1.38.0 h1:aTL7F04bJHUlztTsNGJ2l+6he8c+y/b//eR0jjjemT4= +go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp v1.38.0/go.mod h1:kldtb7jDTeol0l3ewcmd8SDvx3EmIE7lyvqbasU3QC4= +go.opentelemetry.io/otel/metric v1.38.0 h1:Kl6lzIYGAh5M159u9NgiRkmoMKjvbsKtYRwgfrA6WpA= +go.opentelemetry.io/otel/metric v1.38.0/go.mod h1:kB5n/QoRM8YwmUahxvI3bO34eVtQf2i4utNVLr9gEmI= +go.opentelemetry.io/otel/sdk v1.38.0 h1:l48sr5YbNf2hpCUj/FoGhW9yDkl+Ma+LrVl8qaM5b+E= +go.opentelemetry.io/otel/sdk v1.38.0/go.mod h1:ghmNdGlVemJI3+ZB5iDEuk4bWA3GkTpW+DOoZMYBVVg= +go.opentelemetry.io/otel/sdk/metric v1.38.0 h1:aSH66iL0aZqo//xXzQLYozmWrXxyFkBJ6qT5wthqPoM= +go.opentelemetry.io/otel/sdk/metric v1.38.0/go.mod h1:dg9PBnW9XdQ1Hd6ZnRz689CbtrUp0wMMs9iPcgT9EZA= +go.opentelemetry.io/otel/trace v1.38.0 h1:Fxk5bKrDZJUH+AMyyIXGcFAPah0oRcT+LuNtJrmcNLE= +go.opentelemetry.io/otel/trace v1.38.0/go.mod h1:j1P9ivuFsTceSWe1oY+EeW3sc+Pp42sO++GHkg4wwhs= +go.opentelemetry.io/proto/otlp v1.7.1 h1:gTOMpGDb0WTBOP8JaO72iL3auEZhVmAQg4ipjOVAtj4= +go.opentelemetry.io/proto/otlp v1.7.1/go.mod h1:b2rVh6rfI/s2pHWNlB7ILJcRALpcNDzKhACevjI+ZnE= 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.yaml.in/yaml/v2 v2.4.2 h1:DzmwEr2rDGHl7lsFgAHxmNz/1NlQ7xLIrlN2h5d1eGI= -go.yaml.in/yaml/v2 v2.4.2/go.mod h1:081UH+NErpNdqlCXm3TtEran0rJZGxAYx9hb/ELlsPU= +go.yaml.in/yaml/v2 v2.4.3 h1:6gvOSjQoTB3vt1l+CU+tSyi/HOjfOjRLJ4YwYZGwRO0= +go.yaml.in/yaml/v2 v2.4.3/go.mod h1:zSxWcmIDjOzPXpjlTTbAsKokqkDNAVtZO0WOMiT90s8= +go.yaml.in/yaml/v3 v3.0.4 h1:tfq32ie2Jv2UxXFdLJdh3jXuOzWiL1fo0bu/FbuKpbc= +go.yaml.in/yaml/v3 v3.0.4/go.mod h1:DhzuOOF2ATzADvBadXxruRBLzYTpT36CKvDb3+aBEFg= golang.org/x/crypto v0.0.0-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.41.0 h1:WKYxWedPGCTVVl5+WHSSrOBT0O8lx32+zxmHxijgXp4= -golang.org/x/crypto v0.41.0/go.mod h1:pO5AFd7FA68rFak7rOAGVuygIISepHftHnr8dr6+sUc= -golang.org/x/exp v0.0.0-20250106191152-7588d65b2ba8 h1:yqrTHse8TCMW1M1ZCP+VAR/l0kKxwaAIqN/il7x4voA= -golang.org/x/exp v0.0.0-20250106191152-7588d65b2ba8/go.mod h1:tujkw807nyEEAamNbDrEGzRav+ilXA7PCRAd6xsmwiU= +golang.org/x/crypto v0.43.0 h1:dduJYIi3A3KOfdGOHX8AVZ/jGiyPa3IbBozJ5kNuE04= +golang.org/x/crypto v0.43.0/go.mod h1:BFbav4mRNlXJL4wNeejLpWxB7wMbc79PdRGhWKncxR0= +golang.org/x/exp v0.0.0-20250808145144-a408d31f581a h1:Y+7uR/b1Mw2iSXZ3G//1haIiSElDQZ8KWh0h+sZPG90= +golang.org/x/exp v0.0.0-20250808145144-a408d31f581a/go.mod h1:rT6SFzZ7oxADUDx58pcaKFTcZ+inxAa9fTrYx/uVYwg= 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.26.0 h1:EGMPT//Ezu+ylkCijjPc+f4Aih7sZvaAr+O3EHBxvZg= -golang.org/x/mod v0.26.0/go.mod h1:/j6NAhSk8iQ723BGAUyoAcn7SlD7s15Dp9Nd/SfeaFQ= +golang.org/x/mod v0.28.0 h1:gQBtGhjxykdjY9YhZpSlZIsbnaE2+PgjfLWUQTnoZ1U= +golang.org/x/mod v0.28.0/go.mod h1:yfB/L0NOf/kmEbXjzCPOx1iK1fRutOydrCMsqRhEBxI= 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= @@ -483,18 +481,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.43.0 h1:lat02VYK2j4aLzMzecihNvTlJNQUq316m2Mr9rnM6YE= -golang.org/x/net v0.43.0/go.mod h1:vhO1fvI4dGsIjh73sWfUVjj3N7CA9WkKJNQm2svM6Jg= -golang.org/x/oauth2 v0.30.0 h1:dnDm7JmhM45NNpd8FDDeLhK6FwqbOf4MLCM9zb1BOHI= -golang.org/x/oauth2 v0.30.0/go.mod h1:B++QgG3ZKulg6sRPGD/mqlHQs5rB3Ml9erfeDY7xKlU= +golang.org/x/net v0.46.0 h1:giFlY12I07fugqwPuWJi68oOnpfqFnJIJzaIIm2JVV4= +golang.org/x/net v0.46.0/go.mod h1:Q9BGdFy1y4nkUwiLvT5qtyhAnEHgnQ/zd8PfU6nc210= +golang.org/x/oauth2 v0.32.0 h1:jsCblLleRMDrxMN29H3z/k1KliIvpLgCkE6R8FXXNgY= +golang.org/x/oauth2 v0.32.0/go.mod h1:lzm5WQJQwKZ3nwavOZ3IS5Aulzxi68dUSgRHujetwEA= golang.org/x/sync v0.0.0-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.16.0 h1:ycBJEhp9p4vXvUZNszeOq0kGTPghopOL8q0fq3vstxw= -golang.org/x/sync v0.16.0/go.mod h1:1dzgHSNfp02xaA81J2MS99Qcpr2w7fw1gpm99rleRqA= +golang.org/x/sync v0.17.0 h1:l60nONMj9l5drqw6jlhIELNv9I0A4OFgRsG9k2oT9Ug= +golang.org/x/sync v0.17.0/go.mod h1:9KTHXmSnoGruLpwFjVSX0lNNA75CykiMECbovNTZqGI= 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= @@ -520,42 +518,44 @@ golang.org/x/sys v0.0.0-20220728004956-3c1f35247d10/go.mod h1:oPkhp1MJrh7nUepCBc 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.35.0 h1:vz1N37gP5bs89s7He8XuIYXpyY0+QlsKmzipCbUtyxI= -golang.org/x/sys v0.35.0/go.mod h1:BJP2sWEmIv4KK5OTEluFJCKSidICx8ciO85XgH3Ak8k= +golang.org/x/sys v0.37.0 h1:fdNQudmxPjkdUTPnLn5mdQv7Zwvbvpaxqs831goi9kQ= +golang.org/x/sys v0.37.0/go.mod h1:OgkHotnGiDImocRcuBABYBEXf8A9a87e/uXjp9XT3ks= golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= -golang.org/x/term v0.34.0 h1:O/2T7POpk0ZZ7MAzMeWFSg6S5IpWd/RXDlM9hgM3DR4= -golang.org/x/term v0.34.0/go.mod h1:5jC53AEywhIVebHgPVeg0mj8OD3VO9OzclacVrqpaAw= +golang.org/x/term v0.36.0 h1:zMPR+aF8gfksFprF/Nc/rd1wRS1EI6nDBGyWAvDzx2Q= +golang.org/x/term v0.36.0/go.mod h1:Qu394IJq6V6dCBRgwqshf3mPF85AqzYEzofzRdZkWss= 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.28.0 h1:rhazDwis8INMIwQ4tpjLDzUhx6RlXqZNPEM0huQojng= -golang.org/x/text v0.28.0/go.mod h1:U8nCwOR8jO/marOQ0QbDiOngZVEBB7MAiitBuMjXiNU= -golang.org/x/time v0.12.0 h1:ScB/8o8olJvc+CQPWrK3fPZNfh7qgwCrY0zJmoEQLSE= -golang.org/x/time v0.12.0/go.mod h1:CDIdPxbZBQxdj6cxyCIdrNogrJKMJ7pr37NYpMcMDSg= +golang.org/x/text v0.30.0 h1:yznKA/E9zq54KzlzBEAWn1NXSQ8DIp/NYMy88xJjl4k= +golang.org/x/text v0.30.0/go.mod h1:yDdHFIX9t+tORqspjENWgzaCVXgk0yYnYuSZ8UzzBVM= +golang.org/x/time v0.13.0 h1:eUlYslOIt32DgYD6utsuUeHs4d7AsEYLuIAdg7FlYgI= +golang.org/x/time v0.13.0/go.mod h1:eL/Oa2bBBK0TkX57Fyni+NgnyQQN4LitPmob2Hjnqw4= 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.35.0 h1:mBffYraMEf7aa0sB+NuKnuCy8qI/9Bughn8dC2Gu5r0= -golang.org/x/tools v0.35.0/go.mod h1:NKdj5HkL/73byiZSJjqJgKn3ep7KjFkBOkR/Hps3VPw= +golang.org/x/tools v0.37.0 h1:DVSRzp7FwePZW356yEAChSdNcQo6Nsp+fex1SUW09lE= +golang.org/x/tools v0.37.0/go.mod h1:MBN5QPQtLMHVdvsbtarmTNukZDdgwdwlO5qGacAzF0w= 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= -google.golang.org/api v0.239.0 h1:2hZKUnFZEy81eugPs4e2XzIJ5SOwQg0G82bpXD65Puo= -google.golang.org/api v0.239.0/go.mod h1:cOVEm2TpdAGHL2z+UwyS+kmlGr3bVWQQ6sYEqkKje50= -google.golang.org/genproto v0.0.0-20250505200425-f936aa4a68b2 h1:1tXaIXCracvtsRxSBsYDiSBN0cuJvM7QYW+MrpIRY78= -google.golang.org/genproto v0.0.0-20250505200425-f936aa4a68b2/go.mod h1:49MsLSx0oWMOZqcpB3uL8ZOkAh1+TndpJ8ONoCBWiZk= -google.golang.org/genproto/googleapis/api v0.0.0-20250603155806-513f23925822 h1:oWVWY3NzT7KJppx2UKhKmzPq4SRe0LdCijVRwvGeikY= -google.golang.org/genproto/googleapis/api v0.0.0-20250603155806-513f23925822/go.mod h1:h3c4v36UTKzUiuaOKQ6gr3S+0hovBtUrXzTG/i3+XEc= -google.golang.org/genproto/googleapis/rpc v0.0.0-20250603155806-513f23925822 h1:fc6jSaCT0vBduLYZHYrBBNY4dsWuvgyff9noRNDdBeE= -google.golang.org/genproto/googleapis/rpc v0.0.0-20250603155806-513f23925822/go.mod h1:qQ0YXyHHx3XkvlzUtpXDkS29lDSafHMZBAZDc03LQ3A= -google.golang.org/grpc v1.73.0 h1:VIWSmpI2MegBtTuFt5/JWy2oXxtjJ/e89Z70ImfD2ok= -google.golang.org/grpc v1.73.0/go.mod h1:50sbHOUqWoCQGI8V2HQLJM0B+LMlIUjNSZmow7EVBQc= -google.golang.org/protobuf v1.36.8 h1:xHScyCOEuuwZEc6UtSOvPbAT4zRh0xcNRYekJwfqyMc= -google.golang.org/protobuf v1.36.8/go.mod h1:fuxRtAxBytpl4zzqUh6/eyUujkJdNiuEkXntxiD/uRU= +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.252.0 h1:xfKJeAJaMwb8OC9fesr369rjciQ704AjU/psjkKURSI= +google.golang.org/api v0.252.0/go.mod h1:dnHOv81x5RAmumZ7BWLShB/u7JZNeyalImxHmtTHxqw= +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-20250929231259-57b25ae835d4 h1:8XJ4pajGwOlasW+L13MnEGA8W4115jJySQtVfS2/IBU= +google.golang.org/genproto/googleapis/api v0.0.0-20250929231259-57b25ae835d4/go.mod h1:NnuHhy+bxcg30o7FnVAZbXsPHUDQ9qKWAQKCD7VxFtk= +google.golang.org/genproto/googleapis/rpc v0.0.0-20251002232023-7c0ddcbb5797 h1:CirRxTOwnRWVLKzDNrs0CXAaVozJoR4G9xvdRecrdpk= +google.golang.org/genproto/googleapis/rpc v0.0.0-20251002232023-7c0ddcbb5797/go.mod h1:HSkG/KdJWusxU1F6CNrwNDjBMgisKxGnc5dAZfT0mjQ= +google.golang.org/grpc v1.76.0 h1:UnVkv1+uMLYXoIz6o7chp59WfQUYA2ex/BXQ9rHZu7A= +google.golang.org/grpc v1.76.0/go.mod h1:Ju12QI8M6iQJtbcsV+awF5a4hfJMLi4X0JLo94ULZ6c= +google.golang.org/protobuf v1.36.10 h1:AYd7cD/uASjIL6Q9LiTjz8JLcrh/88q5UObnmY3aOOE= +google.golang.org/protobuf v1.36.10/go.mod h1:HTf+CrKn2C3g5S8VImy6tdcUvCska2kB7j23XfzDpco= gopkg.in/alecthomas/kingpin.v2 v2.2.6/go.mod h1:FMv+mEhP44yOT+4EoQTLFTRgOQ1FBLkstjWtayDeSgw= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/check.v1 v1.0.0-20190902080502-41f04d3bba15/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= @@ -578,21 +578,23 @@ 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.0.3 h1:4AuOwCGf4lLR9u3YOe2awrHygurzhO/HeQ6laiA6Sx0= gotest.tools/v3 v3.0.3/go.mod h1:Z7Lb0S5l+klDB31fvDQX8ss/FlKDxtlFlw3Oa8Ymbl8= -k8s.io/api v0.32.3 h1:Hw7KqxRusq+6QSplE3NYG4MBxZw1BZnq4aP4cJVINls= -k8s.io/api v0.32.3/go.mod h1:2wEDTXADtm/HA7CCMD8D8bK4yuBUptzaRhYcYEEYA3k= -k8s.io/apimachinery v0.32.3 h1:JmDuDarhDmA/Li7j3aPrwhpNBA94Nvk5zLeOge9HH1U= -k8s.io/apimachinery v0.32.3/go.mod h1:GpHVgxoKlTxClKcteaeuF1Ul/lDVb74KpZcxcmLDElE= -k8s.io/client-go v0.32.3 h1:RKPVltzopkSgHS7aS98QdscAgtgah/+zmpAogooIqVU= -k8s.io/client-go v0.32.3/go.mod h1:3v0+3k4IcT9bXTc4V2rt+d2ZPPG700Xy6Oi0Gdl2PaY= +k8s.io/api v0.34.1 h1:jC+153630BMdlFukegoEL8E/yT7aLyQkIVuwhmwDgJM= +k8s.io/api v0.34.1/go.mod h1:SB80FxFtXn5/gwzCoN6QCtPD7Vbu5w2n1S0J5gFfTYk= +k8s.io/apimachinery v0.34.1 h1:dTlxFls/eikpJxmAC7MVE8oOeP1zryV7iRyIjB0gky4= +k8s.io/apimachinery v0.34.1/go.mod h1:/GwIlEcWuTX9zKIg2mbw0LRFIsXwrfoVxn+ef0X13lw= +k8s.io/client-go v0.34.1 h1:ZUPJKgXsnKwVwmKKdPfw4tB58+7/Ik3CrjOEhsiZ7mY= +k8s.io/client-go v0.34.1/go.mod h1:kA8v0FP+tk6sZA0yKLRG67LWjqufAoSHA2xVGKw9Of8= 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-20241105132330-32ad38e42d3f h1:GA7//TjRY9yWGy1poLzYYJJ4JRdzg3+O6e8I+e+8T5Y= -k8s.io/kube-openapi v0.0.0-20241105132330-32ad38e42d3f/go.mod h1:R/HEjbvWI0qdfb8viZUeVZm0X6IZnxAydC7YU42CMw4= -k8s.io/utils v0.0.0-20241104100929-3ea5e8cea738 h1:M3sRQVHv7vB20Xc2ybTt7ODCeFj6JSWYFzOFnYeS6Ro= -k8s.io/utils v0.0.0-20241104100929-3ea5e8cea738/go.mod h1:OLgZIPagt7ERELqWJFomSt595RzquPNLL48iOWgYOg0= -sigs.k8s.io/json v0.0.0-20241010143419-9aa6b5e7a4b3 h1:/Rv+M11QRah1itp8VhT6HoVx1Ray9eB4DBr+K+/sCJ8= -sigs.k8s.io/json v0.0.0-20241010143419-9aa6b5e7a4b3/go.mod h1:18nIHnGi6636UCz6m8i4DhaJ65T6EruyzmoQqI2BVDo= -sigs.k8s.io/structured-merge-diff/v4 v4.4.2 h1:MdmvkGuXi/8io6ixD5wud3vOLwc1rj0aNqRlpuvjmwA= -sigs.k8s.io/structured-merge-diff/v4 v4.4.2/go.mod h1:N8f93tFZh9U6vpxwRArLiikrE5/2tiu1w1AGfACIGE4= -sigs.k8s.io/yaml v1.4.0 h1:Mk1wCc2gy/F0THH0TAp1QYyJNzRm2KCLy3o5ASXVI5E= -sigs.k8s.io/yaml v1.4.0/go.mod h1:Ejl7/uTz7PSA4eKMyQCUTnhZYNmLIl+5c2lQPGR2BPY= +k8s.io/kube-openapi v0.0.0-20250710124328-f3f2b991d03b h1:MloQ9/bdJyIu9lb1PzujOPolHyvO06MXG5TUIj2mNAA= +k8s.io/kube-openapi v0.0.0-20250710124328-f3f2b991d03b/go.mod h1:UZ2yyWbFTpuhSbFhv24aGNOdoRdJZgsIObGBUaYVsts= +k8s.io/utils v0.0.0-20250604170112-4c0f3b243397 h1:hwvWFiBzdWw1FhfY1FooPn3kzWuJ8tmbZBHi4zVsl1Y= +k8s.io/utils v0.0.0-20250604170112-4c0f3b243397/go.mod h1:OLgZIPagt7ERELqWJFomSt595RzquPNLL48iOWgYOg0= +sigs.k8s.io/json v0.0.0-20241014173422-cfa47c3a1cc8 h1:gBQPwqORJ8d8/YNZWEjoZs7npUVDpVXUUOFfW6CgAqE= +sigs.k8s.io/json v0.0.0-20241014173422-cfa47c3a1cc8/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.0 h1:jTijUJbW353oVOd9oTlifJqOGEkUw2jB/fXCbTiQEco= +sigs.k8s.io/structured-merge-diff/v6 v6.3.0/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/test/ginkgo-e2e/prometheusui/go.mod b/otelcollector/test/ginkgo-e2e/prometheusui/go.mod index a40500c22..b4e1275e8 100644 --- a/otelcollector/test/ginkgo-e2e/prometheusui/go.mod +++ b/otelcollector/test/ginkgo-e2e/prometheusui/go.mod @@ -1,8 +1,8 @@ module prometheus-collector/otelcollector/test/prometheusui -go 1.23.0 +go 1.24.0 -toolchain go1.23.2 +toolchain go1.24.11 replace prometheus-collector/otelcollector/test/utils => ../utils @@ -10,61 +10,62 @@ require ( github.com/onsi/ginkgo/v2 v2.21.0 github.com/onsi/gomega v1.35.1 github.com/prometheus/client_golang v1.23.2 - github.com/prometheus/prometheus v0.305.1-0.20250808193045-294f36e80261 - k8s.io/client-go v0.32.3 + github.com/prometheus/prometheus v0.308.1 + k8s.io/client-go v0.34.1 prometheus-collector/otelcollector/test/utils v0.0.0-00010101000000-000000000000 ) require ( - cloud.google.com/go/auth v0.16.2 // indirect + cloud.google.com/go/auth v0.17.0 // indirect cloud.google.com/go/auth/oauth2adapt v0.2.8 // indirect - cloud.google.com/go/compute/metadata v0.7.0 // indirect - github.com/Azure/azure-sdk-for-go/sdk/azcore v1.18.0 // indirect - github.com/Azure/azure-sdk-for-go/sdk/azidentity v1.10.1 // indirect - github.com/Azure/azure-sdk-for-go/sdk/internal v1.11.1 // indirect + cloud.google.com/go/compute/metadata v0.9.0 // indirect + github.com/Azure/azure-sdk-for-go/sdk/azcore v1.19.1 // indirect + github.com/Azure/azure-sdk-for-go/sdk/azidentity v1.12.0 // 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/Azure/go-ansiterm v0.0.0-20250102033503-faa5f7b0171c // indirect - github.com/AzureAD/microsoft-authentication-library-for-go v1.4.2 // indirect + github.com/AzureAD/microsoft-authentication-library-for-go v1.5.0 // indirect github.com/Code-Hex/go-generics-cache v1.5.1 // indirect github.com/Microsoft/go-winio v0.6.1 // indirect github.com/alecthomas/units v0.0.0-20240927000941-0f3dac36c52b // indirect github.com/armon/go-metrics v0.4.1 // indirect - github.com/aws/aws-sdk-go-v2 v1.37.0 // indirect - github.com/aws/aws-sdk-go-v2/config v1.29.14 // indirect - github.com/aws/aws-sdk-go-v2/credentials v1.17.67 // indirect - github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.16.30 // indirect - github.com/aws/aws-sdk-go-v2/internal/configsources v1.4.0 // indirect - github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.7.0 // indirect - github.com/aws/aws-sdk-go-v2/internal/ini v1.8.3 // indirect - github.com/aws/aws-sdk-go-v2/service/ec2 v1.237.0 // indirect - github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding v1.13.0 // indirect - github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.13.0 // indirect - github.com/aws/aws-sdk-go-v2/service/lightsail v1.44.0 // indirect - github.com/aws/aws-sdk-go-v2/service/sso v1.25.3 // indirect - github.com/aws/aws-sdk-go-v2/service/ssooidc v1.30.1 // indirect - github.com/aws/aws-sdk-go-v2/service/sts v1.33.19 // indirect - github.com/aws/smithy-go v1.22.5 // indirect + github.com/aws/aws-sdk-go-v2 v1.39.6 // indirect + github.com/aws/aws-sdk-go-v2/config v1.31.17 // indirect + github.com/aws/aws-sdk-go-v2/credentials v1.18.21 // indirect + github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.18.13 // indirect + github.com/aws/aws-sdk-go-v2/internal/configsources v1.4.13 // indirect + github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.7.13 // indirect + github.com/aws/aws-sdk-go-v2/internal/ini v1.8.4 // indirect + github.com/aws/aws-sdk-go-v2/service/ec2 v1.262.0 // indirect + github.com/aws/aws-sdk-go-v2/service/ecs v1.67.2 // indirect + github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding v1.13.3 // indirect + github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.13.13 // indirect + github.com/aws/aws-sdk-go-v2/service/lightsail v1.50.4 // indirect + github.com/aws/aws-sdk-go-v2/service/sso v1.30.1 // indirect + github.com/aws/aws-sdk-go-v2/service/ssooidc v1.35.5 // indirect + github.com/aws/aws-sdk-go-v2/service/sts v1.39.1 // indirect + github.com/aws/smithy-go v1.23.2 // indirect github.com/beorn7/perks v1.0.1 // indirect github.com/cespare/xxhash/v2 v2.3.0 // indirect - github.com/cncf/xds/go v0.0.0-20250326154945-ae57f3c0d45f // indirect + github.com/cncf/xds/go v0.0.0-20250501225837-2ac532fd4443 // indirect github.com/containerd/errdefs v1.0.0 // indirect github.com/containerd/errdefs/pkg v0.3.0 // indirect github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc // indirect - github.com/digitalocean/godo v1.157.0 // indirect + github.com/digitalocean/godo v1.168.0 // indirect github.com/distribution/reference v0.5.0 // indirect - github.com/docker/docker v28.3.0+incompatible // indirect + github.com/docker/docker v28.5.2+incompatible // indirect github.com/docker/go-connections v0.4.0 // indirect github.com/docker/go-units v0.5.0 // indirect - github.com/emicklei/go-restful/v3 v3.11.0 // indirect - github.com/envoyproxy/go-control-plane/envoy v1.32.4 // indirect + github.com/emicklei/go-restful/v3 v3.12.2 // indirect + github.com/envoyproxy/go-control-plane/envoy v1.35.0 // indirect github.com/envoyproxy/protoc-gen-validate v1.2.1 // indirect github.com/fatih/color v1.16.0 // indirect github.com/felixge/httpsnoop v1.0.4 // indirect - github.com/fsnotify/fsnotify v1.8.0 // indirect - github.com/fxamacker/cbor/v2 v2.7.0 // indirect + github.com/fsnotify/fsnotify v1.9.0 // indirect + github.com/fxamacker/cbor/v2 v2.9.0 // indirect github.com/ghodss/yaml v1.0.0 // indirect - github.com/go-logr/logr v1.4.2 // indirect + github.com/go-logr/logr v1.4.3 // indirect github.com/go-logr/stdr v1.2.2 // indirect github.com/go-openapi/jsonpointer v0.21.0 // indirect github.com/go-openapi/jsonreference v0.21.0 // indirect @@ -73,22 +74,20 @@ require ( github.com/go-task/slim-sprig/v3 v3.0.0 // 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.2.2 // indirect - github.com/golang/protobuf v1.5.4 // indirect - github.com/google/gnostic-models v0.6.8 // indirect + github.com/golang-jwt/jwt/v5 v5.3.0 // indirect + github.com/google/gnostic-models v0.7.0 // indirect github.com/google/go-cmp v0.7.0 // indirect github.com/google/go-querystring v1.1.0 // indirect - github.com/google/gofuzz v1.2.0 // indirect - github.com/google/pprof v0.0.0-20250607225305-033d6d78b36a // indirect + github.com/google/pprof v0.0.0-20250923004556-9e5a51aed1e8 // indirect github.com/google/s2a-go v0.1.9 // indirect github.com/google/uuid v1.6.0 // indirect github.com/googleapis/enterprise-certificate-proxy v0.3.6 // indirect - github.com/googleapis/gax-go/v2 v2.14.2 // indirect - github.com/gophercloud/gophercloud/v2 v2.7.0 // indirect - github.com/gorilla/websocket v1.5.0 // indirect - github.com/grafana/regexp v0.0.0-20240518133315-a468a5bfb3bc // indirect + github.com/googleapis/gax-go/v2 v2.15.0 // indirect + github.com/gophercloud/gophercloud/v2 v2.8.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.0 // indirect - github.com/hashicorp/cronexpr v1.1.2 // indirect + github.com/hashicorp/cronexpr v1.1.3 // indirect github.com/hashicorp/errwrap v1.1.0 // indirect github.com/hashicorp/go-cleanhttp v0.5.2 // indirect github.com/hashicorp/go-hclog v1.6.3 // indirect @@ -97,27 +96,28 @@ require ( github.com/hashicorp/go-retryablehttp v0.7.7 // indirect github.com/hashicorp/go-rootcerts v1.0.2 // indirect github.com/hashicorp/golang-lru v0.6.0 // indirect - github.com/hashicorp/nomad/api v0.0.0-20241218080744-e3ac00f30eec // indirect + github.com/hashicorp/nomad/api v0.0.0-20250930071859-eaa0fe0e27af // indirect github.com/hashicorp/serf v0.10.1 // indirect - github.com/hetznercloud/hcloud-go/v2 v2.21.1 // indirect + github.com/hetznercloud/hcloud-go/v2 v2.29.0 // indirect github.com/ionos-cloud/sdk-go/v6 v6.3.4 // indirect github.com/josharian/intern v1.0.0 // indirect github.com/jpillora/backoff v1.0.0 // indirect github.com/json-iterator/go v1.1.12 // indirect + github.com/klauspost/compress v1.18.2 // indirect github.com/kolo/xmlrpc v0.0.0-20220921171641-a4b6fa1dd06b // indirect github.com/kylelemons/godebug v1.1.0 // indirect - github.com/linode/linodego v1.52.2 // indirect + github.com/linode/linodego v1.60.0 // indirect github.com/mailru/easyjson v0.7.7 // indirect github.com/mattn/go-colorable v0.1.13 // indirect github.com/mattn/go-isatty v0.0.20 // indirect - github.com/miekg/dns v1.1.66 // indirect + github.com/miekg/dns v1.1.68 // indirect github.com/mitchellh/go-homedir v1.1.0 // indirect github.com/mitchellh/mapstructure v1.5.0 // indirect github.com/moby/docker-image-spec v1.3.1 // indirect github.com/moby/spdystream v0.5.0 // indirect github.com/moby/sys/sequential v0.6.0 // indirect github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd // indirect - github.com/modern-go/reflect2 v1.0.2 // indirect + github.com/modern-go/reflect2 v1.0.3-0.20250322232337-35a7c28c31ee // indirect github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822 // indirect github.com/mwitkow/go-conntrack v0.0.0-20190716064945-2f068394615f // indirect github.com/mxk/go-flowrate v0.0.0-20140419014527-cca7078d478f // indirect @@ -127,49 +127,53 @@ require ( 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/client_golang/exp v0.0.0-20251212205219-7ba246a648ca // indirect github.com/prometheus/client_model v0.6.2 // indirect - github.com/prometheus/common v0.66.1 // indirect - github.com/prometheus/otlptranslator v0.0.2 // indirect + github.com/prometheus/common v0.67.4 // indirect + github.com/prometheus/otlptranslator v1.0.0 // indirect github.com/prometheus/procfs v0.16.1 // indirect - github.com/prometheus/sigv4 v0.2.0 // indirect - github.com/scaleway/scaleway-sdk-go v1.0.0-beta.33 // indirect - github.com/spf13/pflag v1.0.5 // indirect - github.com/stackitcloud/stackit-sdk-go/core v0.17.2 // indirect + github.com/prometheus/sigv4 v0.3.0 // indirect + github.com/scaleway/scaleway-sdk-go v1.0.0-beta.35 // indirect + github.com/spf13/pflag v1.0.6 // indirect + github.com/stackitcloud/stackit-sdk-go/core v0.17.3 // indirect github.com/vultr/govultr/v2 v2.17.2 // indirect github.com/x448/float16 v0.8.4 // indirect go.opentelemetry.io/auto/sdk v1.1.0 // indirect - go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.61.0 // indirect - go.opentelemetry.io/otel v1.36.0 // indirect - go.opentelemetry.io/otel/metric v1.36.0 // indirect - go.opentelemetry.io/otel/trace v1.36.0 // indirect - go.yaml.in/yaml/v2 v2.4.2 // indirect - golang.org/x/crypto v0.41.0 // indirect - golang.org/x/exp v0.0.0-20250106191152-7588d65b2ba8 // indirect - golang.org/x/mod v0.26.0 // indirect - golang.org/x/net v0.43.0 // indirect - golang.org/x/oauth2 v0.30.0 // indirect - golang.org/x/sync v0.16.0 // indirect - golang.org/x/sys v0.35.0 // indirect - golang.org/x/term v0.34.0 // indirect - golang.org/x/text v0.28.0 // indirect - golang.org/x/time v0.12.0 // indirect - golang.org/x/tools v0.35.0 // indirect - google.golang.org/api v0.239.0 // indirect - google.golang.org/genproto/googleapis/api v0.0.0-20250603155806-513f23925822 // indirect - google.golang.org/genproto/googleapis/rpc v0.0.0-20250603155806-513f23925822 // indirect - google.golang.org/grpc v1.73.0 // indirect - google.golang.org/protobuf v1.36.8 // indirect + go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.63.0 // indirect + go.opentelemetry.io/otel v1.38.0 // indirect + go.opentelemetry.io/otel/metric v1.38.0 // indirect + go.opentelemetry.io/otel/trace v1.38.0 // indirect + go.yaml.in/yaml/v2 v2.4.3 // indirect + go.yaml.in/yaml/v3 v3.0.4 // indirect + golang.org/x/crypto v0.43.0 // indirect + golang.org/x/exp v0.0.0-20250808145144-a408d31f581a // indirect + golang.org/x/mod v0.28.0 // indirect + golang.org/x/net v0.46.0 // indirect + golang.org/x/oauth2 v0.32.0 // indirect + golang.org/x/sync v0.17.0 // indirect + golang.org/x/sys v0.37.0 // indirect + golang.org/x/term v0.36.0 // indirect + golang.org/x/text v0.30.0 // indirect + golang.org/x/time v0.13.0 // indirect + golang.org/x/tools v0.37.0 // indirect + google.golang.org/api v0.252.0 // indirect + google.golang.org/genproto/googleapis/api v0.0.0-20250929231259-57b25ae835d4 // indirect + google.golang.org/genproto/googleapis/rpc v0.0.0-20251002232023-7c0ddcbb5797 // indirect + google.golang.org/grpc v1.76.0 // indirect + google.golang.org/protobuf v1.36.10 // indirect gopkg.in/evanphx/json-patch.v4 v4.12.0 // indirect gopkg.in/inf.v0 v0.9.1 // indirect gopkg.in/ini.v1 v1.67.0 // indirect gopkg.in/yaml.v2 v2.4.0 // indirect gopkg.in/yaml.v3 v3.0.1 // indirect - k8s.io/api v0.32.3 // indirect - k8s.io/apimachinery v0.32.3 // indirect + k8s.io/api v0.34.1 // indirect + k8s.io/apimachinery v0.34.1 // indirect k8s.io/klog/v2 v2.130.1 // indirect - k8s.io/kube-openapi v0.0.0-20241105132330-32ad38e42d3f // indirect - k8s.io/utils v0.0.0-20241104100929-3ea5e8cea738 // indirect - sigs.k8s.io/json v0.0.0-20241010143419-9aa6b5e7a4b3 // indirect - sigs.k8s.io/structured-merge-diff/v4 v4.4.2 // indirect - sigs.k8s.io/yaml v1.4.0 // indirect + k8s.io/kube-openapi v0.0.0-20250710124328-f3f2b991d03b // indirect + k8s.io/utils v0.0.0-20250604170112-4c0f3b243397 // indirect + sigs.k8s.io/json v0.0.0-20241014173422-cfa47c3a1cc8 // indirect + sigs.k8s.io/randfill v1.0.0 // indirect + sigs.k8s.io/structured-merge-diff/v6 v6.3.0 // indirect + sigs.k8s.io/yaml v1.6.0 // indirect ) diff --git a/otelcollector/test/ginkgo-e2e/prometheusui/go.sum b/otelcollector/test/ginkgo-e2e/prometheusui/go.sum index 93c684a45..e7dc3ba4b 100644 --- a/otelcollector/test/ginkgo-e2e/prometheusui/go.sum +++ b/otelcollector/test/ginkgo-e2e/prometheusui/go.sum @@ -1,17 +1,17 @@ -cloud.google.com/go/auth v0.16.2 h1:QvBAGFPLrDeoiNjyfVunhQ10HKNYuOwZ5noee0M5df4= -cloud.google.com/go/auth v0.16.2/go.mod h1:sRBas2Y1fB1vZTdurouM0AzuYQBMZinrUYL8EufhtEA= +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/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.7.0 h1:PBWF+iiAerVNe8UCHxdOt6eHLVc3ydFeOCw78U8ytSU= -cloud.google.com/go/compute/metadata v0.7.0/go.mod h1:j5MvL9PprKL39t166CoB1uVHfQMs4tFQZZcKwksXUjo= -github.com/Azure/azure-sdk-for-go/sdk/azcore v1.18.0 h1:Gt0j3wceWMwPmiazCa8MzMA0MfhmPIz0Qp0FJ6qcM0U= -github.com/Azure/azure-sdk-for-go/sdk/azcore v1.18.0/go.mod h1:Ot/6aikWnKWi4l9QB7qVSwa8iMphQNqkWALMoNT3rzM= -github.com/Azure/azure-sdk-for-go/sdk/azidentity v1.10.1 h1:B+blDbyVIG3WaikNxPnhPiJ1MThR03b3vKGtER95TP4= -github.com/Azure/azure-sdk-for-go/sdk/azidentity v1.10.1/go.mod h1:JdM5psgjfBf5fo2uWOZhflPWyDBZ/O/CNAH9CtsuZE4= +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.19.1 h1:5YTBM8QDVIBN3sxBil89WfdAAqDZbyJTgh688DSxX5w= +github.com/Azure/azure-sdk-for-go/sdk/azcore v1.19.1/go.mod h1:YD5h/ldMsG0XiIw7PdyNhLxaM317eFh5yNLccNfGdyw= +github.com/Azure/azure-sdk-for-go/sdk/azidentity v1.12.0 h1:wL5IEG5zb7BVv1Kv0Xm92orq+5hB5Nipn3B5tn4Rqfk= +github.com/Azure/azure-sdk-for-go/sdk/azidentity v1.12.0/go.mod h1:J7MUC/wtRpfGVbQ5sIItY5/FuVWmvzlY21WAOfQnq/I= github.com/Azure/azure-sdk-for-go/sdk/azidentity/cache v0.3.2 h1:yz1bePFlP5Vws5+8ez6T3HWXPmwOK7Yvq8QxDBD3SKY= github.com/Azure/azure-sdk-for-go/sdk/azidentity/cache v0.3.2/go.mod h1:Pa9ZNPuoNu/GztvBSKk9J1cDJW6vk/n0zLtV4mgd8N8= -github.com/Azure/azure-sdk-for-go/sdk/internal v1.11.1 h1:FPKJS1T+clwv+OLGt13a8UjqeRuh0O4SJ3lUriThc+4= -github.com/Azure/azure-sdk-for-go/sdk/internal v1.11.1/go.mod h1:j2chePtV91HrC22tGoRX3sGY42uF13WzmmV80/OdVAA= +github.com/Azure/azure-sdk-for-go/sdk/internal v1.11.2 h1:9iefClla7iYpfYWdzPCRDozdmndjTm8DXdpCzPajMgA= +github.com/Azure/azure-sdk-for-go/sdk/internal v1.11.2/go.mod h1:XtLgD3ZD34DAaVIIAyG3objl5DynM3CQ/vMcbBNJZGI= github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/compute/armcompute/v5 v5.7.0 h1:LkHbJbgF3YyvC53aqYGR+wWQDn2Rdp9AQdGndf9QvY4= github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/compute/armcompute/v5 v5.7.0/go.mod h1:QyiQdW4f4/BIfB8ZutZ2s+28RAgfa/pT+zS++ZHyM1I= github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/internal/v2 v2.0.0 h1:PTFGRSlMKCQelWwxUyYVEUqseBJVemLyqWJjvMyt0do= @@ -24,8 +24,8 @@ github.com/Azure/go-ansiterm v0.0.0-20250102033503-faa5f7b0171c h1:udKWzYgxTojEK github.com/Azure/go-ansiterm v0.0.0-20250102033503-faa5f7b0171c/go.mod h1:xomTg63KZ2rFqZQzSB4Vz2SUXa1BpHTVz9L5PTmPC4E= github.com/AzureAD/microsoft-authentication-extensions-for-go/cache v0.1.1 h1:WJTmL004Abzc5wDB5VtZG2PJk5ndYDgVacGqfirKxjM= github.com/AzureAD/microsoft-authentication-extensions-for-go/cache v0.1.1/go.mod h1:tCcJZ0uHAmvjsVYzEFivsRTN00oz5BEsRgQHu5JZ9WE= -github.com/AzureAD/microsoft-authentication-library-for-go v1.4.2 h1:oygO0locgZJe7PpYPXT5A29ZkwJaPqcva7BVeemZOZs= -github.com/AzureAD/microsoft-authentication-library-for-go v1.4.2/go.mod h1:wP83P5OoQ5p6ip3ScPr0BAq0BvuPAvacpEuSzyouqAI= +github.com/AzureAD/microsoft-authentication-library-for-go v1.5.0 h1:XkkQbfMyuH2jTSjQjSoihryI8GINRcs4xp8lNawg0FI= +github.com/AzureAD/microsoft-authentication-library-for-go v1.5.0/go.mod h1:HKpQxkWaGLJ+D/5H8QRpyQXA1eKjxkFlOMwck5+33Jk= github.com/Code-Hex/go-generics-cache v1.5.1 h1:6vhZGc5M7Y/YD8cIUcY8kcuQLB4cHR7U+0KMqAA0KcU= github.com/Code-Hex/go-generics-cache v1.5.1/go.mod h1:qxcC9kRVrct9rHeiYpFWSoW1vxyillCVzX13KZG8dl4= github.com/DataDog/datadog-go v3.2.0+incompatible/go.mod h1:LButxg5PwREeZtORoXG3tL4fMGNddJ+vMq1mwgfaqoQ= @@ -45,50 +45,52 @@ github.com/armon/go-radix v0.0.0-20180808171621-7fddfc383310/go.mod h1:ufUuZ+zHj github.com/armon/go-radix v1.0.0/go.mod h1:ufUuZ+zHj4x4TnLV4JWEpy2hxWSpsRywHrMgIH9cCH8= github.com/armon/go-socks5 v0.0.0-20160902184237-e75332964ef5 h1:0CwZNZbxp69SHPdPJAN/hZIm0C4OItdklCFmMRWYpio= github.com/armon/go-socks5 v0.0.0-20160902184237-e75332964ef5/go.mod h1:wHh0iHkYZB8zMSxRWpUBQtwG5a7fFgvEO+odwuTv2gs= -github.com/aws/aws-sdk-go-v2 v1.37.0 h1:YtCOESR/pN4j5oA7cVHSfOwIcuh/KwHC4DOSXFbv5F0= -github.com/aws/aws-sdk-go-v2 v1.37.0/go.mod h1:9Q0OoGQoboYIAJyslFyF1f5K1Ryddop8gqMhWx/n4Wg= -github.com/aws/aws-sdk-go-v2/config v1.29.14 h1:f+eEi/2cKCg9pqKBoAIwRGzVb70MRKqWX4dg1BDcSJM= -github.com/aws/aws-sdk-go-v2/config v1.29.14/go.mod h1:wVPHWcIFv3WO89w0rE10gzf17ZYy+UVS1Geq8Iei34g= -github.com/aws/aws-sdk-go-v2/credentials v1.17.67 h1:9KxtdcIA/5xPNQyZRgUSpYOE6j9Bc4+D7nZua0KGYOM= -github.com/aws/aws-sdk-go-v2/credentials v1.17.67/go.mod h1:p3C44m+cfnbv763s52gCqrjaqyPikj9Sg47kUVaNZQQ= -github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.16.30 h1:x793wxmUWVDhshP8WW2mlnXuFrO4cOd3HLBroh1paFw= -github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.16.30/go.mod h1:Jpne2tDnYiFascUEs2AWHJL9Yp7A5ZVy3TNyxaAjD6M= -github.com/aws/aws-sdk-go-v2/internal/configsources v1.4.0 h1:H2iZoqW/v2Jnrh1FnU725Bq6KJ0k2uP63yH+DcY+HUI= -github.com/aws/aws-sdk-go-v2/internal/configsources v1.4.0/go.mod h1:L0FqLbwMXHvNC/7crWV1iIxUlOKYZUE8KuTIA+TozAI= -github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.7.0 h1:EDped/rNzAhFPhVY0sDGbtD16OKqksfA8OjF/kLEgw8= -github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.7.0/go.mod h1:uUI335jvzpZRPpjYx6ODc/wg1qH+NnoSTK/FwVeK0C0= -github.com/aws/aws-sdk-go-v2/internal/ini v1.8.3 h1:bIqFDwgGXXN1Kpp99pDOdKMTTb5d2KyU5X/BZxjOkRo= -github.com/aws/aws-sdk-go-v2/internal/ini v1.8.3/go.mod h1:H5O/EsxDWyU+LP/V8i5sm8cxoZgc2fdNR9bxlOFrQTo= -github.com/aws/aws-sdk-go-v2/service/ec2 v1.237.0 h1:XHE2G+yaDQql32FZt19QmQt4WuisqQJIkMUSCxeCUl8= -github.com/aws/aws-sdk-go-v2/service/ec2 v1.237.0/go.mod h1:t11/j/nH9i6bbsPH9xc04BJOsV2nVPUqrB67/TLDsyM= -github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding v1.13.0 h1:6+lZi2JeGKtCraAj1rpoZfKqnQ9SptseRZioejfUOLM= -github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding v1.13.0/go.mod h1:eb3gfbVIxIoGgJsi9pGne19dhCBpK6opTYpQqAmdy44= -github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.13.0 h1:eRhU3Sh8dGbaniI6B+I48XJMrTPRkK4DKo+vqIxziOU= -github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.13.0/go.mod h1:paNLV18DZ6FnWE/bd06RIKPDIFpjuvCkGKWTG/GDBeM= -github.com/aws/aws-sdk-go-v2/service/lightsail v1.44.0 h1:QiiCqpKy0prxq+92uWfESzcb7/8Y9JAamcMOzVYLEoM= -github.com/aws/aws-sdk-go-v2/service/lightsail v1.44.0/go.mod h1:ESppxYqXQCpCY+KWl3BdkQjmsQX6zxKP39SnDtRDoU0= -github.com/aws/aws-sdk-go-v2/service/sso v1.25.3 h1:1Gw+9ajCV1jogloEv1RRnvfRFia2cL6c9cuKV2Ps+G8= -github.com/aws/aws-sdk-go-v2/service/sso v1.25.3/go.mod h1:qs4a9T5EMLl/Cajiw2TcbNt2UNo/Hqlyp+GiuG4CFDI= -github.com/aws/aws-sdk-go-v2/service/ssooidc v1.30.1 h1:hXmVKytPfTy5axZ+fYbR5d0cFmC3JvwLm5kM83luako= -github.com/aws/aws-sdk-go-v2/service/ssooidc v1.30.1/go.mod h1:MlYRNmYu/fGPoxBQVvBYr9nyr948aY/WLUvwBMBJubs= -github.com/aws/aws-sdk-go-v2/service/sts v1.33.19 h1:1XuUZ8mYJw9B6lzAkXhqHlJd/XvaX32evhproijJEZY= -github.com/aws/aws-sdk-go-v2/service/sts v1.33.19/go.mod h1:cQnB8CUnxbMU82JvlqjKR2HBOm3fe9pWorWBza6MBJ4= -github.com/aws/smithy-go v1.22.5 h1:P9ATCXPMb2mPjYBgueqJNCA5S9UfktsW0tTxi+a7eqw= -github.com/aws/smithy-go v1.22.5/go.mod h1:t1ufH5HMublsJYulve2RKmHDC15xu1f26kHCp/HgceI= +github.com/aws/aws-sdk-go-v2 v1.39.6 h1:2JrPCVgWJm7bm83BDwY5z8ietmeJUbh3O2ACnn+Xsqk= +github.com/aws/aws-sdk-go-v2 v1.39.6/go.mod h1:c9pm7VwuW0UPxAEYGyTmyurVcNrbF6Rt/wixFqDhcjE= +github.com/aws/aws-sdk-go-v2/config v1.31.17 h1:QFl8lL6RgakNK86vusim14P2k8BFSxjvUkcWLDjgz9Y= +github.com/aws/aws-sdk-go-v2/config v1.31.17/go.mod h1:V8P7ILjp/Uef/aX8TjGk6OHZN6IKPM5YW6S78QnRD5c= +github.com/aws/aws-sdk-go-v2/credentials v1.18.21 h1:56HGpsgnmD+2/KpG0ikvvR8+3v3COCwaF4r+oWwOeNA= +github.com/aws/aws-sdk-go-v2/credentials v1.18.21/go.mod h1:3YELwedmQbw7cXNaII2Wywd+YY58AmLPwX4LzARgmmA= +github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.18.13 h1:T1brd5dR3/fzNFAQch/iBKeX07/ffu/cLu+q+RuzEWk= +github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.18.13/go.mod h1:Peg/GBAQ6JDt+RoBf4meB1wylmAipb7Kg2ZFakZTlwk= +github.com/aws/aws-sdk-go-v2/internal/configsources v1.4.13 h1:a+8/MLcWlIxo1lF9xaGt3J/u3yOZx+CdSveSNwjhD40= +github.com/aws/aws-sdk-go-v2/internal/configsources v1.4.13/go.mod h1:oGnKwIYZ4XttyU2JWxFrwvhF6YKiK/9/wmE3v3Iu9K8= +github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.7.13 h1:HBSI2kDkMdWz4ZM7FjwE7e/pWDEZ+nR95x8Ztet1ooY= +github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.7.13/go.mod h1:YE94ZoDArI7awZqJzBAZ3PDD2zSfuP7w6P2knOzIn8M= +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.262.0 h1:5qBb1XV/D18qtCHd3bmmxoVglI+fZ4QWuS/EB8kIXYQ= +github.com/aws/aws-sdk-go-v2/service/ec2 v1.262.0/go.mod h1:NDdDLLW5PtLLXN661gKcvJvqAH5OBXsfhMlmKVu1/pY= +github.com/aws/aws-sdk-go-v2/service/ecs v1.67.2 h1:oeICOX/+D0XXV1aMYJPXVe3CO37zYr7fB6HFgxchleU= +github.com/aws/aws-sdk-go-v2/service/ecs v1.67.2/go.mod h1:rrhqfkXfa2DSNq0RyFhnnFEAyI+yJB4+2QlZKeJvMjs= +github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding v1.13.3 h1:x2Ibm/Af8Fi+BH+Hsn9TXGdT+hKbDd5XOTZxTMxDk7o= +github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding v1.13.3/go.mod h1:IW1jwyrQgMdhisceG8fQLmQIydcT/jWY21rFhzgaKwo= +github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.13.13 h1:kDqdFvMY4AtKoACfzIGD8A0+hbT41KTKF//gq7jITfM= +github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.13.13/go.mod h1:lmKuogqSU3HzQCwZ9ZtcqOc5XGMqtDK7OIc2+DxiUEg= +github.com/aws/aws-sdk-go-v2/service/lightsail v1.50.4 h1:/1o2AYwHJojUDeMvQNyJiKZwcWCc3e4kQuTXqRLuThc= +github.com/aws/aws-sdk-go-v2/service/lightsail v1.50.4/go.mod h1:Nn2xx6HojGuNMtUFxxz/nyNLSS+tHMRsMhe3+W3wB5k= +github.com/aws/aws-sdk-go-v2/service/sso v1.30.1 h1:0JPwLz1J+5lEOfy/g0SURC9cxhbQ1lIMHMa+AHZSzz0= +github.com/aws/aws-sdk-go-v2/service/sso v1.30.1/go.mod h1:fKvyjJcz63iL/ftA6RaM8sRCtN4r4zl4tjL3qw5ec7k= +github.com/aws/aws-sdk-go-v2/service/ssooidc v1.35.5 h1:OWs0/j2UYR5LOGi88sD5/lhN6TDLG6SfA7CqsQO9zF0= +github.com/aws/aws-sdk-go-v2/service/ssooidc v1.35.5/go.mod h1:klO+ejMvYsB4QATfEOIXk8WAEwN4N0aBfJpvC+5SZBo= +github.com/aws/aws-sdk-go-v2/service/sts v1.39.1 h1:mLlUgHn02ue8whiR4BmxxGJLR2gwU6s6ZzJ5wDamBUs= +github.com/aws/aws-sdk-go-v2/service/sts v1.39.1/go.mod h1:E19xDjpzPZC7LS2knI9E6BaRFDK43Eul7vd6rSq2HWk= +github.com/aws/smithy-go v1.23.2 h1:Crv0eatJUQhaManss33hS5r40CG3ZFH+21XSkqMrIUM= +github.com/aws/smithy-go v1.23.2/go.mod h1:LEj2LM3rBRQJxPZTB4KuzZkaZYnZPnvgIhb4pu07mx0= github.com/beorn7/perks v0.0.0-20180321164747-3a771d992973/go.mod h1:Dwedo/Wpr24TaqPxmxbtue+5NUziq4I4S80YR8gNf3Q= github.com/beorn7/perks v1.0.0/go.mod h1:KWe93zE9D1o94FZ5RNwFwVgaQK1VOXiVxmqh+CedLV8= github.com/beorn7/perks v1.0.1 h1:VlbKKnNfV8bJzeqoa4cOKqO6bYr3WgKZxO8Z16+hsOM= github.com/beorn7/perks v1.0.1/go.mod h1:G2ZrVWU2WbWT9wwq4/hrbKbnv/1ERSJQ0ibhJ6rlkpw= github.com/bgentry/speakeasy v0.1.0/go.mod h1:+zsyZBPWlz7T6j88CTgSN5bM796AkVf0kBD4zp0CCIs= -github.com/cenkalti/backoff/v5 v5.0.2 h1:rIfFVxEf1QsI7E1ZHfp/B4DF/6QBAUhmgkxc0H7Zss8= -github.com/cenkalti/backoff/v5 v5.0.2/go.mod h1:rkhZdG3JZukswDf7f0cwqPNk4K0sa+F97BxZthm/crw= +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= github.com/cespare/xxhash/v2 v2.3.0 h1:UL815xU9SqsFlibzuggzjXhog7bL6oX9BbNZnL2UFvs= github.com/cespare/xxhash/v2 v2.3.0/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs= github.com/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/cncf/xds/go v0.0.0-20250326154945-ae57f3c0d45f h1:C5bqEmzEPLsHm9Mv73lSE9e9bKV23aB1vxOsmZrkl3k= -github.com/cncf/xds/go v0.0.0-20250326154945-ae57f3c0d45f/go.mod h1:W+zGtBO5Y1IgJhy4+A9GOqVhqLpfZi+vwmdNXUehLA8= +github.com/cncf/xds/go v0.0.0-20250501225837-2ac532fd4443 h1:aQ3y1lwWyqYPiWZThqv1aFbZMiM9vblcSArJRf2Irls= +github.com/cncf/xds/go v0.0.0-20250501225837-2ac532fd4443/go.mod h1:W+zGtBO5Y1IgJhy4+A9GOqVhqLpfZi+vwmdNXUehLA8= github.com/containerd/errdefs v1.0.0 h1:tg5yIfIlQIrxYtu9ajqY42W3lpS19XqdxRQeEwYG8PI= github.com/containerd/errdefs v1.0.0/go.mod h1:+YBYIdtsnF4Iw6nWZhJcqGSg/dwvV7tyJ/kCkyJ2k+M= github.com/containerd/errdefs/pkg v0.3.0 h1:9IKJ06FvyNlexW690DXuQNx2KA2cUJXx151Xdx3ZPPE= @@ -99,24 +101,22 @@ github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSs github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc h1:U9qPSI2PIWSS1VwoXQT9A3Wy9MM3WgvqSxFWenqJduM= github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= -github.com/dgryski/go-rendezvous v0.0.0-20200823014737-9f7001d12a5f h1:lO4WD4F/rVNCu3HqELle0jiPLLBs70cWOduZpkS1E78= -github.com/dgryski/go-rendezvous v0.0.0-20200823014737-9f7001d12a5f/go.mod h1:cuUVRXasLTGF7a8hSLbxyZXjz+1KgoB3wDUb6vlszIc= -github.com/digitalocean/godo v1.157.0 h1:ReELaS6FxXNf8gryUiVH0wmyUmZN8/NCmBX4gXd3F0o= -github.com/digitalocean/godo v1.157.0/go.mod h1:tYeiWY5ZXVpU48YaFv0M5irUFHXGorZpDNm7zzdWMzM= +github.com/digitalocean/godo v1.168.0 h1:mlORtUcPD91LQeJoznrH3XvfvgK3t8Wvrpph9giUT/Q= +github.com/digitalocean/godo v1.168.0/go.mod h1:xQsWpVCCbkDrWisHA72hPzPlnC+4W5w/McZY5ij9uvU= github.com/distribution/reference v0.5.0 h1:/FUIFXtfc/x2gpa5/VGfiGLuOIdYa1t65IKK2OFGvA0= github.com/distribution/reference v0.5.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.3.0+incompatible h1:ffS62aKWupCWdvcee7nBU9fhnmknOqDPaJAMtfK0ImQ= -github.com/docker/docker v28.3.0+incompatible/go.mod h1:eEKB0N0r5NX/I1kEveEz05bcu8tLC/8azJZsviup8Sk= +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-units v0.5.0 h1:69rxXcBk27SvSaaxTtLh/8llcHD8vYHT7WSdRZ/jvr4= github.com/docker/go-units v0.5.0/go.mod h1:fgPhTUdO+D/Jk86RDLlptpiXQzgHJF7gydDDbaIK4Dk= -github.com/emicklei/go-restful/v3 v3.11.0 h1:rAQeMHw1c7zTmncogyy8VvRZwtkmkZ4FxERmMY4rD+g= -github.com/emicklei/go-restful/v3 v3.11.0/go.mod h1:6n3XBCmQQb25CM2LCACGz8ukIrRry+4bhvbpWn3mrbc= -github.com/envoyproxy/go-control-plane/envoy v1.32.4 h1:jb83lalDRZSpPWW2Z7Mck/8kXZ5CQAFYVjQcdVIr83A= -github.com/envoyproxy/go-control-plane/envoy v1.32.4/go.mod h1:Gzjc5k8JcJswLjAx1Zm+wSYE20UrLtt7JZMWiWQXQEw= +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.35.0 h1:ixjkELDE+ru6idPxcHLj8LBVc2bFP7iBytj353BoHUo= +github.com/envoyproxy/go-control-plane/envoy v1.35.0/go.mod h1:09qwbGVuSWWAyN5t/b3iyVfz5+z8QWGrzkoqm/8SbEs= github.com/envoyproxy/protoc-gen-validate v1.2.1 h1:DEo3O99U8j4hBFwbJfrz9VtgcDfUKS7KJ7spH3d86P8= github.com/envoyproxy/protoc-gen-validate v1.2.1/go.mod h1:d/C80l/jxXLdfEIhX1W2TmLfsJ31lvEjwamM4DxlWXU= github.com/fatih/color v1.7.0/go.mod h1:Zm6kSWBoL9eyXnKyktHP6abPY2pDugNf5KwzbycvMj4= @@ -126,10 +126,10 @@ github.com/fatih/color v1.16.0 h1:zmkK9Ngbjj+K0yRhTVONQh1p/HknKYSlNT+vZCzyokM= github.com/fatih/color v1.16.0/go.mod h1:fL2Sau1YI5c0pdGEVCbKQbLXB6edEj1ZgiY4NijnWvE= github.com/felixge/httpsnoop v1.0.4 h1:NFTV2Zj1bL4mc9sqWACXbQFVBBg2W3GPvqp8/ESS2Wg= github.com/felixge/httpsnoop v1.0.4/go.mod h1:m8KPJKqk1gH5J9DgRY2ASl2lWCfGKXixSwevea8zH2U= -github.com/fsnotify/fsnotify v1.8.0 h1:dAwr6QBTBZIkG8roQaJjGof0pp0EeF+tNV7YBP3F/8M= -github.com/fsnotify/fsnotify v1.8.0/go.mod h1:8jBTzvmWwFyi3Pb8djgCCO5IBqzKJ/Jwo8TRcHyHii0= -github.com/fxamacker/cbor/v2 v2.7.0 h1:iM5WgngdRBanHcxugY4JySA0nk1wZorNOpTgCMedv5E= -github.com/fxamacker/cbor/v2 v2.7.0/go.mod h1:pxXPTn3joSm21Gbwsv0w9OSA2y1HFR9qXEeXQVeNoDQ= +github.com/fsnotify/fsnotify v1.9.0 h1:2Ml+OJNzbYCTzsxtv8vKSFD9PbJjmhYF14k/jKC7S9k= +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/ghodss/yaml v1.0.0 h1:wQHKEahhL6wmXdzwWG11gIVCkOv05bNOh+Rxn0yngAk= github.com/ghodss/yaml v1.0.0/go.mod h1:4dBDuWmgqj2HViK6kFavaiC9ZROes6MMH2rRYeMEF04= github.com/go-kit/kit v0.8.0/go.mod h1:xBxKIO96dXMWWy0MnWVtmwkA9/13aqxPnvrjFYMA2as= @@ -137,8 +137,8 @@ github.com/go-kit/kit v0.9.0/go.mod h1:xBxKIO96dXMWWy0MnWVtmwkA9/13aqxPnvrjFYMA2 github.com/go-logfmt/logfmt v0.3.0/go.mod h1:Qt1PoO58o5twSAckw1HlFXLmHsOX5/0LbT9GBnD5lWE= github.com/go-logfmt/logfmt v0.4.0/go.mod h1:3RMwSq7FuexP4Kalkev3ejPJsZTpXXBr9+V4qmtdjCk= github.com/go-logr/logr v1.2.2/go.mod h1:jdQByPbusPIv2/zmleS9BjJVeZ6kBagPoEUsqbVz/1A= -github.com/go-logr/logr v1.4.2 h1:6pFjapn8bFcIbiKo3XT4j/BhANplGihG6tvd+8rYgrY= -github.com/go-logr/logr v1.4.2/go.mod h1:9T104GzyrTigFIr8wt5mBrctHMim0Nb2HLGrmQ40KvY= +github.com/go-logr/logr v1.4.3 h1:CjnDlHq8ikf6E492q6eKboGOC0T8CDaOvkHCIg8idEI= +github.com/go-logr/logr v1.4.3/go.mod h1:9T104GzyrTigFIr8wt5mBrctHMim0Nb2HLGrmQ40KvY= github.com/go-logr/stdr v1.2.2 h1:hSWxHoqTgW2S2qGc0LTAI563KZ5YKYRhT3MFKZMbjag= github.com/go-logr/stdr v1.2.2/go.mod h1:mMo/vtBO5dYbehREoey6XUKy/eSumjCCveDpRre4VKE= github.com/go-openapi/jsonpointer v0.21.0 h1:YgdVicSA9vH5RiHs9TZW5oyafXZFc6+2Vc1rr/O9oNQ= @@ -157,53 +157,50 @@ github.com/go-zookeeper/zk v1.0.4/go.mod h1:nOB03cncLtlp4t+UAkGSV+9beXP/akpekBwL 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.2.2 h1:Rl4B7itRWVtYIHFrSNd7vhTiz9UpLdi6gZhZ3wEeDy8= -github.com/golang-jwt/jwt/v5 v5.2.2/go.mod h1:pqrtFR0X4osieyHYxtmOUWsAWrfe1Q5UVIyoH402zdk= +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/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= github.com/golang/protobuf v1.5.4 h1:i7eJL8qZTpSEXOPTxNKhASYpMn+8e5Q6AdndVa1dWek= github.com/golang/protobuf v1.5.4/go.mod h1:lnTiLA8Wa4RWRcIUkrtSVa5nRhsEGBg48fD6rSs7xps= github.com/google/btree v0.0.0-20180813153112-4030bb1f1f0c/go.mod h1:lNA+9X1NB3Zf8V7Ke586lFgjr2dZNuvo3lPJSGZ5JPQ= -github.com/google/btree v1.0.1 h1:gK4Kx5IaGY9CD5sPJ36FHiBJ6ZXl0kilRiiCj+jdYp4= -github.com/google/btree v1.0.1/go.mod h1:xXMiIv4Fb/0kKde4SpL7qlzvu5cMJDRkFDxJfI9uaxA= -github.com/google/gnostic-models v0.6.8 h1:yo/ABAfM5IMRsS1VnXjTBvUb61tFIHozhlYvRgGre9I= -github.com/google/gnostic-models v0.6.8/go.mod h1:5n7qKqH0f5wFt+aWF8CW6pZLLNOfYuF5OpfBSENuI8U= +github.com/google/btree v1.1.3 h1:CVpQJjYgC4VbzxeGVHfvZrv1ctoYCAI8vbl07Fcxlyg= +github.com/google/btree v1.1.3/go.mod h1:qOPhT0dTNdNzV6Z/lhRX0YXUafgPLFUh+gZMl761Gm4= +github.com/google/gnostic-models v0.7.0 h1:qwTtogB15McXDaNqTZdzPJRHvaVJlAl+HVQnLmJEJxo= +github.com/google/gnostic-models v0.7.0/go.mod h1:whL5G0m6dmc5cPxKc5bdKdEN3UjI7OUGxBlw57miDrQ= github.com/google/go-cmp v0.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.5.9/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY= github.com/google/go-cmp v0.7.0 h1:wk8382ETsv4JYUZwIsn6YpYiWiBsYLSJiTsyBybVuN8= github.com/google/go-cmp v0.7.0/go.mod h1:pXiqmnSA92OHEEa9HXL2W4E7lf9JzCmGVUdgjX3N/iU= github.com/google/go-querystring v1.1.0 h1:AnCroh3fv4ZBgVIf1Iwtovgjaw/GiKJo8M8yD/fhyJ8= github.com/google/go-querystring v1.1.0/go.mod h1:Kcdr2DB4koayq7X8pmAG4sNG59So17icRSOU623lUBU= 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-20250607225305-033d6d78b36a h1://KbezygeMJZCSHH+HgUZiTeSoiuFspbMg1ge+eFj18= -github.com/google/pprof v0.0.0-20250607225305-033d6d78b36a/go.mod h1:5hDyRhoBCxViHszMt12TnOpEI4VVi+U8Gm9iphldiMA= +github.com/google/pprof v0.0.0-20250923004556-9e5a51aed1e8 h1:ZI8gCoCjGzPsum4L21jHdQs8shFBIQih1TM9Rd/c+EQ= +github.com/google/pprof v0.0.0-20250923004556-9e5a51aed1e8/go.mod h1:I6V7YzU0XDpsHqbsyrghnFZLO1gwK6NPTNvmetQIk9U= 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.6 h1:GW/XbdyBFQ8Qe+YAmFU9uHLo7OnF5tL52HFAgMmyrf4= github.com/googleapis/enterprise-certificate-proxy v0.3.6/go.mod h1:MkHOF77EYAE7qfSuSS9PU6g4Nt4e11cnsDUowfwewLA= -github.com/googleapis/gax-go/v2 v2.14.2 h1:eBLnkZ9635krYIPD+ag1USrOAI0Nr0QYF3+/3GqO0k0= -github.com/googleapis/gax-go/v2 v2.14.2/go.mod h1:ON64QhlJkhVtSqp4v1uaK92VyZ2gmvDQsweuyLV+8+w= -github.com/gophercloud/gophercloud/v2 v2.7.0 h1:o0m4kgVcPgHlcXiWAjoVxGd8QCmvM5VU+YM71pFbn0E= -github.com/gophercloud/gophercloud/v2 v2.7.0/go.mod h1:Ki/ILhYZr/5EPebrPL9Ej+tUg4lqx71/YH2JWVeU+Qk= -github.com/gorilla/websocket v1.5.0 h1:PPwGk2jz7EePpoHN/+ClbZu8SPxiqlu12wZP/3sWmnc= -github.com/gorilla/websocket v1.5.0/go.mod h1:YR8l580nyteQvAITg2hZ9XVh4b55+EU/adAjf1fMHhE= -github.com/grafana/regexp v0.0.0-20240518133315-a468a5bfb3bc h1:GN2Lv3MGO7AS6PrRoT6yV5+wkrOpcszoIsO4+4ds248= -github.com/grafana/regexp v0.0.0-20240518133315-a468a5bfb3bc/go.mod h1:+JKpmjMGhpgPL+rXZ5nsZieVzvarn86asRlBg4uNGnk= -github.com/grpc-ecosystem/grpc-gateway/v2 v2.26.3 h1:5ZPtiqj0JL5oKWmcsq4VMaAW5ukBEgSGXEN89zeH1Jo= -github.com/grpc-ecosystem/grpc-gateway/v2 v2.26.3/go.mod h1:ndYquD05frm2vACXE1nsccT4oJzjhw2arTS2cpUD1PI= +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.8.0 h1:of2+8tT6+FbEYHfYC8GBu8TXJNsXYSNm9KuvpX7Neqo= +github.com/gophercloud/gophercloud/v2 v2.8.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= +github.com/grafana/regexp v0.0.0-20250905093917-f7b3be9d1853/go.mod h1:+JKpmjMGhpgPL+rXZ5nsZieVzvarn86asRlBg4uNGnk= +github.com/grpc-ecosystem/grpc-gateway/v2 v2.27.2 h1:8Tjv8EJ+pM1xP8mK6egEbD1OgnVTyacbefKhmbLhIhU= +github.com/grpc-ecosystem/grpc-gateway/v2 v2.27.2/go.mod h1:pkJQ2tZHJ0aFOVEEot6oZmaVEZcRme73eIFmhiVuRWs= github.com/hashicorp/consul/api v1.32.0 h1:5wp5u780Gri7c4OedGEPzmlUEzi0g2KyiPphSr6zjVg= github.com/hashicorp/consul/api v1.32.0/go.mod h1:Z8YgY0eVPukT/17ejW+l+C7zJmKwgPHtjU1q16v/Y40= github.com/hashicorp/consul/sdk v0.16.1 h1:V8TxTnImoPD5cj0U9Spl0TUxcytjcbbJeADFF07KdHg= github.com/hashicorp/consul/sdk v0.16.1/go.mod h1:fSXvwxB2hmh1FMZCNl6PwX0Q/1wdWtHJcZ7Ea5tns0s= -github.com/hashicorp/cronexpr v1.1.2 h1:wG/ZYIKT+RT3QkOdgYc+xsKWVRgnxJ1OJtjjy84fJ9A= -github.com/hashicorp/cronexpr v1.1.2/go.mod h1:P4wA0KBl9C5q2hABiMO7cp6jcIg96CDh1Efb3g1PWA4= +github.com/hashicorp/cronexpr v1.1.3 h1:rl5IkxXN2m681EfivTlccqIryzYJSXRGRNa0xeG7NA4= +github.com/hashicorp/cronexpr v1.1.3/go.mod h1:P4wA0KBl9C5q2hABiMO7cp6jcIg96CDh1Efb3g1PWA4= github.com/hashicorp/errwrap v1.0.0/go.mod h1:YH+1FKiLXxHSkmPseP+kNlulaMuP3n2brvKWEqk/Jc4= github.com/hashicorp/errwrap v1.1.0 h1:OxrOeh75EUXMY8TBjag2fzXGZ40LB6IKw45YeGUDY2I= github.com/hashicorp/errwrap v1.1.0/go.mod h1:YH+1FKiLXxHSkmPseP+kNlulaMuP3n2brvKWEqk/Jc4= @@ -244,16 +241,16 @@ github.com/hashicorp/logutils v1.0.0/go.mod h1:QIAnNjmIWmVIIkWDTG1z5v++HQmx9WQRO github.com/hashicorp/mdns v1.0.4/go.mod h1:mtBihi+LeNXGtG8L9dX59gAEa12BDtBQSp4v/YAJqrc= github.com/hashicorp/memberlist v0.5.0 h1:EtYPN8DpAURiapus508I4n9CzHs2W+8NZGbmmR/prTM= github.com/hashicorp/memberlist v0.5.0/go.mod h1:yvyXLpo0QaGE59Y7hDTsTzDD25JYBZ4mHgHUZ8lrOI0= -github.com/hashicorp/nomad/api v0.0.0-20241218080744-e3ac00f30eec h1:+YBzb977VrmffaCX/OBm17dEVJUcWn5dW+eqs3aIJ/A= -github.com/hashicorp/nomad/api v0.0.0-20241218080744-e3ac00f30eec/go.mod h1:svtxn6QnrQ69P23VvIWMR34tg3vmwLz4UdUzm1dSCgE= +github.com/hashicorp/nomad/api v0.0.0-20250930071859-eaa0fe0e27af h1:ScAYf8O+9xTqTJPZH8MIlUfO+ak8cb31rW1aYJgS+jE= +github.com/hashicorp/nomad/api v0.0.0-20250930071859-eaa0fe0e27af/go.mod h1:sldFTIgs+FsUeKU3LwVjviAIuksxD8TzDOn02MYwslE= 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.21.1 h1:IH3liW8/cCRjfJ4cyqYvw3s1ek+KWP8dl1roa0lD8JM= -github.com/hetznercloud/hcloud-go/v2 v2.21.1/go.mod h1:XOaYycZJ3XKMVWzmqQ24/+1V7ormJHmPdck/kxrNnQA= +github.com/hetznercloud/hcloud-go/v2 v2.29.0 h1:LzNFw5XLBfftyu3WM1sdSLjOZBlWORtz2hgGydHaYV8= +github.com/hetznercloud/hcloud-go/v2 v2.29.0/go.mod h1:XBU4+EDH2KVqu2KU7Ws0+ciZcX4ygukQl/J0L5GS8P8= github.com/ionos-cloud/sdk-go/v6 v6.3.4 h1:jTvGl4LOF8v8OYoEIBNVwbFoqSGAFqn6vGE7sp7/BqQ= github.com/ionos-cloud/sdk-go/v6 v6.3.4/go.mod h1:wCVwNJ/21W29FWFUv+fNawOTMlFoP1dS3L+ZuztFW48= -github.com/jarcoal/httpmock v1.4.0 h1:BvhqnH0JAYbNudL2GMJKgOHe2CtKlzJ/5rWKyp+hc2k= -github.com/jarcoal/httpmock v1.4.0/go.mod h1:ftW1xULwo+j0R0JJkJIIi7UKigZUXCLLanykgjwBXL0= +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/josharian/intern v1.0.0 h1:vlS4z54oSdjm0bgjRigI+G1HpF+tI+9rE5LLzOg8HmY= github.com/josharian/intern v1.0.0/go.mod h1:5DoeVV0s6jJacbCEi61lwdGj/aVlrQvzHFFd8Hwg//Y= github.com/jpillora/backoff v1.0.0 h1:uvFg412JmmHBHw7iwprIxkPMI+sGQ4kzOWsMeHnm2EA= @@ -267,8 +264,8 @@ 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.0 h1:c/Cqfb0r+Yi+JtIEq73FWXVkRonBlf0CRNYc8Zttxdo= -github.com/klauspost/compress v1.18.0/go.mod h1:2Pp+KzxcywXVXMr50+X0Q/Lsb43OQHYWRCY2AiWywWQ= +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/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= @@ -282,8 +279,8 @@ github.com/kr/text v0.2.0 h1:5Nx0Ya0ZqY2ygV366QzturHI13Jq95ApcVaJBhpS+AY= github.com/kr/text v0.2.0/go.mod h1:eLer722TekiGuMkidMxC/pM04lWEeraHUUmBw8l2grE= github.com/kylelemons/godebug v1.1.0 h1:RPNrshWIDI6G2gRW9EHilWtl7Z6Sb1BR0xunSBf0SNc= github.com/kylelemons/godebug v1.1.0/go.mod h1:9/0rRGxNHcop5bhtWyNeEfOS8JIWk580+fNqagV/RAw= -github.com/linode/linodego v1.52.2 h1:N9ozU27To1LMSrDd8WvJZ5STSz1eGYdyLnxhAR/dIZg= -github.com/linode/linodego v1.52.2/go.mod h1:bI949fZaVchjWyKIA08hNyvAcV6BAS+PM2op3p7PAWA= +github.com/linode/linodego v1.60.0 h1:SgsebJFRCi+lSmYy+C40wmKZeJllGGm+W12Qw4+yVdI= +github.com/linode/linodego v1.60.0/go.mod h1:1+Bt0oTz5rBnDOJbGhccxn7LYVytXTIIfAy7QYmijDs= github.com/mailru/easyjson v0.7.7 h1:UGYAvKxe3sBsEDzO8ZeWOSlIQfWFlxbzLZe7hwFURr0= github.com/mailru/easyjson v0.7.7/go.mod h1:xzfreul335JAWq5oZzymOObrkdz5UnU4kGfJJLY9Nlc= github.com/mattn/go-colorable v0.0.9/go.mod h1:9vuHe8Xs5qXnSaW/c/ABM9alt+Vo+STaOChaDxuIBZU= @@ -306,13 +303,11 @@ github.com/maxatome/go-testdeep v1.12.0 h1:Ql7Go8Tg0C1D/uMMX59LAoYK7LffeJQ6X2T04 github.com/maxatome/go-testdeep v1.12.0/go.mod h1:lPZc/HAcJMP92l7yI6TRz1aZN5URwUBUAfUNvrclaNM= 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.66 h1:FeZXOS3VCVsKnEAd+wBkjMC3D2K+ww66Cq3VnCINuJE= -github.com/miekg/dns v1.1.66/go.mod h1:jGFzBsSNbJw6z1HYut1RKBKHA9PBdxeHrZG8J+gC2WE= +github.com/miekg/dns v1.1.68 h1:jsSRkNozw7G/mnmXULynzMNIsgY2dHC8LO6U6Ij2JEA= +github.com/miekg/dns v1.1.68/go.mod h1:fujopn7TB3Pu3JM69XaawiU0wqjpL9/8xGop5UrTPps= 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= -github.com/mitchellh/go-testing-interface v1.14.1 h1:jrgshOhYAUVNMAJiKbEu7EqAwgJJ2JqpQmpLJOu07cU= -github.com/mitchellh/go-testing-interface v1.14.1/go.mod h1:gfgS7OtZj6MA4U1UrDRp04twqAjfvlZyCfX3sDjEym8= github.com/mitchellh/mapstructure v0.0.0-20160808181253-ca63d7c062ee/go.mod h1:FVVH3fgwuzCH5S8UJGiWEs2h04kUh9fWfEaFds41c1Y= github.com/mitchellh/mapstructure v1.5.0 h1:jeMsZIYE/09sWLaz43PL7Gy6RuMjD2eJVyuac5Z2hdY= github.com/mitchellh/mapstructure v1.5.0/go.mod h1:bFUtVrKA4DC2yAKiSyO/QUcy7e+RRV2QTWOzhPopBRo= @@ -331,8 +326,9 @@ github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd h1:TRLaZ9cD/w github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q= github.com/modern-go/reflect2 v0.0.0-20180701023420-4b7aa43c6742/go.mod h1:bx2lNnkwVCuqBIxFjflWJWanXIb3RllmbCylyMrvgv0= github.com/modern-go/reflect2 v1.0.1/go.mod h1:bx2lNnkwVCuqBIxFjflWJWanXIb3RllmbCylyMrvgv0= -github.com/modern-go/reflect2 v1.0.2 h1:xBagoLtFs94CBntxluKeaWgTMpvLxC4ur3nMaC9Gz0M= github.com/modern-go/reflect2 v1.0.2/go.mod h1:yWuevngMOJpCy52FWWMvUC8ws7m/LJsjYzDa0/r8luk= +github.com/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/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822 h1:C3w9PqII01/Oq1c1nUAm88MOHcQC9l5mIlSMApZMrHA= @@ -373,6 +369,8 @@ github.com/prometheus/client_golang v1.0.0/go.mod h1:db9x61etRT2tGnBNRi70OPL5Fsn github.com/prometheus/client_golang v1.4.0/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_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= @@ -380,38 +378,36 @@ github.com/prometheus/client_model v0.6.2 h1:oBsgwpGs7iVziMvrGhE53c/GrLUsZdHnqNw github.com/prometheus/client_model v0.6.2/go.mod h1:y3m2F6Gdpfy6Ut/GBsUqTWZqCUvMVzSfMLjcu6wAwpE= github.com/prometheus/common v0.4.1/go.mod h1:TNfzLD0ON7rHzMJeJkieUDPYmFC7Snx/y86RQel1bk4= github.com/prometheus/common v0.9.1/go.mod h1:yhUN8i9wzaXS3w1O07YhxHEBxD+W35wd8bs7vj7HSQ4= -github.com/prometheus/common v0.66.1 h1:h5E0h5/Y8niHc5DlaLlWLArTQI7tMrsfQjHV+d9ZoGs= -github.com/prometheus/common v0.66.1/go.mod h1:gcaUsgf3KfRSwHY4dIMXLPV0K/Wg1oZ8+SbZk/HH/dA= -github.com/prometheus/otlptranslator v0.0.2 h1:+1CdeLVrRQ6Psmhnobldo0kTp96Rj80DRXRd5OSnMEQ= -github.com/prometheus/otlptranslator v0.0.2/go.mod h1:P8AwMgdD7XEr6QRUJ2QWLpiAZTgTE2UYgjlu3svompI= +github.com/prometheus/common v0.67.4 h1:yR3NqWO1/UyO1w2PhUvXlGQs/PtFmoveVO0KZ4+Lvsc= +github.com/prometheus/common v0.67.4/go.mod h1:gP0fq6YjjNCLssJCQp0yk4M8W6ikLURwkdd/YKtTbyI= +github.com/prometheus/otlptranslator v1.0.0 h1:s0LJW/iN9dkIH+EnhiD3BlkkP5QVIUVEoIwkU+A6qos= +github.com/prometheus/otlptranslator v1.0.0/go.mod h1:vRYWnXvI6aWGpsdY/mOT/cbeVRBlPWtBNDb7kGR3uKM= github.com/prometheus/procfs v0.0.0-20181005140218-185b4288413d/go.mod h1:c3At6R/oaqEKCNdg8wHV1ftS6bRYblBhIjjI8uT2IGk= github.com/prometheus/procfs v0.0.2/go.mod h1:TjEm7ze935MbeOT/UhFTIMYKhuLP4wbCsTZCD3I8kEA= github.com/prometheus/procfs v0.0.8/go.mod h1:7Qr8sr6344vo1JqZ6HhLceV9o3AJ1Ff+GxbHq6oeK9A= github.com/prometheus/procfs v0.16.1 h1:hZ15bTNuirocR6u0JZ6BAHHmwS1p8B4P6MRqxtzMyRg= github.com/prometheus/procfs v0.16.1/go.mod h1:teAbpZRB1iIAJYREa1LsoWUXykVXA1KlTmWl8x/U+Is= -github.com/prometheus/prometheus v0.305.1-0.20250808193045-294f36e80261 h1:EtTzzd5UW9TXf9C8BUHv66RgdjG51efqGKWmlxMqjgs= -github.com/prometheus/prometheus v0.305.1-0.20250808193045-294f36e80261/go.mod h1:KMw//femth6oNhcWeCrh4Er45VNPkNac87cTK6er/dA= -github.com/prometheus/sigv4 v0.2.0 h1:qDFKnHYFswJxdzGeRP63c4HlH3Vbn1Yf/Ao2zabtVXk= -github.com/prometheus/sigv4 v0.2.0/go.mod h1:D04rqmAaPPEUkjRQxGqjoxdyJuyCh6E0M18fZr0zBiE= -github.com/redis/go-redis/v9 v9.8.0 h1:q3nRvjrlge/6UD7eTu/DSg2uYiU2mCL0G/uzBWqhicI= -github.com/redis/go-redis/v9 v9.8.0/go.mod h1:huWgSWd8mW6+m0VPhJjSSQ+d6Nh1VICQ6Q5lHuCH/Iw= +github.com/prometheus/prometheus v0.308.1 h1:ApMNI/3/es3Ze90Z7CMb+wwU2BsSYur0m5VKeqHj7h4= +github.com/prometheus/prometheus v0.308.1/go.mod h1:aHjYCDz9zKRyoUXvMWvu13K9XHOkBB12XrEqibs3e0A= +github.com/prometheus/sigv4 v0.3.0 h1:QIG7nTbu0JTnNidGI1Uwl5AGVIChWUACxn2B/BQ1kms= +github.com/prometheus/sigv4 v0.3.0/go.mod h1:fKtFYDus2M43CWKMNtGvFNHGXnAJJEGZbiYCmVp/F8I= github.com/rogpeppe/go-internal v1.13.1 h1:KvO1DLK/DRN07sQ1LQKScxyZJuNnedQ5/wKSR38lUII= github.com/rogpeppe/go-internal v1.13.1/go.mod h1:uMEvuHeurkdAXX61udpOXGD/AzZDWNMNyH2VO9fmH0o= 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.33 h1:KhF0WejiUTDbL5X55nXowP7zNopwpowa6qaMAWyIE+0= -github.com/scaleway/scaleway-sdk-go v1.0.0-beta.33/go.mod h1:792k1RTU+5JeMXm35/e2Wgp71qPH/DmDoZrRc+EFZDk= +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/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.7.1 h1:UJcjSAI3aUKx52kfcfhblgyhZceouhvvs3OYdWgn+PY= -github.com/shoenig/test v1.7.1/go.mod h1:UxJ6u/x2v/TNs/LoLxBNJRV9DiwBBKYxXSyczsBHFoI= +github.com/shoenig/test v1.12.2 h1:ZVT8NeIUwGWpZcKaepPmFMoNQ3sVpxvqUh/MAqwFiJI= +github.com/shoenig/test v1.12.2/go.mod h1:UxJ6u/x2v/TNs/LoLxBNJRV9DiwBBKYxXSyczsBHFoI= github.com/sirupsen/logrus v1.2.0/go.mod h1:LxeOpSwHxABJmUn/MG1IvRgCAasNZTLOkJPxbbu5VWo= github.com/sirupsen/logrus v1.4.2/go.mod h1:tLMulIdttU9McNUspp0xgXVQah82FyeX6MwdIuYE2rE= github.com/sirupsen/logrus v1.9.0 h1:trlNQbNUG3OdDrDil03MCb1H2o9nJ1x4/5LYw7byDE0= github.com/sirupsen/logrus v1.9.0/go.mod h1:naHLuLoDiP4jHNo9R0sCBMtWGeIprob74mVsIT4qYEQ= -github.com/spf13/pflag v1.0.5 h1:iy+VFUOCP1a+8yFto/drg2CJ5u0yRoB7fZw3DKv/JXA= -github.com/spf13/pflag v1.0.5/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg= -github.com/stackitcloud/stackit-sdk-go/core v0.17.2 h1:jPyn+i8rkp2hM80+hOg0B/1EVRbMt778Tr5RWyK1m2E= -github.com/stackitcloud/stackit-sdk-go/core v0.17.2/go.mod h1:8KIw3czdNJ9sdil9QQimxjR6vHjeINFrRv0iZ67wfn0= +github.com/spf13/pflag v1.0.6 h1:jFzHGLGAlb3ruxLB8MhbI6A8+AQX/2eW4qeyNZXNp2o= +github.com/spf13/pflag v1.0.6/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg= +github.com/stackitcloud/stackit-sdk-go/core v0.17.3 h1:GsZGmRRc/3GJLmCUnsZswirr5wfLRrwavbnL/renOqg= +github.com/stackitcloud/stackit-sdk-go/core v0.17.3/go.mod h1:HBCXJGPgdRulplDzhrmwC+Dak9B/x0nzNtmOpu+1Ahg= 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= @@ -437,43 +433,45 @@ github.com/yuin/goldmark v1.1.27/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9de github.com/yuin/goldmark v1.2.1/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= go.opentelemetry.io/auto/sdk v1.1.0 h1:cH53jehLUN6UFLY71z+NDOiNJqDdPRaXzTel0sJySYA= go.opentelemetry.io/auto/sdk v1.1.0/go.mod h1:3wSPjt5PWp2RhlCcmmOial7AvC4DQqZb7a7wCow3W8A= -go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.61.0 h1:F7Jx+6hwnZ41NSFTO5q4LYDtJRXBf2PD0rNBkeB/lus= -go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.61.0/go.mod h1:UHB22Z8QsdRDrnAtX4PntOl36ajSxcdUMt1sF7Y6E7Q= -go.opentelemetry.io/otel v1.36.0 h1:UumtzIklRBY6cI/lllNZlALOF5nNIzJVb16APdvgTXg= -go.opentelemetry.io/otel v1.36.0/go.mod h1:/TcFMXYjyRNh8khOAO9ybYkqaDBb/70aVwkNML4pP8E= -go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.36.0 h1:dNzwXjZKpMpE2JhmO+9HsPl42NIXFIFSUSSs0fiqra0= -go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.36.0/go.mod h1:90PoxvaEB5n6AOdZvi+yWJQoE95U8Dhhw2bSyRqnTD0= -go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp v1.36.0 h1:nRVXXvf78e00EwY6Wp0YII8ww2JVWshZ20HfTlE11AM= -go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp v1.36.0/go.mod h1:r49hO7CgrxY9Voaj3Xe8pANWtr0Oq916d0XAmOoCZAQ= -go.opentelemetry.io/otel/metric v1.36.0 h1:MoWPKVhQvJ+eeXWHFBOPoBOi20jh6Iq2CcCREuTYufE= -go.opentelemetry.io/otel/metric v1.36.0/go.mod h1:zC7Ks+yeyJt4xig9DEw9kuUFe5C3zLbVjV2PzT6qzbs= -go.opentelemetry.io/otel/sdk v1.36.0 h1:b6SYIuLRs88ztox4EyrvRti80uXIFy+Sqzoh9kFULbs= -go.opentelemetry.io/otel/sdk v1.36.0/go.mod h1:+lC+mTgD+MUWfjJubi2vvXWcVxyr9rmlshZni72pXeY= -go.opentelemetry.io/otel/sdk/metric v1.36.0 h1:r0ntwwGosWGaa0CrSt8cuNuTcccMXERFwHX4dThiPis= -go.opentelemetry.io/otel/sdk/metric v1.36.0/go.mod h1:qTNOhFDfKRwX0yXOqJYegL5WRaW376QbB7P4Pb0qva4= -go.opentelemetry.io/otel/trace v1.36.0 h1:ahxWNuqZjpdiFAyrIoQ4GIiAIhxAunQR6MUoKrsNd4w= -go.opentelemetry.io/otel/trace v1.36.0/go.mod h1:gQ+OnDZzrybY4k4seLzPAWNwVBBVlF2szhehOBB/tGA= -go.opentelemetry.io/proto/otlp v1.6.0 h1:jQjP+AQyTf+Fe7OKj/MfkDrmK4MNVtw2NpXsf9fefDI= -go.opentelemetry.io/proto/otlp v1.6.0/go.mod h1:cicgGehlFuNdgZkcALOCh3VE6K/u2tAjzlRhDwmVpZc= +go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.63.0 h1:RbKq8BG0FI8OiXhBfcRtqqHcZcka+gU3cskNuf05R18= +go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.63.0/go.mod h1:h06DGIukJOevXaj/xrNjhi/2098RZzcLTbc0jDAUbsg= +go.opentelemetry.io/otel v1.38.0 h1:RkfdswUDRimDg0m2Az18RKOsnI8UDzppJAtj01/Ymk8= +go.opentelemetry.io/otel v1.38.0/go.mod h1:zcmtmQ1+YmQM9wrNsTGV/q/uyusom3P8RxwExxkZhjM= +go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.38.0 h1:GqRJVj7UmLjCVyVJ3ZFLdPRmhDUp2zFmQe3RHIOsw24= +go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.38.0/go.mod h1:ri3aaHSmCTVYu2AWv44YMauwAQc0aqI9gHKIcSbI1pU= +go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp v1.38.0 h1:aTL7F04bJHUlztTsNGJ2l+6he8c+y/b//eR0jjjemT4= +go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp v1.38.0/go.mod h1:kldtb7jDTeol0l3ewcmd8SDvx3EmIE7lyvqbasU3QC4= +go.opentelemetry.io/otel/metric v1.38.0 h1:Kl6lzIYGAh5M159u9NgiRkmoMKjvbsKtYRwgfrA6WpA= +go.opentelemetry.io/otel/metric v1.38.0/go.mod h1:kB5n/QoRM8YwmUahxvI3bO34eVtQf2i4utNVLr9gEmI= +go.opentelemetry.io/otel/sdk v1.38.0 h1:l48sr5YbNf2hpCUj/FoGhW9yDkl+Ma+LrVl8qaM5b+E= +go.opentelemetry.io/otel/sdk v1.38.0/go.mod h1:ghmNdGlVemJI3+ZB5iDEuk4bWA3GkTpW+DOoZMYBVVg= +go.opentelemetry.io/otel/sdk/metric v1.38.0 h1:aSH66iL0aZqo//xXzQLYozmWrXxyFkBJ6qT5wthqPoM= +go.opentelemetry.io/otel/sdk/metric v1.38.0/go.mod h1:dg9PBnW9XdQ1Hd6ZnRz689CbtrUp0wMMs9iPcgT9EZA= +go.opentelemetry.io/otel/trace v1.38.0 h1:Fxk5bKrDZJUH+AMyyIXGcFAPah0oRcT+LuNtJrmcNLE= +go.opentelemetry.io/otel/trace v1.38.0/go.mod h1:j1P9ivuFsTceSWe1oY+EeW3sc+Pp42sO++GHkg4wwhs= +go.opentelemetry.io/proto/otlp v1.7.1 h1:gTOMpGDb0WTBOP8JaO72iL3auEZhVmAQg4ipjOVAtj4= +go.opentelemetry.io/proto/otlp v1.7.1/go.mod h1:b2rVh6rfI/s2pHWNlB7ILJcRALpcNDzKhACevjI+ZnE= 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.yaml.in/yaml/v2 v2.4.2 h1:DzmwEr2rDGHl7lsFgAHxmNz/1NlQ7xLIrlN2h5d1eGI= -go.yaml.in/yaml/v2 v2.4.2/go.mod h1:081UH+NErpNdqlCXm3TtEran0rJZGxAYx9hb/ELlsPU= +go.yaml.in/yaml/v2 v2.4.3 h1:6gvOSjQoTB3vt1l+CU+tSyi/HOjfOjRLJ4YwYZGwRO0= +go.yaml.in/yaml/v2 v2.4.3/go.mod h1:zSxWcmIDjOzPXpjlTTbAsKokqkDNAVtZO0WOMiT90s8= +go.yaml.in/yaml/v3 v3.0.4 h1:tfq32ie2Jv2UxXFdLJdh3jXuOzWiL1fo0bu/FbuKpbc= +go.yaml.in/yaml/v3 v3.0.4/go.mod h1:DhzuOOF2ATzADvBadXxruRBLzYTpT36CKvDb3+aBEFg= golang.org/x/crypto v0.0.0-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.41.0 h1:WKYxWedPGCTVVl5+WHSSrOBT0O8lx32+zxmHxijgXp4= -golang.org/x/crypto v0.41.0/go.mod h1:pO5AFd7FA68rFak7rOAGVuygIISepHftHnr8dr6+sUc= -golang.org/x/exp v0.0.0-20250106191152-7588d65b2ba8 h1:yqrTHse8TCMW1M1ZCP+VAR/l0kKxwaAIqN/il7x4voA= -golang.org/x/exp v0.0.0-20250106191152-7588d65b2ba8/go.mod h1:tujkw807nyEEAamNbDrEGzRav+ilXA7PCRAd6xsmwiU= +golang.org/x/crypto v0.43.0 h1:dduJYIi3A3KOfdGOHX8AVZ/jGiyPa3IbBozJ5kNuE04= +golang.org/x/crypto v0.43.0/go.mod h1:BFbav4mRNlXJL4wNeejLpWxB7wMbc79PdRGhWKncxR0= +golang.org/x/exp v0.0.0-20250808145144-a408d31f581a h1:Y+7uR/b1Mw2iSXZ3G//1haIiSElDQZ8KWh0h+sZPG90= +golang.org/x/exp v0.0.0-20250808145144-a408d31f581a/go.mod h1:rT6SFzZ7oxADUDx58pcaKFTcZ+inxAa9fTrYx/uVYwg= 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.26.0 h1:EGMPT//Ezu+ylkCijjPc+f4Aih7sZvaAr+O3EHBxvZg= -golang.org/x/mod v0.26.0/go.mod h1:/j6NAhSk8iQ723BGAUyoAcn7SlD7s15Dp9Nd/SfeaFQ= +golang.org/x/mod v0.28.0 h1:gQBtGhjxykdjY9YhZpSlZIsbnaE2+PgjfLWUQTnoZ1U= +golang.org/x/mod v0.28.0/go.mod h1:yfB/L0NOf/kmEbXjzCPOx1iK1fRutOydrCMsqRhEBxI= 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= @@ -483,18 +481,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.43.0 h1:lat02VYK2j4aLzMzecihNvTlJNQUq316m2Mr9rnM6YE= -golang.org/x/net v0.43.0/go.mod h1:vhO1fvI4dGsIjh73sWfUVjj3N7CA9WkKJNQm2svM6Jg= -golang.org/x/oauth2 v0.30.0 h1:dnDm7JmhM45NNpd8FDDeLhK6FwqbOf4MLCM9zb1BOHI= -golang.org/x/oauth2 v0.30.0/go.mod h1:B++QgG3ZKulg6sRPGD/mqlHQs5rB3Ml9erfeDY7xKlU= +golang.org/x/net v0.46.0 h1:giFlY12I07fugqwPuWJi68oOnpfqFnJIJzaIIm2JVV4= +golang.org/x/net v0.46.0/go.mod h1:Q9BGdFy1y4nkUwiLvT5qtyhAnEHgnQ/zd8PfU6nc210= +golang.org/x/oauth2 v0.32.0 h1:jsCblLleRMDrxMN29H3z/k1KliIvpLgCkE6R8FXXNgY= +golang.org/x/oauth2 v0.32.0/go.mod h1:lzm5WQJQwKZ3nwavOZ3IS5Aulzxi68dUSgRHujetwEA= golang.org/x/sync v0.0.0-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.16.0 h1:ycBJEhp9p4vXvUZNszeOq0kGTPghopOL8q0fq3vstxw= -golang.org/x/sync v0.16.0/go.mod h1:1dzgHSNfp02xaA81J2MS99Qcpr2w7fw1gpm99rleRqA= +golang.org/x/sync v0.17.0 h1:l60nONMj9l5drqw6jlhIELNv9I0A4OFgRsG9k2oT9Ug= +golang.org/x/sync v0.17.0/go.mod h1:9KTHXmSnoGruLpwFjVSX0lNNA75CykiMECbovNTZqGI= 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= @@ -520,42 +518,44 @@ golang.org/x/sys v0.0.0-20220728004956-3c1f35247d10/go.mod h1:oPkhp1MJrh7nUepCBc 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.35.0 h1:vz1N37gP5bs89s7He8XuIYXpyY0+QlsKmzipCbUtyxI= -golang.org/x/sys v0.35.0/go.mod h1:BJP2sWEmIv4KK5OTEluFJCKSidICx8ciO85XgH3Ak8k= +golang.org/x/sys v0.37.0 h1:fdNQudmxPjkdUTPnLn5mdQv7Zwvbvpaxqs831goi9kQ= +golang.org/x/sys v0.37.0/go.mod h1:OgkHotnGiDImocRcuBABYBEXf8A9a87e/uXjp9XT3ks= golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= -golang.org/x/term v0.34.0 h1:O/2T7POpk0ZZ7MAzMeWFSg6S5IpWd/RXDlM9hgM3DR4= -golang.org/x/term v0.34.0/go.mod h1:5jC53AEywhIVebHgPVeg0mj8OD3VO9OzclacVrqpaAw= +golang.org/x/term v0.36.0 h1:zMPR+aF8gfksFprF/Nc/rd1wRS1EI6nDBGyWAvDzx2Q= +golang.org/x/term v0.36.0/go.mod h1:Qu394IJq6V6dCBRgwqshf3mPF85AqzYEzofzRdZkWss= 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.28.0 h1:rhazDwis8INMIwQ4tpjLDzUhx6RlXqZNPEM0huQojng= -golang.org/x/text v0.28.0/go.mod h1:U8nCwOR8jO/marOQ0QbDiOngZVEBB7MAiitBuMjXiNU= -golang.org/x/time v0.12.0 h1:ScB/8o8olJvc+CQPWrK3fPZNfh7qgwCrY0zJmoEQLSE= -golang.org/x/time v0.12.0/go.mod h1:CDIdPxbZBQxdj6cxyCIdrNogrJKMJ7pr37NYpMcMDSg= +golang.org/x/text v0.30.0 h1:yznKA/E9zq54KzlzBEAWn1NXSQ8DIp/NYMy88xJjl4k= +golang.org/x/text v0.30.0/go.mod h1:yDdHFIX9t+tORqspjENWgzaCVXgk0yYnYuSZ8UzzBVM= +golang.org/x/time v0.13.0 h1:eUlYslOIt32DgYD6utsuUeHs4d7AsEYLuIAdg7FlYgI= +golang.org/x/time v0.13.0/go.mod h1:eL/Oa2bBBK0TkX57Fyni+NgnyQQN4LitPmob2Hjnqw4= 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.35.0 h1:mBffYraMEf7aa0sB+NuKnuCy8qI/9Bughn8dC2Gu5r0= -golang.org/x/tools v0.35.0/go.mod h1:NKdj5HkL/73byiZSJjqJgKn3ep7KjFkBOkR/Hps3VPw= +golang.org/x/tools v0.37.0 h1:DVSRzp7FwePZW356yEAChSdNcQo6Nsp+fex1SUW09lE= +golang.org/x/tools v0.37.0/go.mod h1:MBN5QPQtLMHVdvsbtarmTNukZDdgwdwlO5qGacAzF0w= 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= -google.golang.org/api v0.239.0 h1:2hZKUnFZEy81eugPs4e2XzIJ5SOwQg0G82bpXD65Puo= -google.golang.org/api v0.239.0/go.mod h1:cOVEm2TpdAGHL2z+UwyS+kmlGr3bVWQQ6sYEqkKje50= -google.golang.org/genproto v0.0.0-20250505200425-f936aa4a68b2 h1:1tXaIXCracvtsRxSBsYDiSBN0cuJvM7QYW+MrpIRY78= -google.golang.org/genproto v0.0.0-20250505200425-f936aa4a68b2/go.mod h1:49MsLSx0oWMOZqcpB3uL8ZOkAh1+TndpJ8ONoCBWiZk= -google.golang.org/genproto/googleapis/api v0.0.0-20250603155806-513f23925822 h1:oWVWY3NzT7KJppx2UKhKmzPq4SRe0LdCijVRwvGeikY= -google.golang.org/genproto/googleapis/api v0.0.0-20250603155806-513f23925822/go.mod h1:h3c4v36UTKzUiuaOKQ6gr3S+0hovBtUrXzTG/i3+XEc= -google.golang.org/genproto/googleapis/rpc v0.0.0-20250603155806-513f23925822 h1:fc6jSaCT0vBduLYZHYrBBNY4dsWuvgyff9noRNDdBeE= -google.golang.org/genproto/googleapis/rpc v0.0.0-20250603155806-513f23925822/go.mod h1:qQ0YXyHHx3XkvlzUtpXDkS29lDSafHMZBAZDc03LQ3A= -google.golang.org/grpc v1.73.0 h1:VIWSmpI2MegBtTuFt5/JWy2oXxtjJ/e89Z70ImfD2ok= -google.golang.org/grpc v1.73.0/go.mod h1:50sbHOUqWoCQGI8V2HQLJM0B+LMlIUjNSZmow7EVBQc= -google.golang.org/protobuf v1.36.8 h1:xHScyCOEuuwZEc6UtSOvPbAT4zRh0xcNRYekJwfqyMc= -google.golang.org/protobuf v1.36.8/go.mod h1:fuxRtAxBytpl4zzqUh6/eyUujkJdNiuEkXntxiD/uRU= +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.252.0 h1:xfKJeAJaMwb8OC9fesr369rjciQ704AjU/psjkKURSI= +google.golang.org/api v0.252.0/go.mod h1:dnHOv81x5RAmumZ7BWLShB/u7JZNeyalImxHmtTHxqw= +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-20250929231259-57b25ae835d4 h1:8XJ4pajGwOlasW+L13MnEGA8W4115jJySQtVfS2/IBU= +google.golang.org/genproto/googleapis/api v0.0.0-20250929231259-57b25ae835d4/go.mod h1:NnuHhy+bxcg30o7FnVAZbXsPHUDQ9qKWAQKCD7VxFtk= +google.golang.org/genproto/googleapis/rpc v0.0.0-20251002232023-7c0ddcbb5797 h1:CirRxTOwnRWVLKzDNrs0CXAaVozJoR4G9xvdRecrdpk= +google.golang.org/genproto/googleapis/rpc v0.0.0-20251002232023-7c0ddcbb5797/go.mod h1:HSkG/KdJWusxU1F6CNrwNDjBMgisKxGnc5dAZfT0mjQ= +google.golang.org/grpc v1.76.0 h1:UnVkv1+uMLYXoIz6o7chp59WfQUYA2ex/BXQ9rHZu7A= +google.golang.org/grpc v1.76.0/go.mod h1:Ju12QI8M6iQJtbcsV+awF5a4hfJMLi4X0JLo94ULZ6c= +google.golang.org/protobuf v1.36.10 h1:AYd7cD/uASjIL6Q9LiTjz8JLcrh/88q5UObnmY3aOOE= +google.golang.org/protobuf v1.36.10/go.mod h1:HTf+CrKn2C3g5S8VImy6tdcUvCska2kB7j23XfzDpco= gopkg.in/alecthomas/kingpin.v2 v2.2.6/go.mod h1:FMv+mEhP44yOT+4EoQTLFTRgOQ1FBLkstjWtayDeSgw= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/check.v1 v1.0.0-20190902080502-41f04d3bba15/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= @@ -578,21 +578,23 @@ 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.0.3 h1:4AuOwCGf4lLR9u3YOe2awrHygurzhO/HeQ6laiA6Sx0= gotest.tools/v3 v3.0.3/go.mod h1:Z7Lb0S5l+klDB31fvDQX8ss/FlKDxtlFlw3Oa8Ymbl8= -k8s.io/api v0.32.3 h1:Hw7KqxRusq+6QSplE3NYG4MBxZw1BZnq4aP4cJVINls= -k8s.io/api v0.32.3/go.mod h1:2wEDTXADtm/HA7CCMD8D8bK4yuBUptzaRhYcYEEYA3k= -k8s.io/apimachinery v0.32.3 h1:JmDuDarhDmA/Li7j3aPrwhpNBA94Nvk5zLeOge9HH1U= -k8s.io/apimachinery v0.32.3/go.mod h1:GpHVgxoKlTxClKcteaeuF1Ul/lDVb74KpZcxcmLDElE= -k8s.io/client-go v0.32.3 h1:RKPVltzopkSgHS7aS98QdscAgtgah/+zmpAogooIqVU= -k8s.io/client-go v0.32.3/go.mod h1:3v0+3k4IcT9bXTc4V2rt+d2ZPPG700Xy6Oi0Gdl2PaY= +k8s.io/api v0.34.1 h1:jC+153630BMdlFukegoEL8E/yT7aLyQkIVuwhmwDgJM= +k8s.io/api v0.34.1/go.mod h1:SB80FxFtXn5/gwzCoN6QCtPD7Vbu5w2n1S0J5gFfTYk= +k8s.io/apimachinery v0.34.1 h1:dTlxFls/eikpJxmAC7MVE8oOeP1zryV7iRyIjB0gky4= +k8s.io/apimachinery v0.34.1/go.mod h1:/GwIlEcWuTX9zKIg2mbw0LRFIsXwrfoVxn+ef0X13lw= +k8s.io/client-go v0.34.1 h1:ZUPJKgXsnKwVwmKKdPfw4tB58+7/Ik3CrjOEhsiZ7mY= +k8s.io/client-go v0.34.1/go.mod h1:kA8v0FP+tk6sZA0yKLRG67LWjqufAoSHA2xVGKw9Of8= 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-20241105132330-32ad38e42d3f h1:GA7//TjRY9yWGy1poLzYYJJ4JRdzg3+O6e8I+e+8T5Y= -k8s.io/kube-openapi v0.0.0-20241105132330-32ad38e42d3f/go.mod h1:R/HEjbvWI0qdfb8viZUeVZm0X6IZnxAydC7YU42CMw4= -k8s.io/utils v0.0.0-20241104100929-3ea5e8cea738 h1:M3sRQVHv7vB20Xc2ybTt7ODCeFj6JSWYFzOFnYeS6Ro= -k8s.io/utils v0.0.0-20241104100929-3ea5e8cea738/go.mod h1:OLgZIPagt7ERELqWJFomSt595RzquPNLL48iOWgYOg0= -sigs.k8s.io/json v0.0.0-20241010143419-9aa6b5e7a4b3 h1:/Rv+M11QRah1itp8VhT6HoVx1Ray9eB4DBr+K+/sCJ8= -sigs.k8s.io/json v0.0.0-20241010143419-9aa6b5e7a4b3/go.mod h1:18nIHnGi6636UCz6m8i4DhaJ65T6EruyzmoQqI2BVDo= -sigs.k8s.io/structured-merge-diff/v4 v4.4.2 h1:MdmvkGuXi/8io6ixD5wud3vOLwc1rj0aNqRlpuvjmwA= -sigs.k8s.io/structured-merge-diff/v4 v4.4.2/go.mod h1:N8f93tFZh9U6vpxwRArLiikrE5/2tiu1w1AGfACIGE4= -sigs.k8s.io/yaml v1.4.0 h1:Mk1wCc2gy/F0THH0TAp1QYyJNzRm2KCLy3o5ASXVI5E= -sigs.k8s.io/yaml v1.4.0/go.mod h1:Ejl7/uTz7PSA4eKMyQCUTnhZYNmLIl+5c2lQPGR2BPY= +k8s.io/kube-openapi v0.0.0-20250710124328-f3f2b991d03b h1:MloQ9/bdJyIu9lb1PzujOPolHyvO06MXG5TUIj2mNAA= +k8s.io/kube-openapi v0.0.0-20250710124328-f3f2b991d03b/go.mod h1:UZ2yyWbFTpuhSbFhv24aGNOdoRdJZgsIObGBUaYVsts= +k8s.io/utils v0.0.0-20250604170112-4c0f3b243397 h1:hwvWFiBzdWw1FhfY1FooPn3kzWuJ8tmbZBHi4zVsl1Y= +k8s.io/utils v0.0.0-20250604170112-4c0f3b243397/go.mod h1:OLgZIPagt7ERELqWJFomSt595RzquPNLL48iOWgYOg0= +sigs.k8s.io/json v0.0.0-20241014173422-cfa47c3a1cc8 h1:gBQPwqORJ8d8/YNZWEjoZs7npUVDpVXUUOFfW6CgAqE= +sigs.k8s.io/json v0.0.0-20241014173422-cfa47c3a1cc8/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.0 h1:jTijUJbW353oVOd9oTlifJqOGEkUw2jB/fXCbTiQEco= +sigs.k8s.io/structured-merge-diff/v6 v6.3.0/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/test/ginkgo-e2e/regionTests/go.mod b/otelcollector/test/ginkgo-e2e/regionTests/go.mod index 14764a75c..2daabdbe3 100644 --- a/otelcollector/test/ginkgo-e2e/regionTests/go.mod +++ b/otelcollector/test/ginkgo-e2e/regionTests/go.mod @@ -8,7 +8,6 @@ replace prometheus-collector/otelcollector/test/utils => ../utils require ( github.com/Azure/azure-sdk-for-go/sdk/azcore v1.17.1 - github.com/Azure/azure-sdk-for-go/sdk/azidentity v1.8.2 github.com/Azure/azure-sdk-for-go/sdk/monitor/azquery v1.1.0 github.com/onsi/ginkgo/v2 v2.21.0 github.com/onsi/gomega v1.35.1 @@ -19,6 +18,7 @@ require ( ) require ( + github.com/Azure/azure-sdk-for-go/sdk/azidentity v1.8.2 // indirect github.com/Azure/azure-sdk-for-go/sdk/internal v1.10.0 // indirect github.com/AzureAD/microsoft-authentication-library-for-go v1.4.2 // indirect github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc // indirect diff --git a/otelcollector/test/ginkgo-e2e/utils/go.mod b/otelcollector/test/ginkgo-e2e/utils/go.mod index b8b7911c0..07c285a66 100644 --- a/otelcollector/test/ginkgo-e2e/utils/go.mod +++ b/otelcollector/test/ginkgo-e2e/utils/go.mod @@ -26,7 +26,7 @@ require ( github.com/go-openapi/jsonreference v0.20.2 // indirect github.com/go-openapi/swag v0.23.0 // indirect github.com/gogo/protobuf v1.3.2 // indirect - github.com/golang-jwt/jwt/v5 v5.2.2 // indirect + github.com/golang-jwt/jwt/v5 v5.2.1 // indirect github.com/golang/protobuf v1.5.4 // indirect github.com/google/gnostic-models v0.6.8 // indirect github.com/google/go-cmp v0.7.0 // indirect diff --git a/otelcollector/test/ginkgo-e2e/utils/go.sum b/otelcollector/test/ginkgo-e2e/utils/go.sum index 42be56ebe..dc820f985 100644 --- a/otelcollector/test/ginkgo-e2e/utils/go.sum +++ b/otelcollector/test/ginkgo-e2e/utils/go.sum @@ -43,8 +43,8 @@ github.com/go-task/slim-sprig/v3 v3.0.0 h1:sUs3vkvUymDpBKi3qH1YSqBQk9+9D/8M2mN1v github.com/go-task/slim-sprig/v3 v3.0.0/go.mod h1:W848ghGpv3Qj3dhTPRyJypKRiqCdHZiAzKg9hl15HA8= github.com/gogo/protobuf v1.3.2 h1:Ov1cvc58UF3b5XjBnZv7+opcTcQFZebYjWzi34vdm4Q= github.com/gogo/protobuf v1.3.2/go.mod h1:P1XiOD3dCwIKUDQYPy72D8LYyHL2YPYrpS2s69NZV8Q= -github.com/golang-jwt/jwt/v5 v5.2.2 h1:Rl4B7itRWVtYIHFrSNd7vhTiz9UpLdi6gZhZ3wEeDy8= -github.com/golang-jwt/jwt/v5 v5.2.2/go.mod h1:pqrtFR0X4osieyHYxtmOUWsAWrfe1Q5UVIyoH402zdk= +github.com/golang-jwt/jwt/v5 v5.2.1 h1:OuVbFODueb089Lh128TAcimifWaLhJwVflnrgM17wHk= +github.com/golang-jwt/jwt/v5 v5.2.1/go.mod h1:pqrtFR0X4osieyHYxtmOUWsAWrfe1Q5UVIyoH402zdk= github.com/golang/protobuf v1.5.4 h1:i7eJL8qZTpSEXOPTxNKhASYpMn+8e5Q6AdndVa1dWek= github.com/golang/protobuf v1.5.4/go.mod h1:lnTiLA8Wa4RWRcIUkrtSVa5nRhsEGBg48fD6rSs7xps= github.com/google/gnostic-models v0.6.8 h1:yo/ABAfM5IMRsS1VnXjTBvUb61tFIHozhlYvRgGre9I=