From c1608e47d55466fd75f7c2d1f029c8d3c850ec3f Mon Sep 17 00:00:00 2001 From: ponkio-o <29038315+ponkio-o@users.noreply.github.com> Date: Tue, 30 Apr 2024 17:40:56 +0900 Subject: [PATCH 1/6] fix: consider when max_group_prepared_capacity set to zero --- internal/service/autoscaling/group.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/internal/service/autoscaling/group.go b/internal/service/autoscaling/group.go index 43f70044405..b9a5c7410cb 100644 --- a/internal/service/autoscaling/group.go +++ b/internal/service/autoscaling/group.go @@ -3254,7 +3254,7 @@ func expandPutWarmPoolInput(name string, tfMap map[string]interface{}) *autoscal apiObject.InstanceReusePolicy = expandInstanceReusePolicy(v[0].(map[string]interface{})) } - if v, ok := tfMap["max_group_prepared_capacity"].(int); ok && v != 0 { + if v, ok := tfMap["max_group_prepared_capacity"].(int); ok { apiObject.MaxGroupPreparedCapacity = aws.Int32(int32(v)) } From 68497b3040c0f2f56df74a59fb89ff452f833425 Mon Sep 17 00:00:00 2001 From: ponkio-o <29038315+ponkio-o@users.noreply.github.com> Date: Tue, 30 Apr 2024 17:43:16 +0900 Subject: [PATCH 2/6] add: added test when 0 is set in max_group_prepared_capacity --- internal/service/autoscaling/group_test.go | 40 ++++++++++++++++++++++ 1 file changed, 40 insertions(+) diff --git a/internal/service/autoscaling/group_test.go b/internal/service/autoscaling/group_test.go index d03daf98130..e24cfc8eed0 100644 --- a/internal/service/autoscaling/group_test.go +++ b/internal/service/autoscaling/group_test.go @@ -1874,6 +1874,18 @@ func TestAccAutoScalingGroup_warmPool(t *testing.T) { resource.TestCheckNoResourceAttr(resourceName, "warm_pool.#"), ), }, + { + Config: testAccGroupConfig_warmPoolZero(rName), + Check: resource.ComposeAggregateTestCheckFunc( + testAccCheckGroupExists(ctx, resourceName, &group), + resource.TestCheckResourceAttr(resourceName, "warm_pool.#", "1"), + resource.TestCheckResourceAttr(resourceName, "warm_pool.0.instance_reuse_policy.#", "1"), + resource.TestCheckResourceAttr(resourceName, "warm_pool.0.instance_reuse_policy.0.reuse_on_scale_in", "true"), + resource.TestCheckResourceAttr(resourceName, "warm_pool.0.max_group_prepared_capacity", "0"), + resource.TestCheckResourceAttr(resourceName, "warm_pool.0.min_size", "0"), + resource.TestCheckResourceAttr(resourceName, "warm_pool.0.pool_state", "Stopped"), + ), + }, }, }) } @@ -5742,6 +5754,34 @@ resource "aws_autoscaling_group" "test" { `, rName)) } +func testAccGroupConfig_warmPoolZero(rName string) string { + return acctest.ConfigCompose(testAccGroupConfig_launchConfigurationBase(rName, "t3.nano"), fmt.Sprintf(` +resource "aws_autoscaling_group" "test" { + availability_zones = [data.aws_availability_zones.available.names[0]] + max_size = 5 + min_size = 1 + desired_capacity = 1 + name = %[1]q + launch_configuration = aws_launch_configuration.test.name + + warm_pool { + pool_state = "Stopped" + min_size = 0 + max_group_prepared_capacity = 0 + instance_reuse_policy { + reuse_on_scale_in = true + } + } + + tag { + key = "Name" + value = %[1]q + propagate_at_launch = true + } +} +`, rName)) +} + func testAccGroupConfig_warmPoolNone(rName string) string { return acctest.ConfigCompose(testAccGroupConfig_launchConfigurationBase(rName, "t3.nano"), fmt.Sprintf(` resource "aws_autoscaling_group" "test" { From bba97364052370c37d710fb4fcbe571d42c9a319 Mon Sep 17 00:00:00 2001 From: ponkio-o <29038315+ponkio-o@users.noreply.github.com> Date: Tue, 30 Apr 2024 18:02:54 +0900 Subject: [PATCH 3/6] chore: added changelog file --- .changelog/37174.txt | 3 +++ 1 file changed, 3 insertions(+) create mode 100644 .changelog/37174.txt diff --git a/.changelog/37174.txt b/.changelog/37174.txt new file mode 100644 index 00000000000..cbabed0c30d --- /dev/null +++ b/.changelog/37174.txt @@ -0,0 +1,3 @@ +```release-note:bug +resource/aws_autoscaling_group: Fixed an issue where max_group_prepared_capacity could not be set to 0 +``` From 9658875c7a71060b9cdf53f4c5f152a5bc3ffe7b Mon Sep 17 00:00:00 2001 From: Kit Ewbank Date: Tue, 18 Jun 2024 09:39:54 -0400 Subject: [PATCH 4/6] r/aws_autoscaling_group: Add plan-time validation of `warm_pool.max_group_prepared_capacity` and `warm_pool.min_size`. --- .changelog/37174.txt | 6 +++++- internal/service/autoscaling/group.go | 14 ++++++++------ 2 files changed, 13 insertions(+), 7 deletions(-) diff --git a/.changelog/37174.txt b/.changelog/37174.txt index cbabed0c30d..40f846003a6 100644 --- a/.changelog/37174.txt +++ b/.changelog/37174.txt @@ -1,3 +1,7 @@ ```release-note:bug -resource/aws_autoscaling_group: Fixed an issue where max_group_prepared_capacity could not be set to 0 +resource/aws_autoscaling_group: Fix bug updating `warm_pool.max_group_prepared_capacity` to `0` +``` + +```release-note:enhancement +resource/aws_autoscaling_group: Add plan-time validation of `warm_pool.max_group_prepared_capacity` and `warm_pool.min_size` ``` diff --git a/internal/service/autoscaling/group.go b/internal/service/autoscaling/group.go index b8cb957bc3d..11c76a19cd4 100644 --- a/internal/service/autoscaling/group.go +++ b/internal/service/autoscaling/group.go @@ -923,14 +923,16 @@ func resourceGroup() *schema.Resource { }, }, "max_group_prepared_capacity": { - Type: schema.TypeInt, - Optional: true, - Default: defaultWarmPoolMaxGroupPreparedCapacity, + Type: schema.TypeInt, + Optional: true, + Default: defaultWarmPoolMaxGroupPreparedCapacity, + ValidateFunc: validation.IntAtLeast(defaultWarmPoolMaxGroupPreparedCapacity), }, "min_size": { - Type: schema.TypeInt, - Optional: true, - Default: 0, + Type: schema.TypeInt, + Optional: true, + Default: 0, + ValidateFunc: validation.IntAtLeast(0), }, "pool_state": { Type: schema.TypeString, From 7a9fb1735ff0e661a1e12a7dcb10791cd5ff82ed Mon Sep 17 00:00:00 2001 From: Kit Ewbank Date: Tue, 18 Jun 2024 09:41:37 -0400 Subject: [PATCH 5/6] Correct CHANGELOG entry file location. --- 37977.txt => .changelog/37977.txt | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename 37977.txt => .changelog/37977.txt (100%) diff --git a/37977.txt b/.changelog/37977.txt similarity index 100% rename from 37977.txt rename to .changelog/37977.txt From 27dfb1dd18c1bab0f829f6c1453b7db206ff7aef Mon Sep 17 00:00:00 2001 From: Kit Ewbank Date: Tue, 18 Jun 2024 10:00:18 -0400 Subject: [PATCH 6/6] Run 'make fix-constants PKG=autoscaling'. --- internal/service/autoscaling/group_test.go | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/internal/service/autoscaling/group_test.go b/internal/service/autoscaling/group_test.go index 93cba19d3ee..5e0bd39be4d 100644 --- a/internal/service/autoscaling/group_test.go +++ b/internal/service/autoscaling/group_test.go @@ -1878,11 +1878,11 @@ func TestAccAutoScalingGroup_warmPool(t *testing.T) { Config: testAccGroupConfig_warmPoolZero(rName), Check: resource.ComposeAggregateTestCheckFunc( testAccCheckGroupExists(ctx, resourceName, &group), - resource.TestCheckResourceAttr(resourceName, "warm_pool.#", "1"), - resource.TestCheckResourceAttr(resourceName, "warm_pool.0.instance_reuse_policy.#", "1"), - resource.TestCheckResourceAttr(resourceName, "warm_pool.0.instance_reuse_policy.0.reuse_on_scale_in", "true"), - resource.TestCheckResourceAttr(resourceName, "warm_pool.0.max_group_prepared_capacity", "0"), - resource.TestCheckResourceAttr(resourceName, "warm_pool.0.min_size", "0"), + resource.TestCheckResourceAttr(resourceName, "warm_pool.#", acctest.Ct1), + resource.TestCheckResourceAttr(resourceName, "warm_pool.0.instance_reuse_policy.#", acctest.Ct1), + resource.TestCheckResourceAttr(resourceName, "warm_pool.0.instance_reuse_policy.0.reuse_on_scale_in", acctest.CtTrue), + resource.TestCheckResourceAttr(resourceName, "warm_pool.0.max_group_prepared_capacity", acctest.Ct0), + resource.TestCheckResourceAttr(resourceName, "warm_pool.0.min_size", acctest.Ct0), resource.TestCheckResourceAttr(resourceName, "warm_pool.0.pool_state", "Stopped"), ), },