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 })