@@ -497,6 +497,182 @@ func TestAccComputeBackendService_withMaxConnectionsPerEndpoint(t *testing.T) {
497
497
})
498
498
}
499
499
500
+ func TestAccComputeBackendService_withCustomHeaders (t * testing.T ) {
501
+ t .Parallel ()
502
+
503
+ serviceName := fmt .Sprintf ("tf-test-%s" , randString (t , 10 ))
504
+ checkName := fmt .Sprintf ("tf-test-%s" , randString (t , 10 ))
505
+
506
+ vcrTest (t , resource.TestCase {
507
+ PreCheck : func () { testAccPreCheck (t ) },
508
+ Providers : testAccProviders ,
509
+ CheckDestroy : testAccCheckComputeBackendServiceDestroyProducer (t ),
510
+ Steps : []resource.TestStep {
511
+ {
512
+ Config : testAccComputeBackendService_withCustomHeaders (serviceName , checkName ),
513
+ },
514
+ {
515
+ ResourceName : "google_compute_backend_service.foobar" ,
516
+ ImportState : true ,
517
+ ImportStateVerify : true ,
518
+ },
519
+ {
520
+ Config : testAccComputeBackendService_basic (serviceName , checkName ),
521
+ },
522
+ {
523
+ ResourceName : "google_compute_backend_service.foobar" ,
524
+ ImportState : true ,
525
+ ImportStateVerify : true ,
526
+ },
527
+ },
528
+ })
529
+ }
530
+
531
+ func TestAccComputeBackendService_internalLoadBalancing (t * testing.T ) {
532
+ t .Parallel ()
533
+
534
+ fr := fmt .Sprintf ("forwardrule-test-%s" , randString (t , 10 ))
535
+ proxy := fmt .Sprintf ("forwardrule-test-%s" , randString (t , 10 ))
536
+ backend := fmt .Sprintf ("forwardrule-test-%s" , randString (t , 10 ))
537
+ hc := fmt .Sprintf ("forwardrule-test-%s" , randString (t , 10 ))
538
+ urlmap := fmt .Sprintf ("forwardrule-test-%s" , randString (t , 10 ))
539
+
540
+ vcrTest (t , resource.TestCase {
541
+ PreCheck : func () { testAccPreCheck (t ) },
542
+ Providers : testAccProviders ,
543
+ CheckDestroy : testAccCheckComputeBackendServiceDestroyProducer (t ),
544
+ Steps : []resource.TestStep {
545
+ {
546
+ Config : testAccComputeBackendService_internalLoadBalancing (fr , proxy , backend , hc , urlmap ),
547
+ },
548
+ {
549
+ ResourceName : "google_compute_backend_service.backend_service" ,
550
+ ImportState : true ,
551
+ ImportStateVerify : true ,
552
+ },
553
+ },
554
+ })
555
+ }
556
+
557
+ func TestAccComputeBackendService_withLogConfig (t * testing.T ) {
558
+ t .Parallel ()
559
+
560
+ serviceName := fmt .Sprintf ("tf-test-%s" , randString (t , 10 ))
561
+ checkName := fmt .Sprintf ("tf-test-%s" , randString (t , 10 ))
562
+
563
+ vcrTest (t , resource.TestCase {
564
+ PreCheck : func () { testAccPreCheck (t ) },
565
+ Providers : testAccProviders ,
566
+ CheckDestroy : testAccCheckComputeBackendServiceDestroyProducer (t ),
567
+ Steps : []resource.TestStep {
568
+ {
569
+ Config : testAccComputeBackendService_withLogConfig (serviceName , checkName , 0.7 ),
570
+ },
571
+ {
572
+ ResourceName : "google_compute_backend_service.foobar" ,
573
+ ImportState : true ,
574
+ ImportStateVerify : true ,
575
+ },
576
+ {
577
+ Config : testAccComputeBackendService_withLogConfig (serviceName , checkName , 0.4 ),
578
+ },
579
+ {
580
+ ResourceName : "google_compute_backend_service.foobar" ,
581
+ ImportState : true ,
582
+ ImportStateVerify : true ,
583
+ },
584
+ },
585
+ })
586
+ }
587
+
588
+ func TestAccComputeBackendService_trafficDirectorUpdateBasic (t * testing.T ) {
589
+ t .Parallel ()
590
+
591
+ backendName := fmt .Sprintf ("foo-%s" , randString (t , 10 ))
592
+ checkName := fmt .Sprintf ("bar-%s" , randString (t , 10 ))
593
+
594
+ vcrTest (t , resource.TestCase {
595
+ PreCheck : func () { testAccPreCheck (t ) },
596
+ Providers : testAccProviders ,
597
+ CheckDestroy : testAccCheckComputeBackendServiceDestroyProducer (t ),
598
+ Steps : []resource.TestStep {
599
+ {
600
+ Config : testAccComputeBackendService_trafficDirectorBasic (backendName , checkName ),
601
+ },
602
+ {
603
+ ResourceName : "google_compute_backend_service.foobar" ,
604
+ ImportState : true ,
605
+ ImportStateVerify : true ,
606
+ },
607
+ {
608
+ Config : testAccComputeBackendService_trafficDirectorUpdateBasic (backendName , checkName ),
609
+ },
610
+ {
611
+ ResourceName : "google_compute_backend_service.foobar" ,
612
+ ImportState : true ,
613
+ ImportStateVerify : true ,
614
+ },
615
+ },
616
+ })
617
+ }
618
+
619
+ func testAccComputeBackendService_trafficDirectorBasic (serviceName , checkName string ) string {
620
+ return fmt .Sprintf (`
621
+ resource "google_compute_backend_service" "foobar" {
622
+ name = "%s"
623
+ health_checks = [google_compute_health_check.health_check.self_link]
624
+ load_balancing_scheme = "INTERNAL_SELF_MANAGED"
625
+ locality_lb_policy = "RING_HASH"
626
+ circuit_breakers {
627
+ max_connections = 10
628
+ }
629
+ consistent_hash {
630
+ http_cookie {
631
+ ttl {
632
+ seconds = 11
633
+ nanos = 1234
634
+ }
635
+ name = "mycookie"
636
+ }
637
+ }
638
+ outlier_detection {
639
+ consecutive_errors = 2
640
+ }
641
+ }
642
+
643
+ resource "google_compute_health_check" "health_check" {
644
+ name = "%s"
645
+ http_health_check {
646
+ port = 80
647
+ }
648
+ }
649
+ ` , serviceName , checkName )
650
+ }
651
+
652
+ func testAccComputeBackendService_trafficDirectorUpdateBasic (serviceName , checkName string ) string {
653
+ return fmt .Sprintf (`
654
+ resource "google_compute_backend_service" "foobar" {
655
+ name = "%s"
656
+ health_checks = [google_compute_health_check.health_check.self_link]
657
+ load_balancing_scheme = "INTERNAL_SELF_MANAGED"
658
+ locality_lb_policy = "RANDOM"
659
+ circuit_breakers {
660
+ max_connections = 10
661
+ }
662
+ outlier_detection {
663
+ consecutive_errors = 2
664
+ }
665
+ }
666
+
667
+ resource "google_compute_health_check" "health_check" {
668
+ name = "%s"
669
+ http_health_check {
670
+ port = 80
671
+ }
672
+ }
673
+ ` , serviceName , checkName )
674
+ }
675
+
500
676
func testAccComputeBackendService_basic (serviceName , checkName string ) string {
501
677
return fmt .Sprintf (`
502
678
resource "google_compute_backend_service" "foobar" {
@@ -1063,3 +1239,139 @@ resource "google_compute_health_check" "default" {
1063
1239
}
1064
1240
` , service , maxRate , instance , neg , network , network , check )
1065
1241
}
1242
+
1243
+ func testAccComputeBackendService_withCustomHeaders (serviceName , checkName string ) string {
1244
+ return fmt .Sprintf (`
1245
+ resource "google_compute_backend_service" "foobar" {
1246
+ name = "%s"
1247
+ health_checks = [google_compute_http_health_check.zero.self_link]
1248
+
1249
+ custom_request_headers = ["Client-Region: {client_region}", "Client-Rtt: {client_rtt_msec}"]
1250
+ }
1251
+
1252
+ resource "google_compute_http_health_check" "zero" {
1253
+ name = "%s"
1254
+ request_path = "/"
1255
+ check_interval_sec = 1
1256
+ timeout_sec = 1
1257
+ }
1258
+ ` , serviceName , checkName )
1259
+ }
1260
+
1261
+ func testAccComputeBackendService_internalLoadBalancing (fr , proxy , backend , hc , urlmap string ) string {
1262
+ return fmt .Sprintf (`
1263
+ resource "google_compute_global_forwarding_rule" "forwarding_rule" {
1264
+ name = "%s"
1265
+ target = google_compute_target_http_proxy.default.self_link
1266
+ port_range = "80"
1267
+ load_balancing_scheme = "INTERNAL_SELF_MANAGED"
1268
+ ip_address = "0.0.0.0"
1269
+ }
1270
+
1271
+ resource "google_compute_target_http_proxy" "default" {
1272
+ name = "%s"
1273
+ description = "a description"
1274
+ url_map = google_compute_url_map.default.self_link
1275
+ }
1276
+
1277
+ resource "google_compute_backend_service" "backend_service" {
1278
+ name = "%s"
1279
+ port_name = "http"
1280
+ protocol = "HTTP"
1281
+ timeout_sec = 10
1282
+ load_balancing_scheme = "INTERNAL_SELF_MANAGED"
1283
+
1284
+ backend {
1285
+ group = google_compute_instance_group_manager.foobar.instance_group
1286
+ balancing_mode = "RATE"
1287
+ capacity_scaler = 0.4
1288
+ max_rate_per_instance = 50
1289
+ }
1290
+
1291
+ health_checks = [google_compute_health_check.default.self_link]
1292
+ }
1293
+
1294
+ resource "google_compute_health_check" "default" {
1295
+ name = "%s"
1296
+ check_interval_sec = 1
1297
+ timeout_sec = 1
1298
+
1299
+ tcp_health_check {
1300
+ port = "80"
1301
+ }
1302
+ }
1303
+
1304
+ resource "google_compute_url_map" "default" {
1305
+ name = "%s"
1306
+ description = "a description"
1307
+ default_service = google_compute_backend_service.backend_service.self_link
1308
+
1309
+ host_rule {
1310
+ hosts = ["mysite.com"]
1311
+ path_matcher = "allpaths"
1312
+ }
1313
+
1314
+ path_matcher {
1315
+ name = "allpaths"
1316
+ default_service = google_compute_backend_service.backend_service.self_link
1317
+
1318
+ path_rule {
1319
+ paths = ["/*"]
1320
+ service = google_compute_backend_service.backend_service.self_link
1321
+ }
1322
+ }
1323
+ }
1324
+
1325
+ data "google_compute_image" "debian_image" {
1326
+ family = "debian-9"
1327
+ project = "debian-cloud"
1328
+ }
1329
+
1330
+ resource "google_compute_instance_group_manager" "foobar" {
1331
+ name = "igm-internal"
1332
+ version {
1333
+ instance_template = google_compute_instance_template.foobar.self_link
1334
+ name = "primary"
1335
+ }
1336
+ base_instance_name = "foobar"
1337
+ zone = "us-central1-f"
1338
+ target_size = 1
1339
+ }
1340
+
1341
+ resource "google_compute_instance_template" "foobar" {
1342
+ name = "instance-template-internal"
1343
+ machine_type = "n1-standard-1"
1344
+
1345
+ network_interface {
1346
+ network = "default"
1347
+ }
1348
+
1349
+ disk {
1350
+ source_image = data.google_compute_image.debian_image.self_link
1351
+ auto_delete = true
1352
+ boot = true
1353
+ }
1354
+ }
1355
+ ` , fr , proxy , backend , hc , urlmap )
1356
+ }
1357
+
1358
+ func testAccComputeBackendService_withLogConfig (serviceName , checkName string , sampleRate float64 ) string {
1359
+ return fmt .Sprintf (`
1360
+ resource "google_compute_backend_service" "foobar" {
1361
+ name = "%s"
1362
+ health_checks = [google_compute_http_health_check.zero.self_link]
1363
+
1364
+ log_config {
1365
+ enable = true
1366
+ sample_rate = %v
1367
+ }
1368
+ }
1369
+
1370
+ resource "google_compute_http_health_check" "zero" {
1371
+ name = "%s"
1372
+ request_path = "/"
1373
+ check_interval_sec = 1
1374
+ timeout_sec = 1
1375
+ }
1376
+ ` , serviceName , sampleRate , checkName )
1377
+ }
0 commit comments