github.com/chalford/terraform@v0.3.7-0.20150113080010-a78c69a8c81f/builtin/providers/cloudstack/resource_cloudstack_vpc_test.go (about)

     1  package cloudstack
     2  
     3  import (
     4  	"fmt"
     5  	"testing"
     6  
     7  	"github.com/hashicorp/terraform/helper/resource"
     8  	"github.com/hashicorp/terraform/terraform"
     9  	"github.com/xanzy/go-cloudstack/cloudstack"
    10  )
    11  
    12  func TestAccCloudStackVPC_basic(t *testing.T) {
    13  	var vpc cloudstack.VPC
    14  
    15  	resource.Test(t, resource.TestCase{
    16  		PreCheck:     func() { testAccPreCheck(t) },
    17  		Providers:    testAccProviders,
    18  		CheckDestroy: testAccCheckCloudStackVPCDestroy,
    19  		Steps: []resource.TestStep{
    20  			resource.TestStep{
    21  				Config: testAccCloudStackVPC_basic,
    22  				Check: resource.ComposeTestCheckFunc(
    23  					testAccCheckCloudStackVPCExists(
    24  						"cloudstack_vpc.foo", &vpc),
    25  					testAccCheckCloudStackVPCAttributes(&vpc),
    26  					resource.TestCheckResourceAttr(
    27  						"cloudstack_vpc.foo", "vpc_offering", CLOUDSTACK_VPC_OFFERING),
    28  				),
    29  			},
    30  		},
    31  	})
    32  }
    33  
    34  func testAccCheckCloudStackVPCExists(
    35  	n string, vpc *cloudstack.VPC) resource.TestCheckFunc {
    36  	return func(s *terraform.State) error {
    37  		rs, ok := s.RootModule().Resources[n]
    38  		if !ok {
    39  			return fmt.Errorf("Not found: %s", n)
    40  		}
    41  
    42  		if rs.Primary.ID == "" {
    43  			return fmt.Errorf("No VPC ID is set")
    44  		}
    45  
    46  		cs := testAccProvider.Meta().(*cloudstack.CloudStackClient)
    47  		v, _, err := cs.VPC.GetVPCByID(rs.Primary.ID)
    48  
    49  		if err != nil {
    50  			return err
    51  		}
    52  
    53  		if v.Id != rs.Primary.ID {
    54  			return fmt.Errorf("VPC not found")
    55  		}
    56  
    57  		*vpc = *v
    58  
    59  		return nil
    60  	}
    61  }
    62  
    63  func testAccCheckCloudStackVPCAttributes(
    64  	vpc *cloudstack.VPC) resource.TestCheckFunc {
    65  	return func(s *terraform.State) error {
    66  
    67  		if vpc.Name != "terraform-vpc" {
    68  			return fmt.Errorf("Bad name: %s", vpc.Name)
    69  		}
    70  
    71  		if vpc.Displaytext != "terraform-vpc-text" {
    72  			return fmt.Errorf("Bad display text: %s", vpc.Displaytext)
    73  		}
    74  
    75  		if vpc.Cidr != CLOUDSTACK_VPC_CIDR {
    76  			return fmt.Errorf("Bad VPC offering: %s", vpc.Cidr)
    77  		}
    78  
    79  		return nil
    80  	}
    81  }
    82  
    83  func testAccCheckCloudStackVPCDestroy(s *terraform.State) error {
    84  	cs := testAccProvider.Meta().(*cloudstack.CloudStackClient)
    85  
    86  	for _, rs := range s.RootModule().Resources {
    87  		if rs.Type != "cloudstack_vpc" {
    88  			continue
    89  		}
    90  
    91  		if rs.Primary.ID == "" {
    92  			return fmt.Errorf("No VPC ID is set")
    93  		}
    94  
    95  		p := cs.VPC.NewDeleteVPCParams(rs.Primary.ID)
    96  		err, _ := cs.VPC.DeleteVPC(p)
    97  
    98  		if err != nil {
    99  			return fmt.Errorf(
   100  				"Error deleting VPC (%s): %s",
   101  				rs.Primary.ID, err)
   102  		}
   103  	}
   104  
   105  	return nil
   106  }
   107  
   108  var testAccCloudStackVPC_basic = fmt.Sprintf(`
   109  resource "cloudstack_vpc" "foo" {
   110    name = "terraform-vpc"
   111    display_text = "terraform-vpc-text"
   112    cidr = "%s"
   113    vpc_offering = "%s"
   114    zone = "%s"
   115  }`,
   116  	CLOUDSTACK_VPC_CIDR,
   117  	CLOUDSTACK_VPC_OFFERING,
   118  	CLOUDSTACK_ZONE)