packer-cn/vendor/github.com/joyent/gosdc/cloudapi/networks.go

45 lines
1.3 KiB
Go

package cloudapi
import (
"github.com/joyent/gocommon/client"
"github.com/joyent/gocommon/errors"
)
// Network represents a network available to a given account
type Network struct {
Id string // Unique identifier for the network
Name string // Network name
Public bool // Whether this a public or private (rfc1918) network
Description string // Optional description for this network, when name is not enough
}
// ListNetworks lists all the networks which can be used by the given account.
// See API docs: http://apidocs.joyent.com/cloudapi/#ListNetworks
func (c *Client) ListNetworks() ([]Network, error) {
var resp []Network
req := request{
method: client.GET,
url: apiNetworks,
resp: &resp,
}
if _, err := c.sendRequest(req); err != nil {
return nil, errors.Newf(err, "failed to get list of networks")
}
return resp, nil
}
// GetNetwork retrieves an individual network record.
// See API docs: http://apidocs.joyent.com/cloudapi/#GetNetwork
func (c *Client) GetNetwork(networkID string) (*Network, error) {
var resp Network
req := request{
method: client.GET,
url: makeURL(apiNetworks, networkID),
resp: &resp,
}
if _, err := c.sendRequest(req); err != nil {
return nil, errors.Newf(err, "failed to get network with id %s", networkID)
}
return &resp, nil
}