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://developers.google.com/compute/docs/metadata.
Index ¶
- func ExternalIP() (string, error)
- func Get(suffix string) (string, error)
- func Hostname() (string, error)
- func InstanceAttributeValue(attr string) (string, error)
- func InstanceAttributes() ([]string, error)
- func InstanceID() (string, error)
- func InstanceName() (string, error)
- func InstanceTags() ([]string, error)
- func InternalIP() (string, error)
- func NumericProjectID() (string, error)
- func OnGCE() bool
- func ProjectAttributeValue(attr string) (string, error)
- func ProjectAttributes() ([]string, error)
- func ProjectID() (string, error)
- func Scopes(serviceAccount string) ([]string, error)
- func Subscribe(suffix string, fn func(v string, ok bool) error) error
- func Zone() (string, error)
- type Client
- func (c *Client) ExternalIP() (string, error)
- func (c *Client) Get(suffix string) (string, error)
- func (c *Client) Hostname() (string, error)
- func (c *Client) InstanceAttributeValue(attr string) (string, error)
- func (c *Client) InstanceAttributes() ([]string, error)
- func (c *Client) InstanceID() (string, error)
- func (c *Client) InstanceName() (string, error)
- func (c *Client) InstanceTags() ([]string, error)
- func (c *Client) InternalIP() (string, error)
- func (c *Client) NumericProjectID() (string, error)
- func (c *Client) ProjectAttributeValue(attr string) (string, error)
- func (c *Client) ProjectAttributes() ([]string, error)
- func (c *Client) ProjectID() (string, error)
- func (c *Client) Scopes(serviceAccount string) ([]string, error)
- func (c *Client) Subscribe(suffix string, fn func(v string, ok bool) error) error
- func (c *Client) Zone() (string, error)
- type NotDefinedError
Examples ¶
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
func ExternalIP ¶
ExternalIP returns the instance's primary external (public) IP address.
func Hostname ¶
Hostname returns the instance's hostname. This will be of the form "<instanceID>.c.<projID>.internal".
func InstanceAttributeValue ¶
InstanceAttributeValue calls Client.InstanceAttributeValue on the default client.
func InstanceAttributes ¶
InstanceAttributes calls Client.InstanceAttributes on the default client.
func InstanceID ¶
InstanceID returns the current VM's numeric instance ID.
func InstanceName ¶
InstanceName returns the current VM's instance ID string.
func InstanceTags ¶
InstanceTags returns the list of user-defined instance tags, assigned when initially creating a GCE instance.
func InternalIP ¶
InternalIP returns the instance's primary internal IP address.
func NumericProjectID ¶
NumericProjectID returns the current instance's numeric project ID.
func OnGCE ¶
func OnGCE() bool
OnGCE reports whether this process is running on Google Compute Engine.
func ProjectAttributeValue ¶
ProjectAttributeValue calls Client.ProjectAttributeValue on the default client.
func ProjectAttributes ¶
ProjectAttributes calls Client.ProjectAttributes on the default client.
Types ¶
type Client ¶ added in v0.24.0
type Client struct {
// contains filtered or unexported fields
}
A Client provides metadata.
func NewClient ¶ added in v0.24.0
NewClient returns a Client that can be used to fetch metadata. All HTTP requests will use the given http.Client instead of the default client.
Example ¶
This example demonstrates how to use your own transport when using this package.
package main import ( "net/http" "cloud.google.com/go/compute/metadata" ) // This example demonstrates how to use your own transport when using this package. func main() { c := metadata.NewClient(&http.Client{Transport: userAgentTransport{ userAgent: "my-user-agent", base: http.DefaultTransport, }}) p, err := c.ProjectID() if err != nil { // TODO: Handle error. } _ = p // 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 (*Client) ExternalIP ¶ added in v0.24.0
ExternalIP returns the instance's primary external (public) IP address.
func (*Client) Get ¶ added in v0.24.0
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.
func (*Client) Hostname ¶ added in v0.24.0
Hostname returns the instance's hostname. This will be of the form "<instanceID>.c.<projID>.internal".
func (*Client) InstanceAttributeValue ¶ added in v0.24.0
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.
func (*Client) InstanceAttributes ¶ added in v0.24.0
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.
func (*Client) InstanceID ¶ added in v0.24.0
InstanceID returns the current VM's numeric instance ID.
func (*Client) InstanceName ¶ added in v0.24.0
InstanceName returns the current VM's instance ID string.
func (*Client) InstanceTags ¶ added in v0.24.0
InstanceTags returns the list of user-defined instance tags, assigned when initially creating a GCE instance.
func (*Client) InternalIP ¶ added in v0.24.0
InternalIP returns the instance's primary internal IP address.
func (*Client) NumericProjectID ¶ added in v0.24.0
NumericProjectID returns the current instance's numeric project ID.
func (*Client) ProjectAttributeValue ¶ added in v0.24.0
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.
func (*Client) ProjectAttributes ¶ added in v0.24.0
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.
func (*Client) ProjectID ¶ added in v0.24.0
ProjectID returns the current instance's project ID string.
func (*Client) Scopes ¶ added in v0.24.0
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.
func (*Client) Subscribe ¶ added in v0.24.0
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.
Subscribe 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.
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