Skip to content

Commit 1789ea2

Browse files
Add field traffic.tag and traffic.url to Cloud Run (#5772) (#11641)
Signed-off-by: Modular Magician <[email protected]>
1 parent a2f013f commit 1789ea2

File tree

4 files changed

+57
-1
lines changed

4 files changed

+57
-1
lines changed

.changelog/5772.txt

+3
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
```release-note:enhancement
2+
cloudrun: added `traffic.tag` and `traffic.url` fields to `google_cloud_run_service`
3+
```

google/resource_cloud_run_service.go

+44
Original file line numberDiff line numberDiff line change
@@ -612,6 +612,18 @@ false when RevisionName is non-empty.`,
612612
Optional: true,
613613
Description: `RevisionName of a specific revision to which to send this portion of traffic.`,
614614
},
615+
"tag": {
616+
Type: schema.TypeString,
617+
Optional: true,
618+
Description: `Tag is optionally used to expose a dedicated url for referencing this target exclusively.`,
619+
},
620+
"url": {
621+
Type: schema.TypeString,
622+
Computed: true,
623+
Description: `URL displays the URL for accessing tagged traffic targets. URL is displayed in status,
624+
and is disallowed on spec. URL must contain a scheme (e.g. http://) and a hostname,
625+
but may not contain anything else (e.g. basic auth, url path, etc.)`,
626+
},
615627
},
616628
},
617629
},
@@ -1183,7 +1195,9 @@ func flattenCloudRunServiceSpecTraffic(v interface{}, d *schema.ResourceData, co
11831195
transformed = append(transformed, map[string]interface{}{
11841196
"revision_name": flattenCloudRunServiceSpecTrafficRevisionName(original["revisionName"], d, config),
11851197
"percent": flattenCloudRunServiceSpecTrafficPercent(original["percent"], d, config),
1198+
"tag": flattenCloudRunServiceSpecTrafficTag(original["tag"], d, config),
11861199
"latest_revision": flattenCloudRunServiceSpecTrafficLatestRevision(original["latestRevision"], d, config),
1200+
"url": flattenCloudRunServiceSpecTrafficUrl(original["url"], d, config),
11871201
})
11881202
}
11891203
return transformed
@@ -1209,10 +1223,18 @@ func flattenCloudRunServiceSpecTrafficPercent(v interface{}, d *schema.ResourceD
12091223
return v // let terraform core handle it otherwise
12101224
}
12111225

1226+
func flattenCloudRunServiceSpecTrafficTag(v interface{}, d *schema.ResourceData, config *Config) interface{} {
1227+
return v
1228+
}
1229+
12121230
func flattenCloudRunServiceSpecTrafficLatestRevision(v interface{}, d *schema.ResourceData, config *Config) interface{} {
12131231
return v
12141232
}
12151233

1234+
func flattenCloudRunServiceSpecTrafficUrl(v interface{}, d *schema.ResourceData, config *Config) interface{} {
1235+
return v
1236+
}
1237+
12161238
func flattenCloudRunServiceSpecTemplate(v interface{}, d *schema.ResourceData, config *Config) interface{} {
12171239
if v == nil {
12181240
return nil
@@ -1964,13 +1986,27 @@ func expandCloudRunServiceSpecTraffic(v interface{}, d TerraformResourceData, co
19641986
transformed["percent"] = transformedPercent
19651987
}
19661988

1989+
transformedTag, err := expandCloudRunServiceSpecTrafficTag(original["tag"], d, config)
1990+
if err != nil {
1991+
return nil, err
1992+
} else if val := reflect.ValueOf(transformedTag); val.IsValid() && !isEmptyValue(val) {
1993+
transformed["tag"] = transformedTag
1994+
}
1995+
19671996
transformedLatestRevision, err := expandCloudRunServiceSpecTrafficLatestRevision(original["latest_revision"], d, config)
19681997
if err != nil {
19691998
return nil, err
19701999
} else if val := reflect.ValueOf(transformedLatestRevision); val.IsValid() && !isEmptyValue(val) {
19712000
transformed["latestRevision"] = transformedLatestRevision
19722001
}
19732002

2003+
transformedUrl, err := expandCloudRunServiceSpecTrafficUrl(original["url"], d, config)
2004+
if err != nil {
2005+
return nil, err
2006+
} else if val := reflect.ValueOf(transformedUrl); val.IsValid() && !isEmptyValue(val) {
2007+
transformed["url"] = transformedUrl
2008+
}
2009+
19742010
req = append(req, transformed)
19752011
}
19762012
return req, nil
@@ -1984,10 +2020,18 @@ func expandCloudRunServiceSpecTrafficPercent(v interface{}, d TerraformResourceD
19842020
return v, nil
19852021
}
19862022

2023+
func expandCloudRunServiceSpecTrafficTag(v interface{}, d TerraformResourceData, config *Config) (interface{}, error) {
2024+
return v, nil
2025+
}
2026+
19872027
func expandCloudRunServiceSpecTrafficLatestRevision(v interface{}, d TerraformResourceData, config *Config) (interface{}, error) {
19882028
return v, nil
19892029
}
19902030

2031+
func expandCloudRunServiceSpecTrafficUrl(v interface{}, d TerraformResourceData, config *Config) (interface{}, error) {
2032+
return v, nil
2033+
}
2034+
19912035
func expandCloudRunServiceSpecTemplate(v interface{}, d TerraformResourceData, config *Config) (interface{}, error) {
19922036
l := v.([]interface{})
19932037
if len(l) == 0 || l[0] == nil {

google/resource_cloud_run_service_test.go

+1-1
Original file line numberDiff line numberDiff line change
@@ -92,7 +92,6 @@ resource "google_cloud_run_service" "default" {
9292
spec {
9393
containers {
9494
image = "gcr.io/cloudrun/hello"
95-
args = ["arrgs"]
9695
ports {
9796
container_port = 8080
9897
}
@@ -105,6 +104,7 @@ resource "google_cloud_run_service" "default" {
105104
traffic {
106105
percent = 100
107106
latest_revision = true
107+
tag = "magic-module"
108108
}
109109
110110
lifecycle {

website/docs/r/cloud_run_service.html.markdown

+9
Original file line numberDiff line numberDiff line change
@@ -560,13 +560,22 @@ The following arguments are supported:
560560
(Required)
561561
Percent specifies percent of the traffic to this Revision or Configuration.
562562

563+
* `tag` -
564+
(Optional)
565+
Tag is optionally used to expose a dedicated url for referencing this target exclusively.
566+
563567
* `latest_revision` -
564568
(Optional)
565569
LatestRevision may be optionally provided to indicate that the latest ready
566570
Revision of the Configuration should be used for this traffic target. When
567571
provided LatestRevision must be true if RevisionName is empty; it must be
568572
false when RevisionName is non-empty.
569573

574+
* `url` -
575+
URL displays the URL for accessing tagged traffic targets. URL is displayed in status,
576+
and is disallowed on spec. URL must contain a scheme (e.g. http://) and a hostname,
577+
but may not contain anything else (e.g. basic auth, url path, etc.)
578+
570579
<a name="nested_template"></a>The `template` block supports:
571580

572581
* `metadata` -

0 commit comments

Comments
 (0)