Skip to content

Commit b3dfa72

Browse files
Add Optional Log Fields to google_cloud_region_backend_service (#13094) (#9484)
[upstream:8fd38b9c83232bbb96b24cc07c6473a7b5c7691d] Signed-off-by: Modular Magician <[email protected]>
1 parent 9b965b4 commit b3dfa72

File tree

5 files changed

+158
-2
lines changed

5 files changed

+158
-2
lines changed

.changelog/13094.txt

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
```release-note:enhancement
2+
compute: added `log_config.optional_mode` and `log_config.optional_fields` fields to `google_compute_region_backend_service` resource
3+
```

google-beta/services/compute/resource_compute_region_backend_service.go

Lines changed: 54 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -811,7 +811,25 @@ If logging is enabled, logs will be exported to Stackdriver.`,
811811
Type: schema.TypeBool,
812812
Optional: true,
813813
Description: `Whether to enable logging for the load balancer traffic served by this backend service.`,
814-
AtLeastOneOf: []string{"log_config.0.enable", "log_config.0.sample_rate"},
814+
AtLeastOneOf: []string{"log_config.0.enable", "log_config.0.sample_rate", "log_config.0.optional_mode"},
815+
},
816+
"optional_fields": {
817+
Type: schema.TypeList,
818+
Computed: true,
819+
Optional: true,
820+
Description: `Specifies the fields to include in logging. This field can only be specified if logging is enabled for this backend service.`,
821+
Elem: &schema.Schema{
822+
Type: schema.TypeString,
823+
},
824+
},
825+
"optional_mode": {
826+
Type: schema.TypeString,
827+
Computed: true,
828+
Optional: true,
829+
ValidateFunc: verify.ValidateEnum([]string{"INCLUDE_ALL_OPTIONAL", "EXCLUDE_ALL_OPTIONAL", "CUSTOM", ""}),
830+
Description: `Specifies the optional logging mode for the load balancer traffic.
831+
Supported values: INCLUDE_ALL_OPTIONAL, EXCLUDE_ALL_OPTIONAL, CUSTOM. Possible values: ["INCLUDE_ALL_OPTIONAL", "EXCLUDE_ALL_OPTIONAL", "CUSTOM"]`,
832+
AtLeastOneOf: []string{"log_config.0.enable", "log_config.0.sample_rate", "log_config.0.optional_mode"},
815833
},
816834
"sample_rate": {
817835
Type: schema.TypeFloat,
@@ -822,7 +840,7 @@ the field must be in [0, 1]. This configures the sampling rate of requests to th
822840
where 1.0 means all logged requests are reported and 0.0 means no logged requests are reported.
823841
The default value is 1.0.`,
824842
Default: 1.0,
825-
AtLeastOneOf: []string{"log_config.0.enable", "log_config.0.sample_rate"},
843+
AtLeastOneOf: []string{"log_config.0.enable", "log_config.0.sample_rate", "log_config.0.optional_mode"},
826844
},
827845
},
828846
},
@@ -3408,6 +3426,10 @@ func flattenComputeRegionBackendServiceLogConfig(v interface{}, d *schema.Resour
34083426
flattenComputeRegionBackendServiceLogConfigEnable(original["enable"], d, config)
34093427
transformed["sample_rate"] =
34103428
flattenComputeRegionBackendServiceLogConfigSampleRate(original["sampleRate"], d, config)
3429+
transformed["optional_mode"] =
3430+
flattenComputeRegionBackendServiceLogConfigOptionalMode(original["optionalMode"], d, config)
3431+
transformed["optional_fields"] =
3432+
flattenComputeRegionBackendServiceLogConfigOptionalFields(original["optionalFields"], d, config)
34113433
return []interface{}{transformed}
34123434
}
34133435
func flattenComputeRegionBackendServiceLogConfigEnable(v interface{}, d *schema.ResourceData, config *transport_tpg.Config) interface{} {
@@ -3418,6 +3440,14 @@ func flattenComputeRegionBackendServiceLogConfigSampleRate(v interface{}, d *sch
34183440
return v
34193441
}
34203442

3443+
func flattenComputeRegionBackendServiceLogConfigOptionalMode(v interface{}, d *schema.ResourceData, config *transport_tpg.Config) interface{} {
3444+
return v
3445+
}
3446+
3447+
func flattenComputeRegionBackendServiceLogConfigOptionalFields(v interface{}, d *schema.ResourceData, config *transport_tpg.Config) interface{} {
3448+
return v
3449+
}
3450+
34213451
func flattenComputeRegionBackendServiceNetwork(v interface{}, d *schema.ResourceData, config *transport_tpg.Config) interface{} {
34223452
if v == nil {
34233453
return v
@@ -4654,6 +4684,20 @@ func expandComputeRegionBackendServiceLogConfig(v interface{}, d tpgresource.Ter
46544684
transformed["sampleRate"] = transformedSampleRate
46554685
}
46564686

4687+
transformedOptionalMode, err := expandComputeRegionBackendServiceLogConfigOptionalMode(original["optional_mode"], d, config)
4688+
if err != nil {
4689+
return nil, err
4690+
} else if val := reflect.ValueOf(transformedOptionalMode); val.IsValid() && !tpgresource.IsEmptyValue(val) {
4691+
transformed["optionalMode"] = transformedOptionalMode
4692+
}
4693+
4694+
transformedOptionalFields, err := expandComputeRegionBackendServiceLogConfigOptionalFields(original["optional_fields"], d, config)
4695+
if err != nil {
4696+
return nil, err
4697+
} else if val := reflect.ValueOf(transformedOptionalFields); val.IsValid() && !tpgresource.IsEmptyValue(val) {
4698+
transformed["optionalFields"] = transformedOptionalFields
4699+
}
4700+
46574701
return transformed, nil
46584702
}
46594703

@@ -4665,6 +4709,14 @@ func expandComputeRegionBackendServiceLogConfigSampleRate(v interface{}, d tpgre
46654709
return v, nil
46664710
}
46674711

4712+
func expandComputeRegionBackendServiceLogConfigOptionalMode(v interface{}, d tpgresource.TerraformResourceData, config *transport_tpg.Config) (interface{}, error) {
4713+
return v, nil
4714+
}
4715+
4716+
func expandComputeRegionBackendServiceLogConfigOptionalFields(v interface{}, d tpgresource.TerraformResourceData, config *transport_tpg.Config) (interface{}, error) {
4717+
return v, nil
4718+
}
4719+
46684720
func expandComputeRegionBackendServiceNetwork(v interface{}, d tpgresource.TerraformResourceData, config *transport_tpg.Config) (interface{}, error) {
46694721
f, err := tpgresource.ParseGlobalFieldValue("networks", v.(string), "project", d, config, true)
46704722
if err != nil {

google-beta/services/compute/resource_compute_region_backend_service_generated_meta.yaml

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -90,6 +90,8 @@ fields:
9090
- field: 'load_balancing_scheme'
9191
- field: 'locality_lb_policy'
9292
- field: 'log_config.enable'
93+
- field: 'log_config.optional_fields'
94+
- field: 'log_config.optional_mode'
9395
- field: 'log_config.sample_rate'
9496
- field: 'name'
9597
- field: 'network'

google-beta/services/compute/resource_compute_region_backend_service_test.go

Lines changed: 89 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -388,6 +388,37 @@ func TestAccComputeRegionBackendService_subsettingUpdate(t *testing.T) {
388388
})
389389
}
390390

391+
func TestAccComputeRegionBackendService_withLogConfig(t *testing.T) {
392+
t.Parallel()
393+
394+
serviceName := fmt.Sprintf("tf-test-%s", acctest.RandString(t, 10))
395+
checkName := fmt.Sprintf("tf-test-%s", acctest.RandString(t, 10))
396+
397+
acctest.VcrTest(t, resource.TestCase{
398+
PreCheck: func() { acctest.AccTestPreCheck(t) },
399+
ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories(t),
400+
CheckDestroy: testAccCheckComputeRegionBackendServiceDestroyProducer(t),
401+
Steps: []resource.TestStep{
402+
{
403+
Config: testAccComputeRegionBackendService_withLogConfig(serviceName, checkName),
404+
},
405+
{
406+
ResourceName: "google_compute_region_backend_service.foobar",
407+
ImportState: true,
408+
ImportStateVerify: true,
409+
},
410+
{
411+
Config: testAccComputeRegionBackendService_withLogConfigDisabled(serviceName, checkName),
412+
},
413+
{
414+
ResourceName: "google_compute_region_backend_service.foobar",
415+
ImportState: true,
416+
ImportStateVerify: true,
417+
},
418+
},
419+
})
420+
}
421+
391422
func testAccComputeRegionBackendService_ilbBasic_withUnspecifiedProtocol(serviceName, checkName string) string {
392423
return fmt.Sprintf(`
393424
resource "google_compute_region_backend_service" "foobar" {
@@ -1209,3 +1240,61 @@ resource "google_compute_region_security_policy" "policy" {
12091240
}
12101241
`, serviceName, polLink, polName)
12111242
}
1243+
1244+
func testAccComputeRegionBackendService_withLogConfig(serviceName, checkName string) string {
1245+
return fmt.Sprintf(`
1246+
resource "google_compute_region_backend_service" "foobar" {
1247+
name = "%s"
1248+
region = "us-central1"
1249+
health_checks = [google_compute_region_health_check.health_check.self_link]
1250+
protocol = "HTTP"
1251+
load_balancing_scheme = "INTERNAL_MANAGED"
1252+
locality_lb_policy = "ROUND_ROBIN"
1253+
1254+
log_config {
1255+
enable = true
1256+
sample_rate = 1.0
1257+
optional_mode = "INCLUDE_ALL_OPTIONAL"
1258+
}
1259+
}
1260+
1261+
resource "google_compute_region_health_check" "health_check" {
1262+
name = "%s"
1263+
region = "us-central1"
1264+
check_interval_sec = 1
1265+
timeout_sec = 1
1266+
1267+
http_health_check {
1268+
port = 80
1269+
}
1270+
}
1271+
`, serviceName, checkName)
1272+
}
1273+
1274+
func testAccComputeRegionBackendService_withLogConfigDisabled(serviceName, checkName string) string {
1275+
return fmt.Sprintf(`
1276+
resource "google_compute_region_backend_service" "foobar" {
1277+
name = "%s"
1278+
region = "us-central1"
1279+
health_checks = [google_compute_region_health_check.health_check.self_link]
1280+
protocol = "HTTP"
1281+
load_balancing_scheme = "INTERNAL_MANAGED"
1282+
locality_lb_policy = "ROUND_ROBIN"
1283+
1284+
log_config {
1285+
enable = false
1286+
}
1287+
}
1288+
1289+
resource "google_compute_region_health_check" "health_check" {
1290+
name = "%s"
1291+
region = "us-central1"
1292+
check_interval_sec = 1
1293+
timeout_sec = 1
1294+
1295+
http_health_check {
1296+
port = 80
1297+
}
1298+
}
1299+
`, serviceName, checkName)
1300+
}

website/docs/r/compute_region_backend_service.html.markdown

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1334,6 +1334,16 @@ The following arguments are supported:
13341334
where 1.0 means all logged requests are reported and 0.0 means no logged requests are reported.
13351335
The default value is 1.0.
13361336

1337+
* `optional_mode` -
1338+
(Optional)
1339+
Specifies the optional logging mode for the load balancer traffic.
1340+
Supported values: INCLUDE_ALL_OPTIONAL, EXCLUDE_ALL_OPTIONAL, CUSTOM.
1341+
Possible values are: `INCLUDE_ALL_OPTIONAL`, `EXCLUDE_ALL_OPTIONAL`, `CUSTOM`.
1342+
1343+
* `optional_fields` -
1344+
(Optional)
1345+
Specifies the fields to include in logging. This field can only be specified if logging is enabled for this backend service.
1346+
13371347
<a name="nested_subsetting"></a>The `subsetting` block supports:
13381348

13391349
* `policy` -

0 commit comments

Comments
 (0)