Add baremetal API endpoints
- drivers
- nodes
Change-Id: I7a144f146ce4ee9c028d7450b98aadb12d6a597d
Related-PROD: PROD-32734
diff --git a/openstack/baremetal/v1/drivers/results.go b/openstack/baremetal/v1/drivers/results.go
new file mode 100644
index 0000000..b3efacd
--- /dev/null
+++ b/openstack/baremetal/v1/drivers/results.go
@@ -0,0 +1,63 @@
+package drivers
+
+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() (*Driver, error) {
+ var d struct {
+ Driver *Driver `json:"driver"`
+ }
+ err := r.ExtractInto(&d)
+ return d.Driver, err
+}
+
+type GetResult struct {
+ commonResult
+}
+
+type Link struct {
+ Href string `json:"href"`
+ Rel string `json:"rel"`
+}
+
+type Driver struct {
+ Name string `json:"name"`
+ Type string `json:"type"`
+ Hosts []string `json:"hosts"`
+ Links []Link `json:"links"`
+ Properties []Link `json:"properties"`
+}
+
+type DriverPage struct {
+ pagination.SinglePageBase
+}
+
+func (r DriverPage) NextPageURL() (string, error) {
+ var d struct {
+ Links []gophercloud.Link `json:"drivers_links"`
+ }
+ err := r.ExtractInto(&d)
+ if err != nil {
+ return "", err
+ }
+ return gophercloud.ExtractNextURL(d.Links)
+}
+
+func (r DriverPage) IsEmpty() (bool, error) {
+ is, err := ExtractDrivers(r)
+ return len(is) == 0, err
+}
+
+func ExtractDrivers(r pagination.Page) ([]Driver, error) {
+ var d struct {
+ Drivers []Driver `json:"drivers"`
+ }
+ err := (r.(DriverPage)).ExtractInto(&d)
+ return d.Drivers, err
+}