mirror of
https://github.com/moby/moby.git
synced 2026-08-03 22:51:03 +00:00
vendor: cloud.google.com/go/compute/metadata v0.9.0
Signed-off-by: Sebastiaan van Stijn <github@gone.nl>
This commit is contained in:
2
go.mod
2
go.mod
@@ -3,7 +3,7 @@ module github.com/moby/moby/v2
|
||||
go 1.24.3
|
||||
|
||||
require (
|
||||
cloud.google.com/go/compute/metadata v0.8.0
|
||||
cloud.google.com/go/compute/metadata v0.9.0
|
||||
cloud.google.com/go/logging v1.13.1
|
||||
code.cloudfoundry.org/clock v1.37.0
|
||||
dario.cat/mergo v1.0.2
|
||||
|
||||
4
go.sum
4
go.sum
@@ -6,8 +6,8 @@ cloud.google.com/go/auth v0.16.5 h1:mFWNQ2FEVWAliEQWpAdH80omXFokmrnbDhUS9cBywsI=
|
||||
cloud.google.com/go/auth v0.16.5/go.mod h1:utzRfHMP+Vv0mpOkTRQoWD2q3BatTOoWbA7gCc2dUhQ=
|
||||
cloud.google.com/go/auth/oauth2adapt v0.2.8 h1:keo8NaayQZ6wimpNSmW5OPc283g65QNIiLpZnkHRbnc=
|
||||
cloud.google.com/go/auth/oauth2adapt v0.2.8/go.mod h1:XQ9y31RkqZCcwJWNSx2Xvric3RrU88hAYYbjDWYDL+c=
|
||||
cloud.google.com/go/compute/metadata v0.8.0 h1:HxMRIbao8w17ZX6wBnjhcDkW6lTFpgcaobyVfZWqRLA=
|
||||
cloud.google.com/go/compute/metadata v0.8.0/go.mod h1:sYOGTp851OV9bOFJ9CH7elVvyzopvWQFNNghtDQ/Biw=
|
||||
cloud.google.com/go/compute/metadata v0.9.0 h1:pDUj4QMoPejqq20dK0Pg2N4yG9zIkYGdBtwLoEkH9Zs=
|
||||
cloud.google.com/go/compute/metadata v0.9.0/go.mod h1:E0bWwX5wTnLPedCKqk3pJmVgCBSM6qQI1yTBdEb3C10=
|
||||
cloud.google.com/go/iam v1.5.2 h1:qgFRAGEmd8z6dJ/qyEchAuL9jpswyODjA2lS+w234g8=
|
||||
cloud.google.com/go/iam v1.5.2/go.mod h1:SE1vg0N81zQqLzQEwxL2WI6yhetBdbNQuTvIKCSkUHE=
|
||||
cloud.google.com/go/logging v1.13.1 h1:O7LvmO0kGLaHY/gq8cV7T0dyp6zJhYAOtZPX4TF3QtY=
|
||||
|
||||
35
vendor/cloud.google.com/go/compute/metadata/CHANGES.md
generated
vendored
35
vendor/cloud.google.com/go/compute/metadata/CHANGES.md
generated
vendored
@@ -1,5 +1,40 @@
|
||||
# Changes
|
||||
|
||||
## [0.9.0](https://github.com/googleapis/google-cloud-go/compare/compute/metadata/v0.8.4...compute/metadata/v0.9.0) (2025-09-24)
|
||||
|
||||
|
||||
### Features
|
||||
|
||||
* **compute/metadata:** Retry on HTTP 429 ([#12932](https://github.com/googleapis/google-cloud-go/issues/12932)) ([1e91f5c](https://github.com/googleapis/google-cloud-go/commit/1e91f5c07acacd38ecdd4ff3e83e092b745e0bc2))
|
||||
|
||||
## [0.8.4](https://github.com/googleapis/google-cloud-go/compare/compute/metadata/v0.8.3...compute/metadata/v0.8.4) (2025-09-18)
|
||||
|
||||
|
||||
### Bug Fixes
|
||||
|
||||
* **compute/metadata:** Set subClient for UseDefaultClient case ([#12911](https://github.com/googleapis/google-cloud-go/issues/12911)) ([9e2646b](https://github.com/googleapis/google-cloud-go/commit/9e2646b1821231183fd775bb107c062865eeaccd))
|
||||
|
||||
## [0.8.3](https://github.com/googleapis/google-cloud-go/compare/compute/metadata/v0.8.2...compute/metadata/v0.8.3) (2025-09-17)
|
||||
|
||||
|
||||
### Bug Fixes
|
||||
|
||||
* **compute/metadata:** Disable Client timeouts for subscription client ([#12910](https://github.com/googleapis/google-cloud-go/issues/12910)) ([187a58a](https://github.com/googleapis/google-cloud-go/commit/187a58a540494e1e8562b046325b8cad8cf7af4a))
|
||||
|
||||
## [0.8.2](https://github.com/googleapis/google-cloud-go/compare/compute/metadata/v0.8.1...compute/metadata/v0.8.2) (2025-09-17)
|
||||
|
||||
|
||||
### Bug Fixes
|
||||
|
||||
* **compute/metadata:** Racy test and uninitialized subClient ([#12892](https://github.com/googleapis/google-cloud-go/issues/12892)) ([4943ca2](https://github.com/googleapis/google-cloud-go/commit/4943ca2bf83908a23806247bc4252dfb440d09cc)), refs [#12888](https://github.com/googleapis/google-cloud-go/issues/12888)
|
||||
|
||||
## [0.8.1](https://github.com/googleapis/google-cloud-go/compare/compute/metadata/v0.8.0...compute/metadata/v0.8.1) (2025-09-16)
|
||||
|
||||
|
||||
### Bug Fixes
|
||||
|
||||
* **compute/metadata:** Use separate client for subscribe methods ([#12885](https://github.com/googleapis/google-cloud-go/issues/12885)) ([76b80f8](https://github.com/googleapis/google-cloud-go/commit/76b80f8df9bf9339d175407e8c15936fe1ac1c9c))
|
||||
|
||||
## [0.8.0](https://github.com/googleapis/google-cloud-go/compare/compute/metadata/v0.7.0...compute/metadata/v0.8.0) (2025-08-06)
|
||||
|
||||
|
||||
|
||||
65
vendor/cloud.google.com/go/compute/metadata/metadata.go
generated
vendored
65
vendor/cloud.google.com/go/compute/metadata/metadata.go
generated
vendored
@@ -22,6 +22,7 @@ package metadata // import "cloud.google.com/go/compute/metadata"
|
||||
import (
|
||||
"context"
|
||||
"encoding/json"
|
||||
"errors"
|
||||
"fmt"
|
||||
"io"
|
||||
"log/slog"
|
||||
@@ -62,21 +63,26 @@ var (
|
||||
)
|
||||
|
||||
var defaultClient = &Client{
|
||||
hc: newDefaultHTTPClient(),
|
||||
logger: slog.New(noOpHandler{}),
|
||||
hc: newDefaultHTTPClient(true),
|
||||
subClient: newDefaultHTTPClient(false),
|
||||
logger: slog.New(noOpHandler{}),
|
||||
}
|
||||
|
||||
func newDefaultHTTPClient() *http.Client {
|
||||
return &http.Client{
|
||||
Transport: &http.Transport{
|
||||
Dial: (&net.Dialer{
|
||||
Timeout: 2 * time.Second,
|
||||
KeepAlive: 30 * time.Second,
|
||||
}).Dial,
|
||||
IdleConnTimeout: 60 * time.Second,
|
||||
},
|
||||
Timeout: 5 * time.Second,
|
||||
func newDefaultHTTPClient(enableTimeouts bool) *http.Client {
|
||||
transport := &http.Transport{
|
||||
Dial: (&net.Dialer{
|
||||
Timeout: 2 * time.Second,
|
||||
KeepAlive: 30 * time.Second,
|
||||
}).Dial,
|
||||
}
|
||||
c := &http.Client{
|
||||
Transport: transport,
|
||||
}
|
||||
if enableTimeouts {
|
||||
transport.IdleConnTimeout = 60 * time.Second
|
||||
c.Timeout = 5 * time.Second
|
||||
}
|
||||
return c
|
||||
}
|
||||
|
||||
// NotDefinedError is returned when requested metadata is not defined.
|
||||
@@ -350,8 +356,12 @@ func strsContains(ss []string, s string) bool {
|
||||
|
||||
// A Client provides metadata.
|
||||
type Client struct {
|
||||
hc *http.Client
|
||||
logger *slog.Logger
|
||||
hc *http.Client
|
||||
// subClient by default is a HTTP Client that is only used for subscribe
|
||||
// methods that should not specify a timeout. If the user specifies a client
|
||||
// this with be the same as 'hc'.
|
||||
subClient *http.Client
|
||||
logger *slog.Logger
|
||||
}
|
||||
|
||||
// Options for configuring a [Client].
|
||||
@@ -383,7 +393,7 @@ func NewClient(c *http.Client) *Client {
|
||||
return defaultClient
|
||||
}
|
||||
// Return a new client with a no-op logger for backward compatibility.
|
||||
return &Client{hc: c, logger: slog.New(noOpHandler{})}
|
||||
return &Client{hc: c, subClient: c, logger: slog.New(noOpHandler{})}
|
||||
}
|
||||
|
||||
// NewWithOptions returns a Client that is configured with the provided Options.
|
||||
@@ -399,19 +409,21 @@ func NewWithOptions(opts *Options) *Client {
|
||||
if logger == nil {
|
||||
logger = slog.New(noOpHandler{})
|
||||
}
|
||||
return &Client{hc: defaultClient.hc, logger: logger}
|
||||
return &Client{hc: defaultClient.hc, subClient: defaultClient.subClient, logger: logger}
|
||||
}
|
||||
|
||||
// Handle isolated client creation.
|
||||
client := opts.Client
|
||||
subClient := opts.Client
|
||||
if client == nil {
|
||||
client = newDefaultHTTPClient()
|
||||
client = newDefaultHTTPClient(true)
|
||||
subClient = newDefaultHTTPClient(false)
|
||||
}
|
||||
logger := opts.Logger
|
||||
if logger == nil {
|
||||
logger = slog.New(noOpHandler{})
|
||||
}
|
||||
return &Client{hc: client, logger: logger}
|
||||
return &Client{hc: client, subClient: subClient, logger: logger}
|
||||
}
|
||||
|
||||
// NOTE: metadataRequestStrategy is assigned to a variable for test stubbing purposes.
|
||||
@@ -495,6 +507,10 @@ func (c *Client) OnGCEWithContext(ctx context.Context) bool {
|
||||
// getETag returns a value from the metadata service as well as the associated ETag.
|
||||
// This func is otherwise equivalent to Get.
|
||||
func (c *Client) getETag(ctx context.Context, suffix string) (value, etag string, err error) {
|
||||
return c.getETagWithSubClient(ctx, suffix, false)
|
||||
}
|
||||
|
||||
func (c *Client) getETagWithSubClient(ctx context.Context, suffix string, enableSubClient bool) (value, etag string, err error) {
|
||||
// Using a fixed IP makes it very difficult to spoof the metadata service in
|
||||
// a container, which is an important use-case for local testing of cloud
|
||||
// deployments. To enable spoofing of the metadata service, the environment
|
||||
@@ -521,9 +537,13 @@ func (c *Client) getETag(ctx context.Context, suffix string) (value, etag string
|
||||
var reqErr error
|
||||
var body []byte
|
||||
retryer := newRetryer()
|
||||
hc := c.hc
|
||||
if enableSubClient {
|
||||
hc = c.subClient
|
||||
}
|
||||
for {
|
||||
c.logger.DebugContext(ctx, "metadata request", "request", httpRequest(req, nil))
|
||||
res, reqErr = c.hc.Do(req)
|
||||
res, reqErr = hc.Do(req)
|
||||
var code int
|
||||
if res != nil {
|
||||
code = res.StatusCode
|
||||
@@ -869,7 +889,7 @@ func (c *Client) SubscribeWithContext(ctx context.Context, suffix string, fn fun
|
||||
const failedSubscribeSleep = time.Second * 5
|
||||
|
||||
// First check to see if the metadata value exists at all.
|
||||
val, lastETag, err := c.getETag(ctx, suffix)
|
||||
val, lastETag, err := c.getETagWithSubClient(ctx, suffix, true)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
@@ -885,8 +905,11 @@ func (c *Client) SubscribeWithContext(ctx context.Context, suffix string, fn fun
|
||||
suffix += "?wait_for_change=true&last_etag="
|
||||
}
|
||||
for {
|
||||
val, etag, err := c.getETag(ctx, suffix+url.QueryEscape(lastETag))
|
||||
val, etag, err := c.getETagWithSubClient(ctx, suffix+url.QueryEscape(lastETag), true)
|
||||
if err != nil {
|
||||
if errors.Is(err, context.Canceled) || errors.Is(err, context.DeadlineExceeded) {
|
||||
return err
|
||||
}
|
||||
if _, deleted := err.(NotDefinedError); !deleted {
|
||||
time.Sleep(failedSubscribeSleep)
|
||||
continue // Retry on other errors.
|
||||
|
||||
3
vendor/cloud.google.com/go/compute/metadata/retry.go
generated
vendored
3
vendor/cloud.google.com/go/compute/metadata/retry.go
generated
vendored
@@ -95,6 +95,9 @@ func shouldRetry(status int, err error) bool {
|
||||
if 500 <= status && status <= 599 {
|
||||
return true
|
||||
}
|
||||
if status == http.StatusTooManyRequests {
|
||||
return true
|
||||
}
|
||||
if err == io.ErrUnexpectedEOF {
|
||||
return true
|
||||
}
|
||||
|
||||
4
vendor/modules.txt
vendored
4
vendor/modules.txt
vendored
@@ -21,8 +21,8 @@ cloud.google.com/go/auth/internal/transport/cert
|
||||
# cloud.google.com/go/auth/oauth2adapt v0.2.8
|
||||
## explicit; go 1.23.0
|
||||
cloud.google.com/go/auth/oauth2adapt
|
||||
# cloud.google.com/go/compute/metadata v0.8.0
|
||||
## explicit; go 1.23.0
|
||||
# cloud.google.com/go/compute/metadata v0.9.0
|
||||
## explicit; go 1.24.0
|
||||
cloud.google.com/go/compute/metadata
|
||||
# cloud.google.com/go/logging v1.13.1
|
||||
## explicit; go 1.24.0
|
||||
|
||||
Reference in New Issue
Block a user