Skip to content

Commit 2d0e8f7

Browse files
ian-mizli82016
authored andcommitted
Add service mesh field to Cloud Run v2 Service (GoogleCloudPlatform#11502)
Co-authored-by: Zhenhua Li <[email protected]>
1 parent 7ef5871 commit 2d0e8f7

File tree

3 files changed

+172
-0
lines changed

3 files changed

+172
-0
lines changed

mmv1/products/cloudrunv2/Service.yaml

+22
Original file line numberDiff line numberDiff line change
@@ -160,6 +160,18 @@ examples:
160160
ignore_read_extra:
161161
- 'deletion_protection'
162162

163+
- !ruby/object:Provider::Terraform::Examples
164+
name: 'cloudrunv2_service_mesh'
165+
min_version: 'beta'
166+
external_providers: ['time']
167+
primary_resource_id: 'default'
168+
primary_resource_name: "fmt.Sprintf(\"tf-test-cloudrun-service-%s\", context[\"random_suffix\"])"
169+
vars:
170+
cloud_run_service_name: 'cloudrun-service'
171+
mesh_name: 'network-services-mesh'
172+
ignore_read_extra:
173+
- 'deletion_protection'
174+
163175
parameters:
164176
- !ruby/object:Api::Type::String
165177
name: 'location'
@@ -877,6 +889,16 @@ properties:
877889
name: 'sessionAffinity'
878890
description: |-
879891
Enables session affinity. For more information, go to https://cloud.google.com/run/docs/configuring/session-affinity
892+
- !ruby/object:Api::Type::NestedObject
893+
name: 'serviceMesh'
894+
min_version: beta
895+
description: |-
896+
Enables Cloud Service Mesh for this Revision.
897+
properties:
898+
- !ruby/object:Api::Type::String
899+
name: 'mesh'
900+
description: |-
901+
The Mesh resource name. For more information see https://cloud.google.com/service-mesh/docs/reference/network-services/rest/v1/projects.locations.meshes#resource:-mesh.
880902
- !ruby/object:Api::Type::Array
881903
name: 'traffic'
882904
description: |-
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
resource "google_cloud_run_v2_service" "<%= ctx[:primary_resource_id] %>" {
2+
provider = google-beta
3+
name = "<%= ctx[:vars]['cloud_run_service_name'] %>"
4+
depends_on = [time_sleep.wait_for_mesh]
5+
deletion_protection = false
6+
7+
location = "us-central1"
8+
launch_stage = "BETA"
9+
10+
template {
11+
containers {
12+
image = "us-docker.pkg.dev/cloudrun/container/hello"
13+
}
14+
service_mesh {
15+
mesh = google_network_services_mesh.mesh.id
16+
}
17+
}
18+
}
19+
20+
resource "time_sleep" "wait_for_mesh" {
21+
depends_on = [google_network_services_mesh.mesh]
22+
23+
create_duration = "1m"
24+
}
25+
26+
resource "google_network_services_mesh" "mesh" {
27+
provider = google-beta
28+
name = "<%= ctx[:vars]['mesh_name'] %>"
29+
}

mmv1/third_party/terraform/services/cloudrunv2/resource_cloud_run_v2_service_test.go.erb

+121
Original file line numberDiff line numberDiff line change
@@ -1076,3 +1076,124 @@ resource "google_cloud_run_v2_service" "default" {
10761076
`, context)
10771077
}
10781078
<% end -%>
1079+
1080+
<% unless version == 'ga' -%>
1081+
func TestAccCloudRunV2Service_cloudrunv2ServiceMeshUpdate(t *testing.T) {
1082+
t.Parallel()
1083+
1084+
context := map[string]interface{}{
1085+
"random_suffix": acctest.RandString(t, 10),
1086+
}
1087+
1088+
acctest.VcrTest(t, resource.TestCase{
1089+
PreCheck: func() { acctest.AccTestPreCheck(t) },
1090+
ProtoV5ProviderFactories: acctest.ProtoV5ProviderBetaFactories(t),
1091+
ExternalProviders: map[string]resource.ExternalProvider{
1092+
"time": {},
1093+
},
1094+
CheckDestroy: testAccCheckCloudRunV2ServiceDestroyProducer(t),
1095+
Steps: []resource.TestStep{
1096+
{
1097+
Config: testAccCloudRunV2Service_cloudrunv2ServiceMesh(context),
1098+
},
1099+
{
1100+
ResourceName: "google_cloud_run_v2_service.default",
1101+
ImportState: true,
1102+
ImportStateVerify: true,
1103+
ImportStateVerifyIgnore: []string{"name", "location", "annotations", "labels", "terraform_labels", "launch_stage", "deletion_protection"},
1104+
},
1105+
{
1106+
Config: testAccCloudRunV2Service_cloudrunv2ServiceMeshUpdate(context),
1107+
},
1108+
{
1109+
ResourceName: "google_cloud_run_v2_service.default",
1110+
ImportState: true,
1111+
ImportStateVerify: true,
1112+
ImportStateVerifyIgnore: []string{"name", "location", "annotations", "labels", "terraform_labels", "launch_stage", "deletion_protection"},
1113+
},
1114+
},
1115+
})
1116+
}
1117+
1118+
func testAccCloudRunV2Service_cloudrunv2ServiceMesh(context map[string]interface{}) string {
1119+
return acctest.Nprintf(`
1120+
resource "google_cloud_run_v2_service" "default" {
1121+
provider = google-beta
1122+
name = "tf-test-cloudrun-service%{random_suffix}"
1123+
location = "us-central1"
1124+
deletion_protection = false
1125+
depends_on = [time_sleep.wait_for_mesh]
1126+
launch_stage = "BETA"
1127+
template {
1128+
containers {
1129+
name = "container-1"
1130+
image = "us-docker.pkg.dev/cloudrun/container/hello"
1131+
}
1132+
service_mesh {
1133+
mesh = google_network_services_mesh.mesh.id
1134+
}
1135+
}
1136+
}
1137+
1138+
resource "time_sleep" "wait_for_mesh" {
1139+
depends_on = [
1140+
google_network_services_mesh.mesh,
1141+
google_network_services_mesh.new_mesh,
1142+
]
1143+
1144+
create_duration = "1m"
1145+
}
1146+
1147+
resource "google_network_services_mesh" "mesh" {
1148+
provider = google-beta
1149+
name = "tf-test-mesh%{random_suffix}"
1150+
}
1151+
1152+
resource "google_network_services_mesh" "new_mesh" {
1153+
provider = google-beta
1154+
name = "tf-test-new-mesh%{random_suffix}"
1155+
}
1156+
`, context)
1157+
}
1158+
1159+
func testAccCloudRunV2Service_cloudrunv2ServiceMeshUpdate(context map[string]interface{}) string {
1160+
return acctest.Nprintf(`
1161+
resource "google_cloud_run_v2_service" "default" {
1162+
provider = google-beta
1163+
name = "tf-test-cloudrun-service%{random_suffix}"
1164+
location = "us-central1"
1165+
deletion_protection = false
1166+
depends_on = [time_sleep.wait_for_mesh]
1167+
launch_stage = "BETA"
1168+
template {
1169+
containers {
1170+
name = "container-1"
1171+
image = "us-docker.pkg.dev/cloudrun/container/hello"
1172+
}
1173+
service_mesh {
1174+
mesh = google_network_services_mesh.new_mesh.id
1175+
}
1176+
}
1177+
}
1178+
1179+
resource "time_sleep" "wait_for_mesh" {
1180+
depends_on = [
1181+
google_network_services_mesh.mesh,
1182+
google_network_services_mesh.new_mesh,
1183+
]
1184+
1185+
create_duration = "1m"
1186+
}
1187+
1188+
resource "google_network_services_mesh" "mesh" {
1189+
provider = google-beta
1190+
name = "tf-test-mesh%{random_suffix}"
1191+
}
1192+
1193+
resource "google_network_services_mesh" "new_mesh" {
1194+
provider = google-beta
1195+
name = "tf-test-new-mesh%{random_suffix}"
1196+
}
1197+
`, context)
1198+
}
1199+
<% end -%>

0 commit comments

Comments
 (0)