From dd616bc8e34cd44eef50480de3fdb15744bf7d43 Mon Sep 17 00:00:00 2001 From: ivanstankovcast <148750907+ivanstankovcast@users.noreply.github.com> Date: Tue, 14 Nov 2023 12:27:23 +0200 Subject: [PATCH] Fix rebalancing schedules and phase 1 clusters (#241) --- ...o => resource_rebalancing_job_eks_test.go} | 45 ++++++++++--------- castai/sdk/api.gen.go | 19 ++++++-- 2 files changed, 39 insertions(+), 25 deletions(-) rename castai/{resource_rebalancing_job_test.go => resource_rebalancing_job_eks_test.go} (50%) diff --git a/castai/resource_rebalancing_job_test.go b/castai/resource_rebalancing_job_eks_test.go similarity index 50% rename from castai/resource_rebalancing_job_test.go rename to castai/resource_rebalancing_job_eks_test.go index af37fd7a..934ebbb0 100644 --- a/castai/resource_rebalancing_job_test.go +++ b/castai/resource_rebalancing_job_eks_test.go @@ -2,19 +2,22 @@ package castai import ( "fmt" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/acctest" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" "github.com/hashicorp/terraform-plugin-sdk/v2/terraform" "testing" ) -func TestAccResourceRebalancingJob_basic(t *testing.T) { +func TestAccResourceRebalancingJob_eks(t *testing.T) { + rName := fmt.Sprintf("%v-rebalancing-job-%v", ResourcePrefix, acctest.RandString(8)) + clusterName := "core-tf-acc" resource.ParallelTest(t, resource.TestCase{ PreCheck: func() { testAccPreCheck(t) }, ProviderFactories: providerFactories, Steps: []resource.TestStep{ { - Config: makeInitialRebalancingJobConfig(), + Config: makeInitialRebalancingJobConfig(rName, clusterName), Check: resource.ComposeTestCheckFunc( resource.TestCheckResourceAttr("castai_rebalancing_job.test", "enabled", "true"), ), @@ -22,33 +25,32 @@ func TestAccResourceRebalancingJob_basic(t *testing.T) { { ResourceName: "castai_rebalancing_job.test", ImportStateIdFunc: func(s *terraform.State) (string, error) { - clusterID := s.RootModule().Resources["castai_eks_clusterid.test"].Primary.ID - rebalancingScheduleName := "test" - return fmt.Sprintf("%v/%v", clusterID, rebalancingScheduleName), nil + clusterID := s.RootModule().Resources["castai_eks_cluster.test"].Primary.ID + return fmt.Sprintf("%v/%v", clusterID, rName), nil }, ImportState: true, ImportStateVerify: true, }, { - Config: makeUpdatedRebalancingJobConfig(), + Config: makeUpdatedRebalancingJobConfig(rName, clusterName), Check: resource.ComposeTestCheckFunc( resource.TestCheckResourceAttr("castai_rebalancing_job.test", "enabled", "false"), ), }, }, + ExternalProviders: map[string]resource.ExternalProvider{ + "aws": { + Source: "hashicorp/aws", + VersionConstraint: "~> 4.0", + }, + }, }) } -func makeRebalancingJobConfig(config string) string { +func makeRebalancingJobConfig(rName, config string) string { template := ` -resource "castai_eks_clusterid" "test" { - account_id = "fake" - region = "eu-central-1" - cluster_name = "fake" -} - resource "castai_rebalancing_schedule" "test" { - name = "test" + name = %[1]q schedule { cron = "5 4 * * *" } @@ -64,17 +66,18 @@ resource "castai_rebalancing_schedule" "test" { } resource "castai_rebalancing_job" "test" { - cluster_id = castai_eks_clusterid.test.id + cluster_id = castai_eks_cluster.test.id rebalancing_schedule_id = castai_rebalancing_schedule.test.id - %s + %[2]s } ` - return fmt.Sprintf(template, config) + return fmt.Sprintf(template, rName, config) } -func makeInitialRebalancingJobConfig() string { - return makeRebalancingJobConfig("") +func makeInitialRebalancingJobConfig(rName, clusterName string) string { + return ConfigCompose(testAccEKSClusterConfig(rName, clusterName), makeRebalancingJobConfig(rName, "")) } -func makeUpdatedRebalancingJobConfig() string { - return makeRebalancingJobConfig("enabled=false") + +func makeUpdatedRebalancingJobConfig(rName, clusterName string) string { + return ConfigCompose(testAccEKSClusterConfig(rName, clusterName), makeRebalancingJobConfig(rName, "enabled=false")) } diff --git a/castai/sdk/api.gen.go b/castai/sdk/api.gen.go index f67c9075..36195bf0 100644 --- a/castai/sdk/api.gen.go +++ b/castai/sdk/api.gen.go @@ -99,6 +99,13 @@ const ( Unspecified NodeconfigV1ContainerRuntime = "unspecified" ) +// Defines values for NodetemplatesV1AvailableInstanceTypeOs. +const ( + NodetemplatesV1AvailableInstanceTypeOsLinux NodetemplatesV1AvailableInstanceTypeOs = "linux" + NodetemplatesV1AvailableInstanceTypeOsUnknown NodetemplatesV1AvailableInstanceTypeOs = "unknown" + NodetemplatesV1AvailableInstanceTypeOsWindows NodetemplatesV1AvailableInstanceTypeOs = "windows" +) + // Defines values for NodetemplatesV1AvailableInstanceTypeStorageOptimizedOption. const ( Always NodetemplatesV1AvailableInstanceTypeStorageOptimizedOption = "Always" @@ -114,10 +121,10 @@ const ( // Defines values for PoliciesV1EvictorStatus. const ( - Compatible PoliciesV1EvictorStatus = "Compatible" - Incompatible PoliciesV1EvictorStatus = "Incompatible" - Missing PoliciesV1EvictorStatus = "Missing" - Unknown PoliciesV1EvictorStatus = "Unknown" + PoliciesV1EvictorStatusCompatible PoliciesV1EvictorStatus = "Compatible" + PoliciesV1EvictorStatusIncompatible PoliciesV1EvictorStatus = "Incompatible" + PoliciesV1EvictorStatusMissing PoliciesV1EvictorStatus = "Missing" + PoliciesV1EvictorStatusUnknown PoliciesV1EvictorStatus = "Unknown" ) // Defines values for PoliciesV1SpotInterruptionPredictionsType. @@ -1598,6 +1605,7 @@ type NodetemplatesV1AvailableInstanceType struct { IsComputeOptimized *bool `json:"isComputeOptimized,omitempty"` Memory *string `json:"memory,omitempty"` Name *string `json:"name,omitempty"` + Os *NodetemplatesV1AvailableInstanceTypeOs `json:"os,omitempty"` StorageOptimizedOption *NodetemplatesV1AvailableInstanceTypeStorageOptimizedOption `json:"storageOptimizedOption,omitempty"` } @@ -1608,6 +1616,9 @@ type NodetemplatesV1AvailableInstanceTypeGPUDevice struct { Name *string `json:"name,omitempty"` } +// NodetemplatesV1AvailableInstanceTypeOs defines model for nodetemplates.v1.AvailableInstanceType.Os. +type NodetemplatesV1AvailableInstanceTypeOs string + // NodetemplatesV1AvailableInstanceTypeStorageOptimizedOption defines model for nodetemplates.v1.AvailableInstanceType.StorageOptimizedOption. type NodetemplatesV1AvailableInstanceTypeStorageOptimizedOption string