github.com/skyscape-cloud-services/terraform@v0.9.2-0.20170609144644-7ece028a1747/builtin/providers/vcd/resource_vcd_vapp_vm_test.go (about) 1 package vcd 2 3 import ( 4 "fmt" 5 "os" 6 "testing" 7 8 "github.com/hashicorp/terraform/helper/resource" 9 "github.com/hashicorp/terraform/terraform" 10 govcd "github.com/ukcloud/govcloudair" 11 ) 12 13 func TestAccVcdVAppVm_Basic(t *testing.T) { 14 var vapp govcd.VApp 15 var vm govcd.VM 16 17 resource.Test(t, resource.TestCase{ 18 PreCheck: func() { testAccPreCheck(t) }, 19 Providers: testAccProviders, 20 CheckDestroy: testAccCheckVcdVAppVmDestroy, 21 Steps: []resource.TestStep{ 22 resource.TestStep{ 23 Config: fmt.Sprintf(testAccCheckVcdVAppVm_basic, os.Getenv("VCD_EDGE_GATEWAY")), 24 Check: resource.ComposeTestCheckFunc( 25 testAccCheckVcdVAppVmExists("vcd_vapp_vm.moo", &vapp, &vm), 26 resource.TestCheckResourceAttr( 27 "vcd_vapp_vm.moo", "name", "moo"), 28 resource.TestCheckResourceAttr( 29 "vcd_vapp_vm.moo", "ip", "10.10.102.161"), 30 resource.TestCheckResourceAttr( 31 "vcd_vapp_vm.moo", "power_on", "true"), 32 ), 33 }, 34 }, 35 }) 36 } 37 38 func testAccCheckVcdVAppVmExists(n string, vapp *govcd.VApp, vm *govcd.VM) resource.TestCheckFunc { 39 return func(s *terraform.State) error { 40 rs, ok := s.RootModule().Resources[n] 41 if !ok { 42 return fmt.Errorf("Not found: %s", n) 43 } 44 45 if rs.Primary.ID == "" { 46 return fmt.Errorf("No VAPP ID is set") 47 } 48 49 conn := testAccProvider.Meta().(*VCDClient) 50 51 vapp, err := conn.OrgVdc.FindVAppByName("foobar") 52 53 resp, err := conn.OrgVdc.FindVMByName(vapp, "moo") 54 55 if err != nil { 56 return err 57 } 58 59 *vm = resp 60 61 return nil 62 } 63 } 64 65 func testAccCheckVcdVAppVmDestroy(s *terraform.State) error { 66 conn := testAccProvider.Meta().(*VCDClient) 67 68 for _, rs := range s.RootModule().Resources { 69 if rs.Type != "vcd_vapp" { 70 continue 71 } 72 73 _, err := conn.OrgVdc.FindVAppByName("foobar") 74 75 if err == nil { 76 return fmt.Errorf("VPCs still exist") 77 } 78 79 return nil 80 } 81 82 return nil 83 } 84 85 const testAccCheckVcdVAppVm_basic = ` 86 resource "vcd_network" "foonet" { 87 name = "foonet" 88 edge_gateway = "%s" 89 gateway = "10.10.102.1" 90 static_ip_pool { 91 start_address = "10.10.102.2" 92 end_address = "10.10.102.254" 93 } 94 } 95 96 resource "vcd_vapp" "foobar" { 97 name = "foobar" 98 template_name = "Skyscape_CentOS_6_4_x64_50GB_Small_v1.0.1" 99 catalog_name = "Skyscape Catalogue" 100 network_name = "${vcd_network.foonet.name}" 101 memory = 1024 102 cpus = 1 103 ip = "10.10.102.160" 104 } 105 106 resource "vcd_vapp_vm" "moo" { 107 vapp_name = "${vcd_vapp.foobar.name}" 108 name = "moo" 109 catalog_name = "Skyscape Catalogue" 110 template_name = "Skyscape_CentOS_6_4_x64_50GB_Small_v1.0.1" 111 memory = 1024 112 cpus = 1 113 ip = "10.10.102.161" 114 } 115 `