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  `