github.com/vtorhonen/terraform@v0.9.0-beta2.0.20170307220345-5d894e4ffda7/builtin/providers/cloudstack/resource_cloudstack_static_route_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 TestAccCloudStackStaticRoute_basic(t *testing.T) { 13 var staticroute cloudstack.StaticRoute 14 15 resource.Test(t, resource.TestCase{ 16 PreCheck: func() { testAccPreCheck(t) }, 17 Providers: testAccProviders, 18 CheckDestroy: testAccCheckCloudStackStaticRouteDestroy, 19 Steps: []resource.TestStep{ 20 resource.TestStep{ 21 Config: testAccCloudStackStaticRoute_basic, 22 Check: resource.ComposeTestCheckFunc( 23 testAccCheckCloudStackStaticRouteExists( 24 "cloudstack_static_route.bar", &staticroute), 25 testAccCheckCloudStackStaticRouteAttributes(&staticroute), 26 ), 27 }, 28 }, 29 }) 30 } 31 32 func testAccCheckCloudStackStaticRouteExists( 33 n string, staticroute *cloudstack.StaticRoute) resource.TestCheckFunc { 34 return func(s *terraform.State) error { 35 rs, ok := s.RootModule().Resources[n] 36 if !ok { 37 return fmt.Errorf("Not found: %s", n) 38 } 39 40 if rs.Primary.ID == "" { 41 return fmt.Errorf("No Static Route ID is set") 42 } 43 44 cs := testAccProvider.Meta().(*cloudstack.CloudStackClient) 45 route, _, err := cs.VPC.GetStaticRouteByID(rs.Primary.ID) 46 47 if err != nil { 48 return err 49 } 50 51 if route.Id != rs.Primary.ID { 52 return fmt.Errorf("Static Route not found") 53 } 54 55 *staticroute = *route 56 57 return nil 58 } 59 } 60 61 func testAccCheckCloudStackStaticRouteAttributes( 62 staticroute *cloudstack.StaticRoute) resource.TestCheckFunc { 63 return func(s *terraform.State) error { 64 65 if staticroute.Cidr != CLOUDSTACK_STATIC_ROUTE_CIDR { 66 return fmt.Errorf("Bad Cidr: %s", staticroute.Cidr) 67 } 68 69 return nil 70 } 71 } 72 73 func testAccCheckCloudStackStaticRouteDestroy(s *terraform.State) error { 74 cs := testAccProvider.Meta().(*cloudstack.CloudStackClient) 75 76 for _, rs := range s.RootModule().Resources { 77 if rs.Type != "cloudstack_static_route" { 78 continue 79 } 80 81 if rs.Primary.ID == "" { 82 return fmt.Errorf("No static route ID is set") 83 } 84 85 staticroute, _, err := cs.VPC.GetStaticRouteByID(rs.Primary.ID) 86 if err == nil && staticroute.Id != "" { 87 return fmt.Errorf("Static route %s still exists", rs.Primary.ID) 88 } 89 } 90 91 return nil 92 } 93 94 var testAccCloudStackStaticRoute_basic = fmt.Sprintf(` 95 resource "cloudstack_vpc" "foobar" { 96 name = "terraform-vpc" 97 cidr = "%s" 98 vpc_offering = "%s" 99 zone = "%s" 100 } 101 102 resource "cloudstack_private_gateway" "foo" { 103 gateway = "%s" 104 ip_address = "%s" 105 netmask = "%s" 106 vlan = "%s" 107 vpc_id = "${cloudstack_vpc.foobar.id}" 108 } 109 110 resource "cloudstack_static_route" "bar" { 111 cidr = "%s" 112 gateway_id = "${cloudstack_private_gateway.foo.id}" 113 }`, 114 CLOUDSTACK_VPC_CIDR_1, 115 CLOUDSTACK_VPC_OFFERING, 116 CLOUDSTACK_ZONE, 117 CLOUDSTACK_PRIVGW_GATEWAY, 118 CLOUDSTACK_PRIVGW_IPADDRESS, 119 CLOUDSTACK_PRIVGW_NETMASK, 120 CLOUDSTACK_PRIVGW_VLAN, 121 CLOUDSTACK_STATIC_ROUTE_CIDR)