Skip to content

Commit 5188973

Browse files
furkhatFurkhat Kasymov Genii Uulu
andauthored
chore: run AKS tests in the new subscription (#624)
* chore: run aks tests in the new subscription * update sdk --------- Co-authored-by: Furkhat Kasymov Genii Uulu <furkhat@cast.ai>
1 parent c958242 commit 5188973

File tree

4 files changed

+102
-186
lines changed

4 files changed

+102
-186
lines changed

.github/workflows/acceptance-tests.yml

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -56,10 +56,10 @@ jobs:
5656
CASTAI_API_TOKEN: ${{ secrets.CASTAI_DEV_MASTER_TOKEN }}
5757
AWS_ACCESS_KEY_ID: ${{ secrets.AWS_TF_ACCEPTANCE_TEST_KEY_ID }}
5858
AWS_SECRET_ACCESS_KEY: ${{ secrets.AWS_TF_ACCEPTANCE_TEST_SECRET_KEY_ID }}
59-
ARM_CLIENT_ID: ${{ secrets.AZURE_TF_ACCEPTANCE_TEST_ARM_CLIENT_ID }}
60-
ARM_CLIENT_SECRET: ${{ secrets.AZURE_TF_ACCEPTANCE_TEST_ARM_CLIENT_SECRET }}
61-
ARM_SUBSCRIPTION_ID: ${{ secrets.AZURE_TF_ACCEPTANCE_TEST_ARM_SUBSCRIPTION_ID }}
62-
ARM_TENANT_ID: ${{ secrets.AZURE_TF_ACCEPTANCE_TEST_ARM_TENANT_ID }}
59+
ARM_CLIENT_ID: ${{ secrets.AZURE_TF_ACCEPTANCE_TEST_ARM_CLIENT_ID_V2 }}
60+
ARM_CLIENT_SECRET: ${{ secrets.AZURE_TF_ACCEPTANCE_TEST_ARM_CLIENT_SECRET_V2 }}
61+
ARM_SUBSCRIPTION_ID: ${{ secrets.AZURE_TF_ACCEPTANCE_TEST_ARM_SUBSCRIPTION_ID_V2 }}
62+
ARM_TENANT_ID: ${{ secrets.AZURE_TF_ACCEPTANCE_TEST_ARM_TENANT_ID_V2 }}
6363
GOOGLE_CREDENTIALS: ${{ secrets.GOOGLE_TF_ACCEPTANCE_TEST_CREDENTIALS }}
6464
GOOGLE_PROJECT_ID: ${{ secrets.GOOGLE_TF_ACCEPTANCE_PROJECT_ID }}
6565
SSO_CLIENT_ID: ${{ secrets.SSO_CLIENT_ID }}

castai/resource_aks_cluster_test.go

Lines changed: 49 additions & 154 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@ import (
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

417418
func 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(`
493499
resource "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
}

castai/resource_node_configuration_aks_test.go

Lines changed: 25 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -4,8 +4,17 @@ import (
44
"fmt"
55
)
66

7-
func testAccAKSNodeConfigurationConfig(rName, clusterName, rgName, ngName string) string {
8-
return ConfigCompose(testAccAKSClusterConfig(rName, clusterName, rgName, ngName), fmt.Sprintf(`
7+
func testAccAKSNodeConfigurationConfig(rName, clusterName, resourceGroupName string) string {
8+
return ConfigCompose(testAccAKSWithClientSecretConfig(clusterName), fmt.Sprintf(`
9+
provider "azurerm" {
10+
features {}
11+
}
12+
data "azurerm_subnet" "internal" {
13+
name = "internal"
14+
virtual_network_name = "%[2]s-network"
15+
resource_group_name = %[2]q
16+
}
17+
918
resource "castai_node_configuration" "test" {
1019
name = %[1]q
1120
cluster_id = castai_aks_cluster.test.id
@@ -25,13 +34,22 @@ resource "castai_node_configuration_default" "test" {
2534
cluster_id = castai_aks_cluster.test.id
2635
configuration_id = castai_node_configuration.test.id
2736
}
28-
`, rName))
37+
`, rName, resourceGroupName))
38+
}
39+
40+
func testAccAKSNodeConfigurationUpdated(rName, clusterName, resourceGroupName string) string {
41+
return ConfigCompose(testAccAKSWithClientSecretConfig(clusterName), fmt.Sprintf(`
42+
provider "azurerm" {
43+
features {}
44+
}
45+
data "azurerm_subnet" "internal" {
46+
name = "internal"
47+
virtual_network_name = "%[2]s-network"
48+
resource_group_name = %[2]q
2949
}
3050
31-
func testAccAKSNodeConfigurationUpdated(rName, clusterName, rgName, ngName string) string {
32-
return ConfigCompose(testAccAKSClusterConfig(rName, clusterName, rgName, ngName), fmt.Sprintf(`
3351
resource "castai_node_configuration" "test" {
34-
name = %[2]q
52+
name = %[1]q
3553
cluster_id = castai_aks_cluster.test.id
3654
disk_cpu_ratio = 0
3755
min_disk_size = 121
@@ -64,5 +82,5 @@ resource "castai_node_configuration" "test" {
6482
pod_subnet_id = data.azurerm_subnet.internal.id
6583
}
6684
}
67-
`, rgName, rName))
85+
`, rName, resourceGroupName))
6886
}

0 commit comments

Comments
 (0)