Documentation ¶
Overview ¶
Package metadata provides access to Google Compute Engine (GCE) metadata and API service accounts.
This package is a wrapper around the GCE metadata service, as documented at https://cloud.google.com/compute/docs/metadata/overview.
Index ¶
- func Email(serviceAccount string) (string, error)deprecated
- func EmailWithContext(ctx context.Context, serviceAccount string) (string, error)
- func ExternalIP() (string, error)deprecated
- func ExternalIPWithContext(ctx context.Context) (string, error)
- func Get(suffix string) (string, error)deprecated
- func GetWithContext(ctx context.Context, suffix string) (string, error)
- func Hostname() (string, error)deprecated
- func HostnameWithContext(ctx context.Context) (string, error)
- func InstanceAttributeValue(attr string) (string, error)deprecated
- func InstanceAttributeValueWithContext(ctx context.Context, attr string) (string, error)
- func InstanceAttributes() ([]string, error)deprecated
- func InstanceAttributesWithContext(ctx context.Context) ([]string, error)
- func InstanceID() (string, error)deprecated
- func InstanceIDWithContext(ctx context.Context) (string, error)
- func InstanceName() (string, error)deprecated
- func InstanceNameWithContext(ctx context.Context) (string, error)
- func InstanceTags() ([]string, error)deprecated
- func InstanceTagsWithContext(ctx context.Context) ([]string, error)
- func InternalIP() (string, error)deprecated
- func InternalIPWithContext(ctx context.Context) (string, error)
- func NumericProjectID() (string, error)deprecated
- func NumericProjectIDWithContext(ctx context.Context) (string, error)
- func OnGCE() bool
- func ProjectAttributeValue(attr string) (string, error)deprecated
- func ProjectAttributeValueWithContext(ctx context.Context, attr string) (string, error)
- func ProjectAttributes() ([]string, error)deprecated
- func ProjectAttributesWithContext(ctx context.Context) ([]string, error)
- func ProjectID() (string, error)deprecated
- func ProjectIDWithContext(ctx context.Context) (string, error)
- func Scopes(serviceAccount string) ([]string, error)deprecated
- func ScopesWithContext(ctx context.Context, serviceAccount string) ([]string, error)
- func Subscribe(suffix string, fn func(v string, ok bool) error) errordeprecated
- func SubscribeWithContext(ctx context.Context, suffix string, ...) error
- func Zone() (string, error)deprecated
- func ZoneWithContext(ctx context.Context) (string, error)
- type Client
- func (c *Client) Email(serviceAccount string) (string, error)deprecated
- func (c *Client) EmailWithContext(ctx context.Context, serviceAccount string) (string, error)
- func (c *Client) ExternalIP() (string, error)deprecated
- func (c *Client) ExternalIPWithContext(ctx context.Context) (string, error)
- func (c *Client) Get(suffix string) (string, error)deprecated
- func (c *Client) GetWithContext(ctx context.Context, suffix string) (string, error)
- func (c *Client) Hostname() (string, error)deprecated
- func (c *Client) HostnameWithContext(ctx context.Context) (string, error)
- func (c *Client) InstanceAttributeValue(attr string) (string, error)deprecated
- func (c *Client) InstanceAttributeValueWithContext(ctx context.Context, attr string) (string, error)
- func (c *Client) InstanceAttributes() ([]string, error)deprecated
- func (c *Client) InstanceAttributesWithContext(ctx context.Context) ([]string, error)
- func (c *Client) InstanceID() (string, error)deprecated
- func (c *Client) InstanceIDWithContext(ctx context.Context) (string, error)
- func (c *Client) InstanceName() (string, error)deprecated
- func (c *Client) InstanceNameWithContext(ctx context.Context) (string, error)
- func (c *Client) InstanceTags() ([]string, error)deprecated
- func (c *Client) InstanceTagsWithContext(ctx context.Context) ([]string, error)
- func (c *Client) InternalIP() (string, error)deprecated
- func (c *Client) InternalIPWithContext(ctx context.Context) (string, error)
- func (c *Client) NumericProjectID() (string, error)deprecated
- func (c *Client) NumericProjectIDWithContext(ctx context.Context) (string, error)
- func (c *Client) ProjectAttributeValue(attr string) (string, error)deprecated
- func (c *Client) ProjectAttributeValueWithContext(ctx context.Context, attr string) (string, error)
- func (c *Client) ProjectAttributes() ([]string, error)deprecated
- func (c *Client) ProjectAttributesWithContext(ctx context.Context) ([]string, error)
- func (c *Client) ProjectID() (string, error)deprecated
- func (c *Client) ProjectIDWithContext(ctx context.Context) (string, error)
- func (c *Client) Scopes(serviceAccount string) ([]string, error)deprecated
- func (c *Client) ScopesWithContext(ctx context.Context, serviceAccount string) ([]string, error)
- func (c *Client) Subscribe(suffix string, fn func(v string, ok bool) error) errordeprecated
- func (c *Client) SubscribeWithContext(ctx context.Context, suffix string, ...) error
- func (c *Client) Zone() (string, error)deprecated
- func (c *Client) ZoneWithContext(ctx context.Context) (string, error)
- type Error
- type NotDefinedError
- type Options
Examples ¶
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
func Email
deprecated
Email calls Client.EmailWithContext on the default client.
Deprecated: Please use the context aware variant EmailWithContext.
func EmailWithContext ¶ added in v0.4.0
EmailWithContext calls Client.EmailWithContext on the default client.
func ExternalIP
deprecated
ExternalIP returns the instance's primary external (public) IP address.
Deprecated: Please use the context aware variant ExternalIPWithContext.
func ExternalIPWithContext ¶ added in v0.4.0
ExternalIPWithContext returns the instance's primary external (public) IP address.
func Get
deprecated
Get calls Client.GetWithContext on the default client.
Deprecated: Please use the context aware variant GetWithContext.
func GetWithContext ¶ added in v0.3.0
GetWithContext calls Client.GetWithContext on the default client.
func Hostname
deprecated
Hostname returns the instance's hostname. This will be of the form "<instanceID>.c.<projID>.internal".
Deprecated: Please use the context aware variant HostnameWithContext.
func HostnameWithContext ¶ added in v0.4.0
HostnameWithContext returns the instance's hostname. This will be of the form "<instanceID>.c.<projID>.internal".
func InstanceAttributeValue
deprecated
InstanceAttributeValue calls Client.InstanceAttributeValueWithContext on the default client.
Deprecated: Please use the context aware variant InstanceAttributeValueWithContext.
func InstanceAttributeValueWithContext ¶ added in v0.4.0
InstanceAttributeValueWithContext calls Client.InstanceAttributeValueWithContext on the default client.
func InstanceAttributes
deprecated
func InstanceAttributesWithContext ¶ added in v0.4.0
InstanceAttributesWithContext calls Client.ProjectAttributesWithContext on the default client.
func InstanceID
deprecated
InstanceID returns the current VM's numeric instance ID.
Deprecated: Please use the context aware variant InstanceIDWithContext.
func InstanceIDWithContext ¶ added in v0.4.0
InstanceIDWithContext returns the current VM's numeric instance ID.
func InstanceName
deprecated
InstanceName returns the current VM's instance ID string.
Deprecated: Please use the context aware variant InstanceNameWithContext.
func InstanceNameWithContext ¶ added in v0.4.0
InstanceNameWithContext returns the current VM's instance ID string.
func InstanceTags
deprecated
InstanceTags returns the list of user-defined instance tags, assigned when initially creating a GCE instance.
Deprecated: Please use the context aware variant InstanceTagsWithContext.
func InstanceTagsWithContext ¶ added in v0.4.0
InstanceTagsWithContext returns the list of user-defined instance tags, assigned when initially creating a GCE instance.
func InternalIP
deprecated
InternalIP returns the instance's primary internal IP address.
Deprecated: Please use the context aware variant InternalIPWithContext.
func InternalIPWithContext ¶ added in v0.4.0
InternalIPWithContext returns the instance's primary internal IP address.
func NumericProjectID
deprecated
NumericProjectID returns the current instance's numeric project ID.
Deprecated: Please use the context aware variant NumericProjectIDWithContext.
func NumericProjectIDWithContext ¶ added in v0.4.0
NumericProjectIDWithContext returns the current instance's numeric project ID.
func OnGCE ¶
func OnGCE() bool
OnGCE reports whether this process is running on Google Compute Platforms. NOTE: True returned from `OnGCE` does not guarantee that the metadata server is accessible from this process and have all the metadata defined.
func ProjectAttributeValue
deprecated
ProjectAttributeValue calls Client.ProjectAttributeValueWithContext on the default client.
Deprecated: Please use the context aware variant ProjectAttributeValueWithContext.
func ProjectAttributeValueWithContext ¶ added in v0.4.0
ProjectAttributeValueWithContext calls Client.ProjectAttributeValueWithContext on the default client.
func ProjectAttributes
deprecated
ProjectAttributes calls Client.ProjectAttributesWithContext on the default client.
Deprecated: Please use the context aware variant ProjectAttributesWithContext.
func ProjectAttributesWithContext ¶ added in v0.4.0
ProjectAttributesWithContext calls Client.ProjectAttributesWithContext on the default client.
func ProjectID
deprecated
ProjectID returns the current instance's project ID string.
Deprecated: Please use the context aware variant ProjectIDWithContext.
func ProjectIDWithContext ¶ added in v0.4.0
ProjectIDWithContext returns the current instance's project ID string.
func Scopes
deprecated
Scopes calls Client.ScopesWithContext on the default client.
Deprecated: Please use the context aware variant ScopesWithContext.
func ScopesWithContext ¶ added in v0.4.0
ScopesWithContext calls Client.ScopesWithContext on the default client.
func SubscribeWithContext ¶ added in v0.3.0
func SubscribeWithContext(ctx context.Context, suffix string, fn func(ctx context.Context, v string, ok bool) error) error
SubscribeWithContext calls Client.SubscribeWithContext on the default client.
func Zone
deprecated
Zone returns the current VM's zone, such as "us-central1-b".
Deprecated: Please use the context aware variant ZoneWithContext.
Types ¶
type Client ¶
type Client struct {
// contains filtered or unexported fields
}
A Client provides metadata.
func NewClient ¶
NewClient returns a Client that can be used to fetch metadata. Returns the client that uses the specified http.Client for HTTP requests. If nil is specified, returns the default client.
Example ¶
This example demonstrates how to use your own transport when using this package.
package main import ( "context" "net/http" "cloud.google.com/go/compute/metadata" ) // This example demonstrates how to use your own transport when using this package. func main() { ctx := context.Background() c := metadata.NewClient(&http.Client{Transport: userAgentTransport{ userAgent: "my-user-agent", base: http.DefaultTransport, }}) pID, err := c.GetWithContext(ctx, "project/project-id") if err != nil { // TODO: Handle error. } _ = pID // TODO: Use p. } // userAgentTransport sets the User-Agent header before calling base. type userAgentTransport struct { userAgent string base http.RoundTripper } // RoundTrip implements the http.RoundTripper interface. func (t userAgentTransport) RoundTrip(req *http.Request) (*http.Response, error) { req.Header.Set("User-Agent", t.userAgent) return t.base.RoundTrip(req) }
Output:
func NewWithOptions ¶ added in v0.6.0
NewWithOptions returns a Client that is configured with the provided Options.
func (*Client) EmailWithContext ¶ added in v0.4.0
EmailWithContext returns the email address associated with the service account. The serviceAccount parameter default value (empty string or "default" value) will use the instance's main account.
func (*Client) ExternalIP
deprecated
ExternalIP returns the instance's primary external (public) IP address.
Deprecated: Please use the context aware variant Client.ExternalIPWithContext.
func (*Client) ExternalIPWithContext ¶ added in v0.4.0
ExternalIPWithContext returns the instance's primary external (public) IP address.
func (*Client) Get
deprecated
Get returns a value from the metadata service. The suffix is appended to "http://${GCE_METADATA_HOST}/computeMetadata/v1/".
If the GCE_METADATA_HOST environment variable is not defined, a default of 169.254.169.254 will be used instead.
If the requested metadata is not defined, the returned error will be of type NotDefinedError.
Deprecated: Please use the context aware variant Client.GetWithContext.
func (*Client) GetWithContext ¶ added in v0.3.0
GetWithContext returns a value from the metadata service. The suffix is appended to "http://${GCE_METADATA_HOST}/computeMetadata/v1/".
If the GCE_METADATA_HOST environment variable is not defined, a default of 169.254.169.254 will be used instead.
If the requested metadata is not defined, the returned error will be of type NotDefinedError.
NOTE: Without an extra deadline in the context this call can take in the worst case, with internal backoff retries, up to 15 seconds (e.g. when server is responding slowly). Pass context with additional timeouts when needed.
func (*Client) Hostname
deprecated
Hostname returns the instance's hostname. This will be of the form "<instanceID>.c.<projID>.internal".
Deprecated: Please use the context aware variant Client.HostnameWithContext.
func (*Client) HostnameWithContext ¶ added in v0.4.0
HostnameWithContext returns the instance's hostname. This will be of the form "<instanceID>.c.<projID>.internal".
func (*Client) InstanceAttributeValue
deprecated
InstanceAttributeValue returns the value of the provided VM instance attribute.
If the requested attribute is not defined, the returned error will be of type NotDefinedError.
InstanceAttributeValue may return ("", nil) if the attribute was defined to be the empty string.
Deprecated: Please use the context aware variant Client.InstanceAttributeValueWithContext.
func (*Client) InstanceAttributeValueWithContext ¶ added in v0.4.0
func (c *Client) InstanceAttributeValueWithContext(ctx context.Context, attr string) (string, error)
InstanceAttributeValueWithContext returns the value of the provided VM instance attribute.
If the requested attribute is not defined, the returned error will be of type NotDefinedError.
InstanceAttributeValue may return ("", nil) if the attribute was defined to be the empty string.
func (*Client) InstanceAttributes
deprecated
InstanceAttributes returns the list of user-defined attributes, assigned when initially creating a GCE VM instance. The value of an attribute can be obtained with InstanceAttributeValue.
Deprecated: Please use the context aware variant Client.InstanceAttributesWithContext.
func (*Client) InstanceAttributesWithContext ¶ added in v0.4.0
InstanceAttributesWithContext returns the list of user-defined attributes, assigned when initially creating a GCE VM instance. The value of an attribute can be obtained with InstanceAttributeValue.
func (*Client) InstanceID
deprecated
InstanceID returns the current VM's numeric instance ID.
Deprecated: Please use the context aware variant Client.InstanceIDWithContext.
func (*Client) InstanceIDWithContext ¶ added in v0.4.0
InstanceIDWithContext returns the current VM's numeric instance ID.
func (*Client) InstanceName
deprecated
InstanceName returns the current VM's instance ID string.
Deprecated: Please use the context aware variant Client.InstanceNameWithContext.
func (*Client) InstanceNameWithContext ¶ added in v0.4.0
InstanceNameWithContext returns the current VM's instance ID string.
func (*Client) InstanceTags
deprecated
InstanceTags returns the list of user-defined instance tags.
Deprecated: Please use the context aware variant Client.InstanceTagsWithContext.
func (*Client) InstanceTagsWithContext ¶ added in v0.4.0
InstanceTagsWithContext returns the list of user-defined instance tags, assigned when initially creating a GCE instance.
func (*Client) InternalIP
deprecated
InternalIP returns the instance's primary internal IP address.
Deprecated: Please use the context aware variant Client.InternalIPWithContext.
func (*Client) InternalIPWithContext ¶ added in v0.4.0
InternalIPWithContext returns the instance's primary internal IP address.
func (*Client) NumericProjectID
deprecated
NumericProjectID returns the current instance's numeric project ID.
Deprecated: Please use the context aware variant Client.NumericProjectIDWithContext.
func (*Client) NumericProjectIDWithContext ¶ added in v0.4.0
NumericProjectIDWithContext returns the current instance's numeric project ID.
func (*Client) ProjectAttributeValue
deprecated
ProjectAttributeValue returns the value of the provided project attribute.
If the requested attribute is not defined, the returned error will be of type NotDefinedError.
ProjectAttributeValue may return ("", nil) if the attribute was defined to be the empty string.
Deprecated: Please use the context aware variant Client.ProjectAttributeValueWithContext.
func (*Client) ProjectAttributeValueWithContext ¶ added in v0.4.0
ProjectAttributeValueWithContext returns the value of the provided project attribute.
If the requested attribute is not defined, the returned error will be of type NotDefinedError.
ProjectAttributeValue may return ("", nil) if the attribute was defined to be the empty string.
func (*Client) ProjectAttributes
deprecated
ProjectAttributes returns the list of user-defined attributes applying to the project as a whole, not just this VM. The value of an attribute can be obtained with ProjectAttributeValue.
Deprecated: Please use the context aware variant Client.ProjectAttributesWithContext.
func (*Client) ProjectAttributesWithContext ¶ added in v0.4.0
ProjectAttributesWithContext returns the list of user-defined attributes applying to the project as a whole, not just this VM. The value of an attribute can be obtained with ProjectAttributeValue.
func (*Client) ProjectID
deprecated
ProjectID returns the current instance's project ID string.
Deprecated: Please use the context aware variant Client.ProjectIDWithContext.
func (*Client) ProjectIDWithContext ¶ added in v0.4.0
ProjectIDWithContext returns the current instance's project ID string.
func (*Client) Scopes
deprecated
Scopes returns the service account scopes for the given account. The account may be empty or the string "default" to use the instance's main account.
Deprecated: Please use the context aware variant Client.ScopesWithContext.
func (*Client) ScopesWithContext ¶ added in v0.4.0
ScopesWithContext returns the service account scopes for the given account. The account may be empty or the string "default" to use the instance's main account.
func (*Client) Subscribe
deprecated
Subscribe subscribes to a value from the metadata service. The suffix is appended to "http://${GCE_METADATA_HOST}/computeMetadata/v1/". The suffix may contain query parameters.
Deprecated: Please use the context aware variant Client.SubscribeWithContext.
func (*Client) SubscribeWithContext ¶ added in v0.3.0
func (c *Client) SubscribeWithContext(ctx context.Context, suffix string, fn func(ctx context.Context, v string, ok bool) error) error
SubscribeWithContext subscribes to a value from the metadata service. The suffix is appended to "http://${GCE_METADATA_HOST}/computeMetadata/v1/". The suffix may contain query parameters.
SubscribeWithContext calls fn with the latest metadata value indicated by the provided suffix. If the metadata value is deleted, fn is called with the empty string and ok false. Subscribe blocks until fn returns a non-nil error or the value is deleted. Subscribe returns the error value returned from the last call to fn, which may be nil when ok == false.
func (*Client) Zone
deprecated
Zone returns the current VM's zone, such as "us-central1-b".
Deprecated: Please use the context aware variant Client.ZoneWithContext.
type Error ¶
type Error struct { // Code is the HTTP response status code. Code int // Message is the server response message. Message string }
Error contains an error response from the server.
type NotDefinedError ¶
type NotDefinedError string
NotDefinedError is returned when requested metadata is not defined.
The underlying string is the suffix after "/computeMetadata/v1/".
This error is not returned if the value is defined to be the empty string.
func (NotDefinedError) Error ¶
func (suffix NotDefinedError) Error() string
type Options ¶ added in v0.6.0
type Options struct { // Client is the HTTP client used to make requests. Optional. Client *http.Client // Logger is used to log information about HTTP request and responses. // If not provided, nothing will be logged. Optional. Logger *slog.Logger }
Options for configuring a Client.