github.com/vtorhonen/terraform@v0.9.0-beta2.0.20170307220345-5d894e4ffda7/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("openstack_networking_subnet_v2.subnet_1", &subnet), 29 testAccCheckNetworkingV2NetworkExists("openstack_networking_network_v2.network_1", &network), 30 testAccCheckNetworkingV2PortExists("openstack_networking_port_v2.port_1", &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("openstack_networking_subnet_v2.subnet_1", &subnet), 51 testAccCheckNetworkingV2NetworkExists("openstack_networking_network_v2.network_1", &network), 52 testAccCheckNetworkingV2PortExists("openstack_networking_port_v2.port_1", &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_1, vrrp_port_2, 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("openstack_networking_subnet_v2.vrrp_subnet", &subnet), 73 testAccCheckNetworkingV2NetworkExists("openstack_networking_network_v2.vrrp_network", &network), 74 testAccCheckNetworkingV2PortExists("openstack_networking_port_v2.vrrp_port_1", &vrrp_port_1), 75 testAccCheckNetworkingV2PortExists("openstack_networking_port_v2.vrrp_port_2", &vrrp_port_2), 76 testAccCheckNetworkingV2PortExists("openstack_networking_port_v2.instance_port", &instance_port), 77 ), 78 }, 79 }, 80 }) 81 } 82 83 func testAccCheckNetworkingV2PortDestroy(s *terraform.State) error { 84 config := testAccProvider.Meta().(*Config) 85 networkingClient, err := config.networkingV2Client(OS_REGION_NAME) 86 if err != nil { 87 return fmt.Errorf("Error creating OpenStack networking client: %s", err) 88 } 89 90 for _, rs := range s.RootModule().Resources { 91 if rs.Type != "openstack_networking_port_v2" { 92 continue 93 } 94 95 _, err := ports.Get(networkingClient, rs.Primary.ID).Extract() 96 if err == nil { 97 return fmt.Errorf("Port still exists") 98 } 99 } 100 101 return nil 102 } 103 104 func testAccCheckNetworkingV2PortExists(n string, port *ports.Port) resource.TestCheckFunc { 105 return func(s *terraform.State) error { 106 rs, ok := s.RootModule().Resources[n] 107 if !ok { 108 return fmt.Errorf("Not found: %s", n) 109 } 110 111 if rs.Primary.ID == "" { 112 return fmt.Errorf("No ID is set") 113 } 114 115 config := testAccProvider.Meta().(*Config) 116 networkingClient, err := config.networkingV2Client(OS_REGION_NAME) 117 if err != nil { 118 return fmt.Errorf("Error creating OpenStack networking client: %s", err) 119 } 120 121 found, err := ports.Get(networkingClient, rs.Primary.ID).Extract() 122 if err != nil { 123 return err 124 } 125 126 if found.ID != rs.Primary.ID { 127 return fmt.Errorf("Port not found") 128 } 129 130 *port = *found 131 132 return nil 133 } 134 } 135 136 const testAccNetworkingV2Port_basic = ` 137 resource "openstack_networking_network_v2" "network_1" { 138 name = "network_1" 139 admin_state_up = "true" 140 } 141 142 resource "openstack_networking_subnet_v2" "subnet_1" { 143 name = "subnet_1" 144 cidr = "192.168.199.0/24" 145 ip_version = 4 146 network_id = "${openstack_networking_network_v2.network_1.id}" 147 } 148 149 resource "openstack_networking_port_v2" "port_1" { 150 name = "port_1" 151 admin_state_up = "true" 152 network_id = "${openstack_networking_network_v2.network_1.id}" 153 154 fixed_ip { 155 subnet_id = "${openstack_networking_subnet_v2.subnet_1.id}" 156 ip_address = "192.168.199.23" 157 } 158 } 159 ` 160 161 const testAccNetworkingV2Port_noip = ` 162 resource "openstack_networking_network_v2" "network_1" { 163 name = "network_1" 164 admin_state_up = "true" 165 } 166 167 resource "openstack_networking_subnet_v2" "subnet_1" { 168 name = "subnet_1" 169 cidr = "192.168.199.0/24" 170 ip_version = 4 171 network_id = "${openstack_networking_network_v2.network_1.id}" 172 } 173 174 resource "openstack_networking_port_v2" "port_1" { 175 name = "port_1" 176 admin_state_up = "true" 177 network_id = "${openstack_networking_network_v2.network_1.id}" 178 179 fixed_ip { 180 subnet_id = "${openstack_networking_subnet_v2.subnet_1.id}" 181 } 182 } 183 ` 184 185 const testAccNetworkingV2Port_allowedAddressPairs = ` 186 resource "openstack_networking_network_v2" "vrrp_network" { 187 name = "vrrp_network" 188 admin_state_up = "true" 189 } 190 191 resource "openstack_networking_subnet_v2" "vrrp_subnet" { 192 name = "vrrp_subnet" 193 cidr = "10.0.0.0/24" 194 ip_version = 4 195 network_id = "${openstack_networking_network_v2.vrrp_network.id}" 196 197 allocation_pools { 198 start = "10.0.0.2" 199 end = "10.0.0.200" 200 } 201 } 202 203 resource "openstack_networking_router_v2" "vrrp_router" { 204 name = "vrrp_router" 205 } 206 207 resource "openstack_networking_router_interface_v2" "vrrp_interface" { 208 router_id = "${openstack_networking_router_v2.vrrp_router.id}" 209 subnet_id = "${openstack_networking_subnet_v2.vrrp_subnet.id}" 210 } 211 212 resource "openstack_networking_port_v2" "vrrp_port_1" { 213 name = "vrrp_port_1" 214 admin_state_up = "true" 215 network_id = "${openstack_networking_network_v2.vrrp_network.id}" 216 217 fixed_ip { 218 subnet_id = "${openstack_networking_subnet_v2.vrrp_subnet.id}" 219 ip_address = "10.0.0.202" 220 } 221 } 222 223 resource "openstack_networking_port_v2" "vrrp_port_2" { 224 name = "vrrp_port_2" 225 admin_state_up = "true" 226 network_id = "${openstack_networking_network_v2.vrrp_network.id}" 227 228 fixed_ip { 229 subnet_id = "${openstack_networking_subnet_v2.vrrp_subnet.id}" 230 ip_address = "10.0.0.201" 231 } 232 } 233 234 resource "openstack_networking_port_v2" "instance_port" { 235 name = "instance_port" 236 admin_state_up = "true" 237 network_id = "${openstack_networking_network_v2.vrrp_network.id}" 238 239 allowed_address_pairs { 240 ip_address = "${openstack_networking_port_v2.vrrp_port_1.fixed_ip.0.ip_address}" 241 mac_address = "${openstack_networking_port_v2.vrrp_port_1.mac_address}" 242 } 243 244 allowed_address_pairs { 245 ip_address = "${openstack_networking_port_v2.vrrp_port_2.fixed_ip.0.ip_address}" 246 mac_address = "${openstack_networking_port_v2.vrrp_port_2.mac_address}" 247 } 248 } 249 `