Skip to content

Commit

Permalink
Merge pull request #34251 from PatrickRice-KSC/f-add-csv-classifier-s…
Browse files Browse the repository at this point in the history
…erde-support

Add serde support to csv_classifier
  • Loading branch information
johnsonaj committed Dec 28, 2023
2 parents d890de3 + 1966e34 commit 8690dbe
Show file tree
Hide file tree
Showing 3 changed files with 75 additions and 0 deletions.
3 changes: 3 additions & 0 deletions .changelog/34251.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
```release-note:enhancement
resource/aws_glue_classier: Add support for defining `serde` when using `csv_classifier`
```
15 changes: 15 additions & 0 deletions internal/service/glue/classifier.go
Original file line number Diff line number Diff line change
Expand Up @@ -121,6 +121,12 @@ func ResourceClassifier() *schema.Resource {
Type: schema.TypeString,
Optional: true,
},
"serde": {
Type: schema.TypeString,
Optional: true,
Computed: true,
ValidateFunc: validation.StringInSlice(glue.CsvSerdeOption_Values(), false),
},
},
},
},
Expand Down Expand Up @@ -352,6 +358,10 @@ func expandCSVClassifierCreate(name string, m map[string]interface{}) *glue.Crea
csvClassifier.CustomDatatypes = flex.ExpandStringList(v)
}

if v, ok := m["serde"].(string); ok && v != "" {
csvClassifier.Serde = aws.String(v)
}

return csvClassifier
}

Expand Down Expand Up @@ -379,6 +389,10 @@ func expandCSVClassifierUpdate(name string, m map[string]interface{}) *glue.Upda
csvClassifier.CustomDatatypes = flex.ExpandStringList(v)
}

if v, ok := m["serde"].(string); ok && v != "" {
csvClassifier.Serde = aws.String(v)
}

return csvClassifier
}

Expand Down Expand Up @@ -466,6 +480,7 @@ func flattenCSVClassifier(csvClassifier *glue.CsvClassifier) []map[string]interf
"quote_symbol": aws.StringValue(csvClassifier.QuoteSymbol),
"custom_datatype_configured": aws.BoolValue(csvClassifier.CustomDatatypeConfigured),
"custom_datatypes": aws.StringValueSlice(csvClassifier.CustomDatatypes),
"serde": aws.StringValue(csvClassifier.Serde),
}

return []map[string]interface{}{m}
Expand Down
57 changes: 57 additions & 0 deletions internal/service/glue/classifier_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -74,6 +74,46 @@ func TestAccGlueClassifier_csvClassifier(t *testing.T) {
})
}

func TestAccGlueClassifier_csvClassifierCustomSerde(t *testing.T) {
ctx := acctest.Context(t)
var classifier glue.Classifier

rName := sdkacctest.RandomWithPrefix(acctest.ResourcePrefix)
resourceName := "aws_glue_classifier.test"

resource.ParallelTest(t, resource.TestCase{
PreCheck: func() { acctest.PreCheck(ctx, t) },
ErrorCheck: acctest.ErrorCheck(t, glue.EndpointsID),
ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories,
CheckDestroy: testAccCheckClassifierDestroy(ctx),
Steps: []resource.TestStep{
{
Config: testAccClassifierConfig_csvWithSerde(rName, false, "PRESENT", "|", false, "None"),
Check: resource.ComposeTestCheckFunc(
testAccCheckClassifierExists(ctx, resourceName, &classifier),
resource.TestCheckResourceAttr(resourceName, "csv_classifier.#", "1"),
resource.TestCheckResourceAttr(resourceName, "csv_classifier.0.serde", "None"),
resource.TestCheckResourceAttr(resourceName, "name", rName),
),
},
{
Config: testAccClassifierConfig_csvWithSerde(rName, false, "PRESENT", ",", false, "OpenCSVSerDe"),
Check: resource.ComposeTestCheckFunc(
testAccCheckClassifierExists(ctx, resourceName, &classifier),
resource.TestCheckResourceAttr(resourceName, "csv_classifier.#", "1"),
resource.TestCheckResourceAttr(resourceName, "csv_classifier.0.serde", "OpenCSVSerDe"),
resource.TestCheckResourceAttr(resourceName, "name", rName),
),
},
{
ResourceName: resourceName,
ImportState: true,
ImportStateVerify: true,
},
},
})
}

func TestAccGlueClassifier_CSVClassifier_quoteSymbol(t *testing.T) {
ctx := acctest.Context(t)
var classifier glue.Classifier
Expand Down Expand Up @@ -509,6 +549,23 @@ resource "aws_glue_classifier" "test" {
`, rName, allowSingleColumn, containsHeader, delimiter, disableValueTrimming)
}

func testAccClassifierConfig_csvWithSerde(rName string, allowSingleColumn bool, containsHeader string, delimiter string, disableValueTrimming bool, serde string) string {
return fmt.Sprintf(`
resource "aws_glue_classifier" "test" {
name = %[1]q
csv_classifier {
allow_single_column = %[2]t
contains_header = %[3]q
delimiter = %[4]q
disable_value_trimming = %[5]t
serde = %[6]q
header = ["header_column1", "header_column2"]
}
}
`, rName, allowSingleColumn, containsHeader, delimiter, disableValueTrimming, serde)
}

func testAccClassifierConfig_csvQuoteSymbol(rName, symbol string) string {
return fmt.Sprintf(`
resource "aws_glue_classifier" "test" {
Expand Down

0 comments on commit 8690dbe

Please sign in to comment.