diff --git a/mmv1/third_party/terraform/resources/resource_dataflow_flex_template_job.go.erb b/mmv1/third_party/terraform/resources/resource_dataflow_flex_template_job.go.erb index 0a3f79324966..e09f44e26b17 100644 --- a/mmv1/third_party/terraform/resources/resource_dataflow_flex_template_job.go.erb +++ b/mmv1/third_party/terraform/resources/resource_dataflow_flex_template_job.go.erb @@ -59,8 +59,6 @@ func resourceDataflowFlexTemplateJob() *schema.Resource { Type: schema.TypeMap, Optional: true, DiffSuppressFunc: resourceDataflowJobLabelDiffSuppress, - // TODO add support for labels when the API supports it - Deprecated: "Deprecated until the API supports this field", }, "parameters": { @@ -119,6 +117,9 @@ func resourceDataflowFlexTemplateJobCreate(d *schema.ResourceData, meta interfac ContainerSpecGcsPath: d.Get("container_spec_gcs_path").(string), JobName: d.Get("name").(string), Parameters: expandStringMap(d, "parameters"), + Environment: &dataflow.FlexTemplateRuntimeEnvironment{ + AdditionalUserLabels: expandStringMap(d, "labels"), + }, }, } @@ -128,6 +129,13 @@ func resourceDataflowFlexTemplateJobCreate(d *schema.ResourceData, meta interfac } job := response.Job + + //adding wait time for setting all the parameters into state file + err = waitForDataflowJobState(d, config, job.Id, userAgent, d.Timeout(schema.TimeoutUpdate), "JOB_STATE_RUNNING") + if err != nil { + return fmt.Errorf("Error waiting for job with job ID %q to be running: %s", job.Id, err) + } + d.SetId(job.Id) if err := d.Set("job_id", job.Id); err != nil { return fmt.Errorf("Error setting job_id: %s", err) @@ -255,6 +263,9 @@ func resourceDataflowFlexTemplateJobUpdate(d *schema.ResourceData, meta interfac ContainerSpecGcsPath: d.Get("container_spec_gcs_path").(string), JobName: d.Get("name").(string), Parameters: expandStringMap(d, "parameters"), + Environment: &dataflow.FlexTemplateRuntimeEnvironment{ + AdditionalUserLabels: expandStringMap(d, "labels"), + }, Update: true, }, } diff --git a/mmv1/third_party/terraform/tests/resource_dataflow_flex_template_job_test.go.erb b/mmv1/third_party/terraform/tests/resource_dataflow_flex_template_job_test.go.erb index 3212225a1e56..39f26b539b28 100644 --- a/mmv1/third_party/terraform/tests/resource_dataflow_flex_template_job_test.go.erb +++ b/mmv1/third_party/terraform/tests/resource_dataflow_flex_template_job_test.go.erb @@ -104,6 +104,7 @@ func TestAccDataflowFlexTemplateJob_streamUpdateFail(t *testing.T) { }) } + func TestAccDataflowFlexTemplateJob_withServiceAccount(t *testing.T) { // Dataflow responses include serialized java classes and bash commands // This makes body comparison infeasible @@ -210,6 +211,9 @@ resource "google_dataflow_flex_template_job" "job" { qps = "1" %s } + labels = { + "my_labels" = "value" + } } `, job, topicField) } @@ -243,6 +247,9 @@ resource "google_dataflow_flex_template_job" "job" { serviceAccount = google_service_account.dataflow-sa.email zone = "%s" } + labels = { + "my_labels" = "value" + } } `, accountId, job, zone) } diff --git a/mmv1/third_party/terraform/website/docs/r/dataflow_flex_template_job.html.markdown b/mmv1/third_party/terraform/website/docs/r/dataflow_flex_template_job.html.markdown index 49c1db9ea76a..69bde966b1df 100644 --- a/mmv1/third_party/terraform/website/docs/r/dataflow_flex_template_job.html.markdown +++ b/mmv1/third_party/terraform/website/docs/r/dataflow_flex_template_job.html.markdown @@ -95,8 +95,7 @@ such as `serviceAccount`, `workerMachineType`, etc can be specified here. * `labels` - (Optional) User labels to be specified for the job. Keys and values should follow the restrictions specified in the [labeling restrictions](https://cloud.google.com/compute/docs/labeling-resources#restrictions) -page. **Note**: This field is marked as deprecated in Terraform as the API does not currently -support adding labels. +page. **NOTE**: Google-provided Dataflow templates often provide default labels that begin with `goog-dataflow-provided`. Unless explicitly set in config, these labels will be ignored to prevent diffs on re-apply.