| package nodes |
| |
| import ( |
| "gerrit.mcp.mirantis.net/debian/gophercloud.git" |
| "gerrit.mcp.mirantis.net/debian/gophercloud.git/pagination" |
| ) |
| |
| type commonResult struct { |
| gophercloud.Result |
| } |
| |
| func (r commonResult) Extract() (*Node, error) { |
| var n struct { |
| Node *Node `json:"node"` |
| } |
| err := r.ExtractInto(&n) |
| return n.Node, err |
| } |
| |
| type GetResult struct { |
| commonResult |
| } |
| |
| type Link struct { |
| Href string `json:"href"` |
| Rel string `json:"rel"` |
| } |
| |
| type Node struct { |
| UUID string `json:"uuid"` |
| InstanceUUID string `json:"InstanceUUID"` |
| PowerState string `json:"power_state"` |
| ProvisionState string `json:"provision_state"` |
| Maintenance bool `json:"maintenance"` |
| Links []Link `json:"links"` |
| } |
| |
| type NodePage struct { |
| pagination.SinglePageBase |
| } |
| |
| func (r NodePage) NextPageURL() (string, error) { |
| var n struct { |
| Links []gophercloud.Link `json:"nodes_links"` |
| } |
| err := r.ExtractInto(&n) |
| if err != nil { |
| return "", err |
| } |
| return gophercloud.ExtractNextURL(n.Links) |
| } |
| |
| func (r NodePage) IsEmpty() (bool, error) { |
| is, err := ExtractNodes(r) |
| return len(is) == 0, err |
| } |
| |
| func ExtractNodes(r pagination.Page) ([]Node, error) { |
| var n struct { |
| Nodes []Node `json:"nodes"` |
| } |
| err := (r.(NodePage)).ExtractInto(&n) |
| return n.Nodes, err |
| } |