Skip to content

Commit 243c541

Browse files
committed
vfs: Download cloud storage assets via VFS
Route gs:// asset downloads through the VFS GCS backend. Consolidate the gs, s3, and azureblob cases using the new vfs.WriterToWithContext interface. Add WriteToWithContext to GSPath so the caller's context is propagated for all three schemes. This removes the last use of cloud.google.com/go/storage and drops its otherwise-unused GCS gRPC, Cloud Monitoring, and OpenTelemetry metrics dependencies from the main module and vendor tree.
1 parent 6481af8 commit 243c541

940 files changed

Lines changed: 18 additions & 494777 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

Makefile

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -81,14 +81,11 @@ KOPS_CHANNELS_TAG=$(IMAGE_TAG)
8181

8282
CGO_ENABLED=0
8383
export CGO_ENABLED
84-
# disable_grpc_modules removes the unused GCS gRPC transport and its envoy/xds proto chain from
85-
# cloud.google.com/go/storage. It is safe because kOps only uses the GCS HTTP JSON API.
86-
# It saves ~12MB.
8784
# grpcnotrace removes golang.org/x/net/trace from google.golang.org/grpc. It is safe because kOps
8885
# does not use gRPC's x/net/trace integration. In binaries with no other text/template usage, it
8986
# restores linker dead-code elimination disabled by x/net/trace's use of text/template and saves
9087
# ~21MB in the dns-controller and channels images.
91-
BUILDTAGS=disable_grpc_modules,grpcnotrace
88+
BUILDTAGS=grpcnotrace
9289
BUILDFLAGS=-trimpath -buildvcs=false -tags=${BUILDTAGS}
9390

9491

go.mod

Lines changed: 0 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,6 @@ godebug default=go1.26
77

