github.com/danp/terraform@v0.9.5-0.20170426144147-39d740081351/builtin/providers/openstack/resource_openstack_compute_floatingip_v2_test.go (about) 1 package openstack 2 3 import ( 4 "fmt" 5 "testing" 6 7 "github.com/hashicorp/terraform/helper/resource" 8 "github.com/hashicorp/terraform/terraform" 9 10 "github.com/gophercloud/gophercloud/openstack/compute/v2/extensions/floatingips" 11 "github.com/gophercloud/gophercloud/openstack/compute/v2/servers" 12 ) 13 14 func TestAccComputeV2FloatingIP_basic(t *testing.T) { 15 var fip floatingips.FloatingIP 16 17 resource.Test(t, resource.TestCase{ 18 PreCheck: func() { testAccPreCheck(t) }, 19 Providers: testAccProviders, 20 CheckDestroy: testAccCheckComputeV2FloatingIPDestroy, 21 Steps: []resource.TestStep{ 22 resource.TestStep{ 23 Config: testAccComputeV2FloatingIP_basic, 24 Check: resource.ComposeTestCheckFunc( 25 testAccCheckComputeV2FloatingIPExists("openstack_compute_floatingip_v2.fip_1", &fip), 26 ), 27 }, 28 }, 29 }) 30 } 31 32 func TestAccComputeV2FloatingIP_attach(t *testing.T) { 33 var instance servers.Server 34 var fip floatingips.FloatingIP 35 resource.Test(t, resource.TestCase{ 36 PreCheck: func() { testAccPreCheck(t) }, 37 Providers: testAccProviders, 38 CheckDestroy: testAccCheckComputeV2FloatingIPDestroy, 39 Steps: []resource.TestStep{ 40 resource.TestStep{ 41 Config: testAccComputeV2FloatingIP_attach, 42 Check: resource.ComposeTestCheckFunc( 43 testAccCheckComputeV2FloatingIPExists("openstack_compute_floatingip_v2.fip_1", &fip), 44 testAccCheckComputeV2InstanceExists("openstack_compute_instance_v2.instance_1", &instance), 45 testAccCheckComputeV2InstanceFloatingIPAttach(&instance, &fip), 46 ), 47 }, 48 }, 49 }) 50 } 51 52 func testAccCheckComputeV2FloatingIPDestroy(s *terraform.State) error { 53 config := testAccProvider.Meta().(*Config) 54 computeClient, err := config.computeV2Client(OS_REGION_NAME) 55 if err != nil { 56 return fmt.Errorf("Error creating OpenStack compute client: %s", err) 57 } 58 59 for _, rs := range s.RootModule().Resources { 60 if rs.Type != "openstack_compute_floatingip_v2" { 61 continue 62 } 63 64 _, err := floatingips.Get(computeClient, rs.Primary.ID).Extract() 65 if err == nil { 66 return fmt.Errorf("FloatingIP still exists") 67 } 68 } 69 70 return nil 71 } 72 73 func testAccCheckComputeV2FloatingIPExists(n string, kp *floatingips.FloatingIP) resource.TestCheckFunc { 74 return func(s *terraform.State) error { 75 rs, ok := s.RootModule().Resources[n] 76 if !ok { 77 return fmt.Errorf("Not found: %s", n) 78 } 79 80 if rs.Primary.ID == "" { 81 return fmt.Errorf("No ID is set") 82 } 83 84 config := testAccProvider.Meta().(*Config) 85 computeClient, err := config.computeV2Client(OS_REGION_NAME) 86 if err != nil { 87 return fmt.Errorf("Error creating OpenStack compute client: %s", err) 88 } 89 90 found, err := floatingips.Get(computeClient, rs.Primary.ID).Extract() 91 if err != nil { 92 return err 93 } 94 95 if found.ID != rs.Primary.ID { 96 return fmt.Errorf("FloatingIP not found") 97 } 98 99 *kp = *found 100 101 return nil 102 } 103 } 104 105 const testAccComputeV2FloatingIP_basic = ` 106 resource "openstack_compute_floatingip_v2" "fip_1" { 107 } 108 ` 109 110 var testAccComputeV2FloatingIP_attach = fmt.Sprintf(` 111 resource "openstack_compute_floatingip_v2" "fip_1" { 112 } 113 114 resource "openstack_compute_instance_v2" "instance_1" { 115 name = "instance_1" 116 security_groups = ["default"] 117 floating_ip = "${openstack_compute_floatingip_v2.fip_1.address}" 118 119 network { 120 uuid = "%s" 121 } 122 } 123 `, OS_NETWORK_ID)