Skip to content

Commit

Permalink
Merge pull request #33931 from jackarmorgie/b-quicksight-dashboard-va…
Browse files Browse the repository at this point in the history
…rious

r/aws_quicksight_dashboard: various bug fixes
  • Loading branch information
jar-b committed Nov 14, 2023
2 parents 39579f0 + 4c3b3ea commit f033319
Show file tree
Hide file tree
Showing 17 changed files with 431 additions and 54 deletions.
93 changes: 93 additions & 0 deletions .changelog/33931.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,93 @@
```release-note:bug
resource/aws_quicksight_analysis: Nested `column_index` and `row_index` arguments now properly handle zero values
```
```release-note:bug
resource/aws_quicksight_dashboard: Nested `column_index` and `row_index` arguments now properly handle zero values
```
```release-note:bug
resource/aws_quicksight_template: Nested `column_index` and `row_index` arguments now properly handle zero values
```

```release-note:bug
resource/aws_quicksight_analysis: Fix handling of the nested `rolling_date` argument
```
```release-note:bug
resource/aws_quicksight_dashboard: Fix handling of the nested `rolling_date` argument
```
```release-note:bug
resource/aws_quicksight_template: Fix handling of the nested `rolling_date` argument
```

```release-note:bug
resource/aws_quicksight_analysis: Fix handling of the nested `select_all_options` argument
```
```release-note:bug
resource/aws_quicksight_dashboard: Fix handling of the nested `select_all_options` argument
```
```release-note:bug
resource/aws_quicksight_template: Fix handling of the nested `select_all_options` argument
```

```release-note:bug
resource/aws_quicksight_analysis: Fix handling of the nested `visual_ids` argument
```
```release-note:bug
resource/aws_quicksight_dashboard: Fix handling of the nested `visual_ids` argument
```
```release-note:bug
resource/aws_quicksight_template: Fix handling of the nested `visual_ids` argument
```

```release-note:bug
resource/aws_quicksight_analysis: Fixes to various optional blocks utilizing the shared column schema definition
```
```release-note:bug
resource/aws_quicksight_dashboard: Fixes to various optional blocks utilizing the shared column schema definition
```
```release-note:bug
resource/aws_quicksight_template: Fixes to various optional blocks utilizing the shared column schema definition
```

```release-note:bug
resource/aws_quicksight_analysis: Fix handling of the nested `number_scale`, `prefix`, and `suffix` integer arguments
```
```release-note:bug
resource/aws_quicksight_dashboard: Fix handling of the nested `number_scale`, `prefix`, and `suffix` integer arguments
```
```release-note:bug
resource/aws_quicksight_template: Fix handling of the nested `number_scale`, `prefix`, and `suffix` integer arguments
```

```release-note:enhancement
resource/aws_quicksight_analysis: Add `number_display_format_configuration` and `percentage_display_format_configuration` to nested `numeric_format_configuration` argument
```
```release-note:enhancement
resource/aws_quicksight_dashboard: Add `number_display_format_configuration` and `percentage_display_format_configuration` to nested `numeric_format_configuration` argument
```
```release-note:enhancement
resource/aws_quicksight_template: Add `number_display_format_configuration` and `percentage_display_format_configuration` to nested `numeric_format_configuration` argument
```

```release-note:enhancement
resource/aws_quicksight_analysis: Add `definition.sheets.visuals.kpi_visual.chart_configuration.kpi_options.sparkline` attribute
```
```release-note:enhancement
resource/aws_quicksight_dashboard: Add `definition.sheets.visuals.kpi_visual.chart_configuration.kpi_options.sparkline` attribute
```
```release-note:enhancement
resource/aws_quicksight_template: Add `definition.sheets.visuals.kpi_visual.chart_configuration.kpi_options.sparkline` attribute
```

```release-note:enhancement
resource/aws_quicksight_analysis: Add `definition.sheets.visuals.kpi_visual.chart_configuration.kpi_options.visual_layout_options` attribute
```
```release-note:enhancement
resource/aws_quicksight_dashboard: Add `definition.sheets.visuals.kpi_visual.chart_configuration.kpi_options.visual_layout_options` attribute
```
```release-note:enhancement
resource/aws_quicksight_template: Add `definition.sheets.visuals.kpi_visual.chart_configuration.kpi_options.visual_layout_options` attribute
```

