diff --git a/test/e2e/data/e2e_conf.yaml b/test/e2e/data/e2e_conf.yaml index c0a3f68efa..ec208285d0 100644 --- a/test/e2e/data/e2e_conf.yaml +++ b/test/e2e/data/e2e_conf.yaml @@ -27,6 +27,15 @@ providers: files: - sourcePath: "../data/shared/capi/metadata.yaml" # For clusterctl upgrade test + - name: v1.11.0 + value: "https://github.com/kubernetes-sigs/cluster-api/releases/download/v1.11.0/core-components.yaml" + type: "url" + contract: v1beta2 + replacements: + - old: --metrics-addr=127.0.0.1:8080 + new: --metrics-addr=:8080 + files: + - sourcePath: "../data/shared/capi/metadata.yaml" - name: "{go://sigs.k8s.io/cluster-api@v1.10}" value: "https://github.com/kubernetes-sigs/cluster-api/releases/download/{go://sigs.k8s.io/cluster-api@v1.10}/core-components.yaml" type: url @@ -51,6 +60,15 @@ providers: files: - sourcePath: "../data/shared/capi/metadata.yaml" # For clusterctl upgrade test + - name: v1.11.0 + value: "https://github.com/kubernetes-sigs/cluster-api/releases/download/v1.11.0/bootstrap-components.yaml" + type: "url" + contract: v1beta2 + replacements: + - old: --metrics-addr=127.0.0.1:8080 + new: --metrics-addr=:8080 + files: + - sourcePath: "../data/shared/capi/metadata.yaml" - name: "{go://sigs.k8s.io/cluster-api@v1.10}" value: "https://github.com/kubernetes-sigs/cluster-api/releases/download/{go://sigs.k8s.io/cluster-api@v1.10}/bootstrap-components.yaml" type: url @@ -75,6 +93,15 @@ providers: files: - sourcePath: "../data/shared/capi/metadata.yaml" # For clusterctl upgrade test + - name: v1.11.0 + value: "https://github.com/kubernetes-sigs/cluster-api/releases/download/v1.11.0/control-plane-components.yaml" + type: "url" + contract: v1beta2 + replacements: + - old: --metrics-addr=127.0.0.1:8080 + new: --metrics-addr=:8080 + files: + - sourcePath: "../data/shared/capi/metadata.yaml" - name: "{go://sigs.k8s.io/cluster-api@v1.10}" value: "https://github.com/kubernetes-sigs/cluster-api/releases/download/{go://sigs.k8s.io/cluster-api@v1.10}/control-plane-components.yaml" type: url @@ -119,6 +146,21 @@ providers: new: "--v=4" - old: "--leader-elect" new: "--leader-elect=false\n - --sync-period=1m" + # This is only for clusterctl upgrade tests + - name: "{go://github.com/kubernetes-sigs/cluster-api-provider-openstack@v0.13}" + value: "https://github.com/kubernetes-sigs/cluster-api-provider-openstack/releases/download/{go://github.com/kubernetes-sigs/cluster-api-provider-openstack@v0.13}/infrastructure-components.yaml" + type: url + contract: v1beta2 + files: + - sourcePath: "../data/shared/provider/metadata.yaml" + - sourcePath: "./infrastructure-openstack-no-artifact/cluster-template.yaml" + replacements: + - old: "imagePullPolicy: Always" + new: "imagePullPolicy: IfNotPresent" + - old: "--v=2" + new: "--v=4" + - old: "--leader-elect" + new: "--leader-elect=false\n - --sync-period=1m" - name: v0.13.99 value: ../../../config/default # This is the upcoming version. diff --git a/test/e2e/suites/e2e/clusterctl_upgrade_test.go b/test/e2e/suites/e2e/clusterctl_upgrade_test.go index 6e1b0ba7e7..2b32fa8385 100644 --- a/test/e2e/suites/e2e/clusterctl_upgrade_test.go +++ b/test/e2e/suites/e2e/clusterctl_upgrade_test.go @@ -33,7 +33,9 @@ import ( var ( capoRelease011 string capoRelease012 string + capoRelease013 string capiRelease110 string + capiRelease111 string ) var _ = Describe("When testing clusterctl upgrades for CAPO (v0.11=>current) and ORC (v1.0.2=>current) [clusterctl-upgrade]", func() { @@ -103,3 +105,37 @@ var _ = Describe("When testing clusterctl upgrades for CAPO (v0.12=>current) and } }) }) + +var _ = Describe("When testing clusterctl upgrades for CAPO (v0.13=>current) and ORC (v1.0.2=>current)[clusterctl-upgrade]", func() { + BeforeEach(func(ctx context.Context) { + setDownloadE2EImageEnvVar() + // Note: This gives the version without the 'v' prefix, so we need to add it below. + capoRelease013, err = clusterctl.ResolveRelease(ctx, "go://github.com/kubernetes-sigs/cluster-api-provider-openstack@v0.13") + Expect(err).ToNot(HaveOccurred(), "failed to get stable release of CAPO") + capoRelease013 = "v" + capoRelease013 + // We need CAPI v1.11 here for clusterctl init with the v1beta2 contract. + // This is hard-coded to the .0 release because the test will fail if there are no + // newer patch releases to upgrade to. + capiRelease111 = "v1.11.0" + }) + + capi_e2e.ClusterctlUpgradeSpec(context.TODO(), func() capi_e2e.ClusterctlUpgradeSpecInput { + return capi_e2e.ClusterctlUpgradeSpecInput{ + E2EConfig: e2eCtx.E2EConfig, + ClusterctlConfigPath: e2eCtx.Environment.ClusterctlConfigPath, + BootstrapClusterProxy: e2eCtx.Environment.BootstrapClusterProxy, + ArtifactFolder: e2eCtx.Settings.ArtifactFolder, + SkipCleanup: false, + InitWithBinary: "https://github.com/kubernetes-sigs/cluster-api/releases/download/" + capiRelease111 + "/clusterctl-{OS}-{ARCH}", + InitWithProvidersContract: "v1beta1", + InitWithInfrastructureProviders: []string{"openstack:" + capoRelease013}, + InitWithCoreProvider: "cluster-api:" + capiRelease111, + InitWithBootstrapProviders: []string{"kubeadm:" + capiRelease111}, + InitWithControlPlaneProviders: []string{"kubeadm:" + capiRelease111}, + MgmtFlavor: shared.FlavorDefault, + WorkloadFlavor: shared.FlavorDefault, + InitWithKubernetesVersion: e2eCtx.E2EConfig.MustGetVariable(shared.KubernetesVersion), + InitWithRuntimeExtensionProviders: []string{"openstack-resource-controller:v1.0.2"}, + } + }) +})