Skip to content

Commit

Permalink
r/virtual_machine: Add test for host relocation
Browse files Browse the repository at this point in the history
  • Loading branch information
bill-rich committed Aug 22, 2018
1 parent 948c633 commit 05cd5fa
Showing 1 changed file with 152 additions and 20 deletions.
172 changes: 152 additions & 20 deletions vsphere/resource_vsphere_virtual_machine_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -27,9 +27,9 @@ import (
)

const (
testAccResourceVSphereVirtualMachineDiskNameEager = "terraform-test_1.vmdk"
testAccResourceVSphereVirtualMachineDiskNameLazy = "terraform-test_2.vmdk"
testAccResourceVSphereVirtualMachineDiskNameThin = "terraform-test_3.vmdk"
testAccResourceVSphereVirtualMachineDiskNameEager = "terraform-test.vmdk"
testAccResourceVSphereVirtualMachineDiskNameLazy = "terraform-test_1.vmdk"
testAccResourceVSphereVirtualMachineDiskNameThin = "terraform-test_2.vmdk"
testAccResourceVSphereVirtualMachineDiskNameExtraVmdk = "terraform-test-vm-extra-disk.vmdk"
testAccResourceVSphereVirtualMachineStaticMacAddr = "06:5c:89:2b:a0:64"
testAccResourceVSphereVirtualMachineAnnotation = "Managed by Terraform"
Expand Down Expand Up @@ -1500,7 +1500,7 @@ func TestAccResourceVSphereVirtualMachine_cloneCustomizeForceNewWithDatastore(t
testAccResourceVSphereVirtualMachineCheckExists(true),
testAccResourceVSphereVirtualMachineCheckHostname("terraform-test"),
testAccResourceVSphereVirtualMachineCheckVmxDatastore(os.Getenv("VSPHERE_DATASTORE")),
testAccResourceVSphereVirtualMachineCheckVmdkDatastore("terraform-test.vmdk", os.Getenv("VSPHERE_DATASTORE")),
testAccResourceVSphereVirtualMachineCheckVmdkDatastore("terraform-test_3.vmdk", os.Getenv("VSPHERE_DATASTORE")),
),
},
{
Expand All @@ -1512,7 +1512,7 @@ func TestAccResourceVSphereVirtualMachine_cloneCustomizeForceNewWithDatastore(t
testAccResourceVSphereVirtualMachineCheckExists(true),
testAccResourceVSphereVirtualMachineCheckHostname("terraform-test-renamed"),
testAccResourceVSphereVirtualMachineCheckVmxDatastore(os.Getenv("VSPHERE_DATASTORE2")),
testAccResourceVSphereVirtualMachineCheckVmdkDatastore("terraform-test.vmdk", os.Getenv("VSPHERE_DATASTORE2")),
testAccResourceVSphereVirtualMachineCheckVmdkDatastore("terraform-test_3.vmdk", os.Getenv("VSPHERE_DATASTORE2")),
func(s *terraform.State) error {
oldID := state.RootModule().Resources["vsphere_virtual_machine.vm"].Primary.ID
return testCheckResourceNotAttr("vsphere_virtual_machine.vm", "id", oldID)(s)
Expand Down Expand Up @@ -2085,6 +2085,36 @@ func TestAccResourceVSphereVirtualMachine_windowsTemplateCustomizationEventsAndP
})
}

func TestAccResourceVSphereVirtualMachine_hostCheck(t *testing.T) {
resource.Test(t, resource.TestCase{
PreCheck: func() {
testAccPreCheck(t)
testAccResourceVSphereVirtualMachinePreCheck(t)
},
Providers: testAccProviders,
CheckDestroy: testAccResourceVSphereVirtualMachineCheckExists(false),
Steps: []resource.TestStep{
{
Config: testAccResourceVSphereVirtualMachineConfigHostCheck(os.Getenv("VSPHERE_ESXI_HOST")),
Check: resource.ComposeTestCheckFunc(
testAccResourceVSphereVirtualMachineCheckExists(true),
testAccResourceVSphereVirtualMachineCheckHost(os.Getenv("VSPHERE_ESXI_HOST")),
),
},
{
Config: testAccResourceVSphereEmpty,
},
{
Config: testAccResourceVSphereVirtualMachineConfigHostCheck(os.Getenv("VSPHERE_ESXI_HOST2")),
Check: resource.ComposeTestCheckFunc(
testAccResourceVSphereVirtualMachineCheckExists(true),
testAccResourceVSphereVirtualMachineCheckHost(os.Getenv("VSPHERE_ESXI_HOST2")),
),
},
},
})
}

