Adding isRootEnabled feature
diff --git a/openstack/db/v1/instances/fixtures.go b/openstack/db/v1/instances/fixtures.go
index 9cbcb3a..c62be4e 100644
--- a/openstack/db/v1/instances/fixtures.go
+++ b/openstack/db/v1/instances/fixtures.go
@@ -164,3 +164,13 @@
fmt.Fprintf(w, `{"user":{"name":"root","password":"secretsecret"}}`)
})
}
+
+func HandleIsRootEnabledSuccessfully(t *testing.T, id string) {
+ th.Mux.HandleFunc("/instances/"+id+"/root", func(w http.ResponseWriter, r *http.Request) {
+ th.TestMethod(t, r, "GET")
+ th.TestHeader(t, r, "X-Auth-Token", fake.TokenID)
+
+ w.WriteHeader(http.StatusOK)
+ fmt.Fprintf(w, `{"rootEnabled":true}`)
+ })
+}
diff --git a/openstack/db/v1/instances/requests.go b/openstack/db/v1/instances/requests.go
index b54b9fa..8bac170 100644
--- a/openstack/db/v1/instances/requests.go
+++ b/openstack/db/v1/instances/requests.go
@@ -241,3 +241,15 @@
return res
}
+
+func IsRootEnabled(client *gophercloud.ServiceClient, id string) (bool, error) {
+ var res gophercloud.Result
+
+ _, err := perigee.Request("GET", userRootURL(client, id), perigee.Options{
+ MoreHeaders: client.AuthenticatedHeaders(),
+ Results: &res.Body,
+ OkCodes: []int{200},
+ })
+
+ return res.Body.(map[string]interface{})["rootEnabled"] == true, err
+}
diff --git a/openstack/db/v1/instances/requests_test.go b/openstack/db/v1/instances/requests_test.go
index 0845e0c..0dfcdc6 100644
--- a/openstack/db/v1/instances/requests_test.go
+++ b/openstack/db/v1/instances/requests_test.go
@@ -143,3 +143,15 @@
th.AssertNoErr(t, err)
th.AssertDeepEquals(t, expected, user)
}
+
+func TestIsRootEnabled(t *testing.T) {
+ th.SetupHTTP()
+ defer th.TeardownHTTP()
+
+ HandleIsRootEnabledSuccessfully(t, instanceID)
+
+ isEnabled, err := IsRootEnabled(fake.ServiceClient(), instanceID)
+
+ th.AssertNoErr(t, err)
+ th.AssertEquals(t, true, isEnabled)
+}