|
8 | 8 | "github.com/hashicorp/terraform/helper/resource" |
9 | 9 | "github.com/hashicorp/terraform/terraform" |
10 | 10 | "google.golang.org/api/compute/v1" |
| 11 | + "strings" |
11 | 12 | ) |
12 | 13 |
|
13 | 14 | func TestAccComputeInstanceTemplate_basic(t *testing.T) { |
@@ -73,6 +74,47 @@ func TestAccComputeInstanceTemplate_disks(t *testing.T) { |
73 | 74 | }) |
74 | 75 | } |
75 | 76 |
|
| 77 | +func TestAccComputeInstanceTemplate_subnet_auto(t *testing.T) { |
| 78 | + var instanceTemplate compute.InstanceTemplate |
| 79 | + network := "network-" + acctest.RandString(10) |
| 80 | + |
| 81 | + resource.Test(t, resource.TestCase{ |
| 82 | + PreCheck: func() { testAccPreCheck(t) }, |
| 83 | + Providers: testAccProviders, |
| 84 | + CheckDestroy: testAccCheckComputeInstanceTemplateDestroy, |
| 85 | + Steps: []resource.TestStep{ |
| 86 | + resource.TestStep{ |
| 87 | + Config: testAccComputeInstanceTemplate_subnet_auto(network), |
| 88 | + Check: resource.ComposeTestCheckFunc( |
| 89 | + testAccCheckComputeInstanceTemplateExists( |
| 90 | + "google_compute_instance_template.foobar", &instanceTemplate), |
| 91 | + testAccCheckComputeInstanceTemplateNetworkName(&instanceTemplate, network), |
| 92 | + ), |
| 93 | + }, |
| 94 | + }, |
| 95 | + }) |
| 96 | +} |
| 97 | + |
| 98 | +func TestAccComputeInstanceTemplate_subnet_custom(t *testing.T) { |
| 99 | + var instanceTemplate compute.InstanceTemplate |
| 100 | + |
| 101 | + resource.Test(t, resource.TestCase{ |
| 102 | + PreCheck: func() { testAccPreCheck(t) }, |
| 103 | + Providers: testAccProviders, |
| 104 | + CheckDestroy: testAccCheckComputeInstanceTemplateDestroy, |
| 105 | + Steps: []resource.TestStep{ |
| 106 | + resource.TestStep{ |
| 107 | + Config: testAccComputeInstanceTemplate_subnet_custom, |
| 108 | + Check: resource.ComposeTestCheckFunc( |
| 109 | + testAccCheckComputeInstanceTemplateExists( |
| 110 | + "google_compute_instance_template.foobar", &instanceTemplate), |
| 111 | + testAccCheckComputeInstanceTemplateSubnetwork(&instanceTemplate), |
| 112 | + ), |
| 113 | + }, |
| 114 | + }, |
| 115 | + }) |
| 116 | +} |
| 117 | + |
76 | 118 | func testAccCheckComputeInstanceTemplateDestroy(s *terraform.State) error { |
77 | 119 | config := testAccProvider.Meta().(*Config) |
78 | 120 |
|
@@ -158,6 +200,18 @@ func testAccCheckComputeInstanceTemplateNetwork(instanceTemplate *compute.Instan |
158 | 200 | } |
159 | 201 | } |
160 | 202 |
|
| 203 | +func testAccCheckComputeInstanceTemplateNetworkName(instanceTemplate *compute.InstanceTemplate, network string) resource.TestCheckFunc { |
| 204 | + return func(s *terraform.State) error { |
| 205 | + for _, i := range instanceTemplate.Properties.NetworkInterfaces { |
| 206 | + if !strings.Contains(i.Network, network) { |
| 207 | + return fmt.Errorf("Network doesn't match expected value, Expected: %s Actual: %s", network, i.Network[strings.LastIndex("/", i.Network)+1:]) |
| 208 | + } |
| 209 | + } |
| 210 | + |
| 211 | + return nil |
| 212 | + } |
| 213 | +} |
| 214 | + |
161 | 215 | func testAccCheckComputeInstanceTemplateDisk(instanceTemplate *compute.InstanceTemplate, source string, delete bool, boot bool) resource.TestCheckFunc { |
162 | 216 | return func(s *terraform.State) error { |
163 | 217 | if instanceTemplate.Properties.Disks == nil { |
@@ -186,6 +240,18 @@ func testAccCheckComputeInstanceTemplateDisk(instanceTemplate *compute.InstanceT |
186 | 240 | } |
187 | 241 | } |
188 | 242 |
|
| 243 | +func testAccCheckComputeInstanceTemplateSubnetwork(instanceTemplate *compute.InstanceTemplate) resource.TestCheckFunc { |
| 244 | + return func(s *terraform.State) error { |
| 245 | + for _, i := range instanceTemplate.Properties.NetworkInterfaces { |
| 246 | + if i.Subnetwork == "" { |
| 247 | + return fmt.Errorf("no subnet") |
| 248 | + } |
| 249 | + } |
| 250 | + |
| 251 | + return nil |
| 252 | + } |
| 253 | +} |
| 254 | + |
189 | 255 | func testAccCheckComputeInstanceTemplateTag(instanceTemplate *compute.InstanceTemplate, n string) resource.TestCheckFunc { |
190 | 256 | return func(s *terraform.State) error { |
191 | 257 | if instanceTemplate.Properties.Tags == nil { |
@@ -293,3 +359,65 @@ resource "google_compute_instance_template" "foobar" { |
293 | 359 | foo = "bar" |
294 | 360 | } |
295 | 361 | }`, acctest.RandString(10), acctest.RandString(10)) |
| 362 | + |
| 363 | +func testAccComputeInstanceTemplate_subnet_auto(network string) string { |
| 364 | + return fmt.Sprintf(` |
| 365 | + resource "google_compute_network" "auto-network" { |
| 366 | + name = "%s" |
| 367 | + auto_create_subnetworks = true |
| 368 | + } |
| 369 | +
|
| 370 | + resource "google_compute_instance_template" "foobar" { |
| 371 | + name = "instance-tpl-%s" |
| 372 | + machine_type = "n1-standard-1" |
| 373 | +
|
| 374 | + disk { |
| 375 | + source_image = "debian-7-wheezy-v20160211" |
| 376 | + auto_delete = true |
| 377 | + disk_size_gb = 10 |
| 378 | + boot = true |
| 379 | + } |
| 380 | +
|
| 381 | + network_interface { |
| 382 | + network = "${google_compute_network.auto-network.name}" |
| 383 | + } |
| 384 | +
|
| 385 | + metadata { |
| 386 | + foo = "bar" |
| 387 | + } |
| 388 | + }`, network, acctest.RandString(10)) |
| 389 | +} |
| 390 | + |
| 391 | +var testAccComputeInstanceTemplate_subnet_custom = fmt.Sprintf(` |
| 392 | +resource "google_compute_network" "network" { |
| 393 | + name = "network-%s" |
| 394 | + auto_create_subnetworks = false |
| 395 | +} |
| 396 | +
|
| 397 | +resource "google_compute_subnetwork" "subnetwork" { |
| 398 | + name = "subnetwork-%s" |
| 399 | + ip_cidr_range = "10.0.0.0/24" |
| 400 | + region = "us-central1" |
| 401 | + network = "${google_compute_network.network.self_link}" |
| 402 | +} |
| 403 | +
|
| 404 | +resource "google_compute_instance_template" "foobar" { |
| 405 | + name = "instance-test-%s" |
| 406 | + machine_type = "n1-standard-1" |
| 407 | + region = "us-central1" |
| 408 | +
|
| 409 | + disk { |
| 410 | + source_image = "debian-7-wheezy-v20160211" |
| 411 | + auto_delete = true |
| 412 | + disk_size_gb = 10 |
| 413 | + boot = true |
| 414 | + } |
| 415 | +
|
| 416 | + network_interface { |
| 417 | + subnetwork = "${google_compute_subnetwork.subnetwork.name}" |
| 418 | + } |
| 419 | +
|
| 420 | + metadata { |
| 421 | + foo = "bar" |
| 422 | + } |
| 423 | +}`, acctest.RandString(10), acctest.RandString(10), acctest.RandString(10)) |
0 commit comments