From ccccd7745262caa3f440a587c8a1375eaaa9442d Mon Sep 17 00:00:00 2001 From: Renier Morales Date: Thu, 27 Oct 2016 10:15:39 -0400 Subject: [PATCH] Change virtual guest attribute names to match bare metal and api (#39) * name to hostname * cpu to cores * ram to memory * user_data to user_metadata * ssh_keys to ssh_key_ids --- cookbooks/docker-swarm/docker.tf | 16 ++-- cookbooks/elasticsearch-haproxy/es.tf | 18 ++-- cookbooks/elasticsearch/es.tf | 8 +- docs/datasources/softlayer_ssh_key.md | 2 +- docs/provider.md | 14 +-- docs/resources/softlayer_scale_group.md | 12 +-- docs/resources/softlayer_virtual_guest.md | 24 ++--- ...esource_softlayer_lb_local_service_test.go | 8 +- .../resource_softlayer_lb_vpx_service_test.go | 20 ++--- softlayer/resource_softlayer_scale_group.go | 10 +-- .../resource_softlayer_scale_group_test.go | 46 +++++----- .../resource_softlayer_scale_policy_test.go | 20 ++--- softlayer/resource_softlayer_virtual_guest.go | 90 +++++++++++++------ .../resource_softlayer_virtual_guest_test.go | 60 ++++++------- 14 files changed, 193 insertions(+), 155 deletions(-) diff --git a/cookbooks/docker-swarm/docker.tf b/cookbooks/docker-swarm/docker.tf index c32820143..c8312c155 100644 --- a/cookbooks/docker-swarm/docker.tf +++ b/cookbooks/docker-swarm/docker.tf @@ -5,15 +5,15 @@ data "softlayer_ssh_key" "my_key" { } resource "softlayer_virtual_guest" "manager" { - name = "docker-swarm-manager" + hostname = "docker-swarm-manager" domain = "demo.com" os_reference_code = "UBUNTU_LATEST" datacenter = "${var.datacenter}" - cpu = 1 - ram = 1024 + cores = 1 + memory = 1024 local_disk = true - ssh_keys = [ + ssh_key_ids = [ "${data.softlayer_ssh_key.my_key.id}" ] @@ -28,15 +28,15 @@ resource "softlayer_virtual_guest" "manager" { resource "softlayer_virtual_guest" "worker" { count = "${var.worker_count}" - name = "docker-swarm-worker${count.index}" + hostname = "docker-swarm-worker${count.index}" domain = "demo.com" os_reference_code = "UBUNTU_LATEST" datacenter = "${var.datacenter}" - cpu = 1 - ram = 1024 + cores = 1 + memory = 1024 local_disk = true - ssh_keys = [ + ssh_key_ids = [ "${data.softlayer_ssh_key.my_key.id}" ] diff --git a/cookbooks/elasticsearch-haproxy/es.tf b/cookbooks/elasticsearch-haproxy/es.tf index 294d3e60e..15fd636af 100644 --- a/cookbooks/elasticsearch-haproxy/es.tf +++ b/cookbooks/elasticsearch-haproxy/es.tf @@ -11,16 +11,16 @@ data "softlayer_ssh_key" "esk_key" { resource "softlayer_virtual_guest" "esk-node" { count = "${var.node_count}" - name = "esk-node${count.index+1}" + hostname = "esk-node${count.index+1}" domain = "demo.com" os_reference_code = "UBUNTU_LATEST" datacenter = "${var.datacenter}" private_network_only = true - cpu = 1 - ram = 1024 + cores = 1 + memory = 1024 local_disk = true - ssh_keys = [ + ssh_key_ids = [ "${data.softlayer_ssh_key.esk_key.id}" ] @@ -38,17 +38,17 @@ resource "softlayer_virtual_guest" "esk-node" { } resource "softlayer_virtual_guest" "haproxy" { - name = "esk-haproxy" + hostname = "esk-haproxy" domain = "demo.com" os_reference_code = "UBUNTU_LATEST" datacenter = "${var.datacenter}" private_network_only = false - cpu = 1 - ram = 1024 + cores = 1 + memory = 1024 local_disk = true - user_data = "${join(" ", softlayer_virtual_guest.esk-node.*.ipv4_address_private)}" + user_metadata = "${join(" ", softlayer_virtual_guest.esk-node.*.ipv4_address_private)}" - ssh_keys = [ + ssh_key_ids = [ "${data.softlayer_ssh_key.esk_key.id}" ] diff --git a/cookbooks/elasticsearch/es.tf b/cookbooks/elasticsearch/es.tf index 9b23251e4..f950a74aa 100644 --- a/cookbooks/elasticsearch/es.tf +++ b/cookbooks/elasticsearch/es.tf @@ -29,17 +29,17 @@ resource "softlayer_lb_local_service_group" "es_lb_sg" { resource "softlayer_virtual_guest" "es-vm" { count = "${var.node_count}" - name = "es-vm${count.index+1}" + hostname = "es-vm${count.index+1}" domain = "demo.com" os_reference_code = "UBUNTU_LATEST" datacenter = "${var.datacenter}" hourly_billing = true - cpu = 1 - ram = 1024 + cores = 1 + memory = 1024 disks = [25] local_disk = true - ssh_keys = [ + ssh_key_ids = [ "${data.softlayer_ssh_key.es_key.id}" ] diff --git a/docs/datasources/softlayer_ssh_key.md b/docs/datasources/softlayer_ssh_key.md index 40763e428..8ba01c44f 100644 --- a/docs/datasources/softlayer_ssh_key.md +++ b/docs/datasources/softlayer_ssh_key.md @@ -18,7 +18,7 @@ reference the `id` property in a softlayer_virtual_guest resource: ```hcl resource "softlayer_virtual_guest" "vm1" { ... - ssh_keys = ["${data.softlayer_ssh_key.public_key.id}"] + ssh_key_ids = ["${data.softlayer_ssh_key.public_key.id}"] ... } ``` diff --git a/docs/provider.md b/docs/provider.md index 27c12b0bb..9d01576db 100644 --- a/docs/provider.md +++ b/docs/provider.md @@ -25,27 +25,27 @@ resource "softlayer_ssh_key" "testkey1" { # Virtual Server created with existing SSH Key already in SoftLayer # inventory and not created using this Terraform template. resource "softlayer_virtual_guest" "host-a" { - name = "host-a.example.com" + hostname = "host-a.example.com" domain = "example.com" - ssh_keys = [123456] + ssh_key_ids = [123456] os_reference_code = "DEBIAN_7_64" datacenter = "ams01" network_speed = 10 - cpu = 1 - ram = 1024 + cores = 1 + memory = 1024 } # Virtual Server created with a mix of previously existing and # Terraform created/managed resources. resource "softlayer_virtual_guest" "host-b" { - name = "host-b.example.com" + hostname = "host-b.example.com" domain = "example.com" ssh_keys = [123456, "${softlayer_ssh_key.test_key_1.id}"] os_reference_code = "CENTOS_6_64" datacenter = "ams01" network_speed = 10 - cpu = 1 - ram = 1024 + cores = 1 + memory = 1024 } ``` diff --git a/docs/resources/softlayer_scale_group.md b/docs/resources/softlayer_scale_group.md index 7baee5b21..bd0b58a32 100644 --- a/docs/resources/softlayer_scale_group.md +++ b/docs/resources/softlayer_scale_group.md @@ -20,11 +20,11 @@ resource "softlayer_scale_group" "test_scale_group" { type = "HTTP" } virtual_guest_member_template = { - name = "test_virtual_guest_name" + hostname = "test_virtual_guest_name" domain = "example.com" - cpu = 1 - ram = 1024 - public_network_speed = 100 + cores = 1 + memory = 1024 + network_speed = 100 hourly_billing = true os_reference_code = "DEBIAN_7_64" # Optional Fields for virtual guest template (SL defaults apply): @@ -32,8 +32,8 @@ resource "softlayer_scale_group" "test_scale_group" { disks = [25] datacenter = "sng01" post_install_script_uri = "" - ssh_keys = [383111] - user_data = "#!/bin/bash ..." + ssh_key_ids = [383111] + user_metadata = "#!/bin/bash ..." } # Optional Fields for scale_group: network_vlan_ids = [1234567, 7654321] diff --git a/docs/resources/softlayer_virtual_guest.md b/docs/resources/softlayer_virtual_guest.md index 8911e2353..249b85a2e 100644 --- a/docs/resources/softlayer_virtual_guest.md +++ b/docs/resources/softlayer_virtual_guest.md @@ -5,17 +5,17 @@ Provides a `virtual_guest` resource. This allows virtual guests to be created, u ```hcl # Create a new virtual guest using image "Debian" resource "softlayer_virtual_guest" "twc_terraform_sample" { - name = "twc-terraform-sample-name" + hostname = "twc-terraform-sample-name" domain = "bar.example.com" os_reference_code = "DEBIAN_7_64" datacenter = "wdc01" network_speed = 10 hourly_billing = true private_network_only = false - cpu = 1 - ram = 1024 + cores = 1 + memory = 1024 disks = [25, 10, 20] - user_data = "{\"value\":\"newvalue\"}" + user_metadata = "{\"value\":\"newvalue\"}" dedicated_acct_host_only = true local_disk = false public_vlan_id = 1391277 @@ -27,13 +27,13 @@ resource "softlayer_virtual_guest" "twc_terraform_sample" { # Create a new virtual guest using block device template, tags, # and subnets resource "softlayer_virtual_guest" "terraform-sample-BDTGroup" { - name = "terraform-sample-blockDeviceTemplateGroup" + hostname = "terraform-sample-blockDeviceTemplateGroup" domain = "bar.example.com" datacenter = "ams01" public_network_speed = 10 hourly_billing = false - cpu = 1 - ram = 1024 + cores = 1 + memory = 1024 local_disk = false image_id = 12345 tags = [ @@ -49,16 +49,16 @@ resource "softlayer_virtual_guest" "terraform-sample-BDTGroup" { The following arguments are supported: -* `name` | *string* +* `hostname` | *string* * Hostname for the computing instance. * **Optional** * `domain` | *string* * Domain for the computing instance. * **Required** -* `cpu` | *int* +* `cores` | *int* * The number of CPU cores to allocate. * **Required** -* `ram` | *int* +* `memory` | *int* * The amount of memory to allocate in megabytes. * **Required** * `datacenter` | *string* @@ -109,10 +109,10 @@ The following arguments are supported: * Block device and disk image settings for the computing instance * *Optional* * *Default*: The smallest available capacity for the primary disk will be used. If an image template is specified the disk capacity will be be provided by the template. -* `user_data` | *string* +* `user_metadata` | *string* * Arbitrary data to be made available to the computing instance. * *Optional* -* `ssh_keys` | *array* of numbers +* `ssh_key_ids` | *array* of numbers * SSH key _IDs_ to install on the computing instance upon provisioning. * *Optional* diff --git a/softlayer/resource_softlayer_lb_local_service_test.go b/softlayer/resource_softlayer_lb_local_service_test.go index 25dfd936e..f4c609ae1 100644 --- a/softlayer/resource_softlayer_lb_local_service_test.go +++ b/softlayer/resource_softlayer_lb_local_service_test.go @@ -29,17 +29,17 @@ func TestAccSoftLayerLbLocalService_Basic(t *testing.T) { const testAccCheckSoftLayerLbLocalServiceConfig_basic = ` resource "softlayer_virtual_guest" "test_server_1" { - name = "terraform-test" + hostname = "terraform-test" domain = "bar.example.com" os_reference_code = "DEBIAN_7_64" datacenter = "tok02" network_speed = 10 hourly_billing = true private_network_only = false - cpu = 1 - ram = 1024 + cores = 1 + memory = 1024 disks = [25, 10, 20] - user_data = "{\"value\":\"newvalue\"}" + user_metadata = "{\"value\":\"newvalue\"}" dedicated_acct_host_only = true local_disk = false } diff --git a/softlayer/resource_softlayer_lb_vpx_service_test.go b/softlayer/resource_softlayer_lb_vpx_service_test.go index d69202a11..9528bd358 100644 --- a/softlayer/resource_softlayer_lb_vpx_service_test.go +++ b/softlayer/resource_softlayer_lb_vpx_service_test.go @@ -35,29 +35,29 @@ func TestAccSoftLayerLbVpxService_Basic(t *testing.T) { var testAccCheckSoftLayerLbVpxServiceConfig_basic = ` resource "softlayer_virtual_guest" "vm1" { - name = "vm1" + hostname = "vm1" domain = "example.com" - image = "DEBIAN_7_64" + os_reference_code = "DEBIAN_7_64" datacenter = "wdc01" - public_network_speed = 10 + network_speed = 10 hourly_billing = true private_network_only = false - cpu = 1 - ram = 1024 + cores = 1 + memory = 1024 disks = [25] local_disk = false } resource "softlayer_virtual_guest" "vm2" { - name = "vm2" + hostname = "vm2" domain = "example.com" - image = "DEBIAN_7_64" + os_reference_code = "DEBIAN_7_64" datacenter = "wdc01" - public_network_speed = 10 + network_speed = 10 hourly_billing = true private_network_only = false - cpu = 1 - ram = 1024 + cores = 1 + memory = 1024 disks = [25] local_disk = false } diff --git a/softlayer/resource_softlayer_scale_group.go b/softlayer/resource_softlayer_scale_group.go index 3455b2c92..6e129f2ce 100644 --- a/softlayer/resource_softlayer_scale_group.go +++ b/softlayer/resource_softlayer_scale_group.go @@ -404,12 +404,12 @@ func populateMemberTemplateResourceData(template datatypes.Virtual_Guest) []map[ d := make(map[string]interface{}) - d["name"] = *template.Hostname + d["hostname"] = *template.Hostname d["domain"] = *template.Domain d["datacenter"] = *template.Datacenter.Name d["network_speed"] = *template.NetworkComponents[0].MaxSpeed - d["cpu"] = *template.StartCpus - d["ram"] = *template.MaxMemory + d["cores"] = *template.StartCpus + d["memory"] = *template.MaxMemory d["private_network_only"] = *template.PrivateNetworkOnlyFlag d["hourly_billing"] = *template.HourlyBillingFlag d["local_disk"] = *template.LocalDiskFlag @@ -431,14 +431,14 @@ func populateMemberTemplateResourceData(template datatypes.Virtual_Guest) []map[ } if len(template.UserData) > 0 { - d["user_data"] = *template.UserData[0].Value + d["user_metadata"] = *template.UserData[0].Value } sshKeys := make([]interface{}, 0, len(template.SshKeys)) for _, elem := range template.SshKeys { sshKeys = append(sshKeys, *elem.Id) } - d["ssh_keys"] = sshKeys + d["ssh_key_ids"] = sshKeys disks := make([]interface{}, 0, len(template.BlockDevices)) for _, elem := range template.BlockDevices { diff --git a/softlayer/resource_softlayer_scale_group_test.go b/softlayer/resource_softlayer_scale_group_test.go index 35cd9460e..6aea966e2 100644 --- a/softlayer/resource_softlayer_scale_group_test.go +++ b/softlayer/resource_softlayer_scale_group_test.go @@ -44,19 +44,19 @@ func TestAccSoftLayerScaleGroup_Basic(t *testing.T) { resource.TestCheckResourceAttr( "softlayer_scale_group.sample-http-cluster", "health_check.type", "HTTP"), resource.TestCheckResourceAttr( - "softlayer_scale_group.sample-http-cluster", "virtual_guest_member_template.0.name", "test-VM"), + "softlayer_scale_group.sample-http-cluster", "virtual_guest_member_template.0.hostname", "test-VM"), resource.TestCheckResourceAttr( "softlayer_scale_group.sample-http-cluster", "virtual_guest_member_template.0.domain", "example.com"), resource.TestCheckResourceAttr( - "softlayer_scale_group.sample-http-cluster", "virtual_guest_member_template.0.cpu", "1"), + "softlayer_scale_group.sample-http-cluster", "virtual_guest_member_template.0.cores", "1"), resource.TestCheckResourceAttr( - "softlayer_scale_group.sample-http-cluster", "virtual_guest_member_template.0.ram", "4096"), + "softlayer_scale_group.sample-http-cluster", "virtual_guest_member_template.0.memory", "4096"), resource.TestCheckResourceAttr( - "softlayer_scale_group.sample-http-cluster", "virtual_guest_member_template.0.public_network_speed", "1000"), + "softlayer_scale_group.sample-http-cluster", "virtual_guest_member_template.0.network_speed", "1000"), resource.TestCheckResourceAttr( "softlayer_scale_group.sample-http-cluster", "virtual_guest_member_template.0.hourly_billing", "true"), resource.TestCheckResourceAttr( - "softlayer_scale_group.sample-http-cluster", "virtual_guest_member_template.0.image", "DEBIAN_7_64"), + "softlayer_scale_group.sample-http-cluster", "virtual_guest_member_template.0.os_reference_code", "DEBIAN_7_64"), resource.TestCheckResourceAttr( "softlayer_scale_group.sample-http-cluster", "virtual_guest_member_template.0.local_disk", "false"), resource.TestCheckResourceAttr( @@ -68,7 +68,7 @@ func TestAccSoftLayerScaleGroup_Basic(t *testing.T) { resource.TestCheckResourceAttr( "softlayer_scale_group.sample-http-cluster", "virtual_guest_member_template.0.post_install_script_uri", ""), resource.TestCheckResourceAttr( - "softlayer_scale_group.sample-http-cluster", "virtual_guest_member_template.0.user_data", "#!/bin/bash"), + "softlayer_scale_group.sample-http-cluster", "virtual_guest_member_template.0.user_metadata", "#!/bin/bash"), testAccCheckSoftLayerScaleGroupContainsNetworkVlan(&scalegroup, 1928, "bcr02a.sng01"), ), }, @@ -94,17 +94,17 @@ func TestAccSoftLayerScaleGroup_Basic(t *testing.T) { resource.TestCheckResourceAttr( "softlayer_scale_group.sample-http-cluster", "health_check.type", "HTTP-CUSTOM"), resource.TestCheckResourceAttr( - "softlayer_scale_group.sample-http-cluster", "virtual_guest_member_template.0.name", "example-VM"), + "softlayer_scale_group.sample-http-cluster", "virtual_guest_member_template.0.hostname", "example-VM"), resource.TestCheckResourceAttr( "softlayer_scale_group.sample-http-cluster", "virtual_guest_member_template.0.domain", "test.com"), resource.TestCheckResourceAttr( - "softlayer_scale_group.sample-http-cluster", "virtual_guest_member_template.0.cpu", "2"), + "softlayer_scale_group.sample-http-cluster", "virtual_guest_member_template.0.cores", "2"), resource.TestCheckResourceAttr( - "softlayer_scale_group.sample-http-cluster", "virtual_guest_member_template.0.ram", "8192"), + "softlayer_scale_group.sample-http-cluster", "virtual_guest_member_template.0.memory", "8192"), resource.TestCheckResourceAttr( - "softlayer_scale_group.sample-http-cluster", "virtual_guest_member_template.0.public_network_speed", "100"), + "softlayer_scale_group.sample-http-cluster", "virtual_guest_member_template.0.network_speed", "100"), resource.TestCheckResourceAttr( - "softlayer_scale_group.sample-http-cluster", "virtual_guest_member_template.0.image", "CENTOS_7_64"), + "softlayer_scale_group.sample-http-cluster", "virtual_guest_member_template.0.os_reference_code", "CENTOS_7_64"), resource.TestCheckResourceAttr( "softlayer_scale_group.sample-http-cluster", "virtual_guest_member_template.0.datacenter", "sng01"), resource.TestCheckResourceAttr( @@ -219,18 +219,18 @@ resource "softlayer_scale_group" "sample-http-cluster" { type = "HTTP" } virtual_guest_member_template = { - name = "test-VM" + hostname = "test-VM" domain = "example.com" - cpu = 1 - ram = 4096 - public_network_speed = 1000 + cores = 1 + memory = 4096 + network_speed = 1000 hourly_billing = true - image = "DEBIAN_7_64" + os_reference_code = "DEBIAN_7_64" local_disk = false disks = [25,100] datacenter = "sng01" post_install_script_uri = "" - user_data = "#!/bin/bash" + user_metadata = "#!/bin/bash" } }` @@ -265,17 +265,17 @@ resource "softlayer_scale_group" "sample-http-cluster" { custom_response = 200 } virtual_guest_member_template = { - name = "example-VM" + hostname = "example-VM" domain = "test.com" - cpu = 2 - ram = 8192 - public_network_speed = 100 + cores = 2 + memory = 8192 + network_speed = 100 hourly_billing = true - image = "CENTOS_7_64" + os_reference_code = "CENTOS_7_64" local_disk = false disks = [25,100] datacenter = "sng01" post_install_script_uri = "http://localhost/index.html" - user_data = "#!/bin/bash" + user_metadata = "#!/bin/bash" } }` diff --git a/softlayer/resource_softlayer_scale_policy_test.go b/softlayer/resource_softlayer_scale_policy_test.go index d2487ad72..51e9961cd 100644 --- a/softlayer/resource_softlayer_scale_policy_test.go +++ b/softlayer/resource_softlayer_scale_policy_test.go @@ -207,13 +207,13 @@ resource "softlayer_scale_group" "sample-http-cluster" { type = "HTTP" } virtual_guest_member_template = { - name = "test-VM" + hostname = "test-VM" domain = "example.com" - cpu = 1 - ram = 4096 - public_network_speed = 1000 + cores = 1 + memory = 4096 + network_speed = 1000 hourly_billing = true - image = "DEBIAN_7_64" + os_reference_code = "DEBIAN_7_64" local_disk = false region = "sng01" } @@ -266,13 +266,13 @@ resource "softlayer_scale_group" "sample-http-cluster" { type = "HTTP" } virtual_guest_member_template = { - name = "test-VM" + hostname = "test-VM" domain = "example.com" - cpu = 1 - ram = 4096 - public_network_speed = 1000 + cores = 1 + memory = 4096 + network_speed = 1000 hourly_billing = true - image = "DEBIAN_7_64" + os_reference_code = "DEBIAN_7_64" local_disk = false region = "sng01" } diff --git a/softlayer/resource_softlayer_virtual_guest.go b/softlayer/resource_softlayer_virtual_guest.go index 172bbeefe..bfd8a7a88 100644 --- a/softlayer/resource_softlayer_virtual_guest.go +++ b/softlayer/resource_softlayer_virtual_guest.go @@ -53,7 +53,7 @@ func resourceSoftLayerVirtualGuest() *schema.Resource { Computed: true, }, - "name": { + "hostname": { Type: schema.TypeString, Optional: true, DefaultFunc: genId, @@ -71,6 +71,12 @@ func resourceSoftLayerVirtualGuest() *schema.Resource { }, }, + "name": { + Type: schema.TypeString, + Optional: true, + Removed: "Renamed to 'hostname'", + }, + "domain": { Type: schema.TypeString, Required: true, @@ -103,7 +109,7 @@ func resourceSoftLayerVirtualGuest() *schema.Resource { ForceNew: true, }, - "cpu": { + "cores": { Type: schema.TypeInt, Required: true, // TODO: This fields for now requires recreation, because currently for some reason SoftLayer resets "dedicated_acct_host_only" @@ -112,7 +118,13 @@ func resourceSoftLayerVirtualGuest() *schema.Resource { ForceNew: true, }, - "ram": { + "cpu": { + Type: schema.TypeString, + Optional: true, + Removed: "Renamed to 'cores'", + }, + + "memory": { Type: schema.TypeInt, Required: true, ValidateFunc: func(v interface{}, k string) (ws []string, errors []error) { @@ -130,6 +142,12 @@ func resourceSoftLayerVirtualGuest() *schema.Resource { }, }, + "ram": { + Type: schema.TypeString, + Optional: true, + Removed: "Renamed to 'memory'", + }, + "dedicated_acct_host_only": { Type: schema.TypeBool, Optional: true, @@ -228,15 +246,27 @@ func resourceSoftLayerVirtualGuest() *schema.Resource { Computed: true, }, - "ssh_keys": { + "ssh_key_ids": { Type: schema.TypeList, Optional: true, Elem: &schema.Schema{Type: schema.TypeInt}, }, + "ssh_keys": { + Type: schema.TypeString, + Optional: true, + Removed: "Renamed as 'ssh_key_ids'", + }, + + "user_metadata": { + Type: schema.TypeString, + Optional: true, + }, + "user_data": { Type: schema.TypeString, Optional: true, + Removed: "Renamed as 'user_metadata'", }, "local_disk": { @@ -320,13 +350,13 @@ func getVirtualGuestTemplateFromResourceData(d *schema.ResourceData, meta interf } opts := datatypes.Virtual_Guest{ - Hostname: sl.String(d.Get("name").(string)), + Hostname: sl.String(d.Get("hostname").(string)), Domain: sl.String(d.Get("domain").(string)), HourlyBillingFlag: sl.Bool(d.Get("hourly_billing").(bool)), PrivateNetworkOnlyFlag: sl.Bool(d.Get("private_network_only").(bool)), Datacenter: &dc, - StartCpus: sl.Int(d.Get("cpu").(int)), - MaxMemory: sl.Int(d.Get("ram").(int)), + StartCpus: sl.Int(d.Get("cores").(int)), + MaxMemory: sl.Int(d.Get("memory").(int)), NetworkComponents: []datatypes.Virtual_Guest_Network_Component{networkComponent}, BlockDevices: getBlockDevices(d), LocalDiskFlag: sl.Bool(d.Get("local_disk").(bool)), @@ -408,7 +438,7 @@ func getVirtualGuestTemplateFromResourceData(d *schema.ResourceData, meta interf opts.PrimaryBackendNetworkComponent = &primaryBackendNetworkComponent } - if userData, ok := d.GetOk("user_data"); ok { + if userData, ok := d.GetOk("user_metadata"); ok { opts.UserData = []datatypes.Virtual_Guest_Attribute{ { Value: sl.String(userData.(string)), @@ -417,7 +447,7 @@ func getVirtualGuestTemplateFromResourceData(d *schema.ResourceData, meta interf } // Get configured ssh_keys - ssh_keys := d.Get("ssh_keys").([]interface{}) + ssh_keys := d.Get("ssh_key_ids").([]interface{}) if len(ssh_keys) > 0 { opts.SshKeys = make([]datatypes.Security_Ssh_Key, 0, len(ssh_keys)) for _, ssh_key := range ssh_keys { @@ -500,7 +530,7 @@ func resourceSoftLayerVirtualGuestRead(d *schema.ResourceData, meta interface{}) return fmt.Errorf("Error retrieving virtual guest: %s", err) } - d.Set("name", *result.Hostname) + d.Set("hostname", *result.Hostname) d.Set("domain", *result.Domain) if result.Datacenter != nil { @@ -514,8 +544,8 @@ func resourceSoftLayerVirtualGuestRead(d *schema.ResourceData, meta interface{}) d.Get("network_speed").(int), ), ) - d.Set("cpu", *result.StartCpus) - d.Set("ram", *result.MaxMemory) + d.Set("cores", *result.StartCpus) + d.Set("memory", *result.MaxMemory) d.Set("dedicated_acct_host_only", *result.DedicatedAccountHostOnlyFlag) if result.PrimaryIpAddress != nil { d.Set("has_public_ip", *result.PrimaryIpAddress != "") @@ -556,9 +586,9 @@ func resourceSoftLayerVirtualGuestRead(d *schema.ResourceData, meta interface{}) data, err := base64.StdEncoding.DecodeString(*userData[0].Value) if err != nil { log.Printf("Can't base64 decode user data %s. error: %s", *userData[0].Value, err) - d.Set("user_data", userData) + d.Set("user_metadata", userData) } else { - d.Set("user_data", string(data)) + d.Set("user_metadata", string(data)) } } @@ -598,10 +628,10 @@ func resourceSoftLayerVirtualGuestUpdate(d *schema.ResourceData, meta interface{ return fmt.Errorf("Error retrieving virtual guest: %s", err) } - // Update "name" and "domain" fields if present and changed + // Update "hostname" and "domain" fields if present and changed // Those are the only fields, which could be updated - if d.HasChange("name") || d.HasChange("domain") { - result.Hostname = sl.String(d.Get("name").(string)) + if d.HasChange("hostname") || d.HasChange("domain") { + result.Hostname = sl.String(d.Get("hostname").(string)) result.Domain = sl.String(d.Get("domain").(string)) _, err = service.Id(id).EditObject(&result) @@ -612,8 +642,8 @@ func resourceSoftLayerVirtualGuestUpdate(d *schema.ResourceData, meta interface{ } // Set user data if provided and not empty - if d.HasChange("user_data") { - _, err := service.Id(id).SetUserMetadata([]string{d.Get("user_data").(string)}) + if d.HasChange("user_metadata") { + _, err := service.Id(id).SetUserMetadata([]string{d.Get("user_metadata").(string)}) if err != nil { return fmt.Errorf("Couldn't update user data for virtual guest: %s", err) } @@ -627,14 +657,14 @@ func resourceSoftLayerVirtualGuestUpdate(d *schema.ResourceData, meta interface{ } } - // Upgrade "cpu", "ram" and "nic_speed" if provided and changed + // Upgrade "cores", "memory" and "network_speed" if provided and changed upgradeOptions := map[string]float64{} - if d.HasChange("cpu") { - upgradeOptions[product.CPUCategoryCode] = float64(d.Get("cpu").(int)) + if d.HasChange("cores") { + upgradeOptions[product.CPUCategoryCode] = float64(d.Get("cores").(int)) } - if d.HasChange("ram") { - memoryInMB := float64(d.Get("ram").(int)) + if d.HasChange("memory") { + memoryInMB := float64(d.Get("memory").(int)) // Convert memory to GB, as softlayer only allows to upgrade RAM in Gigs // Must be already validated at this step @@ -800,14 +830,22 @@ func WaitForNoActiveTransactions(d *schema.ResourceData, meta interface{}) (inte func resourceSoftLayerVirtualGuestExists(d *schema.ResourceData, meta interface{}) (bool, error) { service := services.GetVirtualGuestService(meta.(*session.Session)) - guestId, err := strconv.Atoi(d.Id()) if err != nil { return false, fmt.Errorf("Not a valid ID, must be an integer: %s", err) } result, err := service.Id(guestId).GetObject() - return result.Id != nil && err == nil && *result.Id == guestId, nil + if err != nil { + if apiErr, ok := err.(sl.Error); ok { + if apiErr.StatusCode == 404 { + return false, nil + } + } + return false, fmt.Errorf("Error communicating with the API: %s", err) + } + + return result.Id != nil && *result.Id == guestId, nil } func getTags(d *schema.ResourceData) string { diff --git a/softlayer/resource_softlayer_virtual_guest_test.go b/softlayer/resource_softlayer_virtual_guest_test.go index 07fdcf07f..44a6bf326 100644 --- a/softlayer/resource_softlayer_virtual_guest_test.go +++ b/softlayer/resource_softlayer_virtual_guest_test.go @@ -28,7 +28,7 @@ func TestAccSoftLayerVirtualGuest_Basic(t *testing.T) { Check: resource.ComposeTestCheckFunc( testAccCheckSoftLayerVirtualGuestExists("softlayer_virtual_guest.terraform-acceptance-test-1", &guest), resource.TestCheckResourceAttr( - "softlayer_virtual_guest.terraform-acceptance-test-1", "name", "terraform-test"), + "softlayer_virtual_guest.terraform-acceptance-test-1", "hostname", "terraform-test"), resource.TestCheckResourceAttr( "softlayer_virtual_guest.terraform-acceptance-test-1", "domain", "bar.example.com"), resource.TestCheckResourceAttr( @@ -40,9 +40,9 @@ func TestAccSoftLayerVirtualGuest_Basic(t *testing.T) { resource.TestCheckResourceAttr( "softlayer_virtual_guest.terraform-acceptance-test-1", "private_network_only", "false"), resource.TestCheckResourceAttr( - "softlayer_virtual_guest.terraform-acceptance-test-1", "cpu", "1"), + "softlayer_virtual_guest.terraform-acceptance-test-1", "cores", "1"), resource.TestCheckResourceAttr( - "softlayer_virtual_guest.terraform-acceptance-test-1", "ram", "1024"), + "softlayer_virtual_guest.terraform-acceptance-test-1", "memory", "1024"), resource.TestCheckResourceAttr( "softlayer_virtual_guest.terraform-acceptance-test-1", "disks.0", "25"), resource.TestCheckResourceAttr( @@ -50,7 +50,7 @@ func TestAccSoftLayerVirtualGuest_Basic(t *testing.T) { resource.TestCheckResourceAttr( "softlayer_virtual_guest.terraform-acceptance-test-1", "disks.2", "20"), resource.TestCheckResourceAttr( - "softlayer_virtual_guest.terraform-acceptance-test-1", "user_data", "{\"value\":\"newvalue\"}"), + "softlayer_virtual_guest.terraform-acceptance-test-1", "user_metadata", "{\"value\":\"newvalue\"}"), resource.TestCheckResourceAttr( "softlayer_virtual_guest.terraform-acceptance-test-1", "local_disk", "false"), resource.TestCheckResourceAttr( @@ -68,7 +68,7 @@ func TestAccSoftLayerVirtualGuest_Basic(t *testing.T) { Check: resource.ComposeTestCheckFunc( testAccCheckSoftLayerVirtualGuestExists("softlayer_virtual_guest.terraform-acceptance-test-1", &guest), resource.TestCheckResourceAttr( - "softlayer_virtual_guest.terraform-acceptance-test-1", "user_data", "updatedData"), + "softlayer_virtual_guest.terraform-acceptance-test-1", "user_metadata", "updatedData"), CheckStringSet( "softlayer_virtual_guest.terraform-acceptance-test-1", "tags", []string{"mesos-master"}, @@ -81,7 +81,7 @@ func TestAccSoftLayerVirtualGuest_Basic(t *testing.T) { Check: resource.ComposeTestCheckFunc( testAccCheckSoftLayerVirtualGuestExists("softlayer_virtual_guest.terraform-acceptance-test-1", &guest), resource.TestCheckResourceAttr( - "softlayer_virtual_guest.terraform-acceptance-test-1", "ram", "2048"), + "softlayer_virtual_guest.terraform-acceptance-test-1", "memory", "2048"), resource.TestCheckResourceAttr( "softlayer_virtual_guest.terraform-acceptance-test-1", "network_speed", "100"), ), @@ -94,7 +94,7 @@ func TestAccSoftLayerVirtualGuest_Basic(t *testing.T) { // Check: resource.ComposeTestCheckFunc( // testAccCheckSoftLayerVirtualGuestExists("softlayer_virtual_guest.terraform-acceptance-test-1", &guest), // resource.TestCheckResourceAttr( - // "softlayer_virtual_guest.terraform-acceptance-test-1", "cpu", "2"), + // "softlayer_virtual_guest.terraform-acceptance-test-1", "cores", "2"), // ), // }, @@ -241,17 +241,17 @@ func CheckStringSet(n string, name string, set []string) resource.TestCheckFunc const testAccCheckSoftLayerVirtualGuestConfig_basic = ` resource "softlayer_virtual_guest" "terraform-acceptance-test-1" { - name = "terraform-test" + hostname = "terraform-test" domain = "bar.example.com" os_reference_code = "DEBIAN_7_64" datacenter = "wdc01" network_speed = 10 hourly_billing = true private_network_only = false - cpu = 1 - ram = 1024 + cores = 1 + memory = 1024 disks = [25, 10, 20] - user_data = "{\"value\":\"newvalue\"}" + user_metadata = "{\"value\":\"newvalue\"}" tags = ["collectd"] dedicated_acct_host_only = true local_disk = false @@ -260,16 +260,16 @@ resource "softlayer_virtual_guest" "terraform-acceptance-test-1" { const testAccCheckSoftLayerVirtualGuestConfig_update = ` resource "softlayer_virtual_guest" "terraform-acceptance-test-1" { - name = "terraform-test" + hostname = "terraform-test" domain = "bar.example.com" os_reference_code = "DEBIAN_7_64" datacenter = "wdc01" network_speed = 10 hourly_billing = true - cpu = 1 - ram = 1024 + cores = 1 + memory = 1024 disks = [25, 10, 20] - user_data = "updatedData" + user_metadata = "updatedData" tags = ["mesos-master"] dedicated_acct_host_only = true local_disk = false @@ -278,16 +278,16 @@ resource "softlayer_virtual_guest" "terraform-acceptance-test-1" { const testAccCheckSoftLayerVirtualGuestConfig_upgradeMemoryNetworkSpeed = ` resource "softlayer_virtual_guest" "terraform-acceptance-test-1" { - name = "terraform-test" + hostname = "terraform-test" domain = "bar.example.com" os_reference_code = "DEBIAN_7_64" datacenter = "wdc01" network_speed = 100 hourly_billing = true - cpu = 1 - ram = 2048 + cores = 1 + memory = 2048 disks = [25, 10, 20] - user_data = "updatedData" + user_metadata = "updatedData" tags = ["mesos-master"] dedicated_acct_host_only = true local_disk = false @@ -296,16 +296,16 @@ resource "softlayer_virtual_guest" "terraform-acceptance-test-1" { const testAccCheckSoftLayerVirtualGuestConfig_vmUpgradeCPUs = ` resource "softlayer_virtual_guest" "terraform-acceptance-test-1" { - name = "terraform-test" + hostname = "terraform-test" domain = "bar.example.com" os_reference_code = "DEBIAN_7_64" datacenter = "wdc01" network_speed = 100 hourly_billing = true - cpu = 2 - ram = 2048 + cores = 2 + memory = 2048 disks = [25, 10, 20] - user_data = "updatedData" + user_metadata = "updatedData" tags = ["mesos-master"] dedicated_acct_host_only = true local_disk = false @@ -314,17 +314,17 @@ resource "softlayer_virtual_guest" "terraform-acceptance-test-1" { const testAccCheckSoftLayerVirtualGuestConfig_postInstallScriptUri = ` resource "softlayer_virtual_guest" "terraform-acceptance-test-pISU" { - name = "terraform-test-pISU" + hostname = "terraform-test-pISU" domain = "bar.example.com" os_reference_code = "DEBIAN_7_64" datacenter = "wdc01" network_speed = 10 hourly_billing = true private_network_only = false - cpu = 1 - ram = 1024 + cores = 1 + memory = 1024 disks = [25, 10, 20] - user_data = "{\"value\":\"newvalue\"}" + user_metadata = "{\"value\":\"newvalue\"}" dedicated_acct_host_only = true local_disk = false post_install_script_uri = "https://www.google.com" @@ -333,13 +333,13 @@ resource "softlayer_virtual_guest" "terraform-acceptance-test-pISU" { const testAccCheckSoftLayerVirtualGuestConfig_blockDeviceTemplateGroup = ` resource "softlayer_virtual_guest" "terraform-acceptance-test-BDTGroup" { - name = "terraform-test-blockDeviceTemplateGroup" + hostname = "terraform-test-blockDeviceTemplateGroup" domain = "bar.example.com" datacenter = "wdc01" network_speed = 10 hourly_billing = false - cpu = 1 - ram = 1024 + cores = 1 + memory = 1024 local_disk = false image_id = 1025457 }