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