| package servers |
| |
| import ( |
| "fmt" |
| |
| "github.com/rackspace/gophercloud" |
| identity "github.com/rackspace/gophercloud/openstack/identity/v2" |
| ) |
| |
| // Client abstracts the connection information needed to make API requests for OpenStack compute endpoints. |
| type Client struct { |
| endpoint string |
| authority identity.AuthResults |
| options gophercloud.AuthOptions |
| token *identity.Token |
| } |
| |
| // NewClient creates a new Client structure to use when issuing requests to the server. |
| func NewClient(e string, a identity.AuthResults, o gophercloud.AuthOptions) *Client { |
| return &Client{ |
| endpoint: e, |
| authority: a, |
| options: o, |
| } |
| } |
| |
| func (c *Client) getListUrl() string { |
| return fmt.Sprintf("%s/servers/detail", c.endpoint) |
| } |
| |
| func (c *Client) getCreateUrl() string { |
| return fmt.Sprintf("%s/servers", c.endpoint) |
| } |
| |
| func (c *Client) getDeleteUrl(id string) string { |
| return fmt.Sprintf("%s/servers/%s", c.endpoint, id) |
| } |
| |
| func (c *Client) getDetailUrl(id string) string { |
| return c.getDeleteUrl(id) |
| } |
| |
| func (c *Client) getUpdateUrl(id string) string { |
| return c.getDeleteUrl(id) |
| } |
| |
| func (c *Client) getActionUrl(id string) string { |
| return fmt.Sprintf("%s/servers/%s/action", c.endpoint, id) |
| } |
| |
| func (c *Client) getListHeaders() (map[string]string, error) { |
| t, err := c.getAuthToken() |
| if err != nil { |
| return map[string]string{}, err |
| } |
| |
| return map[string]string{ |
| "X-Auth-Token": t, |
| }, nil |
| } |
| |
| func (c *Client) getCreateHeaders() (map[string]string, error) { |
| return c.getListHeaders() |
| } |
| |
| func (c *Client) getDeleteHeaders() (map[string]string, error) { |
| return c.getListHeaders() |
| } |
| |
| func (c *Client) getDetailHeaders() (map[string]string, error) { |
| return c.getListHeaders() |
| } |
| |
| func (c *Client) getUpdateHeaders() (map[string]string, error) { |
| return c.getListHeaders() |
| } |
| |
| func (c *Client) getActionHeaders() (map[string]string, error) { |
| return c.getListHeaders() |
| } |
| |
| func (c *Client) getAuthToken() (string, error) { |
| var err error |
| |
| if c.token == nil { |
| c.token, err = identity.GetToken(c.authority) |
| if err != nil { |
| return "", err |
| } |
| } |
| |
| return c.token.ID, err |
| } |