Skip to content
Open
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
59 changes: 6 additions & 53 deletions test/e2e/upgrade_clusterctl_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,6 @@ import (
"k8s.io/apimachinery/pkg/apis/meta/v1/unstructured"
capi_e2e "sigs.k8s.io/cluster-api/test/e2e"
framework "sigs.k8s.io/cluster-api/test/framework"
"sigs.k8s.io/cluster-api/test/framework/clusterctl"
"sigs.k8s.io/controller-runtime/pkg/client"
)

Expand Down Expand Up @@ -56,14 +55,9 @@ var _ = Describe("When testing cluster upgrade from releases (v1.11=>current)",
ironicToRelease := "latest"
// This will upgrade from v1.11.0 to latest patch release of v1.11.x
capiStableRelease := "1.11.0"
ipamStableRelease := "1.11.0"
capm3StableRelease, err := GetStableReleaseOfMinor(ctx, releaseMarkerPrefixCAPM3, minorVersion)
Expect(err).ToNot(HaveOccurred(), "Failed to get stable version for CAPM3 minor release : %s", minorVersion)
ipamStableRelease, err := GetStableReleaseOfMinor(ctx, releaseMarkerPrefixIPAM, minorVersion)
Expect(err).ToNot(HaveOccurred(), "Failed to get stable version for IPAM minor release : %s", minorVersion)

// Get latest patch release for 1.11.x
capiStablePatchRelease, err := capi_e2e.GetStableReleaseOfMinor(ctx, minorVersion)
Expect(err).ToNot(HaveOccurred(), "Failed to get stable patch version for CAPI minor release : %s", minorVersion)

capi_e2e.ClusterctlUpgradeSpec(ctx, func() capi_e2e.ClusterctlUpgradeSpecInput {
return capi_e2e.ClusterctlUpgradeSpecInput{
Expand All @@ -87,16 +81,6 @@ var _ = Describe("When testing cluster upgrade from releases (v1.11=>current)",
os.Setenv("CAPM3_VERSION", capm3Contract)
os.Setenv("KUBECONFIG_BOOTSTRAP", bootstrapClusterProxy.GetKubeconfigPath())
},
Upgrades: []capi_e2e.ClusterctlUpgradeSpecInputUpgrade{
{ // Upgrade to latest 1.11.x
WithBinary: fmt.Sprintf(clusterctlDownloadURL, capiStablePatchRelease),
CoreProvider: fmt.Sprintf(providerCAPIPrefix, capiStablePatchRelease),
BootstrapProviders: []string{fmt.Sprintf(providerKubeadmPrefix, capiStablePatchRelease)},
ControlPlaneProviders: []string{fmt.Sprintf(providerKubeadmPrefix, capiStablePatchRelease)},
InfrastructureProviders: []string{fmt.Sprintf(providerMetal3Prefix, capm3StableRelease)},
IPAMProviders: []string{fmt.Sprintf(providerMetal3Prefix, ipamStableRelease)},
},
},
PostNamespaceCreated: postClusterctlUpgradeNamespaceCreated,
PreUpgrade: func(clusterProxy framework.ClusterProxy) {
preUpgrade(clusterProxy, bmoToRelease, ironicToRelease)
Expand Down Expand Up @@ -125,50 +109,35 @@ var _ = Describe("When testing cluster upgrade from releases (v1.10=>current)",
ironicFromRelease := "31.0"
bmoToRelease := "latest"
ironicToRelease := "latest"
capiStableRelease110, err := capi_e2e.GetStableReleaseOfMinor(ctx, minorVersion110)
capiStableRelease, err := capi_e2e.GetStableReleaseOfMinor(ctx, minorVersion110)
Expect(err).ToNot(HaveOccurred(), "Failed to get stable version for CAPI minor release : %s", minorVersion110)
capm3StableRelease, err := GetStableReleaseOfMinor(ctx, releaseMarkerPrefixCAPM3, minorVersion110)
Expect(err).ToNot(HaveOccurred(), "Failed to get stable version for CAPM3 minor release : %s", minorVersion110)
ipamStableRelease, err := GetStableReleaseOfMinor(ctx, releaseMarkerPrefixIPAM, minorVersion110)
Expect(err).ToNot(HaveOccurred(), "Failed to get stable version for IPAM minor release : %s", minorVersion110)

// Get latest patch release for 1.11.x
minorVersion111 := "1.11"
capiStableRelease111, err := capi_e2e.GetStableReleaseOfMinor(ctx, minorVersion111)
Expect(err).ToNot(HaveOccurred(), "Failed to get stable patch version for CAPI minor release : %s", minorVersion111)

capi_e2e.ClusterctlUpgradeSpec(ctx, func() capi_e2e.ClusterctlUpgradeSpecInput {
return capi_e2e.ClusterctlUpgradeSpecInput{
E2EConfig: e2eConfig,
ClusterctlConfigPath: clusterctlConfigPath,
BootstrapClusterProxy: bootstrapClusterProxy,
ArtifactFolder: artifactFolder,
SkipCleanup: skipCleanup,
InitWithCoreProvider: fmt.Sprintf(providerCAPIPrefix, capiStableRelease110),
InitWithBootstrapProviders: []string{fmt.Sprintf(providerKubeadmPrefix, capiStableRelease110)},
InitWithControlPlaneProviders: []string{fmt.Sprintf(providerKubeadmPrefix, capiStableRelease110)},
InitWithCoreProvider: fmt.Sprintf(providerCAPIPrefix, capiStableRelease),
InitWithBootstrapProviders: []string{fmt.Sprintf(providerKubeadmPrefix, capiStableRelease)},
InitWithControlPlaneProviders: []string{fmt.Sprintf(providerKubeadmPrefix, capiStableRelease)},
InitWithInfrastructureProviders: []string{fmt.Sprintf(providerMetal3Prefix, capm3StableRelease)},
InitWithIPAMProviders: []string{fmt.Sprintf(providerMetal3Prefix, ipamStableRelease)},
InitWithKubernetesVersion: k8sVersion,
WorkloadKubernetesVersion: k8sVersion,
InitWithBinary: fmt.Sprintf(clusterctlDownloadURL, capiStableRelease110),
InitWithBinary: fmt.Sprintf(clusterctlDownloadURL, capiStableRelease),
PreInit: func(clusterProxy framework.ClusterProxy) {
preInitFunc(clusterProxy, bmoFromRelease, ironicFromRelease)
// Override capi/capm3 versions exported in preInit
os.Setenv("CAPI_VERSION", capiContract)
os.Setenv("CAPM3_VERSION", capm3Contract)
os.Setenv("KUBECONFIG_BOOTSTRAP", bootstrapClusterProxy.GetKubeconfigPath())
},
Upgrades: []capi_e2e.ClusterctlUpgradeSpecInputUpgrade{
{ // Upgrade to latest 1.11.x
WithBinary: fmt.Sprintf(clusterctlDownloadURL, capiStableRelease111),
CoreProvider: fmt.Sprintf(providerCAPIPrefix, capiStableRelease111),
BootstrapProviders: []string{fmt.Sprintf(providerKubeadmPrefix, capiStableRelease111)},
ControlPlaneProviders: []string{fmt.Sprintf(providerKubeadmPrefix, capiStableRelease111)},
InfrastructureProviders: []string{fmt.Sprintf(providerMetal3Prefix, capm3StableRelease)},
IPAMProviders: []string{fmt.Sprintf(providerMetal3Prefix, ipamStableRelease)},
},
},
PostNamespaceCreated: postClusterctlUpgradeNamespaceCreated,
PreUpgrade: func(clusterProxy framework.ClusterProxy) {
preUpgrade(clusterProxy, bmoToRelease, ironicToRelease)
Expand Down Expand Up @@ -431,22 +400,6 @@ func preUpgrade(clusterProxy framework.ClusterProxy, bmoUpgradeToRelease string,
Expect(err).NotTo(HaveOccurred())
}

// postUpgrade hook is for installing the new Metal3 IPAM provider
// when upgrading from CAPM3 bundled IPAM.
func postUpgrade(managementClusterProxy framework.ClusterProxy, _ string, _ string) {
By("Installing Metal3 IPAM provider")
ipamDeployLogFolder := filepath.Join(clusterLogCollectionBasePath, managementClusterProxy.GetName(), "ipam-deploy-logs")
ipamVersions := e2eConfig.GetProviderLatestVersionsByContract(capm3Contract, e2eConfig.IPAMProviders()...)
Expect(ipamVersions).To(HaveLen(1), "Failed to get the latest version for the IPAM provider")
input := clusterctl.InitInput{
ClusterctlConfigPath: clusterctlConfigPath,
KubeconfigPath: managementClusterProxy.GetKubeconfigPath(),
LogFolder: ipamDeployLogFolder,
IPAMProviders: []string{ipamVersions[0]},
}
clusterctl.Init(ctx, input)
}

// preCleanupManagementCluster hook should be called from ClusterctlUpgradeSpec before cleaning the target management cluster
// it moves back Ironic to the bootstrap cluster.
func preCleanupManagementCluster(clusterProxy framework.ClusterProxy, ironicRelease string) {
Expand Down