@@ -40,7 +40,7 @@ func TestAccAppEngineFlexibleAppVersion_update(t *testing.T) {
40
40
ResourceName : "google_app_engine_flexible_app_version.foo" ,
41
41
ImportState : true ,
42
42
ImportStateVerify : true ,
43
- ImportStateVerifyIgnore : []string {"env_variables" , "deployment" , "entrypoint" , "service" , "noop_on_destroy " },
43
+ ImportStateVerifyIgnore : []string {"env_variables" , "deployment" , "entrypoint" , "service" , "delete_service_on_destroy " },
44
44
},
45
45
},
46
46
})
@@ -55,28 +55,79 @@ resource "google_project" "my_project" {
55
55
billing_account = "%{billing_account}"
56
56
}
57
57
58
- resource "google_app_engine_application" "app" {
59
- project = google_project.my_project.project_id
60
- location_id = "us-central"
58
+ resource "google_project_service" "compute" {
59
+ project = google_project.my_project.project_id
60
+ service = "compute.googleapis.com"
61
+
62
+ disable_dependent_services = false
61
63
}
62
64
63
- resource "google_project_service" "project " {
65
+ resource "google_project_service" "appengineflex " {
64
66
project = google_project.my_project.project_id
65
67
service = "appengineflex.googleapis.com"
66
68
67
69
disable_dependent_services = false
68
70
}
69
71
72
+ resource "google_compute_network" "network" {
73
+ project = google_project_service.compute.project
74
+ name = "custom"
75
+ auto_create_subnetworks = "false"
76
+ }
77
+
78
+ resource "google_compute_subnetwork" "subnetwork" {
79
+ project = google_project_service.compute.project
80
+ name = "custom"
81
+ region = "us-central1"
82
+ network = google_compute_network.network.id
83
+ ip_cidr_range = "10.0.0.0/16"
84
+ private_ip_google_access = true
85
+ }
86
+
87
+ resource "google_app_engine_application" "app" {
88
+ project = google_project.my_project.project_id
89
+ location_id = "us-central"
90
+ }
91
+
70
92
resource "google_project_iam_member" "gae_api" {
71
- project = google_project_service.project .project
93
+ project = google_project_service.appengineflex .project
72
94
role = "roles/compute.networkUser"
73
95
member = "serviceAccount:service-${google_project.my_project.number}@gae-api-prod.google.com.iam.gserviceaccount.com"
74
96
}
75
97
76
- resource "google_app_engine_flexible_app_version " "foo" {
98
+ resource "google_app_engine_standard_app_version " "foo" {
77
99
project = google_project_iam_member.gae_api.project
78
100
version_id = "v1"
79
101
service = "default"
102
+ runtime = "python38"
103
+
104
+ entrypoint {
105
+ shell = "gunicorn -b :$PORT main:app"
106
+ }
107
+
108
+ deployment {
109
+ files {
110
+ name = "main.py"
111
+ source_url = "https://storage.googleapis.com/${google_storage_bucket.bucket.name}/${google_storage_bucket_object.main.name}"
112
+ }
113
+
114
+ files {
115
+ name = "requirements.txt"
116
+ source_url = "https://storage.googleapis.com/${google_storage_bucket.bucket.name}/${google_storage_bucket_object.requirements.name}"
117
+ }
118
+ }
119
+
120
+ env_variables = {
121
+ port = "8000"
122
+ }
123
+
124
+ noop_on_destroy = true
125
+ }
126
+
127
+ resource "google_app_engine_flexible_app_version" "foo" {
128
+ project = google_project_iam_member.gae_api.project
129
+ version_id = "v1"
130
+ service = "custom"
80
131
runtime = "python"
81
132
82
133
runtime_api_version = "1"
@@ -121,8 +172,9 @@ resource "google_app_engine_flexible_app_version" "foo" {
121
172
}
122
173
123
174
network {
124
- name = "default"
125
- subnetwork = "default"
175
+ name = google_compute_network.network.name
176
+ subnetwork = google_compute_subnetwork.subnetwork.name
177
+ instance_ip_mode = "EXTERNAL"
126
178
}
127
179
128
180
instance_class = "B1"
@@ -132,6 +184,8 @@ resource "google_app_engine_flexible_app_version" "foo" {
132
184
}
133
185
134
186
noop_on_destroy = true
187
+
188
+ depends_on = [google_app_engine_standard_app_version.foo]
135
189
}
136
190
137
191
resource "google_storage_bucket" "bucket" {
@@ -168,28 +222,79 @@ resource "google_project" "my_project" {
168
222
billing_account = "%{billing_account}"
169
223
}
170
224
171
- resource "google_app_engine_application" "app" {
172
- project = google_project.my_project.project_id
173
- location_id = "us-central"
225
+ resource "google_project_service" "compute" {
226
+ project = google_project.my_project.project_id
227
+ service = "compute.googleapis.com"
228
+
229
+ disable_dependent_services = false
174
230
}
175
231
176
- resource "google_project_service" "project " {
232
+ resource "google_project_service" "appengineflex " {
177
233
project = google_project.my_project.project_id
178
234
service = "appengineflex.googleapis.com"
179
235
180
236
disable_dependent_services = false
181
237
}
182
238
239
+ resource "google_compute_network" "network" {
240
+ project = google_project_service.compute.project
241
+ name = "custom"
242
+ auto_create_subnetworks = "false"
243
+ }
244
+
245
+ resource "google_compute_subnetwork" "subnetwork" {
246
+ project = google_project_service.compute.project
247
+ name = "custom"
248
+ region = "us-central1"
249
+ network = google_compute_network.network.id
250
+ ip_cidr_range = "10.0.0.0/16"
251
+ private_ip_google_access = true
252
+ }
253
+
254
+ resource "google_app_engine_application" "app" {
255
+ project = google_project.my_project.project_id
256
+ location_id = "us-central"
257
+ }
258
+
183
259
resource "google_project_iam_member" "gae_api" {
184
- project = google_project_service.project .project
260
+ project = google_project_service.appengineflex .project
185
261
role = "roles/compute.networkUser"
186
262
member = "serviceAccount:service-${google_project.my_project.number}@gae-api-prod.google.com.iam.gserviceaccount.com"
187
263
}
188
264
189
- resource "google_app_engine_flexible_app_version " "foo" {
265
+ resource "google_app_engine_standard_app_version " "foo" {
190
266
project = google_project_iam_member.gae_api.project
191
267
version_id = "v1"
192
268
service = "default"
269
+ runtime = "python38"
270
+
271
+ entrypoint {
272
+ shell = "gunicorn -b :$PORT main:app"
273
+ }
274
+
275
+ deployment {
276
+ files {
277
+ name = "main.py"
278
+ source_url = "https://storage.googleapis.com/${google_storage_bucket.bucket.name}/${google_storage_bucket_object.main.name}"
279
+ }
280
+
281
+ files {
282
+ name = "requirements.txt"
283
+ source_url = "https://storage.googleapis.com/${google_storage_bucket.bucket.name}/${google_storage_bucket_object.requirements.name}"
284
+ }
285
+ }
286
+
287
+ env_variables = {
288
+ port = "8000"
289
+ }
290
+
291
+ noop_on_destroy = true
292
+ }
293
+
294
+ resource "google_app_engine_flexible_app_version" "foo" {
295
+ project = google_project_iam_member.gae_api.project
296
+ version_id = "v1"
297
+ service = "custom"
193
298
runtime = "python"
194
299
195
300
runtime_api_version = "1"
@@ -234,8 +339,9 @@ resource "google_app_engine_flexible_app_version" "foo" {
234
339
}
235
340
236
341
network {
237
- name = "default"
238
- subnetwork = "default"
342
+ name = google_compute_network.network.name
343
+ subnetwork = google_compute_subnetwork.subnetwork.name
344
+ instance_ip_mode = "INTERNAL"
239
345
}
240
346
241
347
instance_class = "B2"
@@ -244,7 +350,9 @@ resource "google_app_engine_flexible_app_version" "foo" {
244
350
instances = 2
245
351
}
246
352
247
- noop_on_destroy = true
353
+ delete_service_on_destroy = true
354
+
355
+ depends_on = [google_app_engine_standard_app_version.foo]
248
356
}
249
357
250
358
resource "google_storage_bucket" "bucket" {
0 commit comments