sigs.k8s.io/cluster-api-provider-aws@v1.5.5/test/e2e/suites/unmanaged/unmanaged_CAPI_test.go (about)

     1  //go:build e2e
     2  // +build e2e
     3  
     4  /*
     5  Copyright 2020 The Kubernetes Authors.
     6  
     7  Licensed under the Apache License, Version 2.0 (the "License");
     8  you may not use this file except in compliance with the License.
     9  You may obtain a copy of the License at
    10  
    11  	http://www.apache.org/licenses/LICENSE-2.0
    12  
    13  Unless required by applicable law or agreed to in writing, software
    14  distributed under the License is distributed on an "AS IS" BASIS,
    15  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    16  See the License for the specific language governing permissions and
    17  limitations under the License.
    18  */
    19  
    20  package unmanaged
    21  
    22  import (
    23  	"context"
    24  
    25  	"github.com/gofrs/flock"
    26  	"github.com/onsi/ginkgo"
    27  	"github.com/onsi/ginkgo/config"
    28  	. "github.com/onsi/gomega"
    29  	"k8s.io/utils/pointer"
    30  
    31  	"sigs.k8s.io/cluster-api-provider-aws/test/e2e/shared"
    32  	capi_e2e "sigs.k8s.io/cluster-api/test/e2e"
    33  	"sigs.k8s.io/cluster-api/test/framework/clusterctl"
    34  )
    35  
    36  var _ = ginkgo.Context("[unmanaged] [Cluster API Framework]", func() {
    37  	var (
    38  		ctx               = context.TODO()
    39  		requiredResources *shared.TestResource
    40  	)
    41  
    42  	ginkgo.BeforeEach(func() {
    43  		Expect(e2eCtx.Environment.BootstrapClusterProxy).ToNot(BeNil(), "Invalid argument. BootstrapClusterProxy can't be nil")
    44  	})
    45  
    46  	ginkgo.Describe("Machine Remediation Spec", func() {
    47  		ginkgo.BeforeEach(func() {
    48  			// As the resources cannot be defined by the It() clause in CAPI tests, using the largest values required for all It() tests in this CAPI test.
    49  			requiredResources = &shared.TestResource{EC2Normal: 4 * e2eCtx.Settings.InstanceVCPU, IGW: 1, NGW: 3, VPC: 1, ClassicLB: 1, EIP: 3}
    50  			requiredResources.WriteRequestedResources(e2eCtx, "capi-remediation-test")
    51  			Expect(shared.AcquireResources(requiredResources, config.GinkgoConfig.ParallelNode, flock.New(shared.ResourceQuotaFilePath))).To(Succeed())
    52  		})
    53  
    54  		capi_e2e.MachineRemediationSpec(ctx, func() capi_e2e.MachineRemediationSpecInput {
    55  			return capi_e2e.MachineRemediationSpecInput{
    56  				E2EConfig:             e2eCtx.E2EConfig,
    57  				ClusterctlConfigPath:  e2eCtx.Environment.ClusterctlConfigPath,
    58  				BootstrapClusterProxy: e2eCtx.Environment.BootstrapClusterProxy,
    59  				ArtifactFolder:        e2eCtx.Settings.ArtifactFolder,
    60  				SkipCleanup:           e2eCtx.Settings.SkipCleanup,
    61  			}
    62  		})
    63  		ginkgo.AfterEach(func() {
    64  			shared.ReleaseResources(requiredResources, config.GinkgoConfig.ParallelNode, flock.New(shared.ResourceQuotaFilePath))
    65  		})
    66  	})
    67  
    68  	ginkgo.Describe("Machine Pool Spec", func() {
    69  		ginkgo.BeforeEach(func() {
    70  			// As the resources cannot be defined by the It() clause in CAPI tests, using the largest values required for all It() tests in this CAPI test.
    71  			requiredResources = &shared.TestResource{EC2Normal: 4 * e2eCtx.Settings.InstanceVCPU, IGW: 1, NGW: 1, VPC: 1, ClassicLB: 1, EIP: 3}
    72  			requiredResources.WriteRequestedResources(e2eCtx, "capi-machinepool-test")
    73  			Expect(shared.AcquireResources(requiredResources, config.GinkgoConfig.ParallelNode, flock.New(shared.ResourceQuotaFilePath))).To(Succeed())
    74  		})
    75  
    76  		capi_e2e.MachinePoolSpec(ctx, func() capi_e2e.MachinePoolInput {
    77  			return capi_e2e.MachinePoolInput{
    78  				E2EConfig:             e2eCtx.E2EConfig,
    79  				ClusterctlConfigPath:  e2eCtx.Environment.ClusterctlConfigPath,
    80  				BootstrapClusterProxy: e2eCtx.Environment.BootstrapClusterProxy,
    81  				ArtifactFolder:        e2eCtx.Settings.ArtifactFolder,
    82  				SkipCleanup:           e2eCtx.Settings.SkipCleanup,
    83  			}
    84  		})
    85  		ginkgo.AfterEach(func() {
    86  			shared.ReleaseResources(requiredResources, config.GinkgoConfig.ParallelNode, flock.New(shared.ResourceQuotaFilePath))
    87  		})
    88  	})
    89  
    90  	ginkgo.Describe("Self Hosted Spec", func() {
    91  		ginkgo.BeforeEach(func() {
    92  			// As the resources cannot be defined by the It() clause in CAPI tests, using the largest values required for all It() tests in this CAPI test.
    93  			requiredResources = &shared.TestResource{EC2Normal: 2 * e2eCtx.Settings.InstanceVCPU, IGW: 1, NGW: 1, VPC: 1, ClassicLB: 1, EIP: 1}
    94  			requiredResources.WriteRequestedResources(e2eCtx, "capi-clusterctl-self-hosted-test")
    95  			Expect(shared.AcquireResources(requiredResources, config.GinkgoConfig.ParallelNode, flock.New(shared.ResourceQuotaFilePath))).To(Succeed())
    96  		})
    97  
    98  		capi_e2e.SelfHostedSpec(ctx, func() capi_e2e.SelfHostedSpecInput {
    99  			return capi_e2e.SelfHostedSpecInput{
   100  				E2EConfig:             e2eCtx.E2EConfig,
   101  				ClusterctlConfigPath:  e2eCtx.Environment.ClusterctlConfigPath,
   102  				BootstrapClusterProxy: e2eCtx.Environment.BootstrapClusterProxy,
   103  				ArtifactFolder:        e2eCtx.Settings.ArtifactFolder,
   104  				SkipCleanup:           e2eCtx.Settings.SkipCleanup,
   105  				Flavor:                "remote-management-cluster",
   106  			}
   107  		})
   108  		ginkgo.AfterEach(func() {
   109  			shared.ReleaseResources(requiredResources, config.GinkgoConfig.ParallelNode, flock.New(shared.ResourceQuotaFilePath))
   110  		})
   111  	})
   112  
   113  	ginkgo.Describe("Clusterctl Upgrade Spec [from latest v1beta1 release to main]", func() {
   114  		ginkgo.BeforeEach(func() {
   115  			// As the resources cannot be defined by the It() clause in CAPI tests, using the largest values required for all It() tests in this CAPI test.
   116  			requiredResources = &shared.TestResource{EC2Normal: 5 * e2eCtx.Settings.InstanceVCPU, IGW: 2, NGW: 2, VPC: 2, ClassicLB: 2, EIP: 2}
   117  			requiredResources.WriteRequestedResources(e2eCtx, "capi-clusterctl-upgrade-test-v1beta1")
   118  			Expect(shared.AcquireResources(requiredResources, config.GinkgoConfig.ParallelNode, flock.New(shared.ResourceQuotaFilePath))).To(Succeed())
   119  		})
   120  
   121  		capi_e2e.ClusterctlUpgradeSpec(ctx, func() capi_e2e.ClusterctlUpgradeSpecInput {
   122  			return capi_e2e.ClusterctlUpgradeSpecInput{
   123  				E2EConfig:                 e2eCtx.E2EConfig,
   124  				ClusterctlConfigPath:      e2eCtx.Environment.ClusterctlConfigPath,
   125  				BootstrapClusterProxy:     e2eCtx.Environment.BootstrapClusterProxy,
   126  				ArtifactFolder:            e2eCtx.Settings.ArtifactFolder,
   127  				SkipCleanup:               e2eCtx.Settings.SkipCleanup,
   128  				MgmtFlavor:                "remote-management-cluster",
   129  				InitWithBinary:            e2eCtx.E2EConfig.GetVariable("INIT_WITH_BINARY_V1BETA1"),
   130  				InitWithProvidersContract: "v1beta1",
   131  			}
   132  		})
   133  		ginkgo.AfterEach(func() {
   134  			shared.ReleaseResources(requiredResources, config.GinkgoConfig.ParallelNode, flock.New(shared.ResourceQuotaFilePath))
   135  		})
   136  	})
   137  
   138  	ginkgo.Describe("Clusterctl Upgrade Spec [from v1alpha4]", func() {
   139  		ginkgo.BeforeEach(func() {
   140  			// As the resources cannot be defined by the It() clause in CAPI tests, using the largest values required for all It() tests in this CAPI test.
   141  			requiredResources = &shared.TestResource{EC2Normal: 5 * e2eCtx.Settings.InstanceVCPU, IGW: 2, NGW: 2, VPC: 2, ClassicLB: 2, EIP: 2}
   142  			requiredResources.WriteRequestedResources(e2eCtx, "capi-clusterctl-upgrade-test-v1alpha4")
   143  			Expect(shared.AcquireResources(requiredResources, config.GinkgoConfig.ParallelNode, flock.New(shared.ResourceQuotaFilePath))).To(Succeed())
   144  		})
   145  
   146  		capi_e2e.ClusterctlUpgradeSpec(ctx, func() capi_e2e.ClusterctlUpgradeSpecInput {
   147  			return capi_e2e.ClusterctlUpgradeSpecInput{
   148  				E2EConfig:                 e2eCtx.E2EConfig,
   149  				ClusterctlConfigPath:      e2eCtx.Environment.ClusterctlConfigPath,
   150  				BootstrapClusterProxy:     e2eCtx.Environment.BootstrapClusterProxy,
   151  				ArtifactFolder:            e2eCtx.Settings.ArtifactFolder,
   152  				SkipCleanup:               e2eCtx.Settings.SkipCleanup,
   153  				MgmtFlavor:                "remote-management-cluster",
   154  				InitWithBinary:            e2eCtx.E2EConfig.GetVariable("INIT_WITH_BINARY_V1ALPHA4"),
   155  				InitWithProvidersContract: "v1alpha4",
   156  			}
   157  		})
   158  		ginkgo.AfterEach(func() {
   159  			shared.ReleaseResources(requiredResources, config.GinkgoConfig.ParallelNode, flock.New(shared.ResourceQuotaFilePath))
   160  		})
   161  	})
   162  
   163  	ginkgo.Describe("Cluster Upgrade Spec - Single control plane with workers [K8s-Upgrade]", func() {
   164  		ginkgo.BeforeEach(func() {
   165  			// As the resources cannot be defined by the It() clause in CAPI tests, using the largest values required for all It() tests in this CAPI test.
   166  			requiredResources = &shared.TestResource{EC2Normal: 5 * e2eCtx.Settings.InstanceVCPU, IGW: 2, NGW: 2, VPC: 2, ClassicLB: 2, EIP: 2}
   167  			requiredResources.WriteRequestedResources(e2eCtx, "capi-worker-upgrade-test")
   168  			Expect(shared.AcquireResources(requiredResources, config.GinkgoConfig.ParallelNode, flock.New(shared.ResourceQuotaFilePath))).To(Succeed())
   169  		})
   170  
   171  		capi_e2e.ClusterUpgradeConformanceSpec(ctx, func() capi_e2e.ClusterUpgradeConformanceSpecInput {
   172  			return capi_e2e.ClusterUpgradeConformanceSpecInput{
   173  				E2EConfig:                e2eCtx.E2EConfig,
   174  				ClusterctlConfigPath:     e2eCtx.Environment.ClusterctlConfigPath,
   175  				BootstrapClusterProxy:    e2eCtx.Environment.BootstrapClusterProxy,
   176  				ArtifactFolder:           e2eCtx.Settings.ArtifactFolder,
   177  				SkipCleanup:              e2eCtx.Settings.SkipCleanup,
   178  				SkipConformanceTests:     true,
   179  				ControlPlaneMachineCount: pointer.Int64(1),
   180  			}
   181  		})
   182  
   183  		ginkgo.AfterEach(func() {
   184  			shared.ReleaseResources(requiredResources, config.GinkgoConfig.ParallelNode, flock.New(shared.ResourceQuotaFilePath))
   185  		})
   186  	})
   187  
   188  	ginkgo.Describe("Cluster Upgrade Spec - HA control plane with scale in rollout [K8s-Upgrade]", func() {
   189  		ginkgo.BeforeEach(func() {
   190  			// As the resources cannot be defined by the It() clause in CAPI tests, using the largest values required for all It() tests in this CAPI test.
   191  			requiredResources = &shared.TestResource{EC2Normal: 10 * e2eCtx.Settings.InstanceVCPU, IGW: 2, NGW: 2, VPC: 2, ClassicLB: 2, EIP: 2}
   192  			requiredResources.WriteRequestedResources(e2eCtx, "capi-ha-cluster-upgrade-scale-in-test")
   193  			Expect(shared.AcquireResources(requiredResources, config.GinkgoConfig.ParallelNode, flock.New(shared.ResourceQuotaFilePath))).To(Succeed())
   194  		})
   195  
   196  		capi_e2e.ClusterUpgradeConformanceSpec(ctx, func() capi_e2e.ClusterUpgradeConformanceSpecInput {
   197  			return capi_e2e.ClusterUpgradeConformanceSpecInput{
   198  				E2EConfig:                e2eCtx.E2EConfig,
   199  				ClusterctlConfigPath:     e2eCtx.Environment.ClusterctlConfigPath,
   200  				BootstrapClusterProxy:    e2eCtx.Environment.BootstrapClusterProxy,
   201  				ArtifactFolder:           e2eCtx.Settings.ArtifactFolder,
   202  				SkipCleanup:              e2eCtx.Settings.SkipCleanup,
   203  				SkipConformanceTests:     true,
   204  				ControlPlaneMachineCount: pointer.Int64(3),
   205  				WorkerMachineCount:       pointer.Int64(0),
   206  				Flavor:                   pointer.String(shared.KCPScaleInFlavor),
   207  			}
   208  		})
   209  	})
   210  
   211  	ginkgo.Describe("Cluster Upgrade Spec - HA Control Plane Cluster [K8s-Upgrade]", func() {
   212  		ginkgo.BeforeEach(func() {
   213  			// As the resources cannot be defined by the It() clause in CAPI tests, using the largest values required for all It() tests in this CAPI test.
   214  			requiredResources = &shared.TestResource{EC2Normal: 10 * e2eCtx.Settings.InstanceVCPU, IGW: 2, NGW: 2, VPC: 2, ClassicLB: 2, EIP: 2}
   215  			requiredResources.WriteRequestedResources(e2eCtx, "capi-ha-cluster-upgrade-test")
   216  			Expect(shared.AcquireResources(requiredResources, config.GinkgoConfig.ParallelNode, flock.New(shared.ResourceQuotaFilePath))).To(Succeed())
   217  		})
   218  
   219  		capi_e2e.ClusterUpgradeConformanceSpec(ctx, func() capi_e2e.ClusterUpgradeConformanceSpecInput {
   220  			return capi_e2e.ClusterUpgradeConformanceSpecInput{
   221  				E2EConfig:                e2eCtx.E2EConfig,
   222  				ClusterctlConfigPath:     e2eCtx.Environment.ClusterctlConfigPath,
   223  				BootstrapClusterProxy:    e2eCtx.Environment.BootstrapClusterProxy,
   224  				ArtifactFolder:           e2eCtx.Settings.ArtifactFolder,
   225  				SkipCleanup:              e2eCtx.Settings.SkipCleanup,
   226  				SkipConformanceTests:     true,
   227  				ControlPlaneMachineCount: pointer.Int64(3),
   228  				WorkerMachineCount:       pointer.Int64(0),
   229  				Flavor:                   pointer.String(clusterctl.DefaultFlavor),
   230  			}
   231  		})
   232  
   233  		ginkgo.AfterEach(func() {
   234  			shared.ReleaseResources(requiredResources, config.GinkgoConfig.ParallelNode, flock.New(shared.ResourceQuotaFilePath))
   235  		})
   236  	})
   237  })