77 "fmt"
88 "io"
99 "net/http"
10+ "os"
1011 "testing"
1112
1213 "github.com/golang/mock/gomock"
@@ -415,12 +416,13 @@ func TestAKSClusterResourceUpdateContext(t *testing.T) {
415416}
416417
417418func TestAccAKS_ResourceAKSCluster (t * testing.T ) {
418- rName := fmt .Sprintf ("%v-aks-%v" , ResourcePrefix , acctest .RandString (8 ))
419- clusterResourceName := "castai_aks_cluster.test"
420- resourceName := "castai_node_configuration.test"
421- clusterName := "core-tf-acc"
422- resourceGroupName := "core-tf-acc"
423- nodeResourceGroupName := "core-tf-acc-ng"
419+ rName := fmt .Sprintf ("%v-node-cfg-aks-%v" , ResourcePrefix , acctest .RandString (8 ))
420+ const (
421+ clusterResourceName = "castai_aks_cluster.test"
422+ clusterName = "terraform-tests-december-2025"
423+ resourceGroupName = "terraform-tests-december-2025"
424+ nodeConfResourceName = "castai_node_configuration.test"
425+ )
424426
425427 resource .Test (t , resource.TestCase {
426428 PreCheck : func () { testAccPreCheck (t ) },
@@ -430,7 +432,7 @@ func TestAccAKS_ResourceAKSCluster(t *testing.T) {
430432 //CheckDestroy: testAccCheckAKSClusterDestroy,
431433 Steps : []resource.TestStep {
432434 {
433- Config : testAccAKSClusterConfig ( rName , clusterName , resourceGroupName , nodeResourceGroupName ),
435+ Config : testAccAKSWithClientSecretConfig ( clusterName ),
434436 Check : resource .ComposeTestCheckFunc (
435437 resource .TestCheckResourceAttr (clusterResourceName , "name" , clusterName ),
436438 resource .TestCheckResourceAttrSet (clusterResourceName , "credentials_id" ),
@@ -439,39 +441,39 @@ func TestAccAKS_ResourceAKSCluster(t *testing.T) {
439441 ),
440442 },
441443 {
442- Config : testAccAKSNodeConfigurationConfig (rName , clusterName , resourceGroupName , nodeResourceGroupName ),
444+ Config : testAccAKSNodeConfigurationConfig (rName , clusterName , resourceGroupName ),
443445 Check : resource .ComposeTestCheckFunc (
444- resource .TestCheckResourceAttr (resourceName , "name" , rName ),
445- resource .TestCheckResourceAttr (resourceName , "disk_cpu_ratio" , "35" ),
446- resource .TestCheckResourceAttr (resourceName , "min_disk_size" , "122" ),
447- resource .TestCheckResourceAttr (resourceName , "aks.0.max_pods_per_node" , "31" ),
448- resource .TestCheckResourceAttr (resourceName , "aks.0.aks_image_family" , "ubuntu" ),
449- resource .TestCheckResourceAttr (resourceName , "eks.#" , "0" ),
450- resource .TestCheckResourceAttr (resourceName , "kops.#" , "0" ),
451- resource .TestCheckResourceAttr (resourceName , "gke.#" , "0" ),
446+ resource .TestCheckResourceAttr (nodeConfResourceName , "name" , rName ),
447+ resource .TestCheckResourceAttr (nodeConfResourceName , "disk_cpu_ratio" , "35" ),
448+ resource .TestCheckResourceAttr (nodeConfResourceName , "min_disk_size" , "122" ),
449+ resource .TestCheckResourceAttr (nodeConfResourceName , "aks.0.max_pods_per_node" , "31" ),
450+ resource .TestCheckResourceAttr (nodeConfResourceName , "aks.0.aks_image_family" , "ubuntu" ),
451+ resource .TestCheckResourceAttr (nodeConfResourceName , "eks.#" , "0" ),
452+ resource .TestCheckResourceAttr (nodeConfResourceName , "kops.#" , "0" ),
453+ resource .TestCheckResourceAttr (nodeConfResourceName , "gke.#" , "0" ),
452454 ),
453455 },
454456 {
455- Config : testAccAKSNodeConfigurationUpdated (rName , clusterName , resourceGroupName , nodeResourceGroupName ),
457+ Config : testAccAKSNodeConfigurationUpdated (rName , clusterName , resourceGroupName ),
456458 Check : resource .ComposeTestCheckFunc (
457- resource .TestCheckResourceAttr (resourceName , "name" , rName ),
458- resource .TestCheckResourceAttr (resourceName , "disk_cpu_ratio" , "0" ),
459- resource .TestCheckResourceAttr (resourceName , "min_disk_size" , "121" ),
460- resource .TestCheckResourceAttr (resourceName , "aks.0.max_pods_per_node" , "32" ),
461- resource .TestCheckResourceAttr (resourceName , "aks.0.aks_image_family" , "azure-linux" ),
462- resource .TestCheckResourceAttr (resourceName , "aks.0.ephemeral_os_disk.0.placement" , "cacheDisk" ),
463- resource .TestCheckResourceAttr (resourceName , "aks.0.ephemeral_os_disk.0.cache" , "ReadOnly" ),
464- resource .TestCheckResourceAttr (resourceName , "aks.0.loadbalancers.0.name" , "test-lb" ),
465- resource .TestCheckResourceAttr (resourceName , "aks.0.loadbalancers.0.ip_based_backend_pools.0.name" , "test" ),
466- resource .TestCheckResourceAttr (resourceName , "aks.0.network_security_group" , "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/rg/providers/Microsoft.Network/networkSecurityGroups/test-nsg" ),
467- resource .TestCheckResourceAttr (resourceName , "aks.0.application_security_groups.0" , "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/rg/providers/Microsoft.Network/applicationSecurityGroups/test-asg" ),
468- resource .TestCheckResourceAttr (resourceName , "aks.0.public_ip.0.public_ip_prefix" , "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/rg/providers/Microsoft.Network/publicIPAddresses/test-ip" ),
469- resource .TestCheckResourceAttr (resourceName , "aks.0.public_ip.0.tags.FirstPartyUsage" , "something" ),
470- resource .TestCheckResourceAttr (resourceName , "aks.0.public_ip.0.idle_timeout_in_minutes" , "10" ),
471- resource .TestCheckResourceAttrSet (resourceName , "aks.0.pod_subnet_id" ),
472- resource .TestCheckResourceAttr (resourceName , "eks.#" , "0" ),
473- resource .TestCheckResourceAttr (resourceName , "kops.#" , "0" ),
474- resource .TestCheckResourceAttr (resourceName , "gke.#" , "0" ),
459+ resource .TestCheckResourceAttr (nodeConfResourceName , "name" , rName ),
460+ resource .TestCheckResourceAttr (nodeConfResourceName , "disk_cpu_ratio" , "0" ),
461+ resource .TestCheckResourceAttr (nodeConfResourceName , "min_disk_size" , "121" ),
462+ resource .TestCheckResourceAttr (nodeConfResourceName , "aks.0.max_pods_per_node" , "32" ),
463+ resource .TestCheckResourceAttr (nodeConfResourceName , "aks.0.aks_image_family" , "azure-linux" ),
464+ resource .TestCheckResourceAttr (nodeConfResourceName , "aks.0.ephemeral_os_disk.0.placement" , "cacheDisk" ),
465+ resource .TestCheckResourceAttr (nodeConfResourceName , "aks.0.ephemeral_os_disk.0.cache" , "ReadOnly" ),
466+ resource .TestCheckResourceAttr (nodeConfResourceName , "aks.0.loadbalancers.0.name" , "test-lb" ),
467+ resource .TestCheckResourceAttr (nodeConfResourceName , "aks.0.loadbalancers.0.ip_based_backend_pools.0.name" , "test" ),
468+ resource .TestCheckResourceAttr (nodeConfResourceName , "aks.0.network_security_group" , "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/rg/providers/Microsoft.Network/networkSecurityGroups/test-nsg" ),
469+ resource .TestCheckResourceAttr (nodeConfResourceName , "aks.0.application_security_groups.0" , "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/rg/providers/Microsoft.Network/applicationSecurityGroups/test-asg" ),
470+ resource .TestCheckResourceAttr (nodeConfResourceName , "aks.0.public_ip.0.public_ip_prefix" , "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/rg/providers/Microsoft.Network/publicIPAddresses/test-ip" ),
471+ resource .TestCheckResourceAttr (nodeConfResourceName , "aks.0.public_ip.0.tags.FirstPartyUsage" , "something" ),
472+ resource .TestCheckResourceAttr (nodeConfResourceName , "aks.0.public_ip.0.idle_timeout_in_minutes" , "10" ),
473+ resource .TestCheckResourceAttrSet (nodeConfResourceName , "aks.0.pod_subnet_id" ),
474+ resource .TestCheckResourceAttr (nodeConfResourceName , "eks.#" , "0" ),
475+ resource .TestCheckResourceAttr (nodeConfResourceName , "kops.#" , "0" ),
476+ resource .TestCheckResourceAttr (nodeConfResourceName , "gke.#" , "0" ),
475477 ),
476478 },
477479 },
@@ -488,130 +490,23 @@ func TestAccAKS_ResourceAKSCluster(t *testing.T) {
488490 })
489491}
490492
491- func testAccAKSClusterConfig (rName string , clusterName string , resourceGroupName , nodeResourceGroup string ) string {
492- return ConfigCompose (testAccAzureConfig (rName , resourceGroupName , nodeResourceGroup ), fmt .Sprintf (`
493+ func testAccAKSWithClientSecretConfig (clusterName string ) string {
494+ subscriptionID := os .Getenv ("ARM_SUBSCRIPTION_ID" )
495+ tenantID := os .Getenv ("ARM_TENANT_ID" )
496+ clientID := os .Getenv ("ARM_CLIENT_ID" )
497+ clientSecret := os .Getenv ("ARM_CLIENT_SECRET" )
498+ return fmt .Sprintf (`
493499resource "castai_aks_cluster" "test" {
494500 name = %[1]q
495501
496502 region = "westeurope"
497- subscription_id = data.azurerm_subscription.current.subscription_id
498- tenant_id = data.azurerm_subscription.current.tenant_id
499- client_id = azuread_application.castai.application_id
500- client_secret = azuread_application_password.castai.value
501- node_resource_group = %[2]q
502-
503- }
504-
505- ` , clusterName , nodeResourceGroup ))
506- }
507-
508- func testAccAzureConfig (rName , rgName , ngName string ) string {
509- return fmt .Sprintf (`
510- provider "azurerm" {
511- features {}
512- }
513-
514- data "azurerm_subscription" "current" {}
515-
516- data "azurerm_subnet" "internal" {
517- name = "internal"
518- virtual_network_name = "%[2]s-network"
519- resource_group_name = %[2]q
520- }
521-
522- provider "azuread" {}
523-
524- // Azure RM
525- resource "azurerm_role_definition" "castai" {
526- name = %[1]q
527- description = "Role used by CAST AI"
528-
529- scope = "/subscriptions/${data.azurerm_subscription.current.subscription_id}/resourceGroups/%[2]s"
530-
531- permissions {
532- actions = [
533- "Microsoft.Compute/*/read",
534- "Microsoft.Compute/virtualMachines/*",
535- "Microsoft.Compute/virtualMachineScaleSets/*",
536- "Microsoft.Compute/disks/write",
537- "Microsoft.Compute/disks/delete",
538- "Microsoft.Compute/disks/beginGetAccess/action",
539- "Microsoft.Compute/galleries/write",
540- "Microsoft.Compute/galleries/delete",
541- "Microsoft.Compute/galleries/images/write",
542- "Microsoft.Compute/galleries/images/delete",
543- "Microsoft.Compute/galleries/images/versions/write",
544- "Microsoft.Compute/galleries/images/versions/delete",
545- "Microsoft.Compute/snapshots/write",
546- "Microsoft.Compute/snapshots/delete",
547- "Microsoft.Network/*/read",
548- "Microsoft.Network/networkInterfaces/write",
549- "Microsoft.Network/networkInterfaces/delete",
550- "Microsoft.Network/networkInterfaces/join/action",
551- "Microsoft.Network/networkSecurityGroups/join/action",
552- "Microsoft.Network/publicIPAddresses/write",
553- "Microsoft.Network/publicIPAddresses/delete",
554- "Microsoft.Network/publicIPAddresses/join/action",
555- "Microsoft.Network/virtualNetworks/subnets/join/action",
556- "Microsoft.Network/virtualNetworks/subnets/write",
557- "Microsoft.Network/applicationGateways/backendhealth/action",
558- "Microsoft.Network/applicationGateways/backendAddressPools/join/action",
559- "Microsoft.Network/applicationSecurityGroups/joinIpConfiguration/action",
560- "Microsoft.Network/loadBalancers/backendAddressPools/write",
561- "Microsoft.Network/loadBalancers/backendAddressPools/join/action",
562- "Microsoft.ContainerService/*/read",
563- "Microsoft.ContainerService/managedClusters/start/action",
564- "Microsoft.ContainerService/managedClusters/stop/action",
565- "Microsoft.ContainerService/managedClusters/runCommand/action",
566- "Microsoft.ContainerService/managedClusters/agentPools/*",
567- "Microsoft.Resources/*/read",
568- "Microsoft.Resources/tags/write",
569- "Microsoft.Authorization/locks/read",
570- "Microsoft.Authorization/roleAssignments/read",
571- "Microsoft.Authorization/roleDefinitions/read",
572- "Microsoft.ManagedIdentity/userAssignedIdentities/assign/action"
573- ]
574- not_actions = []
575- }
576-
577- assignable_scopes = [
578- "/subscriptions/${data.azurerm_subscription.current.subscription_id}/resourceGroups/%[2]s",
579- "/subscriptions/${data.azurerm_subscription.current.subscription_id}/resourceGroups/%[3]s"
580- ]
581- }
582-
583-
584- resource "azurerm_role_assignment" "castai_resource_group" {
585- principal_id = azuread_service_principal.castai.id
586- role_definition_id = azurerm_role_definition.castai.role_definition_resource_id
587-
588- scope = "/subscriptions/${data.azurerm_subscription.current.subscription_id}/resourceGroups/%[2]s"
589- }
590-
591- resource "azurerm_role_assignment" "castai_node_resource_group" {
592- principal_id = azuread_service_principal.castai.id
593- role_definition_id = azurerm_role_definition.castai.role_definition_resource_id
594-
595- scope = "/subscriptions/${data.azurerm_subscription.current.subscription_id}/resourceGroups/%[3]s"
596- }
597-
598- // Azure AD
599-
600- data "azuread_client_config" "current" {}
601-
602- resource "azuread_application" "castai" {
603- display_name = %[1]q
604- }
605-
606- resource "azuread_application_password" "castai" {
607- application_object_id = azuread_application.castai.object_id
608- }
503+ subscription_id = %[2]q
504+ tenant_id = %[3]q
505+ client_id = %[4]q
506+ client_secret = %[5]q
507+ node_resource_group = "%[1]s-ng"
609508
610- resource "azuread_service_principal" "castai" {
611- application_id = azuread_application.castai.application_id
612- app_role_assignment_required = false
613- owners = [data.azuread_client_config.current.object_id]
614509}
615510
616- ` , rName , rgName , ngName )
511+ ` , clusterName , subscriptionID , tenantID , clientID , clientSecret )
617512}
0 commit comments