Add baremetal API endpoints
- drivers
- nodes
Change-Id: I7a144f146ce4ee9c028d7450b98aadb12d6a597d
Related-PROD: PROD-32734
diff --git a/openstack/baremetal/v1/nodes/results.go b/openstack/baremetal/v1/nodes/results.go
new file mode 100644
index 0000000..459ed1b
--- /dev/null
+++ b/openstack/baremetal/v1/nodes/results.go
@@ -0,0 +1,64 @@
+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
+}