Skip to content

Commit 22f1a7b

Browse files
Add custom response headers for backend service (#4223) (#2722)
Signed-off-by: Modular Magician <[email protected]>
1 parent 68fbb3f commit 22f1a7b

File tree

5 files changed

+48
-0
lines changed

5 files changed

+48
-0
lines changed

.changelog/4223.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 `custom_response_headers` field to `google_compute_backend_service` resource
3+
```

google-beta/resource_compute_backend_service.go

Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -491,6 +491,16 @@ requests.`,
491491
},
492492
Set: schema.HashString,
493493
},
494+
"custom_response_headers": {
495+
Type: schema.TypeSet,
496+
Optional: true,
497+
Description: `Headers that the HTTP/S load balancer should add to proxied
498+
responses.`,
499+
Elem: &schema.Schema{
500+
Type: schema.TypeString,
501+
},
502+
Set: schema.HashString,
503+
},
494504
"description": {
495505
Type: schema.TypeString,
496506
Optional: true,
@@ -1003,6 +1013,12 @@ func resourceComputeBackendServiceCreate(d *schema.ResourceData, meta interface{
10031013
} else if v, ok := d.GetOkExists("custom_request_headers"); !isEmptyValue(reflect.ValueOf(customRequestHeadersProp)) && (ok || !reflect.DeepEqual(v, customRequestHeadersProp)) {
10041014
obj["customRequestHeaders"] = customRequestHeadersProp
10051015
}
1016+
customResponseHeadersProp, err := expandComputeBackendServiceCustomResponseHeaders(d.Get("custom_response_headers"), d, config)
1017+
if err != nil {
1018+
return err
1019+
} else if v, ok := d.GetOkExists("custom_response_headers"); !isEmptyValue(reflect.ValueOf(customResponseHeadersProp)) && (ok || !reflect.DeepEqual(v, customResponseHeadersProp)) {
1020+
obj["customResponseHeaders"] = customResponseHeadersProp
1021+
}
10061022
fingerprintProp, err := expandComputeBackendServiceFingerprint(d.Get("fingerprint"), d, config)
10071023
if err != nil {
10081024
return err
@@ -1247,6 +1263,9 @@ func resourceComputeBackendServiceRead(d *schema.ResourceData, meta interface{})
12471263
if err := d.Set("custom_request_headers", flattenComputeBackendServiceCustomRequestHeaders(res["customRequestHeaders"], d, config)); err != nil {
12481264
return fmt.Errorf("Error reading BackendService: %s", err)
12491265
}
1266+
if err := d.Set("custom_response_headers", flattenComputeBackendServiceCustomResponseHeaders(res["customResponseHeaders"], d, config)); err != nil {
1267+
return fmt.Errorf("Error reading BackendService: %s", err)
1268+
}
12501269
if err := d.Set("fingerprint", flattenComputeBackendServiceFingerprint(res["fingerprint"], d, config)); err != nil {
12511270
return fmt.Errorf("Error reading BackendService: %s", err)
12521271
}
@@ -1357,6 +1376,12 @@ func resourceComputeBackendServiceUpdate(d *schema.ResourceData, meta interface{
13571376
} else if v, ok := d.GetOkExists("custom_request_headers"); !isEmptyValue(reflect.ValueOf(v)) && (ok || !reflect.DeepEqual(v, customRequestHeadersProp)) {
13581377
obj["customRequestHeaders"] = customRequestHeadersProp
13591378
}
1379+
customResponseHeadersProp, err := expandComputeBackendServiceCustomResponseHeaders(d.Get("custom_response_headers"), d, config)
1380+
if err != nil {
1381+
return err
1382+
} else if v, ok := d.GetOkExists("custom_response_headers"); !isEmptyValue(reflect.ValueOf(v)) && (ok || !reflect.DeepEqual(v, customResponseHeadersProp)) {
1383+
obj["customResponseHeaders"] = customResponseHeadersProp
1384+
}
13601385
fingerprintProp, err := expandComputeBackendServiceFingerprint(d.Get("fingerprint"), d, config)
13611386
if err != nil {
13621387
return err
@@ -2101,6 +2126,13 @@ func flattenComputeBackendServiceCustomRequestHeaders(v interface{}, d *schema.R
21012126
return schema.NewSet(schema.HashString, v.([]interface{}))
21022127
}
21032128

2129+
func flattenComputeBackendServiceCustomResponseHeaders(v interface{}, d *schema.ResourceData, config *Config) interface{} {
2130+
if v == nil {
2131+
return v
2132+
}
2133+
return schema.NewSet(schema.HashString, v.([]interface{}))
2134+
}
2135+
21042136
func flattenComputeBackendServiceFingerprint(v interface{}, d *schema.ResourceData, config *Config) interface{} {
21052137
return v
21062138
}
@@ -2986,6 +3018,11 @@ func expandComputeBackendServiceCustomRequestHeaders(v interface{}, d TerraformR
29863018
return v, nil
29873019
}
29883020

3021+
func expandComputeBackendServiceCustomResponseHeaders(v interface{}, d TerraformResourceData, config *Config) (interface{}, error) {
3022+
v = v.(*schema.Set).List()
3023+
return v, nil
3024+
}
3025+
29893026
func expandComputeBackendServiceFingerprint(v interface{}, d TerraformResourceData, config *Config) (interface{}, error) {
29903027
return v, nil
29913028
}

google-beta/resource_compute_backend_service_generated_test.go

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -218,6 +218,7 @@ resource "google_compute_backend_service" "default" {
218218
connection_draining_timeout_sec = 10
219219
220220
custom_request_headers = ["host: ${google_compute_global_network_endpoint.proxy.fqdn}"]
221+
custom_response_headers = ["X-Cache-Hit: {cdn_cache_status}"]
221222
222223
backend {
223224
group = google_compute_global_network_endpoint_group.external_proxy.id

google-beta/resource_compute_backend_service_test.go

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1486,6 +1486,7 @@ resource "google_compute_backend_service" "foobar" {
14861486
health_checks = [google_compute_http_health_check.zero.self_link]
14871487
14881488
custom_request_headers = ["Client-Region: {client_region}", "Client-Rtt: {client_rtt_msec}"]
1489+
custom_response_headers = ["X-Cache-Hit: {cdn_cache_status}", "X-Cache-Id: {cdn_cache_id}"]
14891490
}
14901491
14911492
resource "google_compute_http_health_check" "zero" {

website/docs/r/compute_backend_service.html.markdown

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -159,6 +159,7 @@ resource "google_compute_backend_service" "default" {
159159
connection_draining_timeout_sec = 10
160160
161161
custom_request_headers = ["host: ${google_compute_global_network_endpoint.proxy.fqdn}"]
162+
custom_response_headers = ["X-Cache-Hit: {cdn_cache_status}"]
162163
163164
backend {
164165
group = google_compute_global_network_endpoint_group.external_proxy.id
@@ -231,6 +232,11 @@ The following arguments are supported:
231232
Headers that the HTTP/S load balancer should add to proxied
232233
requests.
233234

235+
* `custom_response_headers` -
236+
(Optional)
237+
Headers that the HTTP/S load balancer should add to proxied
238+
responses.
239+
234240
* `description` -
235241
(Optional)
236242
An optional description of this resource.

0 commit comments

Comments
 (0)