@@ -22,6 +22,7 @@ package unmanaged
22
22
import (
23
23
"context"
24
24
"fmt"
25
+ "os"
25
26
"path/filepath"
26
27
"strings"
27
28
"time"
@@ -583,6 +584,51 @@ var _ = ginkgo.Context("[unmanaged] [functional]", func() {
583
584
})
584
585
})
585
586
587
+ ginkgo .Describe ("Workload cluster in multiple AZs" , func () {
588
+ ginkgo .It ("It should be creatable and deletable" , func () {
589
+ specName := "functional-test-multi-az"
590
+ requiredResources = & shared.TestResource {EC2Normal : 3 * e2eCtx .Settings .InstanceVCPU , IGW : 1 , NGW : 1 , VPC : 1 , ClassicLB : 1 , EIP : 3 }
591
+ requiredResources .WriteRequestedResources (e2eCtx , specName )
592
+ Expect (shared .AcquireResources (requiredResources , ginkgo .GinkgoParallelProcess (), flock .New (shared .ResourceQuotaFilePath ))).To (Succeed ())
593
+ defer shared .ReleaseResources (requiredResources , ginkgo .GinkgoParallelProcess (), flock .New (shared .ResourceQuotaFilePath ))
594
+ namespace := shared .SetupSpecNamespace (ctx , specName , e2eCtx )
595
+ defer shared .DumpSpecResourcesAndCleanup (ctx , "" , namespace , e2eCtx )
596
+ ginkgo .By ("Creating a cluster" )
597
+ clusterName := fmt .Sprintf ("%s-%s" , specName , util .RandomString (6 ))
598
+ configCluster := defaultConfigCluster (clusterName , namespace .Name )
599
+ configCluster .ControlPlaneMachineCount = pointer .Int64 (3 )
600
+ configCluster .Flavor = shared .MultiAzFlavor
601
+ cluster , _ , _ := createCluster (ctx , configCluster , result )
602
+
603
+ ginkgo .By ("Adding worker nodes to additional subnets" )
604
+ mdName1 := clusterName + "-md-1"
605
+ mdName2 := clusterName + "-md-2"
606
+ az1 := os .Getenv (shared .AwsAvailabilityZone1 )
607
+ az2 := os .Getenv (shared .AwsAvailabilityZone2 )
608
+ md1 := makeMachineDeployment (namespace .Name , mdName1 , clusterName , & az1 , 1 )
609
+ md2 := makeMachineDeployment (namespace .Name , mdName2 , clusterName , & az2 , 1 )
610
+
611
+ // private CIDRs set in cluster-template-multi-az.yaml.
612
+ framework .CreateMachineDeployment (ctx , framework.CreateMachineDeploymentInput {
613
+ Creator : e2eCtx .Environment .BootstrapClusterProxy .GetClient (),
614
+ MachineDeployment : md1 ,
615
+ BootstrapConfigTemplate : makeJoinBootstrapConfigTemplate (namespace .Name , mdName1 ),
616
+ InfraMachineTemplate : makeAWSMachineTemplate (namespace .Name , mdName1 , e2eCtx .E2EConfig .GetVariable (shared .AwsNodeMachineType ), getSubnetID ("cidr-block" , "10.0.0.0/24" , clusterName )),
617
+ })
618
+ framework .CreateMachineDeployment (ctx , framework.CreateMachineDeploymentInput {
619
+ Creator : e2eCtx .Environment .BootstrapClusterProxy .GetClient (),
620
+ MachineDeployment : md2 ,
621
+ BootstrapConfigTemplate : makeJoinBootstrapConfigTemplate (namespace .Name , mdName2 ),
622
+ InfraMachineTemplate : makeAWSMachineTemplate (namespace .Name , mdName2 , e2eCtx .E2EConfig .GetVariable (shared .AwsNodeMachineType ), getSubnetID ("cidr-block" , "10.0.2.0/24" , clusterName )),
623
+ })
624
+
625
+ ginkgo .By ("Waiting for new worker nodes to become ready" )
626
+ k8sClient := e2eCtx .Environment .BootstrapClusterProxy .GetClient ()
627
+ framework .WaitForMachineDeploymentNodesToExist (ctx , framework.WaitForMachineDeploymentNodesToExistInput {Lister : k8sClient , Cluster : cluster , MachineDeployment : md1 }, e2eCtx .E2EConfig .GetIntervals ("" , "wait-worker-nodes" )... )
628
+ framework .WaitForMachineDeploymentNodesToExist (ctx , framework.WaitForMachineDeploymentNodesToExistInput {Lister : k8sClient , Cluster : cluster , MachineDeployment : md2 }, e2eCtx .E2EConfig .GetIntervals ("" , "wait-worker-nodes" )... )
629
+ })
630
+ })
631
+
586
632
// TODO @randomvariable: Await more resources
587
633
ginkgo .PDescribe ("Multiple workload clusters" , func () {
588
634
ginkgo .Context ("in different namespaces with machine failures" , func () {
0 commit comments