github.com/tarrant/terraform@v0.3.8-0.20150402012457-f68c9eee638e/builtin/providers/openstack/resource_openstack_networking_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/rackspace/gophercloud/openstack/networking/v2/extensions/layer3/floatingips" 11 ) 12 13 func TestAccNetworkingV2FloatingIP_basic(t *testing.T) { 14 var floatingIP floatingips.FloatingIP 15 16 resource.Test(t, resource.TestCase{ 17 PreCheck: func() { testAccPreCheck(t) }, 18 Providers: testAccProviders, 19 CheckDestroy: testAccCheckNetworkingV2FloatingIPDestroy, 20 Steps: []resource.TestStep{ 21 resource.TestStep{ 22 Config: testAccNetworkingV2FloatingIP_basic, 23 Check: resource.ComposeTestCheckFunc( 24 testAccCheckNetworkingV2FloatingIPExists(t, "openstack_networking_floatingip_v2.foo", &floatingIP), 25 ), 26 }, 27 }, 28 }) 29 } 30 31 func testAccCheckNetworkingV2FloatingIPDestroy(s *terraform.State) error { 32 config := testAccProvider.Meta().(*Config) 33 networkClient, err := config.networkingV2Client(OS_REGION_NAME) 34 if err != nil { 35 return fmt.Errorf("(testAccCheckNetworkingV2FloatingIPDestroy) Error creating OpenStack floating IP: %s", err) 36 } 37 38 for _, rs := range s.RootModule().Resources { 39 if rs.Type != "openstack_networking_floatingip_v2" { 40 continue 41 } 42 43 _, err := floatingips.Get(networkClient, rs.Primary.ID).Extract() 44 if err == nil { 45 return fmt.Errorf("FloatingIP still exists") 46 } 47 } 48 49 return nil 50 } 51 52 func testAccCheckNetworkingV2FloatingIPExists(t *testing.T, n string, kp *floatingips.FloatingIP) resource.TestCheckFunc { 53 return func(s *terraform.State) error { 54 rs, ok := s.RootModule().Resources[n] 55 if !ok { 56 return fmt.Errorf("Not found: %s", n) 57 } 58 59 if rs.Primary.ID == "" { 60 return fmt.Errorf("No ID is set") 61 } 62 63 config := testAccProvider.Meta().(*Config) 64 networkClient, err := config.networkingV2Client(OS_REGION_NAME) 65 if err != nil { 66 return fmt.Errorf("(testAccCheckNetworkingV2FloatingIPExists) Error creating OpenStack networking client: %s", err) 67 } 68 69 found, err := floatingips.Get(networkClient, rs.Primary.ID).Extract() 70 if err != nil { 71 return err 72 } 73 74 if found.ID != rs.Primary.ID { 75 return fmt.Errorf("FloatingIP not found") 76 } 77 78 *kp = *found 79 80 return nil 81 } 82 } 83 84 var testAccNetworkingV2FloatingIP_basic = ` 85 resource "openstack_networking_floatingip_v2" "foo" { 86 } 87 88 resource "openstack_compute_instance_v2" "bar" { 89 name = "terraform-acc-floating-ip-test" 90 floating_ip = "${openstack_networking_floatingip_v2.foo.address}" 91 }`