github.com/ns1/terraform@v0.7.10-0.20161109153551-8949419bef40/builtin/providers/openstack/resource_openstack_networking_port_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/networking/v2/networks" 11 "github.com/gophercloud/gophercloud/openstack/networking/v2/ports" 12 "github.com/gophercloud/gophercloud/openstack/networking/v2/subnets" 13 ) 14 15 func TestAccNetworkingV2Port_basic(t *testing.T) { 16 var network networks.Network 17 var port ports.Port 18 var subnet subnets.Subnet 19 20 resource.Test(t, resource.TestCase{ 21 PreCheck: func() { testAccPreCheck(t) }, 22 Providers: testAccProviders, 23 CheckDestroy: testAccCheckNetworkingV2PortDestroy, 24 Steps: []resource.TestStep{ 25 resource.TestStep{ 26 Config: testAccNetworkingV2Port_basic, 27 Check: resource.ComposeTestCheckFunc( 28 testAccCheckNetworkingV2SubnetExists(t, "openstack_networking_subnet_v2.foo", &subnet), 29 testAccCheckNetworkingV2NetworkExists(t, "openstack_networking_network_v2.foo", &network), 30 testAccCheckNetworkingV2PortExists(t, "openstack_networking_port_v2.foo", &port), 31 ), 32 }, 33 }, 34 }) 35 } 36 37 func TestAccNetworkingV2Port_noip(t *testing.T) { 38 var network networks.Network 39 var port ports.Port 40 var subnet subnets.Subnet 41 42 resource.Test(t, resource.TestCase{ 43 PreCheck: func() { testAccPreCheck(t) }, 44 Providers: testAccProviders, 45 CheckDestroy: testAccCheckNetworkingV2PortDestroy, 46 Steps: []resource.TestStep{ 47 resource.TestStep{ 48 Config: testAccNetworkingV2Port_noip, 49 Check: resource.ComposeTestCheckFunc( 50 testAccCheckNetworkingV2SubnetExists(t, "openstack_networking_subnet_v2.foo", &subnet), 51 testAccCheckNetworkingV2NetworkExists(t, "openstack_networking_network_v2.foo", &network), 52 testAccCheckNetworkingV2PortExists(t, "openstack_networking_port_v2.foo", &port), 53 ), 54 }, 55 }, 56 }) 57 } 58 59 func TestAccNetworkingV2Port_allowedAddressPairs(t *testing.T) { 60 var network networks.Network 61 var subnet subnets.Subnet 62 var vrrp_port, instance_port ports.Port 63 64 resource.Test(t, resource.TestCase{ 65 PreCheck: func() { testAccPreCheck(t) }, 66 Providers: testAccProviders, 67 CheckDestroy: testAccCheckNetworkingV2PortDestroy, 68 Steps: []resource.TestStep{ 69 resource.TestStep{ 70 Config: testAccNetworkingV2Port_allowedAddressPairs, 71 Check: resource.ComposeTestCheckFunc( 72 testAccCheckNetworkingV2SubnetExists(t, "openstack_networking_subnet_v2.vrrp_subnet", &subnet), 73 testAccCheckNetworkingV2NetworkExists(t, "openstack_networking_network_v2.vrrp_network", &network), 74 testAccCheckNetworkingV2PortExists(t, "openstack_networking_port_v2.vrrp_port", &vrrp_port), 75 testAccCheckNetworkingV2PortExists(t, "openstack_networking_port_v2.instance_port", &instance_port), 76 ), 77 }, 78 }, 79 }) 80 } 81 82 func testAccCheckNetworkingV2PortDestroy(s *terraform.State) error { 83 config := testAccProvider.Meta().(*Config) 84 networkingClient, err := config.networkingV2Client(OS_REGION_NAME) 85 if err != nil { 86 return fmt.Errorf("(testAccCheckNetworkingV2PortDestroy) Error creating OpenStack networking client: %s", err) 87 } 88 89 for _, rs := range s.RootModule().Resources { 90 if rs.Type != "openstack_networking_port_v2" { 91 continue 92 } 93 94 _, err := ports.Get(networkingClient, rs.Primary.ID).Extract() 95 if err == nil { 96 return fmt.Errorf("Port still exists") 97 } 98 } 99 100 return nil 101 } 102 103 func testAccCheckNetworkingV2PortExists(t *testing.T, n string, port *ports.Port) resource.TestCheckFunc { 104 return func(s *terraform.State) error { 105 rs, ok := s.RootModule().Resources[n] 106 if !ok { 107 return fmt.Errorf("Not found: %s", n) 108 } 109 110 if rs.Primary.ID == "" { 111 return fmt.Errorf("No ID is set") 112 } 113 114 config := testAccProvider.Meta().(*Config) 115 networkingClient, err := config.networkingV2Client(OS_REGION_NAME) 116 if err != nil { 117 return fmt.Errorf("(testAccCheckNetworkingV2PortExists) Error creating OpenStack networking client: %s", err) 118 } 119 120 found, err := ports.Get(networkingClient, rs.Primary.ID).Extract() 121 if err != nil { 122 return err 123 } 124 125 if found.ID != rs.Primary.ID { 126 return fmt.Errorf("Port not found") 127 } 128 129 *port = *found 130 131 return nil 132 } 133 } 134 135 var testAccNetworkingV2Port_basic = fmt.Sprintf(` 136 resource "openstack_networking_network_v2" "foo" { 137 name = "network_1" 138 admin_state_up = "true" 139 } 140 141 resource "openstack_networking_subnet_v2" "foo" { 142 name = "subnet_1" 143 network_id = "${openstack_networking_network_v2.foo.id}" 144 cidr = "192.168.199.0/24" 145 ip_version = 4 146 } 147 148 resource "openstack_networking_port_v2" "foo" { 149 name = "port_1" 150 network_id = "${openstack_networking_network_v2.foo.id}" 151 admin_state_up = "true" 152 fixed_ip { 153 subnet_id = "${openstack_networking_subnet_v2.foo.id}" 154 ip_address = "192.168.199.23" 155 } 156 }`) 157 158 var testAccNetworkingV2Port_noip = fmt.Sprintf(` 159 resource "openstack_networking_network_v2" "foo" { 160 name = "network_1" 161 admin_state_up = "true" 162 } 163 resource "openstack_networking_subnet_v2" "foo" { 164 name = "subnet_1" 165 network_id = "${openstack_networking_network_v2.foo.id}" 166 cidr = "192.168.199.0/24" 167 ip_version = 4 168 } 169 resource "openstack_networking_port_v2" "foo" { 170 name = "port_1" 171 network_id = "${openstack_networking_network_v2.foo.id}" 172 admin_state_up = "true" 173 fixed_ip { 174 subnet_id = "${openstack_networking_subnet_v2.foo.id}" 175 } 176 }`) 177 178 var testAccNetworkingV2Port_allowedAddressPairs = fmt.Sprintf(` 179 resource "openstack_networking_network_v2" "vrrp_network" { 180 name = "vrrp_network" 181 admin_state_up = "true" 182 } 183 184 resource "openstack_networking_subnet_v2" "vrrp_subnet" { 185 name = "vrrp_subnet" 186 network_id = "${openstack_networking_network_v2.vrrp_network.id}" 187 cidr = "10.0.0.0/24" 188 ip_version = 4 189 190 allocation_pools { 191 start = "10.0.0.2" 192 end = "10.0.0.200" 193 } 194 } 195 196 resource "openstack_networking_router_v2" "vrrp_router" { 197 name = "vrrp_router" 198 } 199 200 resource "openstack_networking_router_interface_v2" "vrrp_interface" { 201 router_id = "${openstack_networking_router_v2.vrrp_router.id}" 202 subnet_id = "${openstack_networking_subnet_v2.vrrp_subnet.id}" 203 } 204 205 resource "openstack_networking_port_v2" "vrrp_port" { 206 name = "vrrp_port" 207 network_id = "${openstack_networking_network_v2.vrrp_network.id}" 208 admin_state_up = "true" 209 fixed_ip { 210 subnet_id = "${openstack_networking_subnet_v2.vrrp_subnet.id}" 211 ip_address = "10.0.0.201" 212 } 213 } 214 215 resource "openstack_networking_port_v2" "instance_port" { 216 name = "instance_port" 217 network_id = "${openstack_networking_network_v2.vrrp_network.id}" 218 admin_state_up = "true" 219 220 allowed_address_pairs { 221 ip_address = "${openstack_networking_port_v2.vrrp_port.fixed_ip.0.ip_address}" 222 mac_address = "${openstack_networking_port_v2.vrrp_port.mac_address}" 223 } 224 }`)