From 049e76807509e1186e54fd27ce5b57795659d3f7 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 14 Oct 2026 05:01:03 +0000 Subject: [PATCH] chore(deps): Bump google.golang.org/api Bumps [google.golang.org/api](https://github.com/googleapis/google-api-go-client) from 0.300.0 to 0.301.0. - [Release notes](https://github.com/googleapis/google-api-go-client/releases) - [Changelog](https://github.com/googleapis/google-api-go-client/blob/main/CHANGES.md) - [Commits](https://github.com/googleapis/google-api-go-client/compare/v0.300.0...v0.301.0) --- updated-dependencies: - dependency-name: google.golang.org/api dependency-version: 0.301.0 dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] --- ci/resources/stemcell-version-bump/go.mod | 8 +- ci/resources/stemcell-version-bump/go.sum | 16 +- .../go/auth/grpctransport/directpath.go | 201 ++++++++++++++++-- .../go/auth/grpctransport/grpctransport.go | 22 +- .../go/auth/internal/transport/cba.go | 19 +- .../go/auth/internal/transport/s2a.go | 2 +- .../google/s2a-go/internal/v2/s2av2.go | 8 +- .../v2/tlsconfigstore/tlsconfigstore.go | 15 +- .../vendor/github.com/google/s2a-go/s2a.go | 20 +- .../github.com/google/s2a-go/s2a_options.go | 11 + .../api/internal/settings.go | 49 ++--- .../google.golang.org/api/internal/version.go | 2 +- .../option/internaloption/internaloption.go | 16 ++ .../option/internaloption/unsaferesolver.go | 9 + .../api/storage/v1/storage-api.json | 19 +- .../api/storage/v1/storage-gen.go | 31 +++ .../api/transport/grpc/dial.go | 18 +- .../stemcell-version-bump/vendor/modules.txt | 8 +- 18 files changed, 385 insertions(+), 89 deletions(-) diff --git a/ci/resources/stemcell-version-bump/go.mod b/ci/resources/stemcell-version-bump/go.mod index a21dbaca2..ec720cc49 100644 --- a/ci/resources/stemcell-version-bump/go.mod +++ b/ci/resources/stemcell-version-bump/go.mod @@ -5,13 +5,13 @@ go 1.26.0 require ( cloud.google.com/go/storage v1.69.0 github.com/stretchr/testify v1.12.1 - google.golang.org/api v0.300.0 + google.golang.org/api v0.301.0 ) require ( cel.dev/expr v0.25.2 // indirect cloud.google.com/go v0.123.0 // indirect - cloud.google.com/go/auth v0.24.0 // indirect + cloud.google.com/go/auth v0.24.1-0.20261001053825-dbc26066f70a // indirect cloud.google.com/go/auth/oauth2adapt v0.3.0 // indirect cloud.google.com/go/compute/metadata v0.10.0 // indirect cloud.google.com/go/iam v1.12.0 // indirect @@ -27,7 +27,7 @@ require ( github.com/go-jose/go-jose/v4 v4.1.4 // indirect github.com/go-logr/logr v1.4.4 // indirect github.com/go-logr/stdr v1.2.2 // indirect - github.com/google/s2a-go v0.1.10 // indirect + github.com/google/s2a-go v0.1.11 // indirect github.com/google/uuid v1.6.0 // indirect github.com/googleapis/enterprise-certificate-proxy v0.3.22 // indirect github.com/googleapis/gax-go/v2 v2.26.2 // indirect @@ -52,7 +52,7 @@ require ( golang.org/x/time v0.16.0 // indirect google.golang.org/genproto v0.0.0-20260715232425-e75dac1f907d // indirect google.golang.org/genproto/googleapis/api v0.0.0-20260715232425-e75dac1f907d // indirect - google.golang.org/genproto/googleapis/rpc v0.0.0-20260921155816-b14227669459 // indirect + google.golang.org/genproto/googleapis/rpc v0.0.0-20260928230214-8a89bd6388cc // indirect google.golang.org/grpc v1.84.0 // indirect google.golang.org/protobuf v1.36.12 // indirect ) diff --git a/ci/resources/stemcell-version-bump/go.sum b/ci/resources/stemcell-version-bump/go.sum index 4a13023f5..b6676f1e4 100644 --- a/ci/resources/stemcell-version-bump/go.sum +++ b/ci/resources/stemcell-version-bump/go.sum @@ -2,8 +2,8 @@ cel.dev/expr v0.25.2 h1:K6j46C81hXtZQfuX60cVWQFBJahKSE2gfRbNuvr5bFs= cel.dev/expr v0.25.2/go.mod h1:hrXvqGP6G6gyx8UAHSHJ5RGk//1Oj5nXQ2NI02Nrsg4= cloud.google.com/go v0.123.0 h1:2NAUJwPR47q+E35uaJeYoNhuNEM9kM8SjgRgdeOJUSE= cloud.google.com/go v0.123.0/go.mod h1:xBoMV08QcqUGuPW65Qfm1o9Y4zKZBpGS+7bImXLTAZU= -cloud.google.com/go/auth v0.24.0 h1:UYMbF8otPZnLAkNJ5/LYQYOq0ARcJS1P4JqTeMKbCYU= -cloud.google.com/go/auth v0.24.0/go.mod h1:IFG/AMA1VWfuTrdbieEsB2GcpJyJV/phGAvogkOoPR4= +cloud.google.com/go/auth v0.24.1-0.20261001053825-dbc26066f70a h1:jW1ZLFy9oa5ai8LOI40z6s+DL1cO/L1KSm9hVGnibn8= +cloud.google.com/go/auth v0.24.1-0.20261001053825-dbc26066f70a/go.mod h1:1dmBXa9xfBvBr39ZnDUDkaaA91ccq9CcqENDgJA4d7c= cloud.google.com/go/auth/oauth2adapt v0.3.0 h1:FY8oSZpCYoUNv6QxVODuMjQz4IlSOVeiQtZ08vLPz88= cloud.google.com/go/auth/oauth2adapt v0.3.0/go.mod h1:7+2uCm7++XFO+/lN06c2HXpDXb/NMNn2/UwyBPbTnkk= cloud.google.com/go/compute/metadata v0.10.0 h1:pyKMUQSwchgkIBBJGdILqQbs/BNJXqwSA7Ej6LAvvtY= @@ -55,8 +55,8 @@ 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/martian/v3 v3.3.3 h1:DIhPTQrbPkgs2yJYdXU/eNACCG5DVQjySNRNlflZ9Fc= github.com/google/martian/v3 v3.3.3/go.mod h1:iEPrYcgCF7jA9OtScMFQyAlZZ4YXTKEtJ1E6RWzmBA0= -github.com/google/s2a-go v0.1.10 h1:EMp+aOuXN6l8cE/gjF5Bt+vyZxsUuyCWe9chDWR/+uU= -github.com/google/s2a-go v0.1.10/go.mod h1:pz4tyvwXvJLLbyrkh6FW1eS2zPUXMaTmyNhYtyP2tNw= +github.com/google/s2a-go v0.1.11 h1:7v1V1TraNGP63WptsAkNqr2w8jgm4vM6A6qx6Lsw9iM= +github.com/google/s2a-go v0.1.11/go.mod h1:pz4tyvwXvJLLbyrkh6FW1eS2zPUXMaTmyNhYtyP2tNw= 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.22 h1:NU4XpII6jD+Dxcot94fqjE+AfJoE/lQP9q3faYGzC/c= @@ -109,14 +109,14 @@ golang.org/x/time v0.16.0 h1:vMb6ptszcQMkcwiRTAuNNU50gom6++Q/6gY2hDM6VDE= golang.org/x/time v0.16.0/go.mod h1:rVKOqvZeKvrDKTQiAHJ7wmwP0RzleSphoEA9RcdLA0s= gonum.org/v1/gonum v0.17.0 h1:VbpOemQlsSMrYmn7T2OUvQ4dqxQXU+ouZFQsZOx50z4= gonum.org/v1/gonum v0.17.0/go.mod h1:El3tOrEuMpv2UdMrbNlKEh9vd86bmQ6vqIcDwxEOc1E= -google.golang.org/api v0.300.0 h1:2rvPV2bqnPuHOaF4gGOBiT1IIc6JVXYyHCkZeqdzjNk= -google.golang.org/api v0.300.0/go.mod h1:tKfTSDfK+0FlOVl8N30VL5fU5TuaEkJjvdyTIKNwzPg= +google.golang.org/api v0.301.0 h1:rTvI8szs17R7b09ggb34Bv4XrmFaFl9uCBncgxskqtw= +google.golang.org/api v0.301.0/go.mod h1:gGUTaOjgsaG/KNyyW1tFO+DSFm3EJw4BwyehlcmDCXs= google.golang.org/genproto v0.0.0-20260715232425-e75dac1f907d h1:C9v1o0/4quuhOAfmRXA2j+we0PqZIp8traLdeogF3Ms= google.golang.org/genproto v0.0.0-20260715232425-e75dac1f907d/go.mod h1:Wz2wFJntZFmLGo7pLDXZ3wYk5hyc0Mb+SkHhDDXT+lU= google.golang.org/genproto/googleapis/api v0.0.0-20260715232425-e75dac1f907d h1:QwnJwPte4XXAkhPu26LTDIahnsMSUV0kK8HkxbC+Pc4= google.golang.org/genproto/googleapis/api v0.0.0-20260715232425-e75dac1f907d/go.mod h1:WRrQ7/7N19PypuT0fxLOL5Lq0waoiRri4FbtHDEKrGE= -google.golang.org/genproto/googleapis/rpc v0.0.0-20260921155816-b14227669459 h1:b0xCahf3FK2m2Cv0p4vTozGPWncCvLfwV86UNg8xWU8= -google.golang.org/genproto/googleapis/rpc v0.0.0-20260921155816-b14227669459/go.mod h1:OaIUM3+LpYcK2GXM4FTmhWoIq371Owdr+Cc7/BsYHHc= +google.golang.org/genproto/googleapis/rpc v0.0.0-20260928230214-8a89bd6388cc h1:4bNTbnb44EqGVy9HaQxSY2jnafSUdgV3qHtedvNpDKg= +google.golang.org/genproto/googleapis/rpc v0.0.0-20260928230214-8a89bd6388cc/go.mod h1:OaIUM3+LpYcK2GXM4FTmhWoIq371Owdr+Cc7/BsYHHc= google.golang.org/grpc v1.84.0 h1:soMyaPJ8pAak5PIQ0DGBUir0XRo2fRoMqhNWMLlLxO0= google.golang.org/grpc v1.84.0/go.mod h1:ljCht0DrxQrXBDRTZp52Qxh3Ffk8CdYm2sj4O2QN2C0= google.golang.org/protobuf v1.36.12 h1:pJOKDDOyeXErUroCihFAd5LQuwXBSpVnKGrj5o/fwxc= diff --git a/ci/resources/stemcell-version-bump/vendor/cloud.google.com/go/auth/grpctransport/directpath.go b/ci/resources/stemcell-version-bump/vendor/cloud.google.com/go/auth/grpctransport/directpath.go index c405e9f8e..3d155346e 100644 --- a/ci/resources/stemcell-version-bump/vendor/cloud.google.com/go/auth/grpctransport/directpath.go +++ b/ci/resources/stemcell-version-bump/vendor/cloud.google.com/go/auth/grpctransport/directpath.go @@ -17,28 +17,127 @@ package grpctransport import ( "context" "net" + "net/url" "os" + "sort" "strconv" "strings" "time" "cloud.google.com/go/auth" "cloud.google.com/go/auth/credentials" + "cloud.google.com/go/auth/internal" "cloud.google.com/go/auth/internal/compute" "golang.org/x/time/rate" "google.golang.org/grpc" grpcgoogle "google.golang.org/grpc/credentials/google" ) +const directPathInterconnectInfix = "-direct." + var logRateLimiter = rate.Sometimes{Interval: 1 * time.Second} +func parseTarget(endpoint string) (host string, query url.Values, err error) { + raw := endpoint + if !strings.Contains(raw, "://") { + raw = "//" + raw + } + u, err := url.Parse(raw) + if err != nil { + return "", nil, err + } + target := u.Host + if target == "" { + target = strings.TrimPrefix(u.Path, "/") + } + if slashIdx := strings.Index(target, "/"); slashIdx != -1 { + target = target[:slashIdx] + } + if h, _, err := net.SplitHostPort(target); err == nil { + host = h + } else { + host = target + } + return host, u.Query(), nil +} + +func encodeQuery(v url.Values) string { + if len(v) == 0 { + return "" + } + var buf strings.Builder + keys := make([]string, 0, len(v)) + for k := range v { + keys = append(keys, k) + } + sort.Strings(keys) + for _, k := range keys { + vs := v[k] + keyEscaped := url.QueryEscape(k) + if len(vs) == 0 { + if buf.Len() > 0 { + buf.WriteByte('&') + } + buf.WriteString(keyEscaped) + continue + } + for _, val := range vs { + if buf.Len() > 0 { + buf.WriteByte('&') + } + buf.WriteString(keyEscaped) + if val != "" { + buf.WriteByte('=') + buf.WriteString(url.QueryEscape(val)) + } + } + } + return buf.String() +} + +func isDirectPathXdsOverInterconnectUsed(endpoint string, o *Options) bool { + if valStr, ok := os.LookupEnv(enableDirectPathXdsOverInterconnectEnvVar); ok { + if b, err := strconv.ParseBool(valStr); err == nil { + return b + } + } + if o != nil && o.InternalOptions != nil && o.InternalOptions.EnableDirectPathXdsOverInterconnect { + return true + } + if strings.Contains(endpoint, directPathInterconnectInfix) || strings.Contains(endpoint, "force-xds") { + return true + } + return false +} + +func hasUniverseDomainHost(endpoint, universeDomain string) bool { + host, _, err := parseTarget(endpoint) + if err != nil { + return false + } + return host == universeDomain || strings.HasSuffix(host, "."+universeDomain) +} + +func canUseDirectPathWithUniverseDomain(endpoint string, opts *Options) bool { + if opts != nil && opts.clientUniverseDomain() != internal.DefaultUniverseDomain { + return false + } + if isDirectPathXdsOverInterconnectUsed(endpoint, opts) && strings.Contains(endpoint, ".") { + return hasUniverseDomainHost(endpoint, internal.DefaultUniverseDomain) + } + return true +} + func isDirectPathEnabled(endpoint string, opts *Options) bool { - if opts.InternalOptions != nil && !opts.InternalOptions.EnableDirectPath { + if opts == nil || opts.InternalOptions == nil || !opts.InternalOptions.EnableDirectPath { return false } if !checkDirectPathEndPoint(endpoint) { return false } + if !canUseDirectPathWithUniverseDomain(endpoint, opts) { + return false + } if b, _ := strconv.ParseBool(os.Getenv(disableDirectPathEnvVar)); b { return false } @@ -46,10 +145,10 @@ func isDirectPathEnabled(endpoint string, opts *Options) bool { } func checkDirectPathEndPoint(endpoint string) bool { - // Only [dns:///]host[:port] is supported, not other schemes (e.g., "tcp://" or "unix://"). - // Also don't try direct path if the user has chosen an alternate name resolver - // (i.e., via ":///" prefix). - if strings.Contains(endpoint, "://") && !strings.HasPrefix(endpoint, "dns:///") { + // Only [dns:///]host[:port] or google-c2p:/// is supported, not other schemes (e.g., "tcp://" or "unix://"). + if strings.Contains(endpoint, "://") && + !strings.HasPrefix(endpoint, "dns:///") && + !strings.HasPrefix(endpoint, "google-c2p:///") { return false } @@ -84,7 +183,7 @@ func isTokenProviderDirectPathCompatible(tp auth.TokenProvider, o *Options) bool if tp == nil { return false } - if o.InternalOptions != nil && o.InternalOptions.EnableNonDefaultSAForDirectPath { + if o != nil && o.InternalOptions != nil && o.InternalOptions.EnableNonDefaultSAForDirectPath { return true } return isTokenProviderComputeEngine(tp) @@ -96,13 +195,16 @@ func isDirectPathXdsUsed(o *Options) bool { return true } // Method 2: Enable DirectPath xDS by option; - if o.InternalOptions != nil && o.InternalOptions.EnableDirectPathXds { + if o != nil && o.InternalOptions != nil && o.InternalOptions.EnableDirectPathXds { return true } return false } func isDirectPathBoundTokenEnabled(opts *InternalOptions) bool { + if opts == nil { + return false + } for _, ev := range opts.AllowHardBoundTokens { if ev == "ALTS" { return true @@ -111,17 +213,42 @@ func isDirectPathBoundTokenEnabled(opts *InternalOptions) bool { return false } +func canUseDirectPath(endpoint string, opts *Options, creds *auth.Credentials) bool { + if !isDirectPathEnabled(endpoint, opts) { + return false + } + interconnect := isDirectPathXdsOverInterconnectUsed(endpoint, opts) + if !compute.OnComputeEngine() && !interconnect { + return false + } + if interconnect { + return creds != nil && creds.TokenProvider != nil + } + return isTokenProviderDirectPathCompatible(creds, opts) +} + // configureDirectPath returns some dial options and an endpoint to use if the // configuration allows the use of direct path. If it does not the provided // grpcOpts and endpoint are returned. -func configureDirectPath(grpcOpts []grpc.DialOption, opts *Options, endpoint string, creds *auth.Credentials) ([]grpc.DialOption, string, error) { +func configureDirectPath(grpcOpts []grpc.DialOption, opts *Options, endpoint string, creds *auth.Credentials, metadata map[string]string) ([]grpc.DialOption, string, error) { logRateLimiter.Do(func() { logDirectPathMisconfig(endpoint, creds, opts) }) - if isDirectPathEnabled(endpoint, opts) && compute.OnComputeEngine() && isTokenProviderDirectPathCompatible(creds, opts) { + if canUseDirectPath(endpoint, opts, creds) { + interconnect := isDirectPathXdsOverInterconnectUsed(endpoint, opts) // Overwrite all of the previously specific DialOptions, DirectPath uses its own set of credentials and certificates. - defaultCredetialsOptions := grpcgoogle.DefaultCredentialsOptions{PerRPCCreds: &grpcCredentialsProvider{creds: creds, endpoint: endpoint}} - if isDirectPathBoundTokenEnabled(opts.InternalOptions) && isTokenProviderComputeEngine(creds) { + perRPCCreds := &grpcCredentialsProvider{ + creds: creds, + endpoint: endpoint, + metadata: metadata, + } + if opts != nil { + perRPCCreds.clientUniverseDomain = opts.UniverseDomain + } + defaultCredetialsOptions := grpcgoogle.DefaultCredentialsOptions{ + PerRPCCreds: perRPCCreds, + } + if !interconnect && opts != nil && isDirectPathBoundTokenEnabled(opts.InternalOptions) && isTokenProviderComputeEngine(creds) { optsClone := opts.resolveDetectOptions() optsClone.TokenBindingType = credentials.ALTSHardBinding altsCreds, err := credentials.DetectDefault(optsClone) @@ -135,13 +262,35 @@ func configureDirectPath(grpcOpts []grpc.DialOption, opts *Options, endpoint str if timeoutDialerOption != nil { grpcOpts = append(grpcOpts, timeoutDialerOption) } + cleanAddr, query, err := parseTarget(endpoint) + if err != nil { + return nil, "", err + } + if interconnect { + if strings.HasSuffix(cleanAddr, ".googleapis.com") && !strings.Contains(cleanAddr, directPathInterconnectInfix) { + authority := cleanAddr + cleanAddr = strings.TrimSuffix(cleanAddr, ".googleapis.com") + directPathInterconnectInfix + "googleapis.com" + grpcOpts = append(grpcOpts, grpc.WithAuthority(authority)) + } else if strings.Contains(cleanAddr, directPathInterconnectInfix) { + authority := strings.Replace(cleanAddr, directPathInterconnectInfix, ".", 1) + grpcOpts = append(grpcOpts, grpc.WithAuthority(authority)) + } + } // Check if google-c2p resolver is enabled for DirectPath - if isDirectPathXdsUsed(opts) { - // google-c2p resolver target must not have a port number - if addr, _, err := net.SplitHostPort(endpoint); err == nil { - endpoint = "google-c2p:///" + addr - } else { - endpoint = "google-c2p:///" + endpoint + if strings.HasPrefix(endpoint, "google-c2p:///") { + if interconnect { + if !query.Has("force-xds") { + query["force-xds"] = nil + } + } + endpoint = "google-c2p:///" + cleanAddr + if q := encodeQuery(query); q != "" { + endpoint += "?" + q + } + } else if isDirectPathXdsUsed(opts) || interconnect { + endpoint = "google-c2p:///" + cleanAddr + if interconnect { + endpoint += "?force-xds" } } else { if !strings.HasPrefix(endpoint, "dns:///") { @@ -160,17 +309,31 @@ func configureDirectPath(grpcOpts []grpc.DialOption, opts *Options, endpoint str } func logDirectPathMisconfig(endpoint string, creds *auth.Credentials, o *Options) { + if o == nil { + return + } + if isDirectPathXdsOverInterconnectUsed(endpoint, o) { + if !canUseDirectPathWithUniverseDomain(endpoint, o) { + o.logger().Warn("DirectPath over Interconnect is disabled. Non-default universe domain is not supported.") + } else if creds == nil || creds.TokenProvider == nil { + o.logger().Warn("DirectPath over Interconnect is disabled. Valid credentials are required.") + } else if !isDirectPathEnabled(endpoint, o) { + o.logger().Warn("DirectPath is disabled. To enable, please set the EnableDirectPath option along with the EnableDirectPathXds option.") + } + return + } // Case 1: does not enable DirectPath if !isDirectPathEnabled(endpoint, o) { o.logger().Warn("DirectPath is disabled. To enable, please set the EnableDirectPath option along with the EnableDirectPathXds option.") } else { + interconnect := isDirectPathXdsOverInterconnectUsed(endpoint, o) // Case 2: credential is not correctly set - if !isTokenProviderDirectPathCompatible(creds, o) { + if !interconnect && !isTokenProviderDirectPathCompatible(creds, o) { o.logger().Warn("DirectPath is disabled. Please make sure the token source is fetched from GCE metadata server and the default service account is used.") } // Case 3: not running on GCE - if !compute.OnComputeEngine() { + if !interconnect && !compute.OnComputeEngine() { o.logger().Warn("DirectPath is disabled. DirectPath is only available in a GCE environment.") } } diff --git a/ci/resources/stemcell-version-bump/vendor/cloud.google.com/go/auth/grpctransport/grpctransport.go b/ci/resources/stemcell-version-bump/vendor/cloud.google.com/go/auth/grpctransport/grpctransport.go index f76091b63..cfdc41c07 100644 --- a/ci/resources/stemcell-version-bump/vendor/cloud.google.com/go/auth/grpctransport/grpctransport.go +++ b/ci/resources/stemcell-version-bump/vendor/cloud.google.com/go/auth/grpctransport/grpctransport.go @@ -52,6 +52,9 @@ const ( // Check env to decide if using google-c2p resolver for DirectPath traffic. enableDirectPathXdsEnvVar = "GOOGLE_CLOUD_ENABLE_DIRECT_PATH_XDS" + // Check env to decide if using DirectPath over Interconnect (on-premises xDS). + enableDirectPathXdsOverInterconnectEnvVar = "GOOGLE_CLOUD_ENABLE_DIRECT_PATH_XDS_OVER_INTERCONNECT" + quotaProjectHeaderKey = "X-goog-user-project" ) @@ -152,6 +155,16 @@ func (o *Options) logger() *slog.Logger { return internallog.New(o.Logger) } +func (o *Options) clientUniverseDomain() string { + if o != nil && o.UniverseDomain != "" { + return o.UniverseDomain + } + if envUD := os.Getenv(internal.UniverseDomainEnvVar); envUD != "" { + return envUD + } + return internal.DefaultUniverseDomain +} + func (o *Options) validate() error { if o == nil { return errors.New("grpctransport: opts required to be non-nil") @@ -212,6 +225,9 @@ type InternalOptions struct { // EnableDirectPathXds overrides the default DirectPath type. It is only // valid when DirectPath is enabled. EnableDirectPathXds bool + // EnableDirectPathXdsOverInterconnect enables DirectPath over Google Cloud + // Interconnect (on-premises xDS name resolution via google-c2p with force-xds). + EnableDirectPathXdsOverInterconnect bool // EnableJWTWithScope specifies if scope can be used with self-signed JWT. EnableJWTWithScope bool // AllowHardBoundTokens allows libraries to request a hard-bound token. @@ -284,6 +300,7 @@ func dial(ctx context.Context, secure bool, opts *Options) (*grpc.ClientConn, er tOpts.DefaultMTLSEndpoint = io.DefaultMTLSEndpoint tOpts.EnableDirectPath = io.EnableDirectPath tOpts.EnableDirectPathXds = io.EnableDirectPathXds + tOpts.EnableDirectPathXdsOverInterconnect = io.EnableDirectPathXdsOverInterconnect } transportCreds, err := transport.GetGRPCTransportCredsAndEndpoint(tOpts) if err != nil { @@ -362,7 +379,7 @@ func dial(ctx context.Context, secure bool, opts *Options) (*grpc.ClientConn, er }), ) // Attempt Direct Path - grpcOpts, transportCreds.Endpoint, err = configureDirectPath(grpcOpts, opts, transportCreds.Endpoint, creds) + grpcOpts, transportCreds.Endpoint, err = configureDirectPath(grpcOpts, opts, transportCreds.Endpoint, creds, metadata) if err != nil { return nil, err } @@ -507,6 +524,9 @@ func extractHostPort(target string) (string, int) { target = target[slashIdx+1:] } } + if qIdx := strings.Index(target, "?"); qIdx != -1 { + target = target[:qIdx] + } host, portStr, err := net.SplitHostPort(target) if err != nil { return target, 0 diff --git a/ci/resources/stemcell-version-bump/vendor/cloud.google.com/go/auth/internal/transport/cba.go b/ci/resources/stemcell-version-bump/vendor/cloud.google.com/go/auth/internal/transport/cba.go index 14bca966e..ebce7db51 100644 --- a/ci/resources/stemcell-version-bump/vendor/cloud.google.com/go/auth/internal/transport/cba.go +++ b/ci/resources/stemcell-version-bump/vendor/cloud.google.com/go/auth/internal/transport/cba.go @@ -65,15 +65,16 @@ const ( // transport packages in order to avoid cyclic deps. It correlates 1:1 with // fields on httptransport.Options and grpctransport.Options. type Options struct { - Endpoint string - DefaultEndpointTemplate string - DefaultMTLSEndpoint string - ClientCertProvider cert.Provider - Client *http.Client - UniverseDomain string - EnableDirectPath bool - EnableDirectPathXds bool - Logger *slog.Logger + Endpoint string + DefaultEndpointTemplate string + DefaultMTLSEndpoint string + ClientCertProvider cert.Provider + Client *http.Client + UniverseDomain string + EnableDirectPath bool + EnableDirectPathXds bool + EnableDirectPathXdsOverInterconnect bool + Logger *slog.Logger } // getUniverseDomain returns the default service domain for a given Cloud diff --git a/ci/resources/stemcell-version-bump/vendor/cloud.google.com/go/auth/internal/transport/s2a.go b/ci/resources/stemcell-version-bump/vendor/cloud.google.com/go/auth/internal/transport/s2a.go index a63309956..7e74590dd 100644 --- a/ci/resources/stemcell-version-bump/vendor/cloud.google.com/go/auth/internal/transport/s2a.go +++ b/ci/resources/stemcell-version-bump/vendor/cloud.google.com/go/auth/internal/transport/s2a.go @@ -126,7 +126,7 @@ func shouldUseS2A(clientCertSource cert.Provider, opts *Options) bool { return false } // If directPath is enabled, skip S2A. - return !opts.EnableDirectPath && !opts.EnableDirectPathXds + return !opts.EnableDirectPath && !opts.EnableDirectPathXds && !opts.EnableDirectPathXdsOverInterconnect } func isGoogleS2AEnabled() bool { diff --git a/ci/resources/stemcell-version-bump/vendor/github.com/google/s2a-go/internal/v2/s2av2.go b/ci/resources/stemcell-version-bump/vendor/github.com/google/s2a-go/internal/v2/s2av2.go index c59e1c829..0017307f0 100644 --- a/ci/resources/stemcell-version-bump/vendor/github.com/google/s2a-go/internal/v2/s2av2.go +++ b/ci/resources/stemcell-version-bump/vendor/github.com/google/s2a-go/internal/v2/s2av2.go @@ -168,7 +168,8 @@ func (c *s2av2TransportCreds) ClientHandshake(ctx context.Context, serverAuthori } retry.Run(timeoutCtx, func() error { - config, err = tlsconfigstore.GetTLSConfigurationForClient(sn, s2AStream, tokenManager, c.localIdentity, c.verificationMode, c.serverAuthorizationPolicy) + // The gRPC transport requires HTTP/2, so this path never overrides ALPN. + config, err = tlsconfigstore.GetTLSConfigurationForClient(sn, s2AStream, tokenManager, c.localIdentity, c.verificationMode, c.serverAuthorizationPolicy, nil) return err }) if err != nil { @@ -308,14 +309,15 @@ func NewClientTLSConfig( serverName string, serverAuthorizationPolicy []byte, getStream stream.GetS2AStream, - localIdentity *commonpb.Identity) (*tls.Config, error) { + localIdentity *commonpb.Identity, + nextProtos []string) (*tls.Config, error) { s2AStream, err := createStream(ctx, s2av2Address, transportCreds, getStream) if err != nil { grpclog.Infof("Failed to connect to S2Av2: %v", err) return nil, err } - return tlsconfigstore.GetTLSConfigurationForClient(removeServerNamePort(serverName), s2AStream, tokenManager, localIdentity, verificationMode, serverAuthorizationPolicy) + return tlsconfigstore.GetTLSConfigurationForClient(removeServerNamePort(serverName), s2AStream, tokenManager, localIdentity, verificationMode, serverAuthorizationPolicy, nextProtos) } // OverrideServerName sets the ServerName in the s2av2TransportCreds protocol diff --git a/ci/resources/stemcell-version-bump/vendor/github.com/google/s2a-go/internal/v2/tlsconfigstore/tlsconfigstore.go b/ci/resources/stemcell-version-bump/vendor/github.com/google/s2a-go/internal/v2/tlsconfigstore/tlsconfigstore.go index 6ca75f560..a545e6373 100644 --- a/ci/resources/stemcell-version-bump/vendor/github.com/google/s2a-go/internal/v2/tlsconfigstore/tlsconfigstore.go +++ b/ci/resources/stemcell-version-bump/vendor/github.com/google/s2a-go/internal/v2/tlsconfigstore/tlsconfigstore.go @@ -25,6 +25,7 @@ import ( "encoding/pem" "errors" "fmt" + "slices" "github.com/google/s2a-go/internal/tokenmanager" "github.com/google/s2a-go/internal/v2/certverifier" @@ -42,8 +43,18 @@ const ( h2 = "h2" ) +// nextProtosOrDefault returns the ALPN protocols to offer during the handshake. +func nextProtosOrDefault(nextProtos []string) []string { + if len(nextProtos) == 0 { + return []string{h2} + } + return slices.Clone(nextProtos) +} + // GetTLSConfigurationForClient returns a tls.Config instance for use by a client application. -func GetTLSConfigurationForClient(serverHostname string, s2AStream stream.S2AStream, tokenManager tokenmanager.AccessTokenManager, localIdentity *commonpb.Identity, verificationMode s2av2pb.ValidatePeerCertificateChainReq_VerificationMode, serverAuthorizationPolicy []byte) (*tls.Config, error) { +// nextProtos sets the ALPN protocols offered during the handshake; if it is +// empty, the returned config offers HTTP/2 only. +func GetTLSConfigurationForClient(serverHostname string, s2AStream stream.S2AStream, tokenManager tokenmanager.AccessTokenManager, localIdentity *commonpb.Identity, verificationMode s2av2pb.ValidatePeerCertificateChainReq_VerificationMode, serverAuthorizationPolicy []byte, nextProtos []string) (*tls.Config, error) { authMechanisms := getAuthMechanisms(tokenManager, []*commonpb.Identity{localIdentity}) if grpclog.V(1) { @@ -116,7 +127,7 @@ func GetTLSConfigurationForClient(serverHostname string, s2AStream stream.S2AStr SessionTicketsDisabled: true, MinVersion: minVersion, MaxVersion: maxVersion, - NextProtos: []string{h2}, + NextProtos: nextProtosOrDefault(nextProtos), } if len(tlsConfig.CertificateChain) > 0 { config.Certificates = []tls.Certificate{cert} diff --git a/ci/resources/stemcell-version-bump/vendor/github.com/google/s2a-go/s2a.go b/ci/resources/stemcell-version-bump/vendor/github.com/google/s2a-go/s2a.go index 8aaa3269c..c5e7ae09b 100644 --- a/ci/resources/stemcell-version-bump/vendor/github.com/google/s2a-go/s2a.go +++ b/ci/resources/stemcell-version-bump/vendor/github.com/google/s2a-go/s2a.go @@ -305,6 +305,11 @@ type TLSClientConfigOptions struct { // ServerName: "example.com", // }) ServerName string + + // NextProtos is the list of ALPN protocols offered during the TLS + // handshake. If empty, ClientOptions.NextProtos is used; if that is also + // empty, HTTP/2 ("h2") is offered. + NextProtos []string } // TLSClientConfigFactory defines the interface for a client TLS config factory. @@ -337,6 +342,7 @@ func NewTLSClientConfigFactory(opts *ClientOptions) (TLSClientConfigFactory, err serverAuthorizationPolicy: opts.serverAuthorizationPolicy, getStream: opts.getS2AStream, localIdentity: localIdentity, + nextProtos: opts.NextProtos, }, nil } return &s2aTLSClientConfigFactory{ @@ -347,6 +353,7 @@ func NewTLSClientConfigFactory(opts *ClientOptions) (TLSClientConfigFactory, err serverAuthorizationPolicy: opts.serverAuthorizationPolicy, getStream: opts.getS2AStream, localIdentity: localIdentity, + nextProtos: opts.NextProtos, }, nil } @@ -359,15 +366,22 @@ type s2aTLSClientConfigFactory struct { getStream stream.GetS2AStream // localIdentity should only be used by the client. localIdentity *commonpb.Identity + nextProtos []string } func (f *s2aTLSClientConfigFactory) Build( ctx context.Context, opts *TLSClientConfigOptions) (*tls.Config, error) { serverName := "" - if opts != nil && opts.ServerName != "" { - serverName = opts.ServerName + nextProtos := f.nextProtos + if opts != nil { + if opts.ServerName != "" { + serverName = opts.ServerName + } + if len(opts.NextProtos) > 0 { + nextProtos = opts.NextProtos + } } - return v2.NewClientTLSConfig(ctx, f.s2av2Address, f.transportCreds, f.tokenManager, f.verificationMode, serverName, f.serverAuthorizationPolicy, f.getStream, f.localIdentity) + return v2.NewClientTLSConfig(ctx, f.s2av2Address, f.transportCreds, f.tokenManager, f.verificationMode, serverName, f.serverAuthorizationPolicy, f.getStream, f.localIdentity, nextProtos) } func getVerificationMode(verificationMode VerificationModeType) s2av2pb.ValidatePeerCertificateChainReq_VerificationMode { diff --git a/ci/resources/stemcell-version-bump/vendor/github.com/google/s2a-go/s2a_options.go b/ci/resources/stemcell-version-bump/vendor/github.com/google/s2a-go/s2a_options.go index 0db758e4e..abbbf8556 100644 --- a/ci/resources/stemcell-version-bump/vendor/github.com/google/s2a-go/s2a_options.go +++ b/ci/resources/stemcell-version-bump/vendor/github.com/google/s2a-go/s2a_options.go @@ -145,6 +145,17 @@ type ClientOptions struct { // peer certificate chain. VerificationMode VerificationModeType + // NextProtos is the list of ALPN protocols offered during the TLS + // handshake. If empty, HTTP/2 ("h2") is offered. + // + // This is only consulted when building a tls.Config for an HTTP client, + // via NewTLSClientConfigFactory or NewS2ADialTLSContextFunc. It is ignored + // by NewClientCreds, because the gRPC transport requires HTTP/2. + // + // Set this when the connection will not speak HTTP/2, for example + // []string{"http/1.1"} for an HTTP/1.1 client. + NextProtos []string + // Optional fallback after dialing with S2A fails. FallbackOpts *FallbackOptions diff --git a/ci/resources/stemcell-version-bump/vendor/google.golang.org/api/internal/settings.go b/ci/resources/stemcell-version-bump/vendor/google.golang.org/api/internal/settings.go index 03e928cd5..225f485b9 100644 --- a/ci/resources/stemcell-version-bump/vendor/google.golang.org/api/internal/settings.go +++ b/ci/resources/stemcell-version-bump/vendor/google.golang.org/api/internal/settings.go @@ -44,30 +44,31 @@ type DialSettings struct { // Deprecated: Use AuthCredentialsFile instead, due to security risk. CredentialsFile string // Deprecated: Use AuthCredentialsJSON instead, due to security risk. - CredentialsJSON []byte - InternalCredentials *google.Credentials - UserAgent string - APIKey string - Audiences []string - DefaultAudience string - HTTPClient *http.Client - GRPCDialOpts []grpc.DialOption - GRPCConn *grpc.ClientConn - GRPCConnPool ConnPool - GRPCConnPoolSize int - NoAuth bool - TelemetryDisabled bool - ClientCertSource func(*tls.CertificateRequestInfo) (*tls.Certificate, error) - CustomClaims map[string]interface{} - SkipValidation bool - ImpersonationConfig *impersonate.Config - EnableDirectPath bool - EnableDirectPathXds bool - AllowNonDefaultServiceAccount bool - DefaultUniverseDomain string - UniverseDomain string - AllowHardBoundTokens []string - Logger *slog.Logger + CredentialsJSON []byte + InternalCredentials *google.Credentials + UserAgent string + APIKey string + Audiences []string + DefaultAudience string + HTTPClient *http.Client + GRPCDialOpts []grpc.DialOption + GRPCConn *grpc.ClientConn + GRPCConnPool ConnPool + GRPCConnPoolSize int + NoAuth bool + TelemetryDisabled bool + ClientCertSource func(*tls.CertificateRequestInfo) (*tls.Certificate, error) + CustomClaims map[string]interface{} + SkipValidation bool + ImpersonationConfig *impersonate.Config + EnableDirectPath bool + EnableDirectPathXds bool + EnableDirectPathXdsOverInterconnect bool + AllowNonDefaultServiceAccount bool + DefaultUniverseDomain string + UniverseDomain string + AllowHardBoundTokens []string + Logger *slog.Logger // Google API system parameters. For more information please read: // https://cloud.google.com/apis/docs/system-parameters QuotaProject string diff --git a/ci/resources/stemcell-version-bump/vendor/google.golang.org/api/internal/version.go b/ci/resources/stemcell-version-bump/vendor/google.golang.org/api/internal/version.go index f2cd9f49c..cece93f31 100644 --- a/ci/resources/stemcell-version-bump/vendor/google.golang.org/api/internal/version.go +++ b/ci/resources/stemcell-version-bump/vendor/google.golang.org/api/internal/version.go @@ -5,4 +5,4 @@ package internal // Version is the current tagged release of the library. -const Version = "0.300.0" +const Version = "0.301.0" diff --git a/ci/resources/stemcell-version-bump/vendor/google.golang.org/api/option/internaloption/internaloption.go b/ci/resources/stemcell-version-bump/vendor/google.golang.org/api/option/internaloption/internaloption.go index 6f9fdf23f..fedcefbf8 100644 --- a/ci/resources/stemcell-version-bump/vendor/google.golang.org/api/option/internaloption/internaloption.go +++ b/ci/resources/stemcell-version-bump/vendor/google.golang.org/api/option/internaloption/internaloption.go @@ -110,6 +110,22 @@ func (x enableDirectPathXds) Apply(o *internal.DialSettings) { o.EnableDirectPathXds = bool(x) } +// EnableDirectPathXdsOverInterconnect returns a ClientOption that enables +// DirectPath xDS over Cloud Interconnect. It is only valid when DirectPath +// and DirectPath xDS are enabled. +// +// It should only be used internally by generated clients. +// This is an EXPERIMENTAL API and may be changed or removed in the future. +func EnableDirectPathXdsOverInterconnect() option.ClientOption { + return enableDirectPathXdsOverInterconnect(true) +} + +type enableDirectPathXdsOverInterconnect bool + +func (x enableDirectPathXdsOverInterconnect) Apply(o *internal.DialSettings) { + o.EnableDirectPathXdsOverInterconnect = bool(x) +} + // AllowNonDefaultServiceAccount returns a ClientOption that overrides the default // requirement for using the default service account for DirectPath. // diff --git a/ci/resources/stemcell-version-bump/vendor/google.golang.org/api/option/internaloption/unsaferesolver.go b/ci/resources/stemcell-version-bump/vendor/google.golang.org/api/option/internaloption/unsaferesolver.go index 51a98c5a8..7c5012772 100644 --- a/ci/resources/stemcell-version-bump/vendor/google.golang.org/api/option/internaloption/unsaferesolver.go +++ b/ci/resources/stemcell-version-bump/vendor/google.golang.org/api/option/internaloption/unsaferesolver.go @@ -96,6 +96,15 @@ func (ur *UnsafeResolver) ResolvedEnableDirectPathXds() bool { return ur.ds.EnableDirectPathXds } +// ResolvedEnableDirectPathXdsOverInterconnect returns whether DirectPath xDS over +// Cloud Interconnect was requested. This corresponds to the +// EnableDirectPathXdsOverInterconnect option in this package. +// +// This is an EXPERIMENTAL API and may be changed or removed in the future. +func (ur *UnsafeResolver) ResolvedEnableDirectPathXdsOverInterconnect() bool { + return ur.ds.EnableDirectPathXdsOverInterconnect +} + // ResolvedWithoutAuthentication returns whether the option to explicitly disable // authentication was requested. This corresponds to the WithoutAuthentication // ClientOption in google.golang.org/option. diff --git a/ci/resources/stemcell-version-bump/vendor/google.golang.org/api/storage/v1/storage-api.json b/ci/resources/stemcell-version-bump/vendor/google.golang.org/api/storage/v1/storage-api.json index f075cf4a4..726436dc7 100644 --- a/ci/resources/stemcell-version-bump/vendor/google.golang.org/api/storage/v1/storage-api.json +++ b/ci/resources/stemcell-version-bump/vendor/google.golang.org/api/storage/v1/storage-api.json @@ -253,7 +253,7 @@ "location": "northamerica-south1" } ], - "etag": "\"3132373433353833303733323234363038313037\"", + "etag": "\"33373434373338383138373230333838393632\"", "icons": { "x16": "https://www.google.com/images/icons/product/cloud_storage-16.png", "x32": "https://www.google.com/images/icons/product/cloud_storage-32.png" @@ -4782,7 +4782,7 @@ } } }, - "revision": "20260926", + "revision": "20260930", "rootUrl": "https://storage.googleapis.com/", "schemas": { "AdvanceRelocateBucketOperationRequest": { @@ -5426,6 +5426,21 @@ "format": "date-time", "type": "string" }, + "hardDeletePause": { + "description": "The bucket's hard delete pause configuration. If set, soft-deleted objects in the bucket will not be permanently deleted until the hard delete pause is disabled.", + "properties": { + "effectiveTime": { + "description": "Server-determined value that indicates the time from which the hard delete pause became effective. This value is in RFC 3339 format.", + "format": "date-time", + "type": "string" + }, + "enabled": { + "description": "Whether hard deletions are paused.", + "type": "boolean" + } + }, + "type": "object" + }, "retentionDurationSeconds": { "description": "The duration in seconds that soft-deleted objects in the bucket will be retained and cannot be permanently deleted.", "format": "int64", diff --git a/ci/resources/stemcell-version-bump/vendor/google.golang.org/api/storage/v1/storage-gen.go b/ci/resources/stemcell-version-bump/vendor/google.golang.org/api/storage/v1/storage-gen.go index 628f32b85..80ca72e97 100644 --- a/ci/resources/stemcell-version-bump/vendor/google.golang.org/api/storage/v1/storage-gen.go +++ b/ci/resources/stemcell-version-bump/vendor/google.golang.org/api/storage/v1/storage-gen.go @@ -1350,6 +1350,10 @@ type BucketSoftDeletePolicy struct { // the policy, or one with a greater retention, was effective. This value is in // RFC 3339 format. EffectiveTime string `json:"effectiveTime,omitempty"` + // HardDeletePause: The bucket's hard delete pause configuration. If set, + // soft-deleted objects in the bucket will not be permanently deleted until the + // hard delete pause is disabled. + HardDeletePause *BucketSoftDeletePolicyHardDeletePause `json:"hardDeletePause,omitempty"` // RetentionDurationSeconds: The duration in seconds that soft-deleted objects // in the bucket will be retained and cannot be permanently deleted. RetentionDurationSeconds int64 `json:"retentionDurationSeconds,omitempty,string"` @@ -1371,6 +1375,33 @@ func (s BucketSoftDeletePolicy) MarshalJSON() ([]byte, error) { return gensupport.MarshalJSON(NoMethod(s), s.ForceSendFields, s.NullFields) } +// BucketSoftDeletePolicyHardDeletePause: The bucket's hard delete pause +// configuration. If set, soft-deleted objects in the bucket will not be +// permanently deleted until the hard delete pause is disabled. +type BucketSoftDeletePolicyHardDeletePause struct { + // EffectiveTime: Server-determined value that indicates the time from which + // the hard delete pause became effective. This value is in RFC 3339 format. + EffectiveTime string `json:"effectiveTime,omitempty"` + // Enabled: Whether hard deletions are paused. + Enabled bool `json:"enabled,omitempty"` + // ForceSendFields is a list of field names (e.g. "EffectiveTime") to + // unconditionally include in API requests. By default, fields with empty or + // default values are omitted from API requests. See + // https://pkg.go.dev/google.golang.org/api#hdr-ForceSendFields for more + // details. + ForceSendFields []string `json:"-"` + // NullFields is a list of field names (e.g. "EffectiveTime") to include in API + // requests with the JSON null value. By default, fields with empty values are + // omitted from API requests. See + // https://pkg.go.dev/google.golang.org/api#hdr-NullFields for more details. + NullFields []string `json:"-"` +} + +func (s BucketSoftDeletePolicyHardDeletePause) MarshalJSON() ([]byte, error) { + type NoMethod BucketSoftDeletePolicyHardDeletePause + return gensupport.MarshalJSON(NoMethod(s), s.ForceSendFields, s.NullFields) +} + // BucketVersioning: The bucket's versioning configuration. type BucketVersioning struct { // Enabled: While set to true, versioning is fully enabled for this bucket. diff --git a/ci/resources/stemcell-version-bump/vendor/google.golang.org/api/transport/grpc/dial.go b/ci/resources/stemcell-version-bump/vendor/google.golang.org/api/transport/grpc/dial.go index 7c6bf402b..bfca990c4 100644 --- a/ci/resources/stemcell-version-bump/vendor/google.golang.org/api/transport/grpc/dial.go +++ b/ci/resources/stemcell-version-bump/vendor/google.golang.org/api/transport/grpc/dial.go @@ -221,14 +221,16 @@ func dialPoolNewAuth(ctx context.Context, secure bool, poolSize int, ds *interna EnableNonDefaultSAForDirectPath: ds.AllowNonDefaultServiceAccount, EnableDirectPath: ds.EnableDirectPath, EnableDirectPathXds: ds.EnableDirectPathXds, - EnableJWTWithScope: ds.EnableJwtWithScope, - AllowHardBoundTokens: ds.AllowHardBoundTokens, - DefaultAudience: ds.DefaultAudience, - DefaultEndpointTemplate: defaultEndpointTemplate, - DefaultMTLSEndpoint: ds.DefaultMTLSEndpoint, - DefaultScopes: ds.DefaultScopes, - SkipValidation: skipValidation, - TelemetryAttributes: ds.TelemetryAttributes, + // TODO(https://github.com/googleapis/google-cloud-go/pull/20559): Bump cloud.google.com/go/auth in go.mod once released. + EnableDirectPathXdsOverInterconnect: ds.EnableDirectPathXdsOverInterconnect, + EnableJWTWithScope: ds.EnableJwtWithScope, + AllowHardBoundTokens: ds.AllowHardBoundTokens, + DefaultAudience: ds.DefaultAudience, + DefaultEndpointTemplate: defaultEndpointTemplate, + DefaultMTLSEndpoint: ds.DefaultMTLSEndpoint, + DefaultScopes: ds.DefaultScopes, + SkipValidation: skipValidation, + TelemetryAttributes: ds.TelemetryAttributes, }, UniverseDomain: ds.GetUniverseDomain(), Logger: ds.Logger, diff --git a/ci/resources/stemcell-version-bump/vendor/modules.txt b/ci/resources/stemcell-version-bump/vendor/modules.txt index 99c78f6c5..3b96b79a2 100644 --- a/ci/resources/stemcell-version-bump/vendor/modules.txt +++ b/ci/resources/stemcell-version-bump/vendor/modules.txt @@ -7,7 +7,7 @@ cloud.google.com/go/internal cloud.google.com/go/internal/optional cloud.google.com/go/internal/trace cloud.google.com/go/internal/version -# cloud.google.com/go/auth v0.24.0 +# cloud.google.com/go/auth v0.24.1-0.20261001053825-dbc26066f70a ## explicit; go 1.26.0 cloud.google.com/go/auth cloud.google.com/go/auth/credentials @@ -136,7 +136,7 @@ github.com/go-logr/logr/funcr # github.com/go-logr/stdr v1.2.2 ## explicit; go 1.16 github.com/go-logr/stdr -# github.com/google/s2a-go v0.1.10 +# github.com/google/s2a-go v0.1.11 ## explicit; go 1.20 github.com/google/s2a-go github.com/google/s2a-go/fallback @@ -323,7 +323,7 @@ golang.org/x/text/unicode/norm # golang.org/x/time v0.16.0 ## explicit; go 1.26.0 golang.org/x/time/rate -# google.golang.org/api v0.300.0 +# google.golang.org/api v0.301.0 ## explicit; go 1.26.0 google.golang.org/api/googleapi google.golang.org/api/googleapi/transport @@ -356,7 +356,7 @@ google.golang.org/genproto/googleapis/api/expr/v1alpha1 google.golang.org/genproto/googleapis/api/label google.golang.org/genproto/googleapis/api/metric google.golang.org/genproto/googleapis/api/monitoredres -# google.golang.org/genproto/googleapis/rpc v0.0.0-20260921155816-b14227669459 +# google.golang.org/genproto/googleapis/rpc v0.0.0-20260928230214-8a89bd6388cc ## explicit; go 1.26.0 google.golang.org/genproto/googleapis/rpc/code google.golang.org/genproto/googleapis/rpc/errdetails