From edc280a8dc6ef702a34880502ec41d5852a4bab4 Mon Sep 17 00:00:00 2001 From: Jon Perritt Date: Wed, 7 Jan 2015 11:38:23 -0700 Subject: [PATCH] add/update admin pass on server; change key pair format from map to string --- .../resource_openstack_compute_instance.go | 28 ++++++++++++++----- 1 file changed, 21 insertions(+), 7 deletions(-) diff --git a/builtin/providers/openstack/resource_openstack_compute_instance.go b/builtin/providers/openstack/resource_openstack_compute_instance.go index 57afbb3093..a57fda13b8 100644 --- a/builtin/providers/openstack/resource_openstack_compute_instance.go +++ b/builtin/providers/openstack/resource_openstack_compute_instance.go @@ -93,6 +93,12 @@ func resourceComputeInstance() *schema.Resource { ForceNew: true, }, + "admin_pass": &schema.Schema{ + Type: schema.TypeString, + Optional: true, + ForceNew: false, + }, + "access_ip_v4": &schema.Schema{ Type: schema.TypeString, Computed: true, @@ -108,7 +114,7 @@ func resourceComputeInstance() *schema.Resource { }, "key_pair": &schema.Schema{ - Type: schema.TypeMap, + Type: schema.TypeString, Optional: true, ForceNew: true, }, @@ -131,14 +137,13 @@ func resourceComputeInstanceCreate(d *schema.ResourceData, meta interface{}) err Networks: resourceInstanceNetworks(d), Metadata: resourceInstanceMetadata(d), ConfigDrive: d.Get("config_drive").(bool), + AdminPass: d.Get("admin_pass").(string), } - if kp, ok := d.Get("key_pair").(map[string]interface{}); ok && kp != nil { - if keyName, ok := kp["name"].(string); ok && keyName != "" { - createOpts = &keypairs.CreateOptsExt{ - serverCreateOpts, - keyName, - } + if keyName, ok := d.Get("key_pair").(string); ok && keyName != "" { + createOpts = &keypairs.CreateOptsExt{ + serverCreateOpts, + keyName, } } @@ -308,6 +313,15 @@ func resourceComputeInstanceUpdate(d *schema.ResourceData, meta interface{}) err } } + if d.HasChange("admin_pass") { + if newPwd, ok := d.Get("admin_pass").(string); ok { + err := servers.ChangeAdminPassword(osClient, d.Id(), newPwd).ExtractErr() + if err != nil { + return fmt.Errorf("Error changing admin password of OpenStack server (%s): %s", d.Id(), err) + } + } + } + if d.HasChange("flavor_ref") { resizeOpts := &servers.ResizeOpts{ FlavorRef: d.Get("flavor_ref").(string),