github.com/vtorhonen/terraform@v0.9.0-beta2.0.20170307220345-5d894e4ffda7/builtin/providers/openstack/resource_openstack_networking_router_interface_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/extensions/layer3/routers" 11 "github.com/gophercloud/gophercloud/openstack/networking/v2/networks" 12 "github.com/gophercloud/gophercloud/openstack/networking/v2/ports" 13 "github.com/gophercloud/gophercloud/openstack/networking/v2/subnets" 14 ) 15 16 func TestAccNetworkingV2RouterInterface_basic_subnet(t *testing.T) { 17 var network networks.Network 18 var router routers.Router 19 var subnet subnets.Subnet 20 21 resource.Test(t, resource.TestCase{ 22 PreCheck: func() { testAccPreCheck(t) }, 23 Providers: testAccProviders, 24 CheckDestroy: testAccCheckNetworkingV2RouterInterfaceDestroy, 25 Steps: []resource.TestStep{ 26 resource.TestStep{ 27 Config: testAccNetworkingV2RouterInterface_basic_subnet, 28 Check: resource.ComposeTestCheckFunc( 29 testAccCheckNetworkingV2NetworkExists("openstack_networking_network_v2.network_1", &network), 30 testAccCheckNetworkingV2SubnetExists("openstack_networking_subnet_v2.subnet_1", &subnet), 31 testAccCheckNetworkingV2RouterExists("openstack_networking_router_v2.router_1", &router), 32 testAccCheckNetworkingV2RouterInterfaceExists("openstack_networking_router_interface_v2.int_1"), 33 ), 34 }, 35 }, 36 }) 37 } 38 39 func TestAccNetworkingV2RouterInterface_basic_port(t *testing.T) { 40 var network networks.Network 41 var port ports.Port 42 var router routers.Router 43 var subnet subnets.Subnet 44 45 resource.Test(t, resource.TestCase{ 46 PreCheck: func() { testAccPreCheck(t) }, 47 Providers: testAccProviders, 48 CheckDestroy: testAccCheckNetworkingV2RouterInterfaceDestroy, 49 Steps: []resource.TestStep{ 50 resource.TestStep{ 51 Config: testAccNetworkingV2RouterInterface_basic_port, 52 Check: resource.ComposeTestCheckFunc( 53 testAccCheckNetworkingV2NetworkExists("openstack_networking_network_v2.network_1", &network), 54 testAccCheckNetworkingV2SubnetExists("openstack_networking_subnet_v2.subnet_1", &subnet), 55 testAccCheckNetworkingV2RouterExists("openstack_networking_router_v2.router_1", &router), 56 testAccCheckNetworkingV2PortExists("openstack_networking_port_v2.port_1", &port), 57 testAccCheckNetworkingV2RouterInterfaceExists("openstack_networking_router_interface_v2.int_1"), 58 ), 59 }, 60 }, 61 }) 62 } 63 64 func testAccCheckNetworkingV2RouterInterfaceDestroy(s *terraform.State) error { 65 config := testAccProvider.Meta().(*Config) 66 networkingClient, err := config.networkingV2Client(OS_REGION_NAME) 67 if err != nil { 68 return fmt.Errorf("Error creating OpenStack networking client: %s", err) 69 } 70 71 for _, rs := range s.RootModule().Resources { 72 if rs.Type != "openstack_networking_router_interface_v2" { 73 continue 74 } 75 76 _, err := ports.Get(networkingClient, rs.Primary.ID).Extract() 77 if err == nil { 78 return fmt.Errorf("Router interface still exists") 79 } 80 } 81 82 return nil 83 } 84 85 func testAccCheckNetworkingV2RouterInterfaceExists(n string) resource.TestCheckFunc { 86 return func(s *terraform.State) error { 87 rs, ok := s.RootModule().Resources[n] 88 if !ok { 89 return fmt.Errorf("Not found: %s", n) 90 } 91 92 if rs.Primary.ID == "" { 93 return fmt.Errorf("No ID is set") 94 } 95 96 config := testAccProvider.Meta().(*Config) 97 networkingClient, err := config.networkingV2Client(OS_REGION_NAME) 98 if err != nil { 99 return fmt.Errorf("Error creating OpenStack networking client: %s", err) 100 } 101 102 found, err := ports.Get(networkingClient, rs.Primary.ID).Extract() 103 if err != nil { 104 return err 105 } 106 107 if found.ID != rs.Primary.ID { 108 return fmt.Errorf("Router interface not found") 109 } 110 111 return nil 112 } 113 } 114 115 const testAccNetworkingV2RouterInterface_basic_subnet = ` 116 resource "openstack_networking_router_v2" "router_1" { 117 name = "router_1" 118 admin_state_up = "true" 119 } 120 121 resource "openstack_networking_router_interface_v2" "int_1" { 122 subnet_id = "${openstack_networking_subnet_v2.subnet_1.id}" 123 router_id = "${openstack_networking_router_v2.router_1.id}" 124 } 125 126 resource "openstack_networking_network_v2" "network_1" { 127 name = "network_1" 128 admin_state_up = "true" 129 } 130 131 resource "openstack_networking_subnet_v2" "subnet_1" { 132 cidr = "192.168.199.0/24" 133 ip_version = 4 134 network_id = "${openstack_networking_network_v2.network_1.id}" 135 } 136 ` 137 138 const testAccNetworkingV2RouterInterface_basic_port = ` 139 resource "openstack_networking_router_v2" "router_1" { 140 name = "router_1" 141 admin_state_up = "true" 142 } 143 144 resource "openstack_networking_router_interface_v2" "int_1" { 145 router_id = "${openstack_networking_router_v2.router_1.id}" 146 port_id = "${openstack_networking_port_v2.port_1.id}" 147 } 148 149 resource "openstack_networking_network_v2" "network_1" { 150 name = "network_1" 151 admin_state_up = "true" 152 } 153 154 resource "openstack_networking_subnet_v2" "subnet_1" { 155 cidr = "192.168.199.0/24" 156 ip_version = 4 157 network_id = "${openstack_networking_network_v2.network_1.id}" 158 } 159 160 resource "openstack_networking_port_v2" "port_1" { 161 name = "port_1" 162 admin_state_up = "true" 163 network_id = "${openstack_networking_network_v2.network_1.id}" 164 165 fixed_ip { 166 subnet_id = "${openstack_networking_subnet_v2.subnet_1.id}" 167 ip_address = "192.168.199.1" 168 } 169 } 170 `