func TestAccResourceVSphereVirtualMachine_hostVMotion(t *testing.T) {
resource.Test(t, resource.TestCase{
PreCheck: func() {
Expand Down Expand Up @@ -2180,15 +2210,15 @@ func TestAccResourceVSphereVirtualMachine_storageVMotionGlobalSetting(t *testing
Check: resource.ComposeTestCheckFunc(
testAccResourceVSphereVirtualMachineCheckExists(true),
testAccResourceVSphereVirtualMachineCheckVmxDatastore(os.Getenv("VSPHERE_DATASTORE")),
testAccResourceVSphereVirtualMachineCheckVmdkDatastore("terraform-test.vmdk", os.Getenv("VSPHERE_DATASTORE")),
testAccResourceVSphereVirtualMachineCheckVmdkDatastore("terraform-test_4.vmdk", os.Getenv("VSPHERE_DATASTORE")),
),
},
{
Config: testAccResourceVSphereVirtualMachineConfigStorageVMotionGlobal(os.Getenv("VSPHERE_DATASTORE2")),
Check: resource.ComposeTestCheckFunc(
testAccResourceVSphereVirtualMachineCheckExists(true),
testAccResourceVSphereVirtualMachineCheckVmxDatastore(os.Getenv("VSPHERE_DATASTORE2")),
testAccResourceVSphereVirtualMachineCheckVmdkDatastore("terraform-test.vmdk", os.Getenv("VSPHERE_DATASTORE2")),
testAccResourceVSphereVirtualMachineCheckVmdkDatastore("terraform-test_4.vmdk", os.Getenv("VSPHERE_DATASTORE2")),
),
},
},
Expand All @@ -2209,17 +2239,17 @@ func TestAccResourceVSphereVirtualMachine_storageVMotionSingleDisk(t *testing.T)
Check: resource.ComposeTestCheckFunc(
testAccResourceVSphereVirtualMachineCheckExists(true),
testAccResourceVSphereVirtualMachineCheckVmxDatastore(os.Getenv("VSPHERE_DATASTORE")),
testAccResourceVSphereVirtualMachineCheckVmdkDatastore("terraform-test_4.vmdk", os.Getenv("VSPHERE_DATASTORE")),
testAccResourceVSphereVirtualMachineCheckVmdkDatastore("terraform-test.vmdk", os.Getenv("VSPHERE_DATASTORE")),
testAccResourceVSphereVirtualMachineCheckVmdkDatastore("terraform-test_1.vmdk", os.Getenv("VSPHERE_DATASTORE")),
),
},
{
Config: testAccResourceVSphereVirtualMachineConfigStorageVMotionSingleDisk(os.Getenv("VSPHERE_DATASTORE2")),
Check: resource.ComposeTestCheckFunc(
testAccResourceVSphereVirtualMachineCheckExists(true),
testAccResourceVSphereVirtualMachineCheckVmxDatastore(os.Getenv("VSPHERE_DATASTORE")),
testAccResourceVSphereVirtualMachineCheckVmdkDatastore("terraform-test.vmdk", os.Getenv("VSPHERE_DATASTORE")),
testAccResourceVSphereVirtualMachineCheckVmdkDatastore("terraform-test_1.vmdk", os.Getenv("VSPHERE_DATASTORE2")),
testAccResourceVSphereVirtualMachineCheckVmdkDatastore("terraform-test_4.vmdk", os.Getenv("VSPHERE_DATASTORE")),
testAccResourceVSphereVirtualMachineCheckVmdkDatastore("terraform-test.vmdk", os.Getenv("VSPHERE_DATASTORE2")),
),
},
},
Expand All @@ -2240,17 +2270,17 @@ func TestAccResourceVSphereVirtualMachine_storageVMotionPinDatastore(t *testing.
Check: resource.ComposeTestCheckFunc(
testAccResourceVSphereVirtualMachineCheckExists(true),
testAccResourceVSphereVirtualMachineCheckVmxDatastore(os.Getenv("VSPHERE_DATASTORE")),
testAccResourceVSphereVirtualMachineCheckVmdkDatastore("terraform-test_4.vmdk", os.Getenv("VSPHERE_DATASTORE")),
testAccResourceVSphereVirtualMachineCheckVmdkDatastore("terraform-test.vmdk", os.Getenv("VSPHERE_DATASTORE")),
testAccResourceVSphereVirtualMachineCheckVmdkDatastore("terraform-test_1.vmdk", os.Getenv("VSPHERE_DATASTORE")),
),
},
{
Config: testAccResourceVSphereVirtualMachineConfigStorageVMotionPinDatastore(os.Getenv("VSPHERE_DATASTORE2")),
Check: resource.ComposeTestCheckFunc(
testAccResourceVSphereVirtualMachineCheckExists(true),
testAccResourceVSphereVirtualMachineCheckVmxDatastore(os.Getenv("VSPHERE_DATASTORE2")),
testAccResourceVSphereVirtualMachineCheckVmdkDatastore("terraform-test.vmdk", os.Getenv("VSPHERE_DATASTORE2")),
testAccResourceVSphereVirtualMachineCheckVmdkDatastore("terraform-test_1.vmdk", os.Getenv("VSPHERE_DATASTORE")),
testAccResourceVSphereVirtualMachineCheckVmdkDatastore("terraform-test_4.vmdk", os.Getenv("VSPHERE_DATASTORE2")),
testAccResourceVSphereVirtualMachineCheckVmdkDatastore("terraform-test.vmdk", os.Getenv("VSPHERE_DATASTORE")),
),
},
},
Expand All @@ -2271,23 +2301,23 @@ func TestAccResourceVSphereVirtualMachine_storageVMotionRenamedVirtualMachine(t
Check: resource.ComposeTestCheckFunc(
testAccResourceVSphereVirtualMachineCheckExists(true),
testAccResourceVSphereVirtualMachineCheckVmxDatastore(os.Getenv("VSPHERE_DATASTORE")),
testAccResourceVSphereVirtualMachineCheckVmdkDatastore("terraform-test.vmdk", os.Getenv("VSPHERE_DATASTORE")),
testAccResourceVSphereVirtualMachineCheckVmdkDatastore("terraform-test_4.vmdk", os.Getenv("VSPHERE_DATASTORE")),
),
},
{
Config: testAccResourceVSphereVirtualMachineConfigStorageVMotionRename("foobar-test", os.Getenv("VSPHERE_DATASTORE")),
Check: resource.ComposeTestCheckFunc(
testAccResourceVSphereVirtualMachineCheckExists(true),
testAccResourceVSphereVirtualMachineCheckVmxDatastore(os.Getenv("VSPHERE_DATASTORE")),
testAccResourceVSphereVirtualMachineCheckVmdkDatastore("terraform-test.vmdk", os.Getenv("VSPHERE_DATASTORE")),
testAccResourceVSphereVirtualMachineCheckVmdkDatastore("terraform-test_4.vmdk", os.Getenv("VSPHERE_DATASTORE")),
),
},
{
Config: testAccResourceVSphereVirtualMachineConfigStorageVMotionRename("foobar-test", os.Getenv("VSPHERE_DATASTORE2")),
Check: resource.ComposeTestCheckFunc(
testAccResourceVSphereVirtualMachineCheckExists(true),
testAccResourceVSphereVirtualMachineCheckVmxDatastore(os.Getenv("VSPHERE_DATASTORE2")),
testAccResourceVSphereVirtualMachineCheckVmdkDatastore("foobar-test.vmdk", os.Getenv("VSPHERE_DATASTORE2")),
testAccResourceVSphereVirtualMachineCheckVmdkDatastore("foobar-test_4.vmdk", os.Getenv("VSPHERE_DATASTORE2")),
),
},
},
Expand All @@ -2310,7 +2340,7 @@ func TestAccResourceVSphereVirtualMachine_storageVMotionLinkedClones(t *testing.
Check: resource.ComposeTestCheckFunc(
testAccResourceVSphereVirtualMachineCheckExists(true),
testAccResourceVSphereVirtualMachineCheckVmxDatastore(os.Getenv("VSPHERE_DATASTORE")),
testAccResourceVSphereVirtualMachineCheckVmdkDatastore("terraform-test.vmdk", os.Getenv("VSPHERE_DATASTORE")),
testAccResourceVSphereVirtualMachineCheckVmdkDatastore("terraform-test_3.vmdk", os.Getenv("VSPHERE_DATASTORE")),
),
},
{
Expand Down Expand Up @@ -2343,7 +2373,7 @@ func TestAccResourceVSphereVirtualMachine_storageVMotionBlockExternallyAttachedD
Check: resource.ComposeTestCheckFunc(
testAccResourceVSphereVirtualMachineCheckExists(true),
testAccResourceVSphereVirtualMachineCheckVmxDatastore(os.Getenv("VSPHERE_DATASTORE")),
testAccResourceVSphereVirtualMachineCheckVmdkDatastore("terraform-test.vmdk", os.Getenv("VSPHERE_DATASTORE")),
testAccResourceVSphereVirtualMachineCheckVmdkDatastore("terraform-test_4.vmdk", os.Getenv("VSPHERE_DATASTORE")),
),
},
{
Expand Down Expand Up @@ -2375,7 +2405,7 @@ func TestAccResourceVSphereVirtualMachine_storageVMotionDatastoreCluster(t *test
testAccResourceVSphereVirtualMachineDatastoreCluster,
),
testAccResourceVSphereVirtualMachineCheckVmdkDatastoreCluster(
"terraform-test.vmdk",
"terraform-test_3.vmdk",
testAccResourceVSphereVirtualMachineDatastoreCluster,
),
),
Expand All @@ -2390,7 +2420,7 @@ func TestAccResourceVSphereVirtualMachine_storageVMotionDatastoreCluster(t *test
testAccResourceVSphereVirtualMachineDatastoreClusterAlt,
),
testAccResourceVSphereVirtualMachineCheckVmdkDatastoreCluster(
"terraform-test.vmdk",
"terraform-test_3.vmdk",
testAccResourceVSphereVirtualMachineDatastoreClusterAlt,
),
),
Expand Down Expand Up @@ -8564,6 +8594,108 @@ resource "vsphere_virtual_machine" "vm" {
)
}

