Skip to content

Commit d60a8ea

Browse files
Promote region* compute services to GA (#3381) (#6245)
Signed-off-by: Modular Magician <[email protected]>
1 parent 56deea6 commit d60a8ea

29 files changed

+16140
-223
lines changed

.changelog/3381.txt

+15
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
```release-note:new-resource
2+
`google_compute_region_url_map` is now GA
3+
```
4+
```release-note:new-resource
5+
`google_compute_region_target_http_proxy` is now GA
6+
```
7+
```release-note:new-resource
8+
`google_compute_region_target_https_proxy` is now GA
9+
```
10+
```release-note:enhancement
11+
compute: Promoted the following `google_compute_backend_service` fields to GA: `circuit_breakers`, `consistent_hash`, `custom_request_headers`, `locality_lb_policy`, `outlier_detection`
12+
```
13+
```release-note:enhancement
14+
compute: Promoted the following `google_compute_region_backend_service` fields to GA: `affinity_cookie_ttl_sec`,`circuit_breakers`, `consistent_hash`, `failover_policy`, `locality_lb_policy`, `outlier_detection`, `log_config`, `failover`
15+
```

google/provider.go

+5-2
Original file line numberDiff line numberDiff line change
@@ -538,9 +538,9 @@ func Provider() terraform.ResourceProvider {
538538
return provider
539539
}
540540

541-
// Generated resources: 122
541+
// Generated resources: 125
542542
// Generated IAM resources: 51
543-
// Total generated resources: 173
543+
// Total generated resources: 176
544544
func ResourceMap() map[string]*schema.Resource {
545545
resourceMap, _ := ResourceMapWithErrors()
546546
return resourceMap
@@ -613,6 +613,7 @@ func ResourceMapWithErrors() (map[string]*schema.Resource, error) {
613613
"google_compute_node_template": resourceComputeNodeTemplate(),
614614
"google_compute_region_autoscaler": resourceComputeRegionAutoscaler(),
615615
"google_compute_region_disk": resourceComputeRegionDisk(),
616+
"google_compute_region_url_map": resourceComputeRegionUrlMap(),
616617
"google_compute_region_health_check": resourceComputeRegionHealthCheck(),
617618
"google_compute_resource_policy": resourceComputeResourcePolicy(),
618619
"google_compute_route": resourceComputeRoute(),
@@ -630,6 +631,8 @@ func ResourceMapWithErrors() (map[string]*schema.Resource, error) {
630631
"google_compute_subnetwork_iam_policy": ResourceIamPolicy(ComputeSubnetworkIamSchema, ComputeSubnetworkIamUpdaterProducer, ComputeSubnetworkIdParseFunc),
631632
"google_compute_target_http_proxy": resourceComputeTargetHttpProxy(),
632633
"google_compute_target_https_proxy": resourceComputeTargetHttpsProxy(),
634+
"google_compute_region_target_http_proxy": resourceComputeRegionTargetHttpProxy(),
635+
"google_compute_region_target_https_proxy": resourceComputeRegionTargetHttpsProxy(),
633636
"google_compute_target_instance": resourceComputeTargetInstance(),
634637
"google_compute_target_ssl_proxy": resourceComputeTargetSslProxy(),
635638
"google_compute_target_tcp_proxy": resourceComputeTargetTcpProxy(),

google/resource_compute_backend_service.go

+1,509-105
Large diffs are not rendered by default.

google/resource_compute_backend_service_test.go

+312
Original file line numberDiff line numberDiff line change
@@ -497,6 +497,182 @@ func TestAccComputeBackendService_withMaxConnectionsPerEndpoint(t *testing.T) {
497497
})
498498
}
499499

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+
500676
func testAccComputeBackendService_basic(serviceName, checkName string) string {
501677
return fmt.Sprintf(`
502678
resource "google_compute_backend_service" "foobar" {
@@ -1063,3 +1239,139 @@ resource "google_compute_health_check" "default" {
10631239
}
10641240
`, service, maxRate, instance, neg, network, network, check)
10651241
}
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

Comments
 (0)