diff --git a/openstack/baremetal/v1/drivers/requests.go b/openstack/baremetal/v1/drivers/requests.go
new file mode 100644
index 0000000..8e338e4
--- /dev/null
+++ b/openstack/baremetal/v1/drivers/requests.go
@@ -0,0 +1,12 @@
+package drivers
+
+import (
+	"gerrit.mcp.mirantis.net/debian/gophercloud.git"
+	"gerrit.mcp.mirantis.net/debian/gophercloud.git/pagination"
+)
+
+func List(c *gophercloud.ServiceClient) pagination.Pager {
+	return pagination.NewPager(c, listURL(c), func(r pagination.PageResult) pagination.Page {
+		return DriverPage{pagination.SinglePageBase(r)}
+	})
+}
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
+}
diff --git a/openstack/baremetal/v1/drivers/urls.go b/openstack/baremetal/v1/drivers/urls.go
new file mode 100644
index 0000000..0996543
--- /dev/null
+++ b/openstack/baremetal/v1/drivers/urls.go
@@ -0,0 +1,7 @@
+package drivers
+
+import "gerrit.mcp.mirantis.net/debian/gophercloud.git"
+
+func listURL(c *gophercloud.ServiceClient) string {
+	return c.ServiceURL("drivers")
+}
