Add ability to change admin password on a server
diff --git a/servers.go b/servers.go
index 4f7cc1e..ee38e9f 100644
--- a/servers.go
+++ b/servers.go
@@ -5,6 +5,7 @@
import (
"github.com/racker/perigee"
+ "fmt"
)
// genericServersProvider structures provide the implementation for generic OpenStack-compatible
@@ -107,6 +108,29 @@
return err
}
+// See the CloudServersProvider interface for details.
+func (gsp *genericServersProvider) SetAdminPassword(id, pw string) error {
+ err := gsp.context.WithReauth(gsp.access, func() error {
+ url := fmt.Sprintf("%s/servers/%s/action", gsp.endpoint, id)
+ return perigee.Post(url, perigee.Options{
+ ReqBody: &struct {
+ ChangePassword struct {
+ AdminPass string `json:"adminPass"`
+ } `json:"changePassword"`
+ }{
+ struct {
+ AdminPass string `json:"adminPass"`
+ }{pw},
+ },
+ OkCodes: []int{202},
+ MoreHeaders: map[string]string{
+ "X-Auth-Token": gsp.access.AuthToken(),
+ },
+ })
+ })
+ return err
+}
+
// RaxBandwidth provides measurement of server bandwidth consumed over a given audit interval.
type RaxBandwidth struct {
AuditPeriodEnd string `json:"audit_period_end"`