blob: 459ed1b8ba80c0a0d28aaecf968c7898aa8d13bb [file] [log] [blame]
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
}