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
|
||
|
}
|