From cb8453ff542feefa25ce51d51bc068197e8000f0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Nils=20Sj=C3=B6gren?= Date: Wed, 25 Sep 2019 09:40:28 +0200 Subject: [PATCH] Add support for glue version on aws_glue_job Fixes #9524 --- aws/resource_aws_glue_job.go | 13 ++++++++ aws/resource_aws_glue_job_test.go | 53 +++++++++++++++++++++++++++++++ 2 files changed, 66 insertions(+) diff --git a/aws/resource_aws_glue_job.go b/aws/resource_aws_glue_job.go index 79676588819..5c9b111aef4 100644 --- a/aws/resource_aws_glue_job.go +++ b/aws/resource_aws_glue_job.go @@ -66,6 +66,10 @@ func resourceAwsGlueJob() *schema.Resource { Type: schema.TypeString, Optional: true, }, + "glue_version": { + Type: schema.TypeString, + Optional: true, + }, "execution_property": { Type: schema.TypeList, Optional: true, @@ -155,6 +159,10 @@ func resourceAwsGlueJobCreate(d *schema.ResourceData, meta interface{}) error { input.Description = aws.String(v.(string)) } + if v, ok := d.GetOk("glue_version"); ok { + input.GlueVersion = aws.String(v.(string)) + } + if v, ok := d.GetOk("execution_property"); ok { input.ExecutionProperty = expandGlueExecutionProperty(v.([]interface{})) } @@ -213,6 +221,7 @@ func resourceAwsGlueJobRead(d *schema.ResourceData, meta interface{}) error { return fmt.Errorf("error setting default_arguments: %s", err) } d.Set("description", job.Description) + d.Set("glue_version", job.GlueVersion) if err := d.Set("execution_property", flattenGlueExecutionProperty(job.ExecutionProperty)); err != nil { return fmt.Errorf("error setting execution_property: %s", err) } @@ -267,6 +276,10 @@ func resourceAwsGlueJobUpdate(d *schema.ResourceData, meta interface{}) error { jobUpdate.Description = aws.String(v.(string)) } + if v, ok := d.GetOk("glue_version"); ok { + jobUpdate.GlueVersion = aws.String(v.(string)) + } + if v, ok := d.GetOk("execution_property"); ok { jobUpdate.ExecutionProperty = expandGlueExecutionProperty(v.([]interface{})) } diff --git a/aws/resource_aws_glue_job_test.go b/aws/resource_aws_glue_job_test.go index b9aedb3b160..b5d4d6a56c8 100644 --- a/aws/resource_aws_glue_job_test.go +++ b/aws/resource_aws_glue_job_test.go @@ -233,6 +233,40 @@ func TestAccAWSGlueJob_Description(t *testing.T) { }) } +func TestAccAWSGlueJob_GlueVersion(t *testing.T) { + var job glue.Job + + rName := fmt.Sprintf("tf-acc-test-%s", acctest.RandString(5)) + resourceName := "aws_glue_job.test" + + resource.ParallelTest(t, resource.TestCase{ + PreCheck: func() { testAccPreCheck(t) }, + Providers: testAccProviders, + CheckDestroy: testAccCheckAWSGlueJobDestroy, + Steps: []resource.TestStep{ + { + Config: testAccAWSGlueJobConfig_GlueVersion(rName, "0.9"), + Check: resource.ComposeTestCheckFunc( + testAccCheckAWSGlueJobExists(resourceName, &job), + resource.TestCheckResourceAttr(resourceName, "glue_version", "0.9"), + ), + }, + { + Config: testAccAWSGlueJobConfig_GlueVersion(rName, "1.0"), + Check: resource.ComposeTestCheckFunc( + testAccCheckAWSGlueJobExists(resourceName, &job), + resource.TestCheckResourceAttr(resourceName, "glue_version", "1.0"), + ), + }, + { + ResourceName: resourceName, + ImportState: true, + ImportStateVerify: true, + }, + }, + }) +} + func TestAccAWSGlueJob_ExecutionProperty(t *testing.T) { var job glue.Job @@ -645,6 +679,25 @@ resource "aws_glue_job" "test" { `, testAccAWSGlueJobConfig_Base(rName), description, rName) } +func testAccAWSGlueJobConfig_GlueVersion(rName, glueVersion string) string { + return fmt.Sprintf(` +%s + +resource "aws_glue_job" "test" { + glue_version = "%s" + name = "%s" + role_arn = "${aws_iam_role.test.arn}" + allocated_capacity = 10 + + command { + script_location = "testscriptlocation" + } + + depends_on = ["aws_iam_role_policy_attachment.test"] +} +`, testAccAWSGlueJobConfig_Base(rName), glueVersion, rName) +} + func testAccAWSGlueJobConfig_ExecutionProperty(rName string, maxConcurrentRuns int) string { return fmt.Sprintf(` %s