github.com/andresvia/terraform@v0.6.15-0.20160412045437-d51c75946785/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 TestAccNetworkingV2Port_noip(t *testing.T) { 67 region := os.Getenv(OS_REGION_NAME) 68 69 var network networks.Network 70 var port ports.Port 71 var subnet subnets.Subnet 72 73 var testAccNetworkingV2Port_noip = fmt.Sprintf(` 74 resource "openstack_networking_network_v2" "foo" { 75 region = "%s" 76 name = "network_1" 77 admin_state_up = "true" 78 } 79 resource "openstack_networking_subnet_v2" "foo" { 80 region = "%s" 81 name = "subnet_1" 82 network_id = "${openstack_networking_network_v2.foo.id}" 83 cidr = "192.168.199.0/24" 84 ip_version = 4 85 } 86 resource "openstack_networking_port_v2" "foo" { 87 region = "%s" 88 name = "port_1" 89 network_id = "${openstack_networking_network_v2.foo.id}" 90 admin_state_up = "true" 91 fixed_ip { 92 subnet_id = "${openstack_networking_subnet_v2.foo.id}" 93 } 94 }`, region, region, region) 95 96 resource.Test(t, resource.TestCase{ 97 PreCheck: func() { testAccPreCheck(t) }, 98 Providers: testAccProviders, 99 CheckDestroy: testAccCheckNetworkingV2PortDestroy, 100 Steps: []resource.TestStep{ 101 resource.TestStep{ 102 Config: testAccNetworkingV2Port_noip, 103 Check: resource.ComposeTestCheckFunc( 104 testAccCheckNetworkingV2SubnetExists(t, "openstack_networking_subnet_v2.foo", &subnet), 105 testAccCheckNetworkingV2NetworkExists(t, "openstack_networking_network_v2.foo", &network), 106 testAccCheckNetworkingV2PortExists(t, "openstack_networking_port_v2.foo", &port), 107 ), 108 }, 109 }, 110 }) 111 } 112 113 func testAccCheckNetworkingV2PortDestroy(s *terraform.State) error { 114 config := testAccProvider.Meta().(*Config) 115 networkingClient, err := config.networkingV2Client(OS_REGION_NAME) 116 if err != nil { 117 return fmt.Errorf("(testAccCheckNetworkingV2PortDestroy) Error creating OpenStack networking client: %s", err) 118 } 119 120 for _, rs := range s.RootModule().Resources { 121 if rs.Type != "openstack_networking_port_v2" { 122 continue 123 } 124 125 _, err := ports.Get(networkingClient, rs.Primary.ID).Extract() 126 if err == nil { 127 return fmt.Errorf("Port still exists") 128 } 129 } 130 131 return nil 132 } 133 134 func testAccCheckNetworkingV2PortExists(t *testing.T, n string, port *ports.Port) resource.TestCheckFunc { 135 return func(s *terraform.State) error { 136 rs, ok := s.RootModule().Resources[n] 137 if !ok { 138 return fmt.Errorf("Not found: %s", n) 139 } 140 141 if rs.Primary.ID == "" { 142 return fmt.Errorf("No ID is set") 143 } 144 145 config := testAccProvider.Meta().(*Config) 146 networkingClient, err := config.networkingV2Client(OS_REGION_NAME) 147 if err != nil { 148 return fmt.Errorf("(testAccCheckNetworkingV2PortExists) Error creating OpenStack networking client: %s", err) 149 } 150 151 found, err := ports.Get(networkingClient, rs.Primary.ID).Extract() 152 if err != nil { 153 return err 154 } 155 156 if found.ID != rs.Primary.ID { 157 return fmt.Errorf("Port not found") 158 } 159 160 *port = *found 161 162 return nil 163 } 164 }