Skip to content

Commit 7b87aba

Browse files
Merge branch 'master' into chore/imds-fixes-eks-examples
2 parents 6dd6ac4 + df111c2 commit 7b87aba

File tree

5 files changed

+1477
-8
lines changed

5 files changed

+1477
-8
lines changed

castai/resource_autoscaler_test.go

Lines changed: 114 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,13 +7,16 @@ import (
77
"fmt"
88
"io"
99
"net/http"
10+
"os"
1011
"reflect"
1112
"strings"
1213
"testing"
1314

1415
"github.com/golang/mock/gomock"
1516
"github.com/hashicorp/go-cty/cty"
1617
"github.com/hashicorp/terraform-plugin-sdk/v2/terraform"
18+
"github.com/hashicorp/terraform-plugin-testing/helper/acctest"
19+
"github.com/hashicorp/terraform-plugin-testing/helper/resource"
1720
"github.com/samber/lo"
1821
"github.com/stretchr/testify/require"
1922

@@ -968,3 +971,114 @@ func JSONBytesEqual(a, b []byte) (bool, error) {
968971
}
969972
return reflect.DeepEqual(j2, j), nil
970973
}
974+
975+
func TestAccEKS_ResourceAutoscaler_basic(t *testing.T) {
976+
rName := fmt.Sprintf("%v-autoscaler-%v", ResourcePrefix, acctest.RandString(8))
977+
clusterName, _ := lo.Coalesce(os.Getenv("CLUSTER_NAME"), "cost-terraform")
978+
979+
resource.Test(t, resource.TestCase{
980+
PreCheck: func() { testAccPreCheck(t) },
981+
982+
ProviderFactories: providerFactories,
983+
Steps: []resource.TestStep{
984+
// Step 1: Create autoscaler with initial settings
985+
{
986+
Config: testAccAutoscalerConfig(rName, clusterName, true, false),
987+
Check: resource.ComposeTestCheckFunc(
988+
resource.TestCheckResourceAttr("castai_autoscaler.test", "autoscaler_settings.0.enabled", "true"),
989+
resource.TestCheckResourceAttr("castai_autoscaler.test", "autoscaler_settings.0.is_scoped_mode", "false"),
990+
resource.TestCheckResourceAttr("castai_autoscaler.test", "autoscaler_settings.0.node_templates_partial_matching_enabled", "false"),
991+
resource.TestCheckResourceAttr("castai_autoscaler.test", "autoscaler_settings.0.unschedulable_pods.0.enabled", "true"),
992+
resource.TestCheckResourceAttr("castai_autoscaler.test", "autoscaler_settings.0.cluster_limits.0.enabled", "true"),
993+
resource.TestCheckResourceAttr("castai_autoscaler.test", "autoscaler_settings.0.cluster_limits.0.cpu.0.min_cores", "1"),
994+
resource.TestCheckResourceAttr("castai_autoscaler.test", "autoscaler_settings.0.cluster_limits.0.cpu.0.max_cores", "100"),
995+
resource.TestCheckResourceAttr("castai_autoscaler.test", "autoscaler_settings.0.node_downscaler.0.enabled", "true"),
996+
resource.TestCheckResourceAttr("castai_autoscaler.test", "autoscaler_settings.0.node_downscaler.0.empty_nodes.0.enabled", "true"),
997+
resource.TestCheckResourceAttr("castai_autoscaler.test", "autoscaler_settings.0.node_downscaler.0.empty_nodes.0.delay_seconds", "120"),
998+
),
999+
},
1000+
// Step 2: Update autoscaler settings
1001+
{
1002+
Config: testAccAutoscalerConfig(rName, clusterName, false, true),
1003+
Check: resource.ComposeTestCheckFunc(
1004+
resource.TestCheckResourceAttr("castai_autoscaler.test", "autoscaler_settings.0.enabled", "false"),
1005+
resource.TestCheckResourceAttr("castai_autoscaler.test", "autoscaler_settings.0.is_scoped_mode", "true"),
1006+
resource.TestCheckResourceAttr("castai_autoscaler.test", "autoscaler_settings.0.node_templates_partial_matching_enabled", "true"),
1007+
resource.TestCheckResourceAttr("castai_autoscaler.test", "autoscaler_settings.0.unschedulable_pods.0.enabled", "false"),
1008+
resource.TestCheckResourceAttr("castai_autoscaler.test", "autoscaler_settings.0.cluster_limits.0.enabled", "false"),
1009+
resource.TestCheckResourceAttr("castai_autoscaler.test", "autoscaler_settings.0.cluster_limits.0.cpu.0.min_cores", "2"),
1010+
resource.TestCheckResourceAttr("castai_autoscaler.test", "autoscaler_settings.0.cluster_limits.0.cpu.0.max_cores", "200"),
1011+
resource.TestCheckResourceAttr("castai_autoscaler.test", "autoscaler_settings.0.node_downscaler.0.enabled", "false"),
1012+
resource.TestCheckResourceAttr("castai_autoscaler.test", "autoscaler_settings.0.node_downscaler.0.empty_nodes.0.enabled", "false"),
1013+
resource.TestCheckResourceAttr("castai_autoscaler.test", "autoscaler_settings.0.node_downscaler.0.empty_nodes.0.delay_seconds", "300"),
1014+
),
1015+
},
1016+
},
1017+
ExternalProviders: map[string]resource.ExternalProvider{
1018+
"aws": {
1019+
Source: "hashicorp/aws",
1020+
VersionConstraint: "~> 5.0",
1021+
},
1022+
},
1023+
})
1024+
}
1025+
1026+
func testAccAutoscalerConfig(rName, clusterName string, enabled bool, updated bool) string {
1027+
isScopedMode := "false"
1028+
nodeTemplatesPartialMatchingEnabled := "false"
1029+
unschedulablePodsEnabled := "true"
1030+
clusterLimitsEnabled := "true"
1031+
minCores := 1
1032+
maxCores := 100
1033+
nodeDownscalerEnabled := "true"
1034+
emptyNodesEnabled := "true"
1035+
delaySeconds := 120
1036+
1037+
if updated {
1038+
isScopedMode = "true"
1039+
nodeTemplatesPartialMatchingEnabled = "true"
1040+
unschedulablePodsEnabled = "false"
1041+
clusterLimitsEnabled = "false"
1042+
minCores = 2
1043+
maxCores = 200
1044+
nodeDownscalerEnabled = "false"
1045+
emptyNodesEnabled = "false"
1046+
delaySeconds = 300
1047+
}
1048+
1049+
return ConfigCompose(testAccEKSClusterConfig(rName, clusterName), fmt.Sprintf(`
1050+
resource "castai_autoscaler" "test" {
1051+
cluster_id = castai_eks_cluster.test.id
1052+
1053+
autoscaler_settings {
1054+
enabled = %t
1055+
is_scoped_mode = %s
1056+
node_templates_partial_matching_enabled = %s
1057+
1058+
unschedulable_pods {
1059+
enabled = %s
1060+
}
1061+
1062+
cluster_limits {
1063+
enabled = %s
1064+
1065+
cpu {
1066+
min_cores = %d
1067+
max_cores = %d
1068+
}
1069+
}
1070+
1071+
node_downscaler {
1072+
enabled = %s
1073+
1074+
empty_nodes {
1075+
enabled = %s
1076+
delay_seconds = %d
1077+
}
1078+
}
1079+
}
1080+
}
1081+
`, enabled, isScopedMode, nodeTemplatesPartialMatchingEnabled,
1082+
unschedulablePodsEnabled, clusterLimitsEnabled, minCores, maxCores,
1083+
nodeDownscalerEnabled, emptyNodesEnabled, delaySeconds))
1084+
}

castai/resource_node_template_test.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -627,7 +627,7 @@ func TestAccEKS_ResourceNodeTemplate_basic(t *testing.T) {
627627
resourceName := "castai_node_template.test"
628628
clusterName, _ := lo.Coalesce(os.Getenv("CLUSTER_NAME"), "cost-terraform")
629629

630-
resource.ParallelTest(t, resource.TestCase{
630+
resource.Test(t, resource.TestCase{
631631
PreCheck: func() { testAccPreCheck(t) },
632632
ProtoV6ProviderFactories: testAccProtoV6ProviderFactories,
633633
CheckDestroy: testAccCheckNodeTemplateDestroy(rName),

0 commit comments

Comments
 (0)