@@ -75,6 +75,33 @@ func TestAccDataprocWorkflowTemplate_withShieldedVMs(t *testing.T) {
75
75
})
76
76
}
77
77
78
+ func TestAccDataprocWorkflowTemplate_encryptionConfig(t *testing.T) {
79
+ t.Parallel()
80
+
81
+ context := map[string]interface{}{
82
+ "random_suffix": acctest.RandString(t, 10),
83
+ "project": envvar.GetTestProjectFromEnv(),
84
+ "version": "2.0.35-debian10",
85
+ "kms_key_name": acctest.BootstrapKMSKeyWithPurposeInLocationAndName(t, "ENCRYPT_DECRYPT", "us-central1", "tf-bootstrap-dataproc-workflow").CryptoKey.Name,
86
+ }
87
+
88
+ acctest.VcrTest(t, resource.TestCase{
89
+ PreCheck: func() { acctest.AccTestPreCheck(t) },
90
+ ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories(t),
91
+ CheckDestroy: funcAccTestDataprocWorkflowTemplateCheckDestroy(t),
92
+ Steps: []resource.TestStep{
93
+ {
94
+ Config: testAccDataprocWorkflowTemplate_encryptionConfig(context),
95
+ },
96
+ {
97
+ ImportState: true,
98
+ ImportStateVerify: true,
99
+ ResourceName: "google_dataproc_workflow_template.template",
100
+ },
101
+ },
102
+ })
103
+ }
104
+
78
105
func testAccDataprocWorkflowTemplate_basic(context map[string]interface{}) string {
79
106
return acctest.Nprintf(`
80
107
resource "google_dataproc_workflow_template" "template" {
@@ -197,6 +224,73 @@ resource "google_dataproc_workflow_template" "shielded_vms_template" {
197
224
`, context)
198
225
}
199
226
227
+ func testAccDataprocWorkflowTemplate_encryptionConfig(context map[string]interface{}) string {
228
+ return acctest.Nprintf(`
229
+ resource "google_dataproc_workflow_template" "template" {
230
+ name = "template%{random_suffix}"
231
+ location = "us-central1"
232
+ encryption_config {
233
+ kms_key = "%{kms_key_name}"
234
+ }
235
+ placement {
236
+ managed_cluster {
237
+ cluster_name = "my-cluster"
238
+ config {
239
+ gce_cluster_config {
240
+ zone = "us-central1-a"
241
+ tags = ["foo", "bar"]
242
+ }
243
+ master_config {
244
+ num_instances = 1
245
+ machine_type = "n1-standard-1"
246
+ disk_config {
247
+ boot_disk_type = "pd-ssd"
248
+ boot_disk_size_gb = 15
249
+ }
250
+ }
251
+ worker_config {
252
+ num_instances = 3
253
+ machine_type = "n1-standard-2"
254
+ disk_config {
255
+ boot_disk_size_gb = 10
256
+ num_local_ssds = 2
257
+ }
258
+ }
259
+
260
+ secondary_worker_config {
261
+ num_instances = 2
262
+ }
263
+ software_config {
264
+ image_version = "%{version}"
265
+ }
266
+ }
267
+ }
268
+ }
269
+ jobs {
270
+ step_id = "someJob"
271
+ spark_job {
272
+ main_class = "SomeClass"
273
+ }
274
+ }
275
+ jobs {
276
+ step_id = "otherJob"
277
+ prerequisite_step_ids = ["someJob"]
278
+ presto_job {
279
+ query_file_uri = "someuri"
280
+ }
281
+ }
282
+ depends_on =[google_kms_crypto_key_iam_member.crypto_key]
283
+ }
284
+
285
+ data "google_project" "project" {}
286
+ resource "google_kms_crypto_key_iam_member" "crypto_key" {
287
+ crypto_key_id = "%{kms_key_name}"
288
+ role = "roles/cloudkms.cryptoKeyEncrypterDecrypter"
289
+ member = "serviceAccount:service-${data.google_project.project.number}@dataproc-accounts.iam.gserviceaccount.com"
290
+ }
291
+ `, context)
292
+ }
293
+
200
294
func funcAccTestDataprocWorkflowTemplateCheckDestroy(t *testing.T) func(s *terraform.State) error {
201
295
return func(s *terraform.State) error {
202
296
for name, rs := range s.RootModule().Resources {
0 commit comments