```release-note:bug
resource/aws_quicksight_data_set: Increase `permissions.actions` maximum item limit to 20, aligning with the AWS API limits
```
2 changes: 1 addition & 1 deletion internal/service/quicksight/data_set.go
Original file line number Diff line number Diff line change
Expand Up @@ -209,7 +209,7 @@ func ResourceDataSet() *schema.Resource {
Type: schema.TypeSet,
Required: true,
MinItems: 1,
MaxItems: 16,
MaxItems: 20,
Elem: &schema.Schema{Type: schema.TypeString},
},
"principal": {
Expand Down
2 changes: 1 addition & 1 deletion internal/service/quicksight/schema/analysis.go
Original file line number Diff line number Diff line change
Expand Up @@ -33,7 +33,7 @@ func AnalysisDefinitionSchema() *schema.Schema {
Optional: true,
Elem: &schema.Resource{
Schema: map[string]*schema.Schema{
"column": columnSchema(), // https://docs.aws.amazon.com/quicksight/latest/APIReference/API_ColumnIdentifier.html
"column": columnSchema(true), // https://docs.aws.amazon.com/quicksight/latest/APIReference/API_ColumnIdentifier.html
"format_configuration": formatConfigurationSchema(), // https://docs.aws.amazon.com/quicksight/latest/APIReference/API_FormatConfiguration.html
"role": stringSchema(false, validation.StringInSlice(quicksight.ColumnRole_Values(), false)),
},
Expand Down
2 changes: 1 addition & 1 deletion internal/service/quicksight/schema/dashboard.go
Original file line number Diff line number Diff line change
Expand Up @@ -33,7 +33,7 @@ func DashboardDefinitionSchema() *schema.Schema {
Optional: true,
Elem: &schema.Resource{
Schema: map[string]*schema.Schema{
"column": columnSchema(), // https://docs.aws.amazon.com/quicksight/latest/APIReference/API_ColumnIdentifier.html
"column": columnSchema(true), // https://docs.aws.amazon.com/quicksight/latest/APIReference/API_ColumnIdentifier.html
"format_configuration": formatConfigurationSchema(), // https://docs.aws.amazon.com/quicksight/latest/APIReference/API_FormatConfiguration.html
"role": stringSchema(false, validation.StringInSlice(quicksight.ColumnRole_Values(), false)),
},
Expand Down
9 changes: 5 additions & 4 deletions internal/service/quicksight/schema/template.go
Original file line number Diff line number Diff line change
Expand Up @@ -34,7 +34,7 @@ func TemplateDefinitionSchema() *schema.Schema {
Optional: true,
Elem: &schema.Resource{
Schema: map[string]*schema.Schema{
"column": columnSchema(), // https://docs.aws.amazon.com/quicksight/latest/APIReference/API_ColumnIdentifier.html
"column": columnSchema(true), // https://docs.aws.amazon.com/quicksight/latest/APIReference/API_ColumnIdentifier.html
"format_configuration": formatConfigurationSchema(), // https://docs.aws.amazon.com/quicksight/latest/APIReference/API_FormatConfiguration.html
"role": stringSchema(false, validation.StringInSlice(quicksight.ColumnRole_Values(), false)),
},
Expand Down Expand Up @@ -221,12 +221,13 @@ func idSchema() *schema.Schema {
}
}

func columnSchema() *schema.Schema {
func columnSchema(required bool) *schema.Schema {
return &schema.Schema{ // https://docs.aws.amazon.com/quicksight/latest/APIReference/API_ColumnIdentifier.html
Type: schema.TypeList,
MinItems: 1,
MaxItems: 1,
Required: true,
Required: required,
Optional: !required,
Elem: &schema.Resource{
Schema: map[string]*schema.Schema{
"column_name": stringSchema(true, validation.StringLenBetween(1, 128)),
Expand Down Expand Up @@ -945,7 +946,7 @@ func expandRollingDateConfiguration(tfList []interface{}) *quicksight.RollingDat

config := &quicksight.RollingDateConfiguration{}

if v, ok := tfMap["data_set_identifier"].(string); ok {
if v, ok := tfMap["data_set_identifier"].(string); ok && v != "" {
config.DataSetIdentifier = aws.String(v)
}
if v, ok := tfMap["expression"].(string); ok {
Expand Down
2 changes: 1 addition & 1 deletion internal/service/quicksight/schema/template_control.go
Original file line number Diff line number Diff line change
Expand Up @@ -254,7 +254,7 @@ func cascadingControlConfigurationSchema() *schema.Schema {
MaxItems: 200,
Elem: &schema.Resource{
Schema: map[string]*schema.Schema{
"column_to_match": columnSchema(), // https://docs.aws.amazon.com/quicksight/latest/APIReference/API_ColumnIdentifier.html
"column_to_match": columnSchema(true), // https://docs.aws.amazon.com/quicksight/latest/APIReference/API_ColumnIdentifier.html
"source_sheet_control_id": {
Type: schema.TypeString,
Optional: true,
Expand Down
30 changes: 15 additions & 15 deletions internal/service/quicksight/schema/template_filter.go
Original file line number Diff line number Diff line change
Expand Up @@ -43,7 +43,7 @@ func categoryFilterSchema() *schema.Schema {
MaxItems: 1,
Elem: &schema.Resource{
Schema: map[string]*schema.Schema{
"column": columnSchema(), // https://docs.aws.amazon.com/quicksight/latest/APIReference/API_ColumnIdentifier.html
"column": columnSchema(true), // https://docs.aws.amazon.com/quicksight/latest/APIReference/API_ColumnIdentifier.html
"configuration": { // https://docs.aws.amazon.com/quicksight/latest/APIReference/API_CategoryFilterConfiguration.html
Type: schema.TypeList,
Required: true,
Expand Down Expand Up @@ -139,7 +139,7 @@ func numericEqualityFilterSchema() *schema.Schema {
MaxItems: 1,
Elem: &schema.Resource{
Schema: map[string]*schema.Schema{
"column": columnSchema(), // https://docs.aws.amazon.com/quicksight/latest/APIReference/API_ColumnIdentifier.html
"column": columnSchema(true), // https://docs.aws.amazon.com/quicksight/latest/APIReference/API_ColumnIdentifier.html
"filter_id": idSchema(),
"match_operator": stringSchema(true, validation.StringInSlice(quicksight.CategoryFilterMatchOperator_Values(), false)),
"null_option": stringSchema(true, validation.StringInSlice(quicksight.FilterNullOption_Values(), false)),
Expand All @@ -163,7 +163,7 @@ func numericRangeFilterSchema() *schema.Schema {
MaxItems: 1,
Elem: &schema.Resource{
Schema: map[string]*schema.Schema{
"column": columnSchema(), // https://docs.aws.amazon.com/quicksight/latest/APIReference/API_ColumnIdentifier.html
"column": columnSchema(true), // https://docs.aws.amazon.com/quicksight/latest/APIReference/API_ColumnIdentifier.html
"filter_id": idSchema(),
"null_option": stringSchema(true, validation.StringInSlice(quicksight.FilterNullOption_Values(), false)),
"aggregation_function": aggregationFunctionSchema(false), // https://docs.aws.amazon.com/quicksight/latest/APIReference/API_AggregationFunction.html
Expand Down Expand Up @@ -203,7 +203,7 @@ func relativeDatesFilterSchema() *schema.Schema {
},
},
},
"column": columnSchema(), // https://docs.aws.amazon.com/quicksight/latest/APIReference/API_ColumnIdentifier.html
"column": columnSchema(true), // https://docs.aws.amazon.com/quicksight/latest/APIReference/API_ColumnIdentifier.html
"filter_id": idSchema(),
"null_option": stringSchema(true, validation.StringInSlice(quicksight.FilterNullOption_Values(), false)),
"relative_date_type": stringSchema(true, validation.StringInSlice(quicksight.RelativeDateType_Values(), false)),
Expand All @@ -228,7 +228,7 @@ func timeEqualityFilterSchema() *schema.Schema {
MaxItems: 1,
Elem: &schema.Resource{
Schema: map[string]*schema.Schema{
"column": columnSchema(), // https://docs.aws.amazon.com/quicksight/latest/APIReference/API_ColumnIdentifier.html
"column": columnSchema(true), // https://docs.aws.amazon.com/quicksight/latest/APIReference/API_ColumnIdentifier.html
"filter_id": idSchema(),
"time_granularity": stringSchema(true, validation.StringInSlice(quicksight.TimeGranularity_Values(), false)),
"parameter_name": parameterNameSchema(false),
Expand All @@ -250,7 +250,7 @@ func timeRangeFilterSchema() *schema.Schema {
MaxItems: 1,
Elem: &schema.Resource{
Schema: map[string]*schema.Schema{
"column": columnSchema(), // https://docs.aws.amazon.com/quicksight/latest/APIReference/API_ColumnIdentifier.html
"column": columnSchema(true), // https://docs.aws.amazon.com/quicksight/latest/APIReference/API_ColumnIdentifier.html
"filter_id": idSchema(),
"null_option": stringSchema(true, validation.StringInSlice(quicksight.FilterNullOption_Values(), false)),
"exclude_period_configuration": excludePeriodConfigurationSchema(), // https://docs.aws.amazon.com/quicksight/latest/APIReference/API_ExcludePeriodConfiguration.html
Expand Down Expand Up @@ -286,12 +286,12 @@ func topBottomFilterSchema() *schema.Schema {
Elem: &schema.Resource{
Schema: map[string]*schema.Schema{
"aggregation_function": aggregationFunctionSchema(true), // https://docs.aws.amazon.com/quicksight/latest/APIReference/API_AggregationFunction.html
"column": columnSchema(), // https://docs.aws.amazon.com/quicksight/latest/APIReference/API_ColumnIdentifier.html
"column": columnSchema(true), // https://docs.aws.amazon.com/quicksight/latest/APIReference/API_ColumnIdentifier.html
"sort_direction": stringSchema(true, validation.StringInSlice(quicksight.SortDirection_Values(), false)),
},
},
},
"column": columnSchema(), // https://docs.aws.amazon.com/quicksight/latest/APIReference/API_ColumnIdentifier.html
"column": columnSchema(true), // https://docs.aws.amazon.com/quicksight/latest/APIReference/API_ColumnIdentifier.html
"filter_id": idSchema(),
"limit": {
Type: schema.TypeInt,
Expand Down Expand Up @@ -396,7 +396,7 @@ func drillDownFilterSchema() *schema.Schema {
ValidateFunc: validation.StringLenBetween(1, 512),
},
},
"column": columnSchema(), // https://docs.aws.amazon.com/quicksight/latest/APIReference/API_ColumnIdentifier.html
"column": columnSchema(true), // https://docs.aws.amazon.com/quicksight/latest/APIReference/API_ColumnIdentifier.html
},
},
},
Expand All @@ -407,7 +407,7 @@ func drillDownFilterSchema() *schema.Schema {
MaxItems: 1,
Elem: &schema.Resource{
Schema: map[string]*schema.Schema{
"column": columnSchema(), // https://docs.aws.amazon.com/quicksight/latest/APIReference/API_ColumnIdentifier.html
"column": columnSchema(true), // https://docs.aws.amazon.com/quicksight/latest/APIReference/API_ColumnIdentifier.html
"value": {
Type: schema.TypeFloat,
Required: true,
Expand All @@ -422,7 +422,7 @@ func drillDownFilterSchema() *schema.Schema {
MaxItems: 1,
Elem: &schema.Resource{
Schema: map[string]*schema.Schema{
"column": columnSchema(), // https://docs.aws.amazon.com/quicksight/latest/APIReference/API_ColumnIdentifier.html
"column": columnSchema(true), // https://docs.aws.amazon.com/quicksight/latest/APIReference/API_ColumnIdentifier.html
"range_maximum": stringSchema(true, verify.ValidUTCTimestamp),
"range_minimum": stringSchema(true, verify.ValidUTCTimestamp),
"time_granularity": stringSchema(true, validation.StringInSlice(quicksight.TimeGranularity_Values(), false)),
Expand Down Expand Up @@ -646,7 +646,7 @@ func expandCustomFilterListConfiguration(tfList []interface{}) *quicksight.Custo

config := &quicksight.CustomFilterListConfiguration{}

if v, ok := tfMap["category_values"].([]interface{}); ok {
if v, ok := tfMap["category_values"].([]interface{}); ok && len(v) > 0 {
config.CategoryValues = flex.ExpandStringList(v)
}
if v, ok := tfMap["match_operator"].(string); ok && v != "" {
Expand Down Expand Up @@ -674,7 +674,7 @@ func expandFilterListConfiguration(tfList []interface{}) *quicksight.FilterListC

config := &quicksight.FilterListConfiguration{}

if v, ok := tfMap["category_values"].([]interface{}); ok {
if v, ok := tfMap["category_values"].([]interface{}); ok && len(v) > 0 {
config.CategoryValues = flex.ExpandStringList(v)
}
if v, ok := tfMap["match_operator"].(string); ok && v != "" {
Expand Down Expand Up @@ -801,7 +801,7 @@ func expandSheetVisualScopingConfiguration(tfMap map[string]interface{}) *quicks
if v, ok := tfMap["sheet_id"].(string); ok && v != "" {
config.SheetId = aws.String(v)
}
if v, ok := tfMap["visual_ids"].(*schema.Set); ok {
if v, ok := tfMap["visual_ids"].(*schema.Set); ok && v.Len() > 0 {
config.VisualIds = flex.ExpandStringSet(v)
}

Expand Down Expand Up @@ -1060,7 +1060,7 @@ func expandTimeRangeFilterValue(tfList []interface{}) *quicksight.TimeRangeFilte
t, _ := time.Parse(time.RFC3339, v) // Format validated with validateFunc
filter.StaticValue = aws.Time(t)
}
if v, ok := tfMap["range_minimum_value"].([]interface{}); ok && len(v) > 0 {
if v, ok := tfMap["rolling_date"].([]interface{}); ok && len(v) > 0 {
filter.RollingDate = expandRollingDateConfiguration(v)
}

Expand Down
16 changes: 11 additions & 5 deletions internal/service/quicksight/schema/template_format.go
Original file line number Diff line number Diff line change
Expand Up @@ -355,6 +355,12 @@ func expandNumericFormatConfiguration(tfList []interface{}) *quicksight.NumericF
if v, ok := tfMap["currency_display_format_configuration"].([]interface{}); ok && len(v) > 0 {
config.CurrencyDisplayFormatConfiguration = expandCurrencyDisplayFormatConfiguration(v)
}
if v, ok := tfMap["number_display_format_configuration"].([]interface{}); ok && len(v) > 0 {
config.NumberDisplayFormatConfiguration = expandNumberDisplayFormatConfiguration(v)
}
if v, ok := tfMap["percentage_display_format_configuration"].([]interface{}); ok && len(v) > 0 {
config.PercentageDisplayFormatConfiguration = expandPercentageDisplayFormatConfiguration(v)
}

return config
}
Expand Down Expand Up @@ -650,13 +656,13 @@ func expandNumberDisplayFormatConfiguration(tfList []interface{}) *quicksight.Nu

config := &quicksight.NumberDisplayFormatConfiguration{}

if v, ok := tfMap["number_scale"].(string); ok {
if v, ok := tfMap["number_scale"].(string); ok && v != "" {
config.NumberScale = aws.String(v)
}
if v, ok := tfMap["prefix"].(string); ok {
if v, ok := tfMap["prefix"].(string); ok && v != "" {
config.Prefix = aws.String(v)
}
if v, ok := tfMap["suffix"].(string); ok {
if v, ok := tfMap["suffix"].(string); ok && v != "" {
config.Suffix = aws.String(v)
}
if v, ok := tfMap["decimal_places_configuration"].([]interface{}); ok && len(v) > 0 {
Expand Down Expand Up @@ -687,10 +693,10 @@ func expandPercentageDisplayFormatConfiguration(tfList []interface{}) *quicksigh

config := &quicksight.PercentageDisplayFormatConfiguration{}

if v, ok := tfMap["prefix"].(string); ok {
if v, ok := tfMap["prefix"].(string); ok && v != "" {
config.Prefix = aws.String(v)
}
if v, ok := tfMap["suffix"].(string); ok {
if v, ok := tfMap["suffix"].(string); ok && v != "" {
config.Suffix = aws.String(v)
}
if v, ok := tfMap["decimal_places_configuration"].([]interface{}); ok && len(v) > 0 {
Expand Down
8 changes: 4 additions & 4 deletions internal/service/quicksight/schema/template_parameter.go
Original file line number Diff line number Diff line change
Expand Up @@ -254,9 +254,9 @@ func dynamicValueSchema() *schema.Schema {
Optional: true,
Elem: &schema.Resource{
Schema: map[string]*schema.Schema{
"default_value_column": columnSchema(), // https://docs.aws.amazon.com/quicksight/latest/APIReference/API_ColumnIdentifier.html
"group_name_column": columnSchema(), // https://docs.aws.amazon.com/quicksight/latest/APIReference/API_ColumnIdentifier.html
"user_name_column": columnSchema(), // https://docs.aws.amazon.com/quicksight/latest/APIReference/API_ColumnIdentifier.html
"default_value_column": columnSchema(true), // https://docs.aws.amazon.com/quicksight/latest/APIReference/API_ColumnIdentifier.html
"group_name_column": columnSchema(false), // https://docs.aws.amazon.com/quicksight/latest/APIReference/API_ColumnIdentifier.html
"user_name_column": columnSchema(false), // https://docs.aws.amazon.com/quicksight/latest/APIReference/API_ColumnIdentifier.html
},
},
}
Expand Down Expand Up @@ -386,7 +386,7 @@ func parameterSelectableValuesSchema() *schema.Schema {
MaxItems: 1,
Elem: &schema.Resource{
Schema: map[string]*schema.Schema{
"link_to_data_set_column": columnSchema(), // https://docs.aws.amazon.com/quicksight/latest/APIReference/API_ColumnIdentifier.html
"link_to_data_set_column": columnSchema(false), // https://docs.aws.amazon.com/quicksight/latest/APIReference/API_ColumnIdentifier.html
"values": {
Type: schema.TypeList,
Optional: true,
Expand Down
Loading

0 comments on commit f033319

Please sign in to comment.