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