diff --git a/go.mod b/go.mod index d1f4b1c..d85ac79 100644 --- a/go.mod +++ b/go.mod @@ -8,12 +8,12 @@ require ( cloud.google.com/go/compute v1.54.0 github.com/BurntSushi/toml v1.6.0 github.com/cloudbase/garm-provider-common v0.1.8-0.20251001105909-bbcacae60e7c - github.com/googleapis/gax-go/v2 v2.16.0 + github.com/googleapis/gax-go/v2 v2.17.0 github.com/invopop/jsonschema v0.13.0 github.com/stretchr/testify v1.11.1 github.com/xeipuuv/gojsonschema v1.2.0 - golang.org/x/oauth2 v0.34.0 - google.golang.org/api v0.262.0 + golang.org/x/oauth2 v0.35.0 + google.golang.org/api v0.266.0 google.golang.org/protobuf v1.36.11 ) @@ -51,9 +51,9 @@ require ( golang.org/x/net v0.49.0 // indirect golang.org/x/sys v0.40.0 // indirect golang.org/x/text v0.33.0 // indirect - google.golang.org/genproto v0.0.0-20260122232226-8e98ce8d340d // indirect - google.golang.org/genproto/googleapis/api v0.0.0-20260122232226-8e98ce8d340d // indirect - google.golang.org/genproto/googleapis/rpc v0.0.0-20260122232226-8e98ce8d340d // indirect + google.golang.org/genproto v0.0.0-20260128011058-8636f8732409 // indirect + google.golang.org/genproto/googleapis/api v0.0.0-20260128011058-8636f8732409 // indirect + google.golang.org/genproto/googleapis/rpc v0.0.0-20260203192932-546029d2fa20 // indirect google.golang.org/grpc v1.78.0 // indirect gopkg.in/natefinch/lumberjack.v2 v2.2.1 // indirect gopkg.in/yaml.v3 v3.0.1 // indirect diff --git a/go.sum b/go.sum index 9ee1653..db0c71a 100644 --- a/go.sum +++ b/go.sum @@ -38,8 +38,8 @@ 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.11 h1:vAe81Msw+8tKUxi2Dqh/NZMz7475yUvmRIkXr4oN2ao= github.com/googleapis/enterprise-certificate-proxy v0.3.11/go.mod h1:RFV7MUdlb7AgEq2v7FmMCfeSMCllAzWxFgRdusoGks8= -github.com/googleapis/gax-go/v2 v2.16.0 h1:iHbQmKLLZrexmb0OSsNGTeSTS0HO4YvFOG8g5E4Zd0Y= -github.com/googleapis/gax-go/v2 v2.16.0/go.mod h1:o1vfQjjNZn4+dPnRdl/4ZD7S9414Y4xA+a/6Icj6l14= +github.com/googleapis/gax-go/v2 v2.17.0 h1:RksgfBpxqff0EZkDWYuz9q/uWsTVz+kf43LsZ1J6SMc= +github.com/googleapis/gax-go/v2 v2.17.0/go.mod h1:mzaqghpQp4JDh3HvADwrat+6M3MOIDp5YKHhb9PAgDY= github.com/gorilla/handlers v1.5.2 h1:cLTUSsNkgcwhgRqvCNmdbRWG0A3N4F+M2nWKdScwyEE= github.com/gorilla/handlers v1.5.2/go.mod h1:dX+xVpaxdSw+q0Qek8SSsl3dfMk3jNddUkMzo0GtH0w= github.com/invopop/jsonschema v0.13.0 h1:KvpoAJWEjR3uD9Kbm2HWJmqsEaHt8lBUpd0qHcIi21E= @@ -95,8 +95,8 @@ golang.org/x/crypto v0.47.0 h1:V6e3FRj+n4dbpw86FJ8Fv7XVOql7TEwpHapKoMJ/GO8= golang.org/x/crypto v0.47.0/go.mod h1:ff3Y9VzzKbwSSEzWqJsJVBnWmRwRSHt/6Op5n9bQc4A= golang.org/x/net v0.49.0 h1:eeHFmOGUTtaaPSGNmjBKpbng9MulQsJURQUAfUwY++o= golang.org/x/net v0.49.0/go.mod h1:/ysNB2EvaqvesRkuLAyjI1ycPZlQHM3q01F02UY/MV8= -golang.org/x/oauth2 v0.34.0 h1:hqK/t4AKgbqWkdkcAeI8XLmbK+4m4G5YeQRrmiotGlw= -golang.org/x/oauth2 v0.34.0/go.mod h1:lzm5WQJQwKZ3nwavOZ3IS5Aulzxi68dUSgRHujetwEA= +golang.org/x/oauth2 v0.35.0 h1:Mv2mzuHuZuY2+bkyWXIHMfhNdJAdwW3FuWeCPYN5GVQ= +golang.org/x/oauth2 v0.35.0/go.mod h1:lzm5WQJQwKZ3nwavOZ3IS5Aulzxi68dUSgRHujetwEA= golang.org/x/sync v0.19.0 h1:vV+1eWNmZ5geRlYjzm2adRgW2/mcpevXNg50YZtPCE4= golang.org/x/sync v0.19.0/go.mod h1:9KTHXmSnoGruLpwFjVSX0lNNA75CykiMECbovNTZqGI= golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= @@ -106,14 +106,14 @@ golang.org/x/text v0.33.0 h1:B3njUFyqtHDUI5jMn1YIr5B0IE2U0qck04r6d4KPAxE= golang.org/x/text v0.33.0/go.mod h1:LuMebE6+rBincTi9+xWTY8TztLzKHc/9C1uBCG27+q8= 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.262.0 h1:4B+3u8He2GwyN8St3Jhnd3XRHlIvc//sBmgHSp78oNY= -google.golang.org/api v0.262.0/go.mod h1:jNwmH8BgUBJ/VrUG6/lIl9YiildyLd09r9ZLHiQ6cGI= -google.golang.org/genproto v0.0.0-20260122232226-8e98ce8d340d h1:hUplc9kLwH374NIY3PreRUK3Unc0xLm/W7MDsm0gCNo= -google.golang.org/genproto v0.0.0-20260122232226-8e98ce8d340d/go.mod h1:SpjiK7gGN2j/djoQMxLl3QOe/J/XxNzC5M+YLecVVWU= -google.golang.org/genproto/googleapis/api v0.0.0-20260122232226-8e98ce8d340d h1:tUKoKfdZnSjTf5LW7xpG4c6SZ3Ozisn5eumcoTuMEN4= -google.golang.org/genproto/googleapis/api v0.0.0-20260122232226-8e98ce8d340d/go.mod h1:p3MLuOwURrGBRoEyFHBT3GjUwaCQVKeNqqWxlcISGdw= -google.golang.org/genproto/googleapis/rpc v0.0.0-20260122232226-8e98ce8d340d h1:xXzuihhT3gL/ntduUZwHECzAn57E8dA6l8SOtYWdD8Q= -google.golang.org/genproto/googleapis/rpc v0.0.0-20260122232226-8e98ce8d340d/go.mod h1:j9x/tPzZkyxcgEFkiKEEGxfvyumM01BEtsW8xzOahRQ= +google.golang.org/api v0.266.0 h1:hco+oNCf9y7DmLeAtHJi/uBAY7n/7XC9mZPxu1ROiyk= +google.golang.org/api v0.266.0/go.mod h1:Jzc0+ZfLnyvXma3UtaTl023TdhZu6OMBP9tJ+0EmFD0= +google.golang.org/genproto v0.0.0-20260128011058-8636f8732409 h1:VQZ/yAbAtjkHgH80teYd2em3xtIkkHd7ZhqfH2N9CsM= +google.golang.org/genproto v0.0.0-20260128011058-8636f8732409/go.mod h1:rxKD3IEILWEu3P44seeNOAwZN4SaoKaQ/2eTg4mM6EM= +google.golang.org/genproto/googleapis/api v0.0.0-20260128011058-8636f8732409 h1:merA0rdPeUV3YIIfHHcH4qBkiQAc1nfCKSI7lB4cV2M= +google.golang.org/genproto/googleapis/api v0.0.0-20260128011058-8636f8732409/go.mod h1:fl8J1IvUjCilwZzQowmw2b7HQB2eAuYBabMXzWurF+I= +google.golang.org/genproto/googleapis/rpc v0.0.0-20260203192932-546029d2fa20 h1:Jr5R2J6F6qWyzINc+4AM8t5pfUz6beZpHp678GNrMbE= +google.golang.org/genproto/googleapis/rpc v0.0.0-20260203192932-546029d2fa20/go.mod h1:j9x/tPzZkyxcgEFkiKEEGxfvyumM01BEtsW8xzOahRQ= google.golang.org/grpc v1.78.0 h1:K1XZG/yGDJnzMdd/uZHAkVqJE+xIDOcmdSFZkBUicNc= google.golang.org/grpc v1.78.0/go.mod h1:I47qjTo4OKbMkjA/aOOwxDIiPSBofUtQUI5EfpWvW7U= google.golang.org/protobuf v1.36.11 h1:fV6ZwhNocDyBLK0dj+fg8ektcVegBBuEolpbTQyBNVE= diff --git a/vendor/github.com/googleapis/gax-go/v2/CHANGES.md b/vendor/github.com/googleapis/gax-go/v2/CHANGES.md index 2c3300e..ac3f57a 100644 --- a/vendor/github.com/googleapis/gax-go/v2/CHANGES.md +++ b/vendor/github.com/googleapis/gax-go/v2/CHANGES.md @@ -1,5 +1,11 @@ # Changes +## [2.17.0](https://github.com/googleapis/google-cloud-go/releases/tag/v2.17.0) (2026-02-03) + +### Features + +* update Invoke to add retry count to context (#462) ([ea7096d](https://github.com/googleapis/google-cloud-go/commit/ea7096d50d665064dbfeffd7d93fa13d810ad4e4)) + ## [2.16.0](https://github.com/googleapis/google-cloud-go/releases/tag/v2.16.0) (2025-12-17) ### Features diff --git a/vendor/github.com/googleapis/gax-go/v2/internal/version.go b/vendor/github.com/googleapis/gax-go/v2/internal/version.go index fa0e100..c3c26b9 100644 --- a/vendor/github.com/googleapis/gax-go/v2/internal/version.go +++ b/vendor/github.com/googleapis/gax-go/v2/internal/version.go @@ -1,4 +1,4 @@ -// Copyright 2025 Google LLC +// Copyright 2026 Google LLC // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. @@ -17,4 +17,4 @@ package internal // Version is the current tagged release of the library. -const Version = "2.16.0" +const Version = "2.17.0" diff --git a/vendor/github.com/googleapis/gax-go/v2/invoke.go b/vendor/github.com/googleapis/gax-go/v2/invoke.go index 721d1af..af1eebe 100644 --- a/vendor/github.com/googleapis/gax-go/v2/invoke.go +++ b/vendor/github.com/googleapis/gax-go/v2/invoke.go @@ -31,15 +31,26 @@ package gax import ( "context" + "strconv" "strings" "time" "github.com/googleapis/gax-go/v2/apierror" + "google.golang.org/grpc/metadata" ) // APICall is a user defined call stub. type APICall func(context.Context, CallSettings) error +// withRetryCount returns a new context with the retry count appended to +// gRPC metadata. The retry count is the number of retries that have been +// attempted. On the initial request, retry count is 0. +// On a second request (the first retry), retry count is 1. +func withRetryCount(ctx context.Context, retryCount int) context.Context { + // Add to gRPC metadata so it's visible to StatsHandlers + return metadata.AppendToOutgoingContext(ctx, "gcp.grpc.resend_count", strconv.Itoa(retryCount)) +} + // Invoke calls the given APICall, performing retries as specified by opts, if // any. func Invoke(ctx context.Context, call APICall, opts ...CallOption) error { @@ -78,8 +89,15 @@ func invoke(ctx context.Context, call APICall, settings CallSettings, sp sleeper ctx = c } + retryCount := 0 + // Feature gate: GOOGLE_SDK_GO_EXPERIMENTAL_TRACING=true + tracingEnabled := IsFeatureEnabled("TRACING") for { - err := call(ctx, settings) + ctxToUse := ctx + if tracingEnabled { + ctxToUse = withRetryCount(ctx, retryCount) + } + err := call(ctxToUse, settings) if err == nil { return nil } @@ -110,5 +128,6 @@ func invoke(ctx context.Context, call APICall, settings CallSettings, sp sleeper } else if err = sp(ctx, d); err != nil { return err } + retryCount++ } } diff --git a/vendor/golang.org/x/oauth2/google/default.go b/vendor/golang.org/x/oauth2/google/default.go index 0260935..6e57206 100644 --- a/vendor/golang.org/x/oauth2/google/default.go +++ b/vendor/golang.org/x/oauth2/google/default.go @@ -153,6 +153,43 @@ func (params CredentialsParams) deepCopy() CredentialsParams { return paramsCopy } +// CredentialsType specifies the type of JSON credentials being provided +// to a loading function. +type CredentialsType string + +const ( + // ServiceAccount represents a service account file type. + ServiceAccount CredentialsType = "service_account" + // AuthorizedUser represents a user credentials file type. + AuthorizedUser CredentialsType = "authorized_user" + // ExternalAccount represents an external account file type. + // + // IMPORTANT: + // This credential type does not validate the credential configuration. A security + // risk occurs when a credential configuration configured with malicious urls + // is used. + // You should validate credential configurations provided by untrusted sources. + // See [Security requirements when using credential configurations from an external + // source] https://cloud.google.com/docs/authentication/external/externally-sourced-credentials + // for more details. + ExternalAccount CredentialsType = "external_account" + // ExternalAccountAuthorizedUser represents an external account authorized user file type. + ExternalAccountAuthorizedUser CredentialsType = "external_account_authorized_user" + // ImpersonatedServiceAccount represents an impersonated service account file type. + // + // IMPORTANT: + // This credential type does not validate the credential configuration. A security + // risk occurs when a credential configuration configured with malicious urls + // is used. + // You should validate credential configurations provided by untrusted sources. + // See [Security requirements when using credential configurations from an external + // source] https://cloud.google.com/docs/authentication/external/externally-sourced-credentials + // for more details. + ImpersonatedServiceAccount CredentialsType = "impersonated_service_account" + // GDCHServiceAccount represents a GDCH service account credentials. + GDCHServiceAccount CredentialsType = "gdch_service_account" +) + // DefaultClient returns an HTTP Client that uses the // DefaultTokenSource to obtain authentication credentials. func DefaultClient(ctx context.Context, scope ...string) (*http.Client, error) { @@ -246,17 +283,71 @@ func FindDefaultCredentials(ctx context.Context, scopes ...string) (*Credentials return FindDefaultCredentialsWithParams(ctx, params) } -// CredentialsFromJSONWithParams obtains Google credentials from a JSON value. The JSON can -// represent either a Google Developers Console client_credentials.json file (as in ConfigFromJSON), -// a Google Developers service account key file, a gcloud user credentials file (a.k.a. refresh -// token JSON), or the JSON configuration file for workload identity federation in non-Google cloud -// platforms (see https://cloud.google.com/iam/docs/how-to#using-workload-identity-federation). +// CredentialsFromJSONWithType invokes CredentialsFromJSONWithTypeAndParams with the specified scopes. // // Important: If you accept a credential configuration (credential JSON/File/Stream) from an // external source for authentication to Google Cloud Platform, you must validate it before // providing it to any Google API or library. Providing an unvalidated credential configuration to // Google APIs can compromise the security of your systems and data. For more information, refer to // [Validate credential configurations from external sources](https://cloud.google.com/docs/authentication/external/externally-sourced-credentials). +func CredentialsFromJSONWithType(ctx context.Context, jsonData []byte, credType CredentialsType, scopes ...string) (*Credentials, error) { + var params CredentialsParams + params.Scopes = scopes + return CredentialsFromJSONWithTypeAndParams(ctx, jsonData, credType, params) +} + +// CredentialsFromJSONWithTypeAndParams obtains Google credentials from a JSON value and +// validates that the credentials match the specified type. +// +// Important: If you accept a credential configuration (credential JSON/File/Stream) from an +// external source for authentication to Google Cloud Platform, you must validate it before +// providing it to any Google API or library. Providing an unvalidated credential configuration to +// Google APIs can compromise the security of your systems and data. For more information, refer to +// [Validate credential configurations from external sources](https://cloud.google.com/docs/authentication/external/externally-sourced-credentials). +func CredentialsFromJSONWithTypeAndParams(ctx context.Context, jsonData []byte, credType CredentialsType, params CredentialsParams) (*Credentials, error) { + var f struct { + Type string `json:"type"` + } + if err := json.Unmarshal(jsonData, &f); err != nil { + return nil, err + } + if CredentialsType(f.Type) != credType { + return nil, fmt.Errorf("google: expected credential type %q, found %q", credType, f.Type) + } + return CredentialsFromJSONWithParams(ctx, jsonData, params) +} + +// CredentialsFromJSONWithParams obtains Google credentials from a JSON value. The JSON can +// represent either a Google Developers Console client_credentials.json file (as in ConfigFromJSON), +// a Google Developers service account key file, a gcloud user credentials file (a.k.a. refresh +// token JSON), or the JSON configuration file for workload identity federation in non-Google cloud +// platforms (see https://cloud.google.com/iam/docs/how-to#using-workload-identity-federation). +// +// Deprecated: This function is deprecated because of a potential security risk. +// It does not validate the credential configuration. The security risk occurs +// when a credential configuration is accepted from a source that is not +// under your control and used without validation on your side. +// +// If you know that you will be loading credential configurations of a +// specific type, it is recommended to use a credential-type-specific +// CredentialsFromJSONWithTypeAndParams method. This will ensure that an unexpected +// credential type with potential for malicious intent is not loaded +// unintentionally. You might still have to do validation for certain +// credential types. Please follow the recommendation for that method. For +// example, if you want to load only service accounts, you can use +// +// creds, err := google.CredentialsFromJSONWithTypeAndParams(ctx, jsonData, google.ServiceAccount, params) +// +// If you are loading your credential configuration from an untrusted source +// and have not mitigated the risks (e.g. by validating the configuration +// yourself), make these changes as soon as possible to prevent security +// risks to your environment. +// +// Regardless of the method used, it is always your responsibility to +// validate configurations received from external sources. +// +// For more details see: +// https://cloud.google.com/docs/authentication/external/externally-sourced-credentials func CredentialsFromJSONWithParams(ctx context.Context, jsonData []byte, params CredentialsParams) (*Credentials, error) { // Make defensive copy of the slices in params. params = params.deepCopy() @@ -301,11 +392,31 @@ func CredentialsFromJSONWithParams(ctx context.Context, jsonData []byte, params // CredentialsFromJSON invokes CredentialsFromJSONWithParams with the specified scopes. // -// Important: If you accept a credential configuration (credential JSON/File/Stream) from an -// external source for authentication to Google Cloud Platform, you must validate it before -// providing it to any Google API or library. Providing an unvalidated credential configuration to -// Google APIs can compromise the security of your systems and data. For more information, refer to -// [Validate credential configurations from external sources](https://cloud.google.com/docs/authentication/external/externally-sourced-credentials). +// Deprecated: This function is deprecated because of a potential security risk. +// It does not validate the credential configuration. The security risk occurs +// when a credential configuration is accepted from a source that is not +// under your control and used without validation on your side. +// +// If you know that you will be loading credential configurations of a +// specific type, it is recommended to use a credential-type-specific +// CredentialsFromJSONWithType method. This will ensure that an unexpected +// credential type with potential for malicious intent is not loaded +// unintentionally. You might still have to do validation for certain +// credential types. Please follow the recommendation for that method. For +// example, if you want to load only service accounts, you can use +// +// creds, err := google.CredentialsFromJSONWithType(ctx, jsonData, google.ServiceAccount, scopes...) +// +// If you are loading your credential configuration from an untrusted source +// and have not mitigated the risks (e.g. by validating the configuration +// yourself), make these changes as soon as possible to prevent security +// risks to your environment. +// +// Regardless of the method used, it is always your responsibility to +// validate configurations received from external sources. +// +// For more details see: +// https://cloud.google.com/docs/authentication/external/externally-sourced-credentials func CredentialsFromJSON(ctx context.Context, jsonData []byte, scopes ...string) (*Credentials, error) { var params CredentialsParams params.Scopes = scopes diff --git a/vendor/golang.org/x/oauth2/google/google.go b/vendor/golang.org/x/oauth2/google/google.go index 7d1fdd3..14c98eb 100644 --- a/vendor/golang.org/x/oauth2/google/google.go +++ b/vendor/golang.org/x/oauth2/google/google.go @@ -103,6 +103,7 @@ const ( externalAccountKey = "external_account" externalAccountAuthorizedUserKey = "external_account_authorized_user" impersonatedServiceAccount = "impersonated_service_account" + gdchServiceAccountKey = "gdch_service_account" ) // credentialsFile is the unmarshalled representation of a credentials file. @@ -165,7 +166,7 @@ func (f *credentialsFile) jwtConfig(scopes []string, subject string) *jwt.Config func (f *credentialsFile) tokenSource(ctx context.Context, params CredentialsParams) (oauth2.TokenSource, error) { switch f.Type { - case serviceAccountKey: + case serviceAccountKey, gdchServiceAccountKey: cfg := f.jwtConfig(params.Scopes, params.Subject) return cfg.TokenSource(ctx), nil case userCredentialsKey: diff --git a/vendor/google.golang.org/api/compute/v1/compute-api.json b/vendor/google.golang.org/api/compute/v1/compute-api.json index 7bfa2df..e95e643 100644 --- a/vendor/google.golang.org/api/compute/v1/compute-api.json +++ b/vendor/google.golang.org/api/compute/v1/compute-api.json @@ -25422,6 +25422,52 @@ "https://www.googleapis.com/auth/cloud-platform", "https://www.googleapis.com/auth/compute" ] + }, + "testIamPermissions": { + "description": "Returns permissions that a caller has on the specified resource.", + "flatPath": "projects/{project}/regions/{region}/healthCheckServices/{resource}/testIamPermissions", + "httpMethod": "POST", + "id": "compute.regionHealthCheckServices.testIamPermissions", + "parameterOrder": [ + "project", + "region", + "resource" + ], + "parameters": { + "project": { + "description": "Project ID for this request.", + "location": "path", + "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))", + "required": true, + "type": "string" + }, + "region": { + "description": "The name of the region for this request.", + "location": "path", + "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?", + "required": true, + "type": "string" + }, + "resource": { + "description": "Name or id of the resource for this request.", + "location": "path", + "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?|[1-9][0-9]{0,19}", + "required": true, + "type": "string" + } + }, + "path": "projects/{project}/regions/{region}/healthCheckServices/{resource}/testIamPermissions", + "request": { + "$ref": "TestPermissionsRequest" + }, + "response": { + "$ref": "TestPermissionsResponse" + }, + "scopes": [ + "https://www.googleapis.com/auth/cloud-platform", + "https://www.googleapis.com/auth/compute", + "https://www.googleapis.com/auth/compute.readonly" + ] } } }, @@ -43091,7 +43137,7 @@ } } }, - "revision": "20260113", + "revision": "20260122", "rootUrl": "https://compute.googleapis.com/", "schemas": { "AWSV4Signature": { @@ -48372,6 +48418,21 @@ }, "type": "object" }, + "BundledLocalSsds": { + "id": "BundledLocalSsds", + "properties": { + "defaultInterface": { + "description": "The default disk interface if the interface is not specified.", + "type": "string" + }, + "partitionCount": { + "description": "The number of partitions.", + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, "CacheInvalidationRule": { "id": "CacheInvalidationRule", "properties": { @@ -48685,6 +48746,7 @@ "GENERAL_PURPOSE_N2", "GENERAL_PURPOSE_N2D", "GENERAL_PURPOSE_N4", + "GENERAL_PURPOSE_N4A", "GENERAL_PURPOSE_N4D", "GENERAL_PURPOSE_T2D", "GRAPHICS_OPTIMIZED", @@ -48733,6 +48795,7 @@ "", "", "", + "", "CUD bucket for X4 machine with 1440 vCPUs and 24TB of memory.", "", "CUD bucket for X4 machine with 1920 vCPUs and 32TB of memory.", @@ -52886,7 +52949,7 @@ "type": "object" }, "FlexibleTimeRange": { - "description": "A flexible specification of a time range that has 3 points of\nflexibility: (1) a flexible start time, (2) a flexible end time, (3) a\nflexible duration.\n\nIt is possible to specify a contradictory time range that cannot be matched\nby any Interval. This causes a validation error.", + "description": "Specifies a flexible time range with flexible start time and duration.\n\nIt is possible to specify a contradictory time range that cannot be matched\nby any Interval. This causes a validation error.", "id": "FlexibleTimeRange", "properties": { "maxDuration": { @@ -62087,12 +62150,14 @@ "behavior": { "enum": [ "BEHAVIOR_UNSPECIFIED", + "CHIP_ERROR", "PERFORMANCE", "SILENT_DATA_CORRUPTION", "UNRECOVERABLE_GPU_ERROR" ], "enumDescriptions": [ "Public reportable behaviors", + "Any GPU or TPU errors or faults where the accelerator becomes unusable", "", "", "Unrecoverable GPU error identified by an XID" @@ -67385,6 +67450,10 @@ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?", "type": "string" }, + "params": { + "$ref": "MachineImageParams", + "description": "Input only. [Input Only] Additional parameters that are passed in the request, but are\nnot persisted in the resource." + }, "satisfiesPzi": { "description": "Output only. Reserved for future use.", "readOnly": true, @@ -67616,6 +67685,20 @@ }, "type": "object" }, + "MachineImageParams": { + "description": "Machine Image parameters", + "id": "MachineImageParams", + "properties": { + "resourceManagerTags": { + "additionalProperties": { + "type": "string" + }, + "description": "Input only. Resource manager tags to be bound to the machine image. Tag keys and values\nhave the same definition as resource\nmanager tags. Keys and values can be either in numeric format,\nsuch as `tagKeys/{tag_key_id}` and `tagValues/{tag_value_id}` or in\nnamespaced format such as `{org_id|project_id}/{tag_key_short_name}` and\n`{tag_value_short_name}`. The field is ignored (both PUT \u0026\nPATCH) when empty.", + "type": "object" + } + }, + "type": "object" + }, "MachineType": { "description": "Represents a Machine Type resource.\n\nYou can use specific machine types for your VM instances based on performance\nand pricing requirements. For more information, readMachine Types.", "id": "MachineType", @@ -67652,6 +67735,10 @@ ], "type": "string" }, + "bundledLocalSsds": { + "$ref": "BundledLocalSsds", + "description": "[Output Only] The configuration of bundled local SSD for the machine type." + }, "creationTimestamp": { "description": "[Output Only] Creation timestamp inRFC3339\ntext format.", "type": "string" @@ -71145,7 +71232,7 @@ "type": "string" }, "state": { - "description": "Output only. [Output Only] State for the peering, either `ACTIVE` or `INACTIVE`. The\npeering is `ACTIVE` when there's a matching configuration in the peer\nnetwork.", + "description": "Output only. [Output Only] State for the peering.", "enum": [ "ACTIVE", "INACTIVE" @@ -82480,6 +82567,18 @@ "description": "A GroupPlacementPolicy specifies resource placement configuration.\nIt specifies the failure bucket separation", "id": "ResourcePolicyGroupPlacementPolicy", "properties": { + "acceleratorTopologyMode": { + "description": "Specifies the connection mode for the accelerator topology. If not\nspecified, the default is AUTO_CONNECT.", + "enum": [ + "AUTO_CONNECT", + "PROVISION_ONLY" + ], + "enumDescriptions": [ + "The interconnected chips are pre-configured at the time of VM creation.", + "The interconnected chips are connected on demand. At the time of VM\ncreation, the chips are not connected." + ], + "type": "string" + }, "availabilityDomainCount": { "description": "The number of availability domains to spread instances across. If two\ninstances are in different availability domain, they are not in the same\nlow latency network.", "format": "int32", @@ -90660,21 +90759,18 @@ "id": "StoragePoolExapoolProvisionedCapacityGb", "properties": { "capacityOptimized": { - "description": "Output only. Size, in GiB, of provisioned capacity-optimized capacity for this Exapool", + "description": "Size, in GiB, of provisioned capacity-optimized capacity for this Exapool", "format": "int64", - "readOnly": true, "type": "string" }, "readOptimized": { - "description": "Output only. Size, in GiB, of provisioned read-optimized capacity for this Exapool", + "description": "Size, in GiB, of provisioned read-optimized capacity for this Exapool", "format": "int64", - "readOnly": true, "type": "string" }, "writeOptimized": { - "description": "Output only. Size, in GiB, of provisioned write-optimized capacity for this Exapool", + "description": "Size, in GiB, of provisioned write-optimized capacity for this Exapool", "format": "int64", - "readOnly": true, "type": "string" } }, @@ -91795,7 +91891,7 @@ "id": "Subnetwork", "properties": { "allowSubnetCidrRoutesOverlap": { - "description": "Whether this subnetwork's ranges can conflict with existing static routes.\nSetting this to true allows this subnetwork's primary and secondary ranges\nto overlap with (and contain) static routes that have already been\nconfigured on the corresponding network.\n\nFor example if a static route has range 10.1.0.0/16, a subnet\nrange 10.0.0.0/8 could only be created if allow_conflicting_routes=true.\n\nOverlapping is only allowed on subnetwork operations; routes\nwhose ranges conflict with this subnetwork's ranges won't be allowed unless\nroute.allow_conflicting_subnetworks is set to true.\n\nTypically packets destined to IPs within the subnetwork (which may contain\nprivate/sensitive data) are prevented from leaving the virtual network.\nSetting this field to true will disable this feature.\n\nThe default value is false and applies to all existing subnetworks and\nautomatically created subnetworks.\n\nThis field cannot be set to true at resource creation time.", + "description": "Whether this subnetwork's ranges can conflict with existing custom routes.\nSetting this to true allows this subnetwork's primary and secondary ranges\nto overlap with (and contain) custom routes that have already been\nconfigured on the corresponding network.\n\nFor example if a static route has range 10.1.0.0/16, a subnet\nrange 10.0.0.0/8 could only be created if allow_conflicting_routes=true.\n\nOverlapping is only allowed on subnetwork operations; routes\nwhose ranges conflict with this subnetwork's ranges won't be allowed unless\nroute.allow_conflicting_subnetworks is set to true.\n\nTypically packets destined to IPs within the subnetwork (which may contain\nprivate/sensitive data) are prevented from leaving the virtual network.\nSetting this field to true will disable this feature.\n\nThe default value is false and applies to all existing subnetworks and\nautomatically created subnetworks.", "type": "boolean" }, "creationTimestamp": { @@ -91945,6 +92041,18 @@ "description": "The URL of the reserved internal range.", "type": "string" }, + "resolveSubnetMask": { + "description": "Configures subnet mask resolution for this subnetwork.", + "enum": [ + "ARP_ALL_RANGES", + "ARP_PRIMARY_RANGE" + ], + "enumDescriptions": [ + "All ranges assigned to the VM NIC will respond to ARP.", + "Only the primary range of the VM NIC will respond to ARP." + ], + "type": "string" + }, "role": { "description": "The role of subnetwork. Currently, this field is only used when\npurpose is set to GLOBAL_MANAGED_PROXY orREGIONAL_MANAGED_PROXY. The value can be set toACTIVE or BACKUP. An ACTIVE\nsubnetwork is one that is currently being used for Envoy-based load\nbalancers in a region. A BACKUP subnetwork is one that is\nready to be promoted to ACTIVE or is currently draining.\nThis field can be updated with a patch request.", "enum": [ @@ -91958,7 +92066,7 @@ "type": "string" }, "secondaryIpRanges": { - "description": "An array of configurations for secondary IP ranges for VM instances\ncontained in this subnetwork. The primary IP of such VM must belong to the\nprimary ipCidrRange of the subnetwork. The alias IPs may belong to either\nprimary or secondary ranges. This field can be updated with apatch request.", + "description": "An array of configurations for secondary IP ranges for VM instances\ncontained in this subnetwork. The primary IP of such VM must belong to the\nprimary ipCidrRange of the subnetwork. The alias IPs may belong to either\nprimary or secondary ranges. This field can be updated with apatch request. Supports both IPv4 and IPv6 ranges.", "items": { "$ref": "SubnetworkSecondaryRange" }, @@ -92421,15 +92529,15 @@ "id": "SubnetworkSecondaryRange", "properties": { "ipCidrRange": { - "description": "The range of IP addresses belonging to this subnetwork secondary range.\nProvide this property when you create the subnetwork. Ranges must be\nunique and non-overlapping with all primary and secondary IP ranges\nwithin a network. Only IPv4 is supported. The range can be any range\nlisted in theValid\nranges list.", + "description": "The range of IP addresses belonging to this subnetwork secondary range.\nProvide this property when you create the subnetwork. Ranges must be\nunique and non-overlapping with all primary and secondary IP ranges\nwithin a network. Both IPv4 and IPv6 ranges are supported. For IPv4,\nthe range can be any range listed in theValid\nranges list.\n\nFor IPv6:\nThe range must have a /64 prefix length.\nThe range must be omitted, for auto-allocation from Google-defined ULA\nIPv6 range.\nFor BYOGUA internal IPv6 secondary range, the range may be specified\nalong with the `ipCollection` field.\nIf an `ipCollection` is specified, the requested ip_cidr_range must lie\nwithin the range of the PDP referenced by the `ipCollection` field for\nallocation.\nIf `ipCollection` field is specified, but ip_cidr_range is not,\nthe range is auto-allocated from the PDP referenced by the `ipCollection`\nfield.", "type": "string" }, "rangeName": { - "description": "The name associated with this subnetwork secondary range, used when adding\nan alias IP range to a VM instance.\nThe name must be 1-63 characters long, and comply withRFC1035.\nThe name must be unique within the subnetwork.", + "description": "The name associated with this subnetwork secondary range, used when adding\nan alias IP/IPv6 range to a VM instance.\nThe name must be 1-63 characters long, and comply withRFC1035.\nThe name must be unique within the subnetwork.", "type": "string" }, "reservedInternalRange": { - "description": "The URL of the reserved internal range.", + "description": "The URL of the reserved internal range. Only IPv4 is supported.", "type": "string" } }, @@ -97607,7 +97715,7 @@ "id": "UsableSubnetworkSecondaryRange", "properties": { "ipCidrRange": { - "description": "The range of IP addresses belonging to this subnetwork secondary range.", + "description": "The range of IP addresses belonging to this subnetwork secondary range.\nCan be Ipv4 or Ipv6 range.", "type": "string" }, "rangeName": { diff --git a/vendor/google.golang.org/api/compute/v1/compute-gen.go b/vendor/google.golang.org/api/compute/v1/compute-gen.go index f4954e6..b9772c3 100644 --- a/vendor/google.golang.org/api/compute/v1/compute-gen.go +++ b/vendor/google.golang.org/api/compute/v1/compute-gen.go @@ -9618,6 +9618,30 @@ func (s BulkZoneSetLabelsRequest) MarshalJSON() ([]byte, error) { return gensupport.MarshalJSON(NoMethod(s), s.ForceSendFields, s.NullFields) } +type BundledLocalSsds struct { + // DefaultInterface: The default disk interface if the interface is not + // specified. + DefaultInterface string `json:"defaultInterface,omitempty"` + // PartitionCount: The number of partitions. + PartitionCount int64 `json:"partitionCount,omitempty"` + // ForceSendFields is a list of field names (e.g. "DefaultInterface") 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. "DefaultInterface") 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 BundledLocalSsds) MarshalJSON() ([]byte, error) { + type NoMethod BundledLocalSsds + return gensupport.MarshalJSON(NoMethod(s), s.ForceSendFields, s.NullFields) +} + type CacheInvalidationRule struct { // CacheTags: A list of cache tags used to identify cached objects. // @@ -10055,6 +10079,7 @@ type Commitment struct { // "GENERAL_PURPOSE_N2" // "GENERAL_PURPOSE_N2D" // "GENERAL_PURPOSE_N4" + // "GENERAL_PURPOSE_N4A" // "GENERAL_PURPOSE_N4D" // "GENERAL_PURPOSE_T2D" // "GRAPHICS_OPTIMIZED" @@ -15758,11 +15783,8 @@ func (s FixedOrPercent) MarshalJSON() ([]byte, error) { return gensupport.MarshalJSON(NoMethod(s), s.ForceSendFields, s.NullFields) } -// FlexibleTimeRange: A flexible specification of a time range that has 3 -// points of -// flexibility: (1) a flexible start time, (2) a flexible end time, (3) -// a -// flexible duration. +// FlexibleTimeRange: Specifies a flexible time range with flexible start time +// and duration. // // It is possible to specify a contradictory time range that cannot be // matched @@ -28309,6 +28331,8 @@ func (s InstancesReportHostAsFaultyRequest) MarshalJSON() ([]byte, error) { type InstancesReportHostAsFaultyRequestFaultReason struct { // Possible values: // "BEHAVIOR_UNSPECIFIED" - Public reportable behaviors + // "CHIP_ERROR" - Any GPU or TPU errors or faults where the accelerator + // becomes unusable // "PERFORMANCE" // "SILENT_DATA_CORRUPTION" // "UNRECOVERABLE_GPU_ERROR" - Unrecoverable GPU error identified by an XID @@ -35064,6 +35088,10 @@ type MachineImage struct { // cannot // be a dash. Name string `json:"name,omitempty"` + // Params: Input only. [Input Only] Additional parameters that are passed in + // the request, but are + // not persisted in the resource. + Params *MachineImageParams `json:"params,omitempty"` // SatisfiesPzi: Output only. Reserved for future use. SatisfiesPzi bool `json:"satisfiesPzi,omitempty"` // SatisfiesPzs: Output only. [Output Only] Reserved for future use. @@ -35316,6 +35344,37 @@ func (s MachineImageListWarningData) MarshalJSON() ([]byte, error) { return gensupport.MarshalJSON(NoMethod(s), s.ForceSendFields, s.NullFields) } +// MachineImageParams: Machine Image parameters +type MachineImageParams struct { + // ResourceManagerTags: Input only. Resource manager tags to be bound to the + // machine image. Tag keys and values + // have the same definition as resource + // manager tags. Keys and values can be either in numeric format, + // such as `tagKeys/{tag_key_id}` and `tagValues/{tag_value_id}` or + // in + // namespaced format such as `{org_id|project_id}/{tag_key_short_name}` + // and + // `{tag_value_short_name}`. The field is ignored (both PUT & + // PATCH) when empty. + ResourceManagerTags map[string]string `json:"resourceManagerTags,omitempty"` + // ForceSendFields is a list of field names (e.g. "ResourceManagerTags") 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. "ResourceManagerTags") 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 MachineImageParams) MarshalJSON() ([]byte, error) { + type NoMethod MachineImageParams + return gensupport.MarshalJSON(NoMethod(s), s.ForceSendFields, s.NullFields) +} + // MachineType: Represents a Machine Type resource. // // You can use specific machine types for your VM instances based on @@ -35334,6 +35393,9 @@ type MachineType struct { // "ARM64" - Machines with architecture ARM64 // "X86_64" - Machines with architecture X86_64 Architecture string `json:"architecture,omitempty"` + // BundledLocalSsds: [Output Only] The configuration of bundled local SSD for + // the machine type. + BundledLocalSsds *BundledLocalSsds `json:"bundledLocalSsds,omitempty"` // CreationTimestamp: [Output Only] Creation timestamp inRFC3339 // text format. CreationTimestamp string `json:"creationTimestamp,omitempty"` @@ -39725,11 +39787,7 @@ type NetworkPeering struct { // be // exchanged, even if the matching peering is IPV4_IPV6. StackType string `json:"stackType,omitempty"` - // State: Output only. [Output Only] State for the peering, either `ACTIVE` or - // `INACTIVE`. The - // peering is `ACTIVE` when there's a matching configuration in the - // peer - // network. + // State: Output only. [Output Only] State for the peering. // // Possible values: // "ACTIVE" - Matching configuration exists on the peer. @@ -53223,6 +53281,17 @@ type ResourcePolicyDiskConsistencyGroupPolicy struct { // resource placement configuration. // It specifies the failure bucket separation type ResourcePolicyGroupPlacementPolicy struct { + // AcceleratorTopologyMode: Specifies the connection mode for the accelerator + // topology. If not + // specified, the default is AUTO_CONNECT. + // + // Possible values: + // "AUTO_CONNECT" - The interconnected chips are pre-configured at the time + // of VM creation. + // "PROVISION_ONLY" - The interconnected chips are connected on demand. At + // the time of VM + // creation, the chips are not connected. + AcceleratorTopologyMode string `json:"acceleratorTopologyMode,omitempty"` // AvailabilityDomainCount: The number of availability domains to spread // instances across. If two // instances are in different availability domain, they are not in the same @@ -53243,13 +53312,13 @@ type ResourcePolicyGroupPlacementPolicy struct { // use this field unless you use a compact policy and you want your policy // to work only if it contains this exact number of VMs. VmCount int64 `json:"vmCount,omitempty"` - // ForceSendFields is a list of field names (e.g. "AvailabilityDomainCount") to + // ForceSendFields is a list of field names (e.g. "AcceleratorTopologyMode") 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. "AvailabilityDomainCount") to + // NullFields is a list of field names (e.g. "AcceleratorTopologyMode") 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. @@ -63453,14 +63522,14 @@ func (s StoragePoolDisk) MarshalJSON() ([]byte, error) { // StoragePoolExapoolProvisionedCapacityGb: Exapool provisioned capacities for // each SKU type type StoragePoolExapoolProvisionedCapacityGb struct { - // CapacityOptimized: Output only. Size, in GiB, of provisioned - // capacity-optimized capacity for this Exapool + // CapacityOptimized: Size, in GiB, of provisioned capacity-optimized capacity + // for this Exapool CapacityOptimized int64 `json:"capacityOptimized,omitempty,string"` - // ReadOptimized: Output only. Size, in GiB, of provisioned read-optimized - // capacity for this Exapool + // ReadOptimized: Size, in GiB, of provisioned read-optimized capacity for this + // Exapool ReadOptimized int64 `json:"readOptimized,omitempty,string"` - // WriteOptimized: Output only. Size, in GiB, of provisioned write-optimized - // capacity for this Exapool + // WriteOptimized: Size, in GiB, of provisioned write-optimized capacity for + // this Exapool WriteOptimized int64 `json:"writeOptimized,omitempty,string"` // ForceSendFields is a list of field names (e.g. "CapacityOptimized") to // unconditionally include in API requests. By default, fields with empty or @@ -64734,10 +64803,10 @@ func (s StoragePoolsScopedListWarningData) MarshalJSON() ([]byte, error) { // Virtual Private Cloud (VPC) Network. type Subnetwork struct { // AllowSubnetCidrRoutesOverlap: Whether this subnetwork's ranges can conflict - // with existing static routes. + // with existing custom routes. // Setting this to true allows this subnetwork's primary and secondary // ranges - // to overlap with (and contain) static routes that have already + // to overlap with (and contain) custom routes that have already // been // configured on the corresponding network. // @@ -64759,8 +64828,6 @@ type Subnetwork struct { // The default value is false and applies to all existing subnetworks // and // automatically created subnetworks. - // - // This field cannot be set to true at resource creation time. AllowSubnetCidrRoutesOverlap bool `json:"allowSubnetCidrRoutesOverlap,omitempty"` // CreationTimestamp: Output only. [Output Only] Creation timestamp // inRFC3339 @@ -64945,6 +65012,13 @@ type Subnetwork struct { Region string `json:"region,omitempty"` // ReservedInternalRange: The URL of the reserved internal range. ReservedInternalRange string `json:"reservedInternalRange,omitempty"` + // ResolveSubnetMask: Configures subnet mask resolution for this subnetwork. + // + // Possible values: + // "ARP_ALL_RANGES" - All ranges assigned to the VM NIC will respond to ARP. + // "ARP_PRIMARY_RANGE" - Only the primary range of the VM NIC will respond to + // ARP. + ResolveSubnetMask string `json:"resolveSubnetMask,omitempty"` // Role: The role of subnetwork. Currently, this field is only used // when // purpose is set to GLOBAL_MANAGED_PROXY orREGIONAL_MANAGED_PROXY. The value @@ -64966,6 +65040,7 @@ type Subnetwork struct { // primary ipCidrRange of the subnetwork. The alias IPs may belong to // either // primary or secondary ranges. This field can be updated with apatch request. + // Supports both IPv4 and IPv6 ranges. SecondaryIpRanges []*SubnetworkSecondaryRange `json:"secondaryIpRanges,omitempty"` // SelfLink: [Output Only] Server-defined URL for the resource. SelfLink string `json:"selfLink,omitempty"` @@ -65521,17 +65596,34 @@ type SubnetworkSecondaryRange struct { // secondary range. // Provide this property when you create the subnetwork. Ranges must be // unique and non-overlapping with all primary and secondary IP ranges - // within a network. Only IPv4 is supported. The range can be any range - // listed in theValid + // within a network. Both IPv4 and IPv6 ranges are supported. For IPv4, + // the range can be any range listed in theValid // ranges list. + // + // For IPv6: + // The range must have a /64 prefix length. + // The range must be omitted, for auto-allocation from Google-defined ULA + // IPv6 range. + // For BYOGUA internal IPv6 secondary range, the range may be specified + // along with the `ipCollection` field. + // If an `ipCollection` is specified, the requested ip_cidr_range must + // lie + // within the range of the PDP referenced by the `ipCollection` field + // for + // allocation. + // If `ipCollection` field is specified, but ip_cidr_range is not, + // the range is auto-allocated from the PDP referenced by the + // `ipCollection` + // field. IpCidrRange string `json:"ipCidrRange,omitempty"` // RangeName: The name associated with this subnetwork secondary range, used // when adding - // an alias IP range to a VM instance. + // an alias IP/IPv6 range to a VM instance. // The name must be 1-63 characters long, and comply withRFC1035. // The name must be unique within the subnetwork. RangeName string `json:"rangeName,omitempty"` - // ReservedInternalRange: The URL of the reserved internal range. + // ReservedInternalRange: The URL of the reserved internal range. Only IPv4 is + // supported. ReservedInternalRange string `json:"reservedInternalRange,omitempty"` // ForceSendFields is a list of field names (e.g. "IpCidrRange") to // unconditionally include in API requests. By default, fields with empty or @@ -72344,6 +72436,7 @@ func (s UsableSubnetwork) MarshalJSON() ([]byte, error) { type UsableSubnetworkSecondaryRange struct { // IpCidrRange: The range of IP addresses belonging to this subnetwork // secondary range. + // Can be Ipv4 or Ipv6 range. IpCidrRange string `json:"ipCidrRange,omitempty"` // RangeName: The name associated with this subnetwork secondary range, used // when adding diff --git a/vendor/google.golang.org/api/compute/v1/compute3-gen.go b/vendor/google.golang.org/api/compute/v1/compute3-gen.go index 4b04088..33549f4 100644 --- a/vendor/google.golang.org/api/compute/v1/compute3-gen.go +++ b/vendor/google.golang.org/api/compute/v1/compute3-gen.go @@ -8624,6 +8624,119 @@ func (c *RegionHealthCheckServicesPatchCall) Do(opts ...googleapi.CallOption) (* return ret, nil } +type RegionHealthCheckServicesTestIamPermissionsCall struct { + s *Service + project string + region string + resource string + testpermissionsrequest *TestPermissionsRequest + urlParams_ gensupport.URLParams + ctx_ context.Context + header_ http.Header +} + +// TestIamPermissions: Returns permissions that a caller has on the specified +// resource. +// +// - project: Project ID for this request. +// - region: The name of the region for this request. +// - resource: Name or id of the resource for this request. +func (r *RegionHealthCheckServicesService) TestIamPermissions(project string, region string, resource string, testpermissionsrequest *TestPermissionsRequest) *RegionHealthCheckServicesTestIamPermissionsCall { + c := &RegionHealthCheckServicesTestIamPermissionsCall{s: r.s, urlParams_: make(gensupport.URLParams)} + c.project = project + c.region = region + c.resource = resource + c.testpermissionsrequest = testpermissionsrequest + return c +} + +// Fields allows partial responses to be retrieved. See +// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse for more +// details. +func (c *RegionHealthCheckServicesTestIamPermissionsCall) Fields(s ...googleapi.Field) *RegionHealthCheckServicesTestIamPermissionsCall { + c.urlParams_.Set("fields", googleapi.CombineFields(s)) + return c +} + +// Context sets the context to be used in this call's Do method. +func (c *RegionHealthCheckServicesTestIamPermissionsCall) Context(ctx context.Context) *RegionHealthCheckServicesTestIamPermissionsCall { + c.ctx_ = ctx + return c +} + +// Header returns a http.Header that can be modified by the caller to add +// headers to the request. +func (c *RegionHealthCheckServicesTestIamPermissionsCall) Header() http.Header { + if c.header_ == nil { + c.header_ = make(http.Header) + } + return c.header_ +} + +func (c *RegionHealthCheckServicesTestIamPermissionsCall) doRequest(alt string) (*http.Response, error) { + reqHeaders := gensupport.SetHeaders(c.s.userAgent(), "application/json", c.header_) + body, err := googleapi.WithoutDataWrapper.JSONBuffer(c.testpermissionsrequest) + if err != nil { + return nil, err + } + c.urlParams_.Set("alt", alt) + c.urlParams_.Set("prettyPrint", "false") + urls := googleapi.ResolveRelative(c.s.BasePath, "projects/{project}/regions/{region}/healthCheckServices/{resource}/testIamPermissions") + urls += "?" + c.urlParams_.Encode() + req, err := http.NewRequest("POST", urls, body) + if err != nil { + return nil, err + } + req.Header = reqHeaders + googleapi.Expand(req.URL, map[string]string{ + "project": c.project, + "region": c.region, + "resource": c.resource, + }) + c.s.logger.DebugContext(c.ctx_, "api request", "serviceName", apiName, "rpcName", "compute.regionHealthCheckServices.testIamPermissions", "request", internallog.HTTPRequest(req, body.Bytes())) + return gensupport.SendRequest(c.ctx_, c.s.client, req) +} + +// Do executes the "compute.regionHealthCheckServices.testIamPermissions" call. +// Any non-2xx status code is an error. Response headers are in either +// *TestPermissionsResponse.ServerResponse.Header or (if a response was +// returned at all) in error.(*googleapi.Error).Header. Use +// googleapi.IsNotModified to check whether the returned error was because +// http.StatusNotModified was returned. +func (c *RegionHealthCheckServicesTestIamPermissionsCall) Do(opts ...googleapi.CallOption) (*TestPermissionsResponse, error) { + gensupport.SetOptions(c.urlParams_, opts...) + res, err := c.doRequest("json") + if res != nil && res.StatusCode == http.StatusNotModified { + if res.Body != nil { + res.Body.Close() + } + return nil, gensupport.WrapError(&googleapi.Error{ + Code: res.StatusCode, + Header: res.Header, + }) + } + if err != nil { + return nil, err + } + defer googleapi.CloseBody(res) + if err := googleapi.CheckResponse(res); err != nil { + return nil, gensupport.WrapError(err) + } + ret := &TestPermissionsResponse{ + ServerResponse: googleapi.ServerResponse{ + Header: res.Header, + HTTPStatusCode: res.StatusCode, + }, + } + target := &ret + b, err := gensupport.DecodeResponseBytes(target, res) + if err != nil { + return nil, err + } + c.s.logger.DebugContext(c.ctx_, "api response", "serviceName", apiName, "rpcName", "compute.regionHealthCheckServices.testIamPermissions", "response", internallog.HTTPResponse(res, b)) + return ret, nil +} + type RegionHealthChecksDeleteCall struct { s *Service project string diff --git a/vendor/google.golang.org/api/internal/gensupport/media.go b/vendor/google.golang.org/api/internal/gensupport/media.go index ec3bf1b..4aa05f9 100644 --- a/vendor/google.golang.org/api/internal/gensupport/media.go +++ b/vendor/google.golang.org/api/internal/gensupport/media.go @@ -198,6 +198,22 @@ func (mi *MediaInfo) UploadType() string { return "resumable" } +// ChecksumEnabled returns if auto checksum is enabled in buffer. +func (mi *MediaInfo) ChecksumEnabled() bool { + return mi.buffer != nil && mi.buffer.enableAutoChecksum +} + +// GetAutoChecksum returns the computed auto checksum from buffer (if enabled). +// Make sure whole data is written and read from the buffer before calling this +// function to get correct checksum of the data. +func (mi *MediaInfo) GetAutoChecksum() string { + if mi.buffer != nil && + mi.buffer.enableAutoChecksum { + return encodeUint32(mi.buffer.fullObjectChecksum) + } + return "" +} + // UploadRequest sets up an HTTP request for media upload. It adds headers // as necessary, and returns a replacement for the body and a function for http.Request.GetBody. func (mi *MediaInfo) UploadRequest(reqHeaders http.Header, body io.Reader) (newBody io.Reader, getBody func() (io.ReadCloser, error), cleanup func()) { diff --git a/vendor/google.golang.org/api/internal/version.go b/vendor/google.golang.org/api/internal/version.go index 555ea2c..3bdfa5a 100644 --- a/vendor/google.golang.org/api/internal/version.go +++ b/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.262.0" +const Version = "0.266.0" diff --git a/vendor/modules.txt b/vendor/modules.txt index a968435..7231ea1 100644 --- a/vendor/modules.txt +++ b/vendor/modules.txt @@ -94,7 +94,7 @@ github.com/google/uuid ## explicit; go 1.24.0 github.com/googleapis/enterprise-certificate-proxy/client github.com/googleapis/enterprise-certificate-proxy/client/util -# github.com/googleapis/gax-go/v2 v2.16.0 +# github.com/googleapis/gax-go/v2 v2.17.0 ## explicit; go 1.24.0 github.com/googleapis/gax-go/v2 github.com/googleapis/gax-go/v2/apierror @@ -203,7 +203,7 @@ golang.org/x/net/idna golang.org/x/net/internal/httpcommon golang.org/x/net/internal/timeseries golang.org/x/net/trace -# golang.org/x/oauth2 v0.34.0 +# golang.org/x/oauth2 v0.35.0 ## explicit; go 1.24.0 golang.org/x/oauth2 golang.org/x/oauth2/authhandler @@ -227,7 +227,7 @@ golang.org/x/text/secure/bidirule golang.org/x/text/transform golang.org/x/text/unicode/bidi golang.org/x/text/unicode/norm -# google.golang.org/api v0.262.0 +# google.golang.org/api v0.266.0 ## explicit; go 1.24.0 google.golang.org/api/compute/v1 google.golang.org/api/googleapi @@ -242,14 +242,14 @@ google.golang.org/api/iterator google.golang.org/api/option google.golang.org/api/option/internaloption google.golang.org/api/transport/http -# google.golang.org/genproto v0.0.0-20260122232226-8e98ce8d340d +# google.golang.org/genproto v0.0.0-20260128011058-8636f8732409 ## explicit; go 1.24.0 google.golang.org/genproto/googleapis/cloud/extendedops -# google.golang.org/genproto/googleapis/api v0.0.0-20260122232226-8e98ce8d340d +# google.golang.org/genproto/googleapis/api v0.0.0-20260128011058-8636f8732409 ## explicit; go 1.24.0 google.golang.org/genproto/googleapis/api google.golang.org/genproto/googleapis/api/annotations -# google.golang.org/genproto/googleapis/rpc v0.0.0-20260122232226-8e98ce8d340d +# google.golang.org/genproto/googleapis/rpc v0.0.0-20260203192932-546029d2fa20 ## explicit; go 1.24.0 google.golang.org/genproto/googleapis/rpc/code google.golang.org/genproto/googleapis/rpc/errdetails