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
+}