88
require (
99
cloud.google.com/go/compute/metadata v0.9.0
10-
cloud.google.com/go/storage v1.62.3
1110
github.com/Azure/azure-sdk-for-go/sdk/azcore v1.20.0
1211
github.com/Azure/azure-sdk-for-go/sdk/azidentity v1.13.1
1312
github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/authorization/armauthorization/v3 v3.0.0-beta.2
@@ -98,19 +97,12 @@ require (
9897
)
9998

10099
require (
101-
cel.dev/expr v0.25.1 // indirect
102-
cloud.google.com/go v0.123.0 // indirect
103100
cloud.google.com/go/auth v0.19.0 // indirect
104101
cloud.google.com/go/auth/oauth2adapt v0.2.8 // indirect
105-
cloud.google.com/go/iam v1.7.0 // indirect
106-
cloud.google.com/go/monitoring v1.24.3 // indirect
107102
dario.cat/mergo v1.0.1 // indirect
108103
github.com/Azure/azure-sdk-for-go/sdk/internal v1.11.2 // indirect
109104
github.com/Azure/go-ansiterm v0.0.0-20250102033503-faa5f7b0171c // indirect
110105
github.com/AzureAD/microsoft-authentication-library-for-go v1.6.0 // indirect
111-
github.com/GoogleCloudPlatform/opentelemetry-operations-go/detectors/gcp v1.31.0 // indirect
112-
github.com/GoogleCloudPlatform/opentelemetry-operations-go/exporter/metric v0.55.0 // indirect
113-
github.com/GoogleCloudPlatform/opentelemetry-operations-go/internal/resourcemapping v0.55.0 // indirect
114106
github.com/MakeNowJust/heredoc v1.0.0 // indirect
115107
github.com/Masterminds/goutils v1.1.1 // indirect
116108
github.com/Masterminds/semver/v3 v3.4.0 // indirect
@@ -139,16 +131,13 @@ require (
139131
github.com/charmbracelet/x/ansi v0.10.1 // indirect
140132
github.com/charmbracelet/x/cellbuf v0.0.13-0.20250311204145-2c3ea96c31dd // indirect
141133
github.com/charmbracelet/x/term v0.2.1 // indirect
142-
github.com/cncf/xds/go v0.0.0-20251210132809-ee656c7534f5 // indirect
143134
github.com/containerd/stargz-snapshotter/estargz v0.18.1 // indirect
144135
github.com/cpuguy83/go-md2man/v2 v2.0.7 // indirect
145136
github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc // indirect
146137
github.com/docker/cli v29.2.1+incompatible // indirect
147138
github.com/docker/distribution v2.8.3+incompatible // indirect
148139
github.com/docker/docker-credential-helpers v0.9.3 // indirect
149140
github.com/emicklei/go-restful/v3 v3.13.0 // indirect
150-
github.com/envoyproxy/go-control-plane/envoy v1.36.0 // indirect
151-
github.com/envoyproxy/protoc-gen-validate v1.3.0 // indirect
152141
github.com/erikgeiser/coninput v0.0.0-20211004153227-1c3628e74d0f // indirect
153142
github.com/evanphx/json-patch v5.9.11+incompatible // indirect
154143
github.com/evanphx/json-patch/v5 v5.9.11 // indirect
@@ -211,7 +200,6 @@ require (
211200
github.com/pelletier/go-toml/v2 v2.2.4 // indirect
212201
github.com/peterbourgon/diskv v2.0.1+incompatible // indirect
213202
github.com/pkg/browser v0.0.0-20240102092130-5ac0b6a4141c // indirect
214-
github.com/planetscale/vtprotobuf v0.6.1-0.20240319094008-0393e58bdf10 // indirect
215203
github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 // indirect
216204
github.com/prometheus/client_model v0.6.2 // indirect
217205
github.com/prometheus/common v0.67.5 // indirect
@@ -225,17 +213,13 @@ require (
225213
github.com/sourcegraph/conc v0.3.1-0.20240121214520-5f936abd7ae8 // indirect
226214
github.com/spf13/afero v1.15.0 // indirect
227215
github.com/spf13/cast v1.10.0 // indirect
228-
github.com/spiffe/go-spiffe/v2 v2.6.0 // indirect
229216
github.com/subosito/gotenv v1.6.0 // indirect
230217
github.com/vbatts/tar-split v0.12.2 // indirect
231218
github.com/x448/float16 v0.8.4 // indirect
232219
github.com/xlab/treeprint v1.2.0 // indirect
233220
github.com/xo/terminfo v0.0.0-20220910002029-abceb7e1c41e // indirect
234221
go.opentelemetry.io/auto/sdk v1.2.1 // indirect
235-
go.opentelemetry.io/contrib/detectors/gcp v1.39.0 // indirect
236-
go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.65.0 // indirect
237222
go.opentelemetry.io/otel/metric v1.43.0 // indirect
238-
go.opentelemetry.io/otel/sdk/metric v1.43.0 // indirect
239223
go.yaml.in/yaml/v2 v2.4.3 // indirect
240224
go.yaml.in/yaml/v3 v3.0.4 // indirect
241225
golang.org/x/mod v0.37.0 // indirect
@@ -244,7 +228,6 @@ require (
244228
golang.org/x/time v0.15.0 // indirect
245229
golang.org/x/tools v0.47.0 // indirect
246230
gomodules.xyz/jsonpatch/v2 v2.5.0 // indirect
247-
google.golang.org/genproto v0.0.0-20260319201613-d00831a3d3e7 // indirect
248231
google.golang.org/genproto/googleapis/api v0.0.0-20260401024825-9d38bb4040a9 // indirect
249232
google.golang.org/genproto/googleapis/rpc v0.0.0-20260401024825-9d38bb4040a9 // indirect
250233
gopkg.in/evanphx/json-patch.v4 v4.13.0 // indirect

go.sum

Lines changed: 0 additions & 46 deletions
Original file line numberDiff line numberDiff line change
@@ -1,25 +1,9 @@
1-
cel.dev/expr v0.25.1 h1:1KrZg61W6TWSxuNZ37Xy49ps13NUovb66QLprthtwi4=
2-
cel.dev/expr v0.25.1/go.mod h1:hrXvqGP6G6gyx8UAHSHJ5RGk//1Oj5nXQ2NI02Nrsg4=
3-
cloud.google.com/go v0.123.0 h1:2NAUJwPR47q+E35uaJeYoNhuNEM9kM8SjgRgdeOJUSE=
4-
cloud.google.com/go v0.123.0/go.mod h1:xBoMV08QcqUGuPW65Qfm1o9Y4zKZBpGS+7bImXLTAZU=
51
cloud.google.com/go/auth v0.19.0 h1:DGYwtbcsGsT1ywuxsIoWi1u/vlks0moIblQHgSDgQkQ=
62
cloud.google.com/go/auth v0.19.0/go.mod h1:2Aph7BT2KnaSFOM0JDPyiYgNh6PL9vGMiP8CUIXZ+IY=
73
cloud.google.com/go/auth/oauth2adapt v0.2.8 h1:keo8NaayQZ6wimpNSmW5OPc283g65QNIiLpZnkHRbnc=
84
cloud.google.com/go/auth/oauth2adapt v0.2.8/go.mod h1:XQ9y31RkqZCcwJWNSx2Xvric3RrU88hAYYbjDWYDL+c=
95
cloud.google.com/go/compute/metadata v0.9.0 h1:pDUj4QMoPejqq20dK0Pg2N4yG9zIkYGdBtwLoEkH9Zs=
106
cloud.google.com/go/compute/metadata v0.9.0/go.mod h1:E0bWwX5wTnLPedCKqk3pJmVgCBSM6qQI1yTBdEb3C10=
11-
cloud.google.com/go/iam v1.7.0 h1:JD3zh0C6LHl16aCn5Akff0+GELdp1+4hmh6ndoFLl8U=
12-
cloud.google.com/go/iam v1.7.0/go.mod h1:tetWZW1PD/m6vcuY2Zj/aU0eCHNPuxedbnbRTyKXvdY=
13-
cloud.google.com/go/logging v1.13.2 h1:qqlHCBvieJT9Cdq4QqYx1KPadCQ2noD4FK02eNqHAjA=
14-
cloud.google.com/go/logging v1.13.2/go.mod h1:zaybliM3yun1J8mU2dVQ1/qDzjbOqEijZCn6hSBtKak=
15-
cloud.google.com/go/longrunning v0.9.0 h1:0EzbDEGsAvOZNbqXopgniY0w0a1phvu5IdUFq8grmqY=
16-
cloud.google.com/go/longrunning v0.9.0/go.mod h1:pkTz846W7bF4o2SzdWJ40Hu0Re+UoNT6Q5t+igIcb8E=
17-
cloud.google.com/go/monitoring v1.24.3 h1:dde+gMNc0UhPZD1Azu6at2e79bfdztVDS5lvhOdsgaE=
18-
cloud.google.com/go/monitoring v1.24.3/go.mod h1:nYP6W0tm3N9H/bOw8am7t62YTzZY+zUeQ+Bi6+2eonI=
19-
cloud.google.com/go/storage v1.62.3 h1:SZq1t23NCI+e96dH77Dg3PEfsNNEjqO8zE5AnD8gVD0=
20-
cloud.google.com/go/storage v1.62.3/go.mod h1:cpYz/kRVZ+UQAF1uHeea10/9ewcRbxGoGNKsS9daSXA=
21-
cloud.google.com/go/trace v1.11.7 h1:kDNDX8JkaAG3R2nq1lIdkb7FCSi1rCmsEtKVsty7p+U=
22-
cloud.google.com/go/trace v1.11.7/go.mod h1:TNn9d5V3fQVf6s4SCveVMIBS2LJUqo73GACmq/Tky0s=
237
dario.cat/mergo v1.0.1 h1:Ra4+bf83h2ztPIQYNP99R6m+Y7KfnARDfID+a+vLl4s=
248
dario.cat/mergo v1.0.1/go.mod h1:uNxQE+84aUszobStD9th8a29P2fMDhsBdgRYvZOxGmk=
259
github.com/Azure/azure-sdk-for-go/sdk/azcore v1.20.0 h1:JXg2dwJUmPB9JmtVmdEB16APJ7jurfbY5jnfXpJoRMc=
@@ -56,14 +40,6 @@ github.com/AzureAD/microsoft-authentication-extensions-for-go/cache v0.1.1 h1:WJ
5640
github.com/AzureAD/microsoft-authentication-extensions-for-go/cache v0.1.1/go.mod h1:tCcJZ0uHAmvjsVYzEFivsRTN00oz5BEsRgQHu5JZ9WE=
5741
github.com/AzureAD/microsoft-authentication-library-for-go v1.6.0 h1:XRzhVemXdgvJqCH0sFfrBUTnUJSBrBf7++ypk+twtRs=
5842
github.com/AzureAD/microsoft-authentication-library-for-go v1.6.0/go.mod h1:HKpQxkWaGLJ+D/5H8QRpyQXA1eKjxkFlOMwck5+33Jk=
59-
github.com/GoogleCloudPlatform/opentelemetry-operations-go/detectors/gcp v1.31.0 h1:DHa2U07rk8syqvCge0QIGMCE1WxGj9njT44GH7zNJLQ=
60-
github.com/GoogleCloudPlatform/opentelemetry-operations-go/detectors/gcp v1.31.0/go.mod h1:P4WPRUkOhJC13W//jWpyfJNDAIpvRbAUIYLX/4jtlE0=
61-
github.com/GoogleCloudPlatform/opentelemetry-operations-go/exporter/metric v0.55.0 h1:UnDZ/zFfG1JhH/DqxIZYU/1CUAlTUScoXD/LcM2Ykk8=
62-
github.com/GoogleCloudPlatform/opentelemetry-operations-go/exporter/metric v0.55.0/go.mod h1:IA1C1U7jO/ENqm/vhi7V9YYpBsp+IMyqNrEN94N7tVc=
63-
github.com/GoogleCloudPlatform/opentelemetry-operations-go/internal/cloudmock v0.55.0 h1:7t/qx5Ost0s0wbA/VDrByOooURhp+ikYwv20i9Y07TQ=
64-
github.com/GoogleCloudPlatform/opentelemetry-operations-go/internal/cloudmock v0.55.0/go.mod h1:vB2GH9GAYYJTO3mEn8oYwzEdhlayZIdQz6zdzgUIRvA=
65-
github.com/GoogleCloudPlatform/opentelemetry-operations-go/internal/resourcemapping v0.55.0 h1:0s6TxfCu2KHkkZPnBfsQ2y5qia0jl3MMrmBhu3nCOYk=
66-
github.com/GoogleCloudPlatform/opentelemetry-operations-go/internal/resourcemapping v0.55.0/go.mod h1:Mf6O40IAyB9zR/1J8nGDDPirZQQPbYJni8Yisy7NTMc=
6743
github.com/MakeNowJust/heredoc v1.0.0 h1:cXCdzVdstXyiTqTvfqk9SDHpKNjxuom+DOlyEeQ4pzQ=
6844
github.com/MakeNowJust/heredoc v1.0.0/go.mod h1:mG5amYoWBHf8vpLOuehzbGGw0EHxpZZ6lCpQ4fNJ8LE=
6945
github.com/MakeNowJust/heredoc/v2 v2.0.1 h1:rlCHh70XXXv7toz95ajQWOWQnN4WNLt0TdpZYIR/J6A=
@@ -166,8 +142,6 @@ github.com/charmbracelet/x/cellbuf v0.0.13-0.20250311204145-2c3ea96c31dd h1:vy0G
166142
github.com/charmbracelet/x/cellbuf v0.0.13-0.20250311204145-2c3ea96c31dd/go.mod h1:xe0nKWGd3eJgtqZRaN9RjMtK7xUYchjzPr7q6kcvCCs=
167143
github.com/charmbracelet/x/term v0.2.1 h1:AQeHeLZ1OqSXhrAWpYUtZyX1T3zVxfpZuEQMIQaGIAQ=
168144
github.com/charmbracelet/x/term v0.2.1/go.mod h1:oQ4enTYFV7QN4m0i9mzHrViD7TQKvNEEkHUMCmsxdUg=
169-
github.com/cncf/xds/go v0.0.0-20251210132809-ee656c7534f5 h1:6xNmx7iTtyBRev0+D/Tv1FZd4SCg8axKApyNyRsAt/w=
170-
github.com/cncf/xds/go v0.0.0-20251210132809-ee656c7534f5/go.mod h1:KdCmV+x/BuvyMxRnYBlmVaq4OLiKW6iRQfvC62cvdkI=
171145
github.com/containerd/stargz-snapshotter/estargz v0.18.1 h1:cy2/lpgBXDA3cDKSyEfNOFMA/c10O1axL69EU7iirO8=
172146
github.com/containerd/stargz-snapshotter/estargz v0.18.1/go.mod h1:ALIEqa7B6oVDsrF37GkGN20SuvG/pIMm7FwP7ZmRb0Q=
173147
github.com/cpuguy83/go-md2man/v2 v2.0.6/go.mod h1:oOW0eioCTA6cOiMLiUPZOpcVxMig6NIQQ7OS05n1F4g=
@@ -191,14 +165,6 @@ github.com/docker/docker-credential-helpers v0.9.3 h1:gAm/VtF9wgqJMoxzT3Gj5p4AqI
191165
github.com/docker/docker-credential-helpers v0.9.3/go.mod h1:x+4Gbw9aGmChi3qTLZj8Dfn0TD20M/fuWy0E5+WDeCo=
192166
github.com/emicklei/go-restful/v3 v3.13.0 h1:C4Bl2xDndpU6nJ4bc1jXd+uTmYPVUwkD6bFY/oTyCes=
193167
github.com/emicklei/go-restful/v3 v3.13.0/go.mod h1:6n3XBCmQQb25CM2LCACGz8ukIrRry+4bhvbpWn3mrbc=
194-
github.com/envoyproxy/go-control-plane v0.14.0 h1:hbG2kr4RuFj222B6+7T83thSPqLjwBIfQawTkC++2HA=
195-
github.com/envoyproxy/go-control-plane v0.14.0/go.mod h1:NcS5X47pLl/hfqxU70yPwL9ZMkUlwlKxtAohpi2wBEU=
196-
github.com/envoyproxy/go-control-plane/envoy v1.36.0 h1:yg/JjO5E7ubRyKX3m07GF3reDNEnfOboJ0QySbH736g=
197-
github.com/envoyproxy/go-control-plane/envoy v1.36.0/go.mod h1:ty89S1YCCVruQAm9OtKeEkQLTb+Lkz0k8v9W0Oxsv98=
198-
github.com/envoyproxy/go-control-plane/ratelimit v0.1.0 h1:/G9QYbddjL25KvtKTv3an9lx6VBE2cnb8wp1vEGNYGI=
199-
github.com/envoyproxy/go-control-plane/ratelimit v0.1.0/go.mod h1:Wk+tMFAFbCXaJPzVVHnPgRKdUdwW/KdbRt94AzgRee4=
200-
github.com/envoyproxy/protoc-gen-validate v1.3.0 h1:TvGH1wof4H33rezVKWSpqKz5NXWg5VPuZ0uONDT6eb4=
201-
github.com/envoyproxy/protoc-gen-validate v1.3.0/go.mod h1:HvYl7zwPa5mffgyeTUHA9zHIH36nmrm7oCbo4YKoSWA=
202168
github.com/erikgeiser/coninput v0.0.0-20211004153227-1c3628e74d0f h1:Y/CXytFA4m6baUTXGLOoWe4PQhGxaX0KpnayAqC48p4=
203169
github.com/erikgeiser/coninput v0.0.0-20211004153227-1c3628e74d0f/go.mod h1:vw97MGsxSvLiUE2X8qFplwetxpGLQrlU1Q9AUEIzCaM=
204170
github.com/evanphx/json-patch v5.9.11+incompatible h1:ixHHqfcGvxhWkniF1tWxBHA0yb4Z+d1UQi45df52xW8=
@@ -286,8 +252,6 @@ github.com/google/gofuzz v1.2.0 h1:xRy4A+RhZaiKjJ1bPfwQ8sedCA+YS2YcCHW6ec7JMi0=
286252
github.com/google/gofuzz v1.2.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg=
287253
github.com/google/logger v1.1.1 h1:+6Z2geNxc9G+4D4oDO9njjjn2d0wN5d7uOo0vOIW1NQ=
288254
github.com/google/logger v1.1.1/go.mod h1:BkeJZ+1FhQ+/d087r4dzojEg1u2ZX+ZqG1jTUrLM+zQ=
289-
github.com/google/martian/v3 v3.3.3 h1:DIhPTQrbPkgs2yJYdXU/eNACCG5DVQjySNRNlflZ9Fc=
290-
github.com/google/martian/v3 v3.3.3/go.mod h1:iEPrYcgCF7jA9OtScMFQyAlZZ4YXTKEtJ1E6RWzmBA0=
291255
github.com/google/pprof v0.0.0-20260115054156-294ebfa9ad83 h1:z2ogiKUYzX5Is6zr/vP9vJGqPwcdqsWjOt+V8J7+bTc=
292256
github.com/google/pprof v0.0.0-20260115054156-294ebfa9ad83/go.mod h1:MxpfABSjhmINe3F1It9d+8exIHFvUqtLIRCdOGNXqiI=
293257
github.com/google/s2a-go v0.1.9 h1:LGD7gtMgezd8a/Xak7mEWL0PjoTQFvpRudN895yqKW0=
@@ -405,8 +369,6 @@ github.com/pkg/browser v0.0.0-20240102092130-5ac0b6a4141c h1:+mdjkGKdHQG3305AYmd
405369
github.com/pkg/browser v0.0.0-20240102092130-5ac0b6a4141c/go.mod h1:7rwL4CYBLnjLxUqIJNnCWiEdr3bn6IUYi15bNlnbCCU=
406370
github.com/pkg/sftp v1.13.10 h1:+5FbKNTe5Z9aspU88DPIKJ9z2KZoaGCu6Sr6kKR/5mU=
407371
github.com/pkg/sftp v1.13.10/go.mod h1:bJ1a7uDhrX/4OII+agvy28lzRvQrmIQuaHrcI1HbeGA=
408-
github.com/planetscale/vtprotobuf v0.6.1-0.20240319094008-0393e58bdf10 h1:GFCKgmp0tecUJ0sJuv4pzYCqS9+RGSn52M3FUwPs+uo=
409-
github.com/planetscale/vtprotobuf v0.6.1-0.20240319094008-0393e58bdf10/go.mod h1:t/avpk3KcrXxUnYOhZhMXJlSEyie6gQbtLq5NM3loB8=
410372
github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4=
411373
github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 h1:Jamvg5psRIccs7FGNTlIRMkT8wgtp5eCXdBlqhYGL6U=
412374
github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4=
@@ -456,8 +418,6 @@ github.com/spf13/pflag v1.0.10 h1:4EBh2KAYBwaONj6b2Ye1GiHfwjqyROoF4RwYO+vPwFk=
456418
github.com/spf13/pflag v1.0.10/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg=
457419
github.com/spf13/viper v1.21.0 h1:x5S+0EU27Lbphp4UKm1C+1oQO+rKx36vfCoaVebLFSU=
458420
github.com/spf13/viper v1.21.0/go.mod h1:P0lhsswPGWD/1lZJ9ny3fYnVqxiegrlNrEmgLjbTCAY=
459-
github.com/spiffe/go-spiffe/v2 v2.6.0 h1:l+DolpxNWYgruGQVV0xsfeya3CsC7m8iBzDnMpsbLuo=
460-
github.com/spiffe/go-spiffe/v2 v2.6.0/go.mod h1:gm2SeUoMZEtpnzPNs2Csc0D/gX33k1xIx7lEzqblHEs=
461421
github.com/spotinst/spotinst-sdk-go v1.372.0 h1:B4/+HK3D2Fe0821DOmw5RO4Lrzo2gi7oa6QWWjr5/7A=
462422
github.com/spotinst/spotinst-sdk-go v1.372.0/go.mod h1:Tn4/eb0SFY6IXmxz71CClujvbD/PuT+EO6Ta8v6AML4=
463423
github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME=
@@ -489,18 +449,12 @@ github.com/yuin/goldmark v1.2.1/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9dec
489449
github.com/yuin/goldmark v1.4.13/go.mod h1:6yULJ656Px+3vBD8DxQVa3kxgyrAnzto9xy5taEt/CY=
490450
go.opentelemetry.io/auto/sdk v1.2.1 h1:jXsnJ4Lmnqd11kwkBV2LgLoFMZKizbCi5fNZ/ipaZ64=
491451
go.opentelemetry.io/auto/sdk v1.2.1/go.mod h1:KRTj+aOaElaLi+wW1kO/DZRXwkF4C5xPbEe3ZiIhN7Y=
492-
go.opentelemetry.io/contrib/detectors/gcp v1.39.0 h1:kWRNZMsfBHZ+uHjiH4y7Etn2FK26LAGkNFw7RHv1DhE=
493-
go.opentelemetry.io/contrib/detectors/gcp v1.39.0/go.mod h1:t/OGqzHBa5v6RHZwrDBJ2OirWc+4q/w2fTbLZwAKjTk=
494-
go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.65.0 h1:XmiuHzgJt067+a6kwyAzkhXooYVv3/TOw9cM2VfJgUM=
495-
go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.65.0/go.mod h1:KDgtbWKTQs4bM+VPUr6WlL9m/WXcmkCcBlIzqxPGzmI=
496452
go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.68.0 h1:CqXxU8VOmDefoh0+ztfGaymYbhdB/tT3zs79QaZTNGY=
497453
go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.68.0/go.mod h1:BuhAPThV8PBHBvg8ZzZ/Ok3idOdhWIodywz2xEcRbJo=
498454
go.opentelemetry.io/otel v1.43.0 h1:mYIM03dnh5zfN7HautFE4ieIig9amkNANT+xcVxAj9I=
499455
go.opentelemetry.io/otel v1.43.0/go.mod h1:JuG+u74mvjvcm8vj8pI5XiHy1zDeoCS2LB1spIq7Ay0=
500456
go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.43.0 h1:88Y4s2C8oTui1LGM6bTWkw0ICGcOLCAI5l6zsD1j20k=
501457
go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.43.0/go.mod h1:Vl1/iaggsuRlrHf/hfPJPvVag77kKyvrLeD10kpMl+A=
502-
go.opentelemetry.io/otel/exporters/stdout/stdoutmetric v1.43.0 h1:TC+BewnDpeiAmcscXbGMfxkO+mwYUwE/VySwvw88PfA=
503-
go.opentelemetry.io/otel/exporters/stdout/stdoutmetric v1.43.0/go.mod h1:J/ZyF4vfPwsSr9xJSPyQ4LqtcTPULFR64KwTikGLe+A=
504458
go.opentelemetry.io/otel/metric v1.43.0 h1:d7638QeInOnuwOONPp4JAOGfbCEpYb+K6DVWvdxGzgM=
505459
go.opentelemetry.io/otel/metric v1.43.0/go.mod h1:RDnPtIxvqlgO8GRW18W6Z/4P462ldprJtfxHxyKd2PY=
506460
go.opentelemetry.io/otel/sdk v1.43.0 h1:pi5mE86i5rTeLXqoF/hhiBtUNcrAGHLKQdhg4h4V9Dg=

upup/pkg/fi/http.go

Lines changed: 6 additions & 39 deletions
Original file line numberDiff line numberDiff line change
@@ -25,10 +25,8 @@ import (
2525
"net/url"
2626
"os"
2727
"path/filepath"
28-
"strings"
2928
"time"
3029

31-
"cloud.google.com/go/storage"
3230
"k8s.io/klog/v2"
3331
"k8s.io/kops/util/pkg/hashing"
3432
"k8s.io/kops/util/pkg/vfs"
@@ -103,49 +101,18 @@ func downloadURLToWriter(ctx context.Context, desturl string, dest io.Writer, ha
103101
writer := io.MultiWriter(dest, hasher)
104102

105103
switch u.Scheme {
106-
case "gs":
107-
bucketName := u.Host
108-
objectName := strings.TrimPrefix(u.Path, "/")
109-
110-
client, err := storage.NewClient(ctx)
111-
if err != nil {
112-
return nil, fmt.Errorf("Failed to create client %q: %v", desturl, err)
113-
}
114-
defer client.Close()
115-
116-
reader, err := client.Bucket(bucketName).Object(objectName).NewReader(ctx)
117-
if err != nil {
118-
return nil, fmt.Errorf("Failed to open reader on object %q: %v", desturl, err)
119-
}
120-
defer reader.Close()
121-
122-
if _, err := io.Copy(writer, reader); err != nil {
123-
return nil, fmt.Errorf("error downloading HTTP content from %q: %v", desturl, err)
124-
}
125-
case "s3":
126-
// vfs resolves the bucket region and signs the request with the ambient AWS credentials.
127-
p, err := vfs.Context.BuildVfsPath(desturl)
128-
if err != nil {
129-
return nil, fmt.Errorf("building path for %q: %w", desturl, err)
130-
}
131-
s3Path, ok := p.(*vfs.S3Path)
132-
if !ok {
133-
return nil, fmt.Errorf("unexpected path type %T for %q", p, desturl)
134-
}
135-
if _, err := s3Path.WriteToWithContext(ctx, writer); err != nil {
136-
return nil, fmt.Errorf("error downloading content from %q: %w", desturl, err)
137-
}
138-
case "azureblob":
139-
// vfs authenticates with the ambient Azure credentials, such as the instance managed identity.
104+
case "gs", "s3", "azureblob":
105+
// vfs resolves the bucket and signs the request with the ambient cloud credentials,
106+
// such as the instance identity.
140107
p, err := vfs.Context.BuildVfsPath(desturl)
141108
if err != nil {
142109
return nil, fmt.Errorf("building path for %q: %w", desturl, err)
143110
}
144-
blobPath, ok := p.(*vfs.AzureBlobPath)
111+
cloudPath, ok := p.(vfs.WriterToWithContext)
145112
if !ok {
146-
return nil, fmt.Errorf("unexpected path type %T for %q", p, desturl)
113+
return nil, fmt.Errorf("path type %T for %q does not implement WriteToWithContext", p, desturl)
147114
}
148-
if _, err := blobPath.WriteToWithContext(ctx, writer); err != nil {
115+
if _, err := cloudPath.WriteToWithContext(ctx, writer); err != nil {
149116
return nil, fmt.Errorf("error downloading content from %q: %w", desturl, err)
150117
}
151118
default:

util/pkg/vfs/gsfs.go

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -249,7 +249,7 @@ func (p *GSPath) ReadFile(ctx context.Context) ([]byte, error) {
249249
var b bytes.Buffer
250250
done, err := RetryWithBackoff(gcsReadBackoff, func() (bool, error) {
251251
b.Reset()
252-
_, err := p.WriteTo(&b)
252+
_, err := p.WriteToWithContext(ctx, &b)
253253
if err != nil {
254254
if os.IsNotExist(err) {
255255
// Not recoverable
@@ -273,7 +273,11 @@ func (p *GSPath) ReadFile(ctx context.Context) ([]byte, error) {
273273
// WriteTo implements io.WriterTo::WriteTo
274274
func (p *GSPath) WriteTo(out io.Writer) (int64, error) {
275275
ctx := context.TODO()
276+
return p.WriteToWithContext(ctx, out)
277+
}
276278

279+
// WriteToWithContext implements io.WriterTo, but adds a context
280+
func (p *GSPath) WriteToWithContext(ctx context.Context, out io.Writer) (int64, error) {
277281
klog.V(4).Infof("Reading file %q", p)
278282

279283
client, err := p.getStorageClient(ctx)

util/pkg/vfs/vfs.go

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -84,6 +84,12 @@ type TerraformPath interface {
8484
RenderTerraform(writer *terraformWriter.TerraformWriter, name string, data io.Reader, acl ACL) error
8585
}
8686

87+
// WriterToWithContext is implemented by Paths that can stream their contents
88+
// to a writer with a caller-provided context.
89+
type WriterToWithContext interface {
90+
WriteToWithContext(ctx context.Context, out io.Writer) (int64, error)
91+
}
92+
8793
type HasHash interface {
8894
// Returns the hash of the file contents, with the preferred hash algorithm
8995
PreferredHash() (*hashing.Hash, error)

vendor/cel.dev/expr/.bazelversion

Lines changed: 0 additions & 2 deletions
This file was deleted.

vendor/cel.dev/expr/.gitattributes

Lines changed: 0 additions & 2 deletions
This file was deleted.

vendor/cel.dev/expr/.gitignore

Lines changed: 0 additions & 2 deletions
This file was deleted.

0 commit comments

Comments
 (0)