Skip to content

Commit

Permalink
r/aws_autoscaling_policy: Fix type of target_value for predictive sca…
Browse files Browse the repository at this point in the history
…ling

This patch fixes type of target_value for predictive scaling, which allows double
per AWS API reference. The existing users will not be affected because this change
is backward compatible.
  • Loading branch information
Jungseok Lee committed Dec 19, 2022
1 parent f7f3bb4 commit ae8272c
Show file tree
Hide file tree
Showing 3 changed files with 54 additions and 2 deletions.
3 changes: 3 additions & 0 deletions .changelog/28444.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
```release-note:bug
resource/aws_autoscaling_policy: Fix type of target_value for predictive scaling
```
4 changes: 2 additions & 2 deletions internal/service/autoscaling/policy.go
Original file line number Diff line number Diff line change
Expand Up @@ -199,7 +199,7 @@ func ResourcePolicy() *schema.Resource {
},
},
"target_value": {
Type: schema.TypeInt,
Type: schema.TypeFloat,
Required: true,
},
},
Expand Down Expand Up @@ -766,7 +766,7 @@ func expandPredictiveScalingMetricSpecifications(metricSpecificationsSlice []int
PredefinedLoadMetricSpecification: expandPredefinedLoadMetricSpecification(metricSpecificationsFlat["predefined_load_metric_specification"].([]interface{})),
PredefinedMetricPairSpecification: expandPredefinedMetricPairSpecification(metricSpecificationsFlat["predefined_metric_pair_specification"].([]interface{})),
PredefinedScalingMetricSpecification: expandPredefinedScalingMetricSpecification(metricSpecificationsFlat["predefined_scaling_metric_specification"].([]interface{})),
TargetValue: aws.Float64(float64(metricSpecificationsFlat["target_value"].(int))),
TargetValue: aws.Float64(float64(metricSpecificationsFlat["target_value"].(float64))),
}
return []*autoscaling.PredictiveScalingMetricSpecification{metricSpecification}
}
Expand Down
49 changes: 49 additions & 0 deletions internal/service/autoscaling/policy_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -308,6 +308,36 @@ func TestAccAutoScalingPolicy_predictiveScalingUpdated(t *testing.T) {
})
}

func TestAccAutoScalingPolicy_predictiveScalingFloatTargetValue(t *testing.T) {
var v autoscaling.ScalingPolicy
resourceSimpleName := "aws_autoscaling_policy.test"
rName := sdkacctest.RandomWithPrefix(acctest.ResourcePrefix)

resource.ParallelTest(t, resource.TestCase{
PreCheck: func() { acctest.PreCheck(t) },
ErrorCheck: acctest.ErrorCheck(t, autoscaling.EndpointsID),
ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories,
CheckDestroy: testAccCheckPolicyDestroy,
Steps: []resource.TestStep{
{
Config: testAccPolicyConfig_predictiveScalingFloatTargetValue(rName),
Check: resource.ComposeTestCheckFunc(
testAccCheckScalingPolicyExists(resourceSimpleName, &v),
resource.TestCheckResourceAttr(resourceSimpleName, "predictive_scaling_configuration.0.metric_specification.0.target_value", "0.2"),
resource.TestCheckResourceAttr(resourceSimpleName, "predictive_scaling_configuration.0.metric_specification.0.predefined_metric_pair_specification.0.predefined_metric_type", "ASGCPUUtilization"),
resource.TestCheckResourceAttr(resourceSimpleName, "predictive_scaling_configuration.0.metric_specification.0.predefined_metric_pair_specification.0.resource_label", "testLabel"),
),
},
{
ResourceName: resourceSimpleName,
ImportState: true,
ImportStateIdFunc: testAccPolicyImportStateIdFunc(resourceSimpleName),
ImportStateVerify: true,
},
},
})
}

func TestAccAutoScalingPolicy_simpleScalingStepAdjustment(t *testing.T) {
var v autoscaling.ScalingPolicy
resourceName := "aws_autoscaling_policy.test"
Expand Down Expand Up @@ -691,6 +721,25 @@ resource "aws_autoscaling_policy" "test" {
`, rName))
}

func testAccPolicyConfig_predictiveScalingFloatTargetValue(rName string) string {
return acctest.ConfigCompose(testAccPolicyConfigBase(rName), fmt.Sprintf(`
resource "aws_autoscaling_policy" "test" {
name = "%[1]s-predictive"
policy_type = "PredictiveScaling"
autoscaling_group_name = aws_autoscaling_group.test.name
predictive_scaling_configuration {
metric_specification {
target_value = 0.2
predefined_metric_pair_specification {
predefined_metric_type = "ASGCPUUtilization"
resource_label = "testLabel"
}
}
}
}
`, rName))
}

func testAccPolicyConfig_basicUpdate(rName string) string {
return acctest.ConfigCompose(testAccPolicyConfigBase(rName), fmt.Sprintf(`
resource "aws_autoscaling_policy" "test_simple" {
Expand Down

0 comments on commit ae8272c

Please sign in to comment.