45 lines
1.3 KiB
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
|
|
}
|