github.com/sathiyas/terraform@v0.6.9-0.20151210233947-3330da00b997/builtin/providers/openstack/resource_openstack_networking_port_v2_test.go (about) 1 package openstack 2 3 import ( 4 "fmt" 5 "os" 6 "testing" 7 8 "github.com/hashicorp/terraform/helper/resource" 9 "github.com/hashicorp/terraform/terraform" 10 11 "github.com/rackspace/gophercloud/openstack/networking/v2/networks" 12 "github.com/rackspace/gophercloud/openstack/networking/v2/ports" 13 "github.com/rackspace/gophercloud/openstack/networking/v2/subnets" 14 ) 15 16 func TestAccNetworkingV2Port_basic(t *testing.T) { 17 region := os.Getenv(OS_REGION_NAME) 18 19 var network networks.Network 20 var port ports.Port 21 var subnet subnets.Subnet 22 23 var testAccNetworkingV2Port_basic = fmt.Sprintf(` 24 resource "openstack_networking_network_v2" "foo" { 25 region = "%s" 26 name = "network_1" 27 admin_state_up = "true" 28 } 29 30 resource "openstack_networking_subnet_v2" "foo" { 31 region = "%s" 32 name = "subnet_1" 33 network_id = "${openstack_networking_network_v2.foo.id}" 34 cidr = "192.168.199.0/24" 35 ip_version = 4 36 } 37 38 resource "openstack_networking_port_v2" "foo" { 39 region = "%s" 40 name = "port_1" 41 network_id = "${openstack_networking_network_v2.foo.id}" 42 admin_state_up = "true" 43 fixed_ip { 44 subnet_id = "${openstack_networking_subnet_v2.foo.id}" 45 ip_address = "192.168.199.23" 46 } 47 }`, region, region, region) 48 49 resource.Test(t, resource.TestCase{ 50 PreCheck: func() { testAccPreCheck(t) }, 51 Providers: testAccProviders, 52 CheckDestroy: testAccCheckNetworkingV2PortDestroy, 53 Steps: []resource.TestStep{ 54 resource.TestStep{ 55 Config: testAccNetworkingV2Port_basic, 56 Check: resource.ComposeTestCheckFunc( 57 testAccCheckNetworkingV2SubnetExists(t, "openstack_networking_subnet_v2.foo", &subnet), 58 testAccCheckNetworkingV2NetworkExists(t, "openstack_networking_network_v2.foo", &network), 59 testAccCheckNetworkingV2PortExists(t, "openstack_networking_port_v2.foo", &port), 60 ), 61 }, 62 }, 63 }) 64 } 65 66 func testAccCheckNetworkingV2PortDestroy(s *terraform.State) error { 67 config := testAccProvider.Meta().(*Config) 68 networkingClient, err := config.networkingV2Client(OS_REGION_NAME) 69 if err != nil { 70 return fmt.Errorf("(testAccCheckNetworkingV2PortDestroy) Error creating OpenStack networking client: %s", err) 71 } 72 73 for _, rs := range s.RootModule().Resources { 74 if rs.Type != "openstack_networking_port_v2" { 75 continue 76 } 77 78 _, err := ports.Get(networkingClient, rs.Primary.ID).Extract() 79 if err == nil { 80 return fmt.Errorf("Port still exists") 81 } 82 } 83 84 return nil 85 } 86 87 func testAccCheckNetworkingV2PortExists(t *testing.T, n string, port *ports.Port) resource.TestCheckFunc { 88 return func(s *terraform.State) error { 89 rs, ok := s.RootModule().Resources[n] 90 if !ok { 91 return fmt.Errorf("Not found: %s", n) 92 } 93 94 if rs.Primary.ID == "" { 95 return fmt.Errorf("No ID is set") 96 } 97 98 config := testAccProvider.Meta().(*Config) 99 networkingClient, err := config.networkingV2Client(OS_REGION_NAME) 100 if err != nil { 101 return fmt.Errorf("(testAccCheckNetworkingV2PortExists) Error creating OpenStack networking client: %s", err) 102 } 103 104 found, err := ports.Get(networkingClient, rs.Primary.ID).Extract() 105 if err != nil { 106 return err 107 } 108 109 if found.ID != rs.Primary.ID { 110 return fmt.Errorf("Port not found") 111 } 112 113 *port = *found 114 115 return nil 116 } 117 }