func testAccResourceVSphereVirtualMachineConfigHostCheck(host string) string {
return fmt.Sprintf(`
variable "datacenter" {
default = "%s"
}
variable "resource_pool" {
default = "%s"
}
variable "network_label" {
default = "%s"
}
variable "ipv4_address" {
default = "%s"
}
variable "ipv4_netmask" {
default = "%s"
}
variable "ipv4_gateway" {
default = "%s"
}
variable "dns_server" {
default = "%s"
}
variable "datastore" {
default = "%s"
}
variable "linked_clone" {
default = "%s"
}
variable "host" {
default = "%s"
}
data "vsphere_datacenter" "dc" {
name = "${var.datacenter}"
}
data "vsphere_datastore" "datastore" {
name = "${var.datastore}"
datacenter_id = "${data.vsphere_datacenter.dc.id}"
}
data "vsphere_resource_pool" "pool" {
name = "${var.resource_pool}"
datacenter_id = "${data.vsphere_datacenter.dc.id}"
}
data "vsphere_host" "host" {
name = "${var.host}"
datacenter_id = "${data.vsphere_datacenter.dc.id}"
}
data "vsphere_network" "network" {
name = "${var.network_label}"
datacenter_id = "${data.vsphere_datacenter.dc.id}"
}
resource "vsphere_virtual_machine" "vm" {
name = "terraform-test"
resource_pool_id = "${data.vsphere_resource_pool.pool.id}"
host_system_id = "${data.vsphere_host.host.id}"
datastore_id = "${data.vsphere_datastore.datastore.id}"
num_cpus = 2
memory = 2048
guest_id = "ubuntu64Guest"
wait_for_guest_net_timeout = -1
network_interface {
network_id = "${data.vsphere_network.network.id}"
}
disk {
label = "disk0"
size = "1"
eagerly_scrub = false
thin_provisioned = true
}
}
`,
os.Getenv("VSPHERE_DATACENTER"),
os.Getenv("VSPHERE_RESOURCE_POOL"),
os.Getenv("VSPHERE_NETWORK_LABEL"),
os.Getenv("VSPHERE_IPV4_ADDRESS"),
os.Getenv("VSPHERE_IPV4_PREFIX"),
os.Getenv("VSPHERE_IPV4_GATEWAY"),
os.Getenv("VSPHERE_DNS"),
os.Getenv("VSPHERE_DATASTORE"),
os.Getenv("VSPHERE_USE_LINKED_CLONE"),
host,
)
}

func testAccResourceVSphereVirtualMachineConfigHostVMotion(host string) string {
return fmt.Sprintf(`
variable "datacenter" {
Expand Down

0 comments on commit 05cd5fa

Please # to comment.