metadata

package module
v1.1.0 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: May 12, 2022 License: MIT Imports: 6 Imported by: 2

README

metadata

A Go client that interacts with the Vultr Metadata.

Installation

go get -u github.com/vultr/metadata

Usage

Currently, there is only one available call Metadata() which will retrieve your entire metadata from your instance. If you want to retrieve a specific of your metadata you can do so by calling the corresponding exported field on the metadata struct.

c := metadata.NewClient()

meta, err := c.Metadata()
if err != nil {
	fmt.Println(err)
}

fmt.Println(meta)
fmt.Println(meta.InstanceID) // will print your instance-id

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func RegionCodeToID

func RegionCodeToID(code string) string

RegionCodeToID takes in a region code and returns back the region ID

Types

type Client

type Client struct {
	// contains filtered or unexported fields
}

Client ...

func NewClient

func NewClient() *Client

NewClient creates a client to interact with the metadata

func (*Client) Metadata

func (c *Client) Metadata() (*MetaData, error)

Metadata returns the entire contents of the instances metadata

func (*Client) SetBaseURL

func (c *Client) SetBaseURL(baseURL string) error

SetBaseURL lets you change the default metadata url

type MetaData

type MetaData struct {
	Hostname     string   `json:"hostname,omitempty"`
	InstanceV2ID string   `json:"instance-v2-id,omitempty"`
	InstanceID   string   `json:"instanceid,omitempty"`
	PublicKeys   []string `json:"public-keys,omitempty"`

	Region struct {
		RegionCode string `json:"regioncode,omitempty"`
	} `json:"region,omitempty"`

	BGP struct {
		IPv4 struct {
			MyAddress   string `json:"my-address,omitempty"`
			MyASN       string `json:"my-asn,omitempty"`
			PeerAddress string `json:"peer-address,omitempty"`
			PeerASN     string `json:"peer-asn,omitempty"`
		} `json:"ipv4,omitempty"`
		IPv6 struct {
			MyAddress   string `json:"my-address,omitempty"`
			MyASN       string `json:"my-asn,omitempty"`
			PeerAddress string `json:"peer-address,omitempty"`
			PeerASN     string `json:"peer-asn,omitempty"`
		} `json:"ipv6,omitempty"`
	} `json:"bgp,omitempty"`

	Interfaces []struct {
		IPv4 struct {
			Additional []struct {
				Address string `json:"address,omitempty"`
				Netmask string `json:"netmask,omitempty"`
			}
			Address string `json:"address,omitempty"`
			Gateway string `json:"gateway,omitempty"`
			Netmask string `json:"netmask,omitempty"`
		} `json:"ipv4,omitempty"`
		IPv6 struct {
			Additional []struct {
				Address string `json:"address,omitempty"`
				Prefix  string `json:"prefix,omitempty"`
			}
			Address string `json:"address,omitempty"`
			Gateway string `json:"gateway,omitempty"`
			Prefix  string `json:"prefix,omitempty"`
		} `json:"ipv6,omitempty"`
		Mac         string `json:"mac,omitempty"`
		NetworkV2ID string `json:"network-v2-id,omitempty"`
		NetworkType string `json:"network-type,omitempty"`
		NetworkID   string `json:"networkid,omitempty"`
	} `json:"interfaces,omitempty"`
}

MetaData represents metadata about a Vultr instance https://www.vultr.com/metadata/

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL