Skip to content

Commit 30faa69

Browse files
committed
test/e2e: Add clusterctl upgrade with ClusterClass test
Signed-off-by: Stefan Büringer [email protected]
1 parent b608605 commit 30faa69

File tree

56 files changed

+907
-135
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

56 files changed

+907
-135
lines changed

.gitignore

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,8 @@ hack/tools/bin
1313
# E2E test templates
1414
test/e2e/data/infrastructure-docker/v1alpha3/cluster-template*.yaml
1515
test/e2e/data/infrastructure-docker/v1alpha4/cluster-template*.yaml
16-
test/e2e/data/infrastructure-docker/v1beta1/cluster-template*.yaml
16+
test/e2e/data/infrastructure-docker/v1beta1/v1.2/cluster-template*.yaml
17+
test/e2e/data/infrastructure-docker/v1beta1/main/cluster-template*.yaml
1718

1819
# E2e test extension deployment
1920
test/e2e/data/test-extension/deployment.yaml

test/e2e/Makefile

Lines changed: 20 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -66,7 +66,7 @@ $(KUSTOMIZE_BIN): $(KUSTOMIZE) ## Build a local copy of kustomize
6666
DOCKER_TEMPLATES := $(REPO_ROOT)/test/e2e/data/infrastructure-docker
6767

6868
.PHONY: cluster-templates
69-
cluster-templates: $(KUSTOMIZE) cluster-templates-v1alpha3 cluster-templates-v1alpha4 cluster-templates-v1beta1 ## Generate cluster templates for all versions
69+
cluster-templates: $(KUSTOMIZE) cluster-templates-v1alpha3 cluster-templates-v1alpha4 cluster-templates-v1.2 cluster-templates-v1beta1 ## Generate cluster templates for all versions
7070

7171
cluster-templates-v1alpha3: $(KUSTOMIZE) ## Generate cluster templates for v1alpha3
7272
$(KUSTOMIZE) build $(DOCKER_TEMPLATES)/v1alpha3/cluster-template --load-restrictor LoadRestrictionsNone > $(DOCKER_TEMPLATES)/v1alpha3/cluster-template.yaml
@@ -84,22 +84,26 @@ cluster-templates-v1alpha4: $(KUSTOMIZE) ## Generate cluster templates for v1alp
8484
$(KUSTOMIZE) build $(DOCKER_TEMPLATES)/v1alpha4/cluster-template-kcp-scale-in --load-restrictor LoadRestrictionsNone > $(DOCKER_TEMPLATES)/v1alpha4/cluster-template-kcp-scale-in.yaml
8585
$(KUSTOMIZE) build $(DOCKER_TEMPLATES)/v1alpha4/cluster-template-ipv6 --load-restrictor LoadRestrictionsNone > $(DOCKER_TEMPLATES)/v1alpha4/cluster-template-ipv6.yaml
8686

87+
cluster-templates-v1.2: $(KUSTOMIZE) ## Generate cluster templates for v1.2
88+
$(KUSTOMIZE) build $(DOCKER_TEMPLATES)/v1beta1/v1.2/cluster-template --load-restrictor LoadRestrictionsNone > $(DOCKER_TEMPLATES)/v1beta1/v1.2/cluster-template.yaml
89+
$(KUSTOMIZE) build $(DOCKER_TEMPLATES)/v1beta1/v1.2/cluster-template-topology --load-restrictor LoadRestrictionsNone > $(DOCKER_TEMPLATES)/v1beta1/v1.2/cluster-template-topology.yaml
90+
8791
cluster-templates-v1beta1: $(KUSTOMIZE) ## Generate cluster templates for v1beta1
88-
$(KUSTOMIZE) build $(DOCKER_TEMPLATES)/v1beta1/cluster-template --load-restrictor LoadRestrictionsNone > $(DOCKER_TEMPLATES)/v1beta1/cluster-template.yaml
89-
$(KUSTOMIZE) build $(DOCKER_TEMPLATES)/v1beta1/cluster-template-md-remediation --load-restrictor LoadRestrictionsNone > $(DOCKER_TEMPLATES)/v1beta1/cluster-template-md-remediation.yaml
90-
$(KUSTOMIZE) build $(DOCKER_TEMPLATES)/v1beta1/cluster-template-kcp-remediation --load-restrictor LoadRestrictionsNone > $(DOCKER_TEMPLATES)/v1beta1/cluster-template-kcp-remediation.yaml
91-
$(KUSTOMIZE) build $(DOCKER_TEMPLATES)/v1beta1/cluster-template-kcp-adoption/step1 --load-restrictor LoadRestrictionsNone > $(DOCKER_TEMPLATES)/v1beta1/cluster-template-kcp-adoption.yaml
92-
echo "---" >> $(DOCKER_TEMPLATES)/v1beta1/cluster-template-kcp-adoption.yaml
93-
$(KUSTOMIZE) build $(DOCKER_TEMPLATES)/v1beta1/cluster-template-kcp-adoption/step2 --load-restrictor LoadRestrictionsNone >> $(DOCKER_TEMPLATES)/v1beta1/cluster-template-kcp-adoption.yaml
94-
$(KUSTOMIZE) build $(DOCKER_TEMPLATES)/v1beta1/cluster-template-machine-pool --load-restrictor LoadRestrictionsNone > $(DOCKER_TEMPLATES)/v1beta1/cluster-template-machine-pool.yaml
95-
$(KUSTOMIZE) build $(DOCKER_TEMPLATES)/v1beta1/cluster-template-node-drain --load-restrictor LoadRestrictionsNone > $(DOCKER_TEMPLATES)/v1beta1/cluster-template-node-drain.yaml
96-
$(KUSTOMIZE) build $(DOCKER_TEMPLATES)/v1beta1/cluster-template-upgrades --load-restrictor LoadRestrictionsNone > $(DOCKER_TEMPLATES)/v1beta1/cluster-template-upgrades.yaml
97-
$(KUSTOMIZE) build $(DOCKER_TEMPLATES)/v1beta1/cluster-template-upgrades-cgroupfs --load-restrictor LoadRestrictionsNone > $(DOCKER_TEMPLATES)/v1beta1/cluster-template-upgrades-cgroupfs.yaml
98-
$(KUSTOMIZE) build $(DOCKER_TEMPLATES)/v1beta1/cluster-template-upgrades-runtimesdk --load-restrictor LoadRestrictionsNone > $(DOCKER_TEMPLATES)/v1beta1/cluster-template-upgrades-runtimesdk.yaml
99-
$(KUSTOMIZE) build $(DOCKER_TEMPLATES)/v1beta1/cluster-template-kcp-scale-in --load-restrictor LoadRestrictionsNone > $(DOCKER_TEMPLATES)/v1beta1/cluster-template-kcp-scale-in.yaml
100-
$(KUSTOMIZE) build $(DOCKER_TEMPLATES)/v1beta1/cluster-template-ipv6 --load-restrictor LoadRestrictionsNone > $(DOCKER_TEMPLATES)/v1beta1/cluster-template-ipv6.yaml
101-
$(KUSTOMIZE) build $(DOCKER_TEMPLATES)/v1beta1/cluster-template-topology --load-restrictor LoadRestrictionsNone > $(DOCKER_TEMPLATES)/v1beta1/cluster-template-topology.yaml
102-
$(KUSTOMIZE) build $(DOCKER_TEMPLATES)/v1beta1/cluster-template-ignition --load-restrictor LoadRestrictionsNone > $(DOCKER_TEMPLATES)/v1beta1/cluster-template-ignition.yaml
92+
$(KUSTOMIZE) build $(DOCKER_TEMPLATES)/v1beta1/main/cluster-template --load-restrictor LoadRestrictionsNone > $(DOCKER_TEMPLATES)/v1beta1/main/cluster-template.yaml
93+
$(KUSTOMIZE) build $(DOCKER_TEMPLATES)/v1beta1/main/cluster-template-md-remediation --load-restrictor LoadRestrictionsNone > $(DOCKER_TEMPLATES)/v1beta1/main/cluster-template-md-remediation.yaml
94+
$(KUSTOMIZE) build $(DOCKER_TEMPLATES)/v1beta1/main/cluster-template-kcp-remediation --load-restrictor LoadRestrictionsNone > $(DOCKER_TEMPLATES)/v1beta1/main/cluster-template-kcp-remediation.yaml
95+
$(KUSTOMIZE) build $(DOCKER_TEMPLATES)/v1beta1/main/cluster-template-kcp-adoption/step1 --load-restrictor LoadRestrictionsNone > $(DOCKER_TEMPLATES)/v1beta1/main/cluster-template-kcp-adoption.yaml
96+
echo "---" >> $(DOCKER_TEMPLATES)/v1beta1/main/cluster-template-kcp-adoption.yaml
97+
$(KUSTOMIZE) build $(DOCKER_TEMPLATES)/v1beta1/main/cluster-template-kcp-adoption/step2 --load-restrictor LoadRestrictionsNone >> $(DOCKER_TEMPLATES)/v1beta1/main/cluster-template-kcp-adoption.yaml
98+
$(KUSTOMIZE) build $(DOCKER_TEMPLATES)/v1beta1/main/cluster-template-machine-pool --load-restrictor LoadRestrictionsNone > $(DOCKER_TEMPLATES)/v1beta1/main/cluster-template-machine-pool.yaml
99+
$(KUSTOMIZE) build $(DOCKER_TEMPLATES)/v1beta1/main/cluster-template-node-drain --load-restrictor LoadRestrictionsNone > $(DOCKER_TEMPLATES)/v1beta1/main/cluster-template-node-drain.yaml
100+
$(KUSTOMIZE) build $(DOCKER_TEMPLATES)/v1beta1/main/cluster-template-upgrades --load-restrictor LoadRestrictionsNone > $(DOCKER_TEMPLATES)/v1beta1/main/cluster-template-upgrades.yaml
101+
$(KUSTOMIZE) build $(DOCKER_TEMPLATES)/v1beta1/main/cluster-template-upgrades-cgroupfs --load-restrictor LoadRestrictionsNone > $(DOCKER_TEMPLATES)/v1beta1/main/cluster-template-upgrades-cgroupfs.yaml
102+
$(KUSTOMIZE) build $(DOCKER_TEMPLATES)/v1beta1/main/cluster-template-upgrades-runtimesdk --load-restrictor LoadRestrictionsNone > $(DOCKER_TEMPLATES)/v1beta1/main/cluster-template-upgrades-runtimesdk.yaml
103+
$(KUSTOMIZE) build $(DOCKER_TEMPLATES)/v1beta1/main/cluster-template-kcp-scale-in --load-restrictor LoadRestrictionsNone > $(DOCKER_TEMPLATES)/v1beta1/main/cluster-template-kcp-scale-in.yaml
104+
$(KUSTOMIZE) build $(DOCKER_TEMPLATES)/v1beta1/main/cluster-template-ipv6 --load-restrictor LoadRestrictionsNone > $(DOCKER_TEMPLATES)/v1beta1/main/cluster-template-ipv6.yaml
105+
$(KUSTOMIZE) build $(DOCKER_TEMPLATES)/v1beta1/main/cluster-template-topology --load-restrictor LoadRestrictionsNone > $(DOCKER_TEMPLATES)/v1beta1/main/cluster-template-topology.yaml
106+
$(KUSTOMIZE) build $(DOCKER_TEMPLATES)/v1beta1/main/cluster-template-ignition --load-restrictor LoadRestrictionsNone > $(DOCKER_TEMPLATES)/v1beta1/main/cluster-template-ignition.yaml
103107

104108
test-extension-deployment: $(KUSTOMIZE) ## Generate deployment for test extension
105109
mkdir -p $(REPO_ROOT)/test/e2e/data/test-extension

test/e2e/clusterctl_upgrade.go

Lines changed: 74 additions & 45 deletions
Original file line numberDiff line numberDiff line change
@@ -68,13 +68,18 @@ type ClusterctlUpgradeSpecInput struct {
6868
// InitWithProvidersContract can be used to override the INIT_WITH_PROVIDERS_CONTRACT e2e config variable with a specific
6969
// provider contract to use to initialise the secondary management cluster, e.g. `v1alpha3`
7070
InitWithProvidersContract string
71-
SkipCleanup bool
72-
ControlPlaneWaiters clusterctl.ControlPlaneWaiters
73-
PreInit func(managementClusterProxy framework.ClusterProxy)
74-
PreUpgrade func(managementClusterProxy framework.ClusterProxy)
75-
PostUpgrade func(managementClusterProxy framework.ClusterProxy)
76-
MgmtFlavor string
77-
WorkloadFlavor string
71+
// InitWithKubernetesVersion can be used to override the INIT_WITH_KUBERNETES_VERSION e2e config variable with a specific
72+
// Kubernetes version to use to create the secondary management cluster, e.g. `v1.25.0`
73+
InitWithKubernetesVersion string
74+
// UpgradeClusterctlVariables can be used to set additional variables for clusterctl upgrade.
75+
UpgradeClusterctlVariables map[string]string
76+
SkipCleanup bool
77+
ControlPlaneWaiters clusterctl.ControlPlaneWaiters
78+
PreInit func(managementClusterProxy framework.ClusterProxy)
79+
PreUpgrade func(managementClusterProxy framework.ClusterProxy)
80+
PostUpgrade func(managementClusterProxy framework.ClusterProxy)
81+
MgmtFlavor string
82+
WorkloadFlavor string
7883
}
7984

8085
// ClusterctlUpgradeSpec implements a test that verifies clusterctl upgrade of a management cluster.
@@ -115,12 +120,15 @@ func ClusterctlUpgradeSpec(ctx context.Context, inputGetter func() ClusterctlUpg
115120
testCancelWatches context.CancelFunc
116121

117122
managementClusterName string
118-
clusterctlBinaryURL string
119123
managementClusterNamespace *corev1.Namespace
120124
managementClusterCancelWatches context.CancelFunc
121125
managementClusterResources *clusterctl.ApplyClusterTemplateAndWaitResult
122126
managementClusterProxy framework.ClusterProxy
123127

128+
initClusterctlBinaryURL string
129+
initContract string
130+
initKubernetesVersion string
131+
124132
workLoadClusterName string
125133
)
126134

@@ -130,17 +138,34 @@ func ClusterctlUpgradeSpec(ctx context.Context, inputGetter func() ClusterctlUpg
130138
Expect(input.E2EConfig).ToNot(BeNil(), "Invalid argument. input.E2EConfig can't be nil when calling %s spec", specName)
131139
Expect(input.ClusterctlConfigPath).To(BeAnExistingFile(), "Invalid argument. input.ClusterctlConfigPath must be an existing file when calling %s spec", specName)
132140
Expect(input.BootstrapClusterProxy).ToNot(BeNil(), "Invalid argument. input.BootstrapClusterProxy can't be nil when calling %s spec", specName)
133-
var clusterctlBinaryURLTemplate string
134-
if input.InitWithBinary == "" {
141+
142+
clusterctlBinaryURLTemplate := input.InitWithBinary
143+
if clusterctlBinaryURLTemplate == "" {
135144
Expect(input.E2EConfig.Variables).To(HaveKey(initWithBinaryVariableName), "Invalid argument. %s variable must be defined when calling %s spec", initWithBinaryVariableName, specName)
136145
Expect(input.E2EConfig.Variables[initWithBinaryVariableName]).ToNot(BeEmpty(), "Invalid argument. %s variable can't be empty when calling %s spec", initWithBinaryVariableName, specName)
137146
clusterctlBinaryURLTemplate = input.E2EConfig.GetVariable(initWithBinaryVariableName)
138-
} else {
139-
clusterctlBinaryURLTemplate = input.InitWithBinary
140147
}
141148
clusterctlBinaryURLReplacer := strings.NewReplacer("{OS}", runtime.GOOS, "{ARCH}", runtime.GOARCH)
142-
clusterctlBinaryURL = clusterctlBinaryURLReplacer.Replace(clusterctlBinaryURLTemplate)
143-
Expect(input.E2EConfig.Variables).To(HaveKey(initWithKubernetesVersion))
149+
initClusterctlBinaryURL = clusterctlBinaryURLReplacer.Replace(clusterctlBinaryURLTemplate)
150+
151+
// NOTE: by default we are considering all the providers, no matter of the contract.
152+
// However, given that we want to test both v1alpha3 --> v1beta1 and v1alpha4 --> v1beta1, the INIT_WITH_PROVIDERS_CONTRACT
153+
// variable can be used to select versions with a specific contract.
154+
initContract = "*"
155+
if input.E2EConfig.HasVariable(initWithProvidersContract) {
156+
initContract = input.E2EConfig.GetVariable(initWithProvidersContract)
157+
}
158+
if input.InitWithProvidersContract != "" {
159+
initContract = input.InitWithProvidersContract
160+
}
161+
162+
initKubernetesVersion = input.InitWithKubernetesVersion
163+
if initKubernetesVersion == "" {
164+
Expect(input.E2EConfig.Variables).To(HaveKey(initWithKubernetesVersion), "Invalid argument. %s variable must be defined when calling %s spec", initWithKubernetesVersion, specName)
165+
Expect(input.E2EConfig.Variables[initWithKubernetesVersion]).ToNot(BeEmpty(), "Invalid argument. %s variable can't be empty when calling %s spec", initWithKubernetesVersion, specName)
166+
initKubernetesVersion = input.E2EConfig.GetVariable(initWithKubernetesVersion)
167+
}
168+
144169
Expect(input.E2EConfig.Variables).To(HaveKey(KubernetesVersion))
145170
Expect(os.MkdirAll(input.ArtifactFolder, 0750)).To(Succeed(), "Invalid argument. input.ArtifactFolder can't be created for %s spec", specName)
146171

@@ -164,7 +189,7 @@ func ClusterctlUpgradeSpec(ctx context.Context, inputGetter func() ClusterctlUpg
164189
Flavor: input.MgmtFlavor,
165190
Namespace: managementClusterNamespace.Name,
166191
ClusterName: managementClusterName,
167-
KubernetesVersion: input.E2EConfig.GetVariable(initWithKubernetesVersion),
192+
KubernetesVersion: initKubernetesVersion,
168193
ControlPlaneMachineCount: pointer.Int64Ptr(1),
169194
WorkerMachineCount: pointer.Int64Ptr(1),
170195
},
@@ -193,27 +218,15 @@ func ClusterctlUpgradeSpec(ctx context.Context, inputGetter func() ClusterctlUpg
193218
managementClusterProxy = input.BootstrapClusterProxy.GetWorkloadCluster(ctx, cluster.Namespace, cluster.Name)
194219

195220
// Download the older clusterctl version to be used for setting up the management cluster to be upgraded
196-
197-
log.Logf("Downloading clusterctl binary from %s", clusterctlBinaryURL)
198-
clusterctlBinaryPath := downloadToTmpFile(ctx, clusterctlBinaryURL)
221+
log.Logf("Downloading clusterctl binary from %s", initClusterctlBinaryURL)
222+
clusterctlBinaryPath := downloadToTmpFile(ctx, initClusterctlBinaryURL)
199223
defer os.Remove(clusterctlBinaryPath) // clean up
200224

201225
err := os.Chmod(clusterctlBinaryPath, 0744) //nolint:gosec
202226
Expect(err).ToNot(HaveOccurred(), "failed to chmod temporary file")
203227

204228
By("Initializing the workload cluster with older versions of providers")
205229

206-
// NOTE: by default we are considering all the providers, no matter of the contract.
207-
// However, given that we want to test both v1alpha3 --> v1beta1 and v1alpha4 --> v1beta1, the INIT_WITH_PROVIDERS_CONTRACT
208-
// variable can be used to select versions with a specific contract.
209-
contract := "*"
210-
if input.E2EConfig.HasVariable(initWithProvidersContract) {
211-
contract = input.E2EConfig.GetVariable(initWithProvidersContract)
212-
}
213-
if input.InitWithProvidersContract != "" {
214-
contract = input.InitWithProvidersContract
215-
}
216-
217230
if input.PreInit != nil {
218231
By("Running Pre-init steps against the management cluster")
219232
input.PreInit(managementClusterProxy)
@@ -223,10 +236,10 @@ func ClusterctlUpgradeSpec(ctx context.Context, inputGetter func() ClusterctlUpg
223236
ClusterctlBinaryPath: clusterctlBinaryPath, // use older version of clusterctl to init the management cluster
224237
ClusterProxy: managementClusterProxy,
225238
ClusterctlConfigPath: input.ClusterctlConfigPath,
226-
CoreProvider: input.E2EConfig.GetProviderLatestVersionsByContract(contract, config.ClusterAPIProviderName)[0],
227-
BootstrapProviders: input.E2EConfig.GetProviderLatestVersionsByContract(contract, config.KubeadmBootstrapProviderName),
228-
ControlPlaneProviders: input.E2EConfig.GetProviderLatestVersionsByContract(contract, config.KubeadmControlPlaneProviderName),
229-
InfrastructureProviders: input.E2EConfig.GetProviderLatestVersionsByContract(contract, input.E2EConfig.InfrastructureProviders()...),
239+
CoreProvider: input.E2EConfig.GetProviderLatestVersionsByContract(initContract, config.ClusterAPIProviderName)[0],
240+
BootstrapProviders: input.E2EConfig.GetProviderLatestVersionsByContract(initContract, config.KubeadmBootstrapProviderName),
241+
ControlPlaneProviders: input.E2EConfig.GetProviderLatestVersionsByContract(initContract, config.KubeadmControlPlaneProviderName),
242+
InfrastructureProviders: input.E2EConfig.GetProviderLatestVersionsByContract(initContract, input.E2EConfig.InfrastructureProviders()...),
230243
LogFolder: filepath.Join(input.ArtifactFolder, "clusters", cluster.Name),
231244
}, input.E2EConfig.GetIntervals(specName, "wait-controllers")...)
232245

@@ -313,6 +326,7 @@ func ClusterctlUpgradeSpec(ctx context.Context, inputGetter func() ClusterctlUpg
313326
By("Upgrading providers to the latest version available")
314327
clusterctl.UpgradeManagementClusterAndWait(ctx, clusterctl.UpgradeManagementClusterAndWaitInput{
315328
ClusterctlConfigPath: input.ClusterctlConfigPath,
329+
ClusterctlVariables: input.UpgradeClusterctlVariables,
316330
ClusterProxy: managementClusterProxy,
317331
Contract: clusterv1.GroupVersion.Version,
318332
LogFolder: filepath.Join(input.ArtifactFolder, "clusters", cluster.Name),
@@ -342,19 +356,34 @@ func ClusterctlUpgradeSpec(ctx context.Context, inputGetter func() ClusterctlUpg
342356
// After upgrading we are sure the version is the latest version of the API,
343357
// so it is possible to use the standard helpers
344358

345-
testMachineDeployments := framework.GetMachineDeploymentsByCluster(ctx, framework.GetMachineDeploymentsByClusterInput{
346-
Lister: managementClusterProxy.GetClient(),
347-
ClusterName: workLoadClusterName,
348-
Namespace: testNamespace.Name,
349-
})
350-
351-
framework.ScaleAndWaitMachineDeployment(ctx, framework.ScaleAndWaitMachineDeploymentInput{
352-
ClusterProxy: managementClusterProxy,
353-
Cluster: &clusterv1.Cluster{ObjectMeta: metav1.ObjectMeta{Namespace: testNamespace.Name}},
354-
MachineDeployment: testMachineDeployments[0],
355-
Replicas: 2,
356-
WaitForMachineDeployments: input.E2EConfig.GetIntervals(specName, "wait-worker-nodes"),
359+
workloadCluster := framework.GetClusterByName(ctx, framework.GetClusterByNameInput{
360+
Getter: managementClusterProxy.GetClient(),
361+
Namespace: testNamespace.Name,
362+
Name: workLoadClusterName,
357363
})
364+
if workloadCluster.Spec.Topology != nil {
365+
// Cluster is using ClusterClass, scale up via topology.
366+
framework.ScaleAndWaitMachineDeploymentTopology(ctx, framework.ScaleAndWaitMachineDeploymentTopologyInput{
367+
ClusterProxy: managementClusterProxy,
368+
Cluster: workloadCluster,
369+
Replicas: 2,
370+
WaitForMachineDeployments: input.E2EConfig.GetIntervals(specName, "wait-worker-nodes"),
371+
})
372+
} else {
373+
// Cluster is not using ClusterClass, scale up via MachineDeployment.
374+
testMachineDeployments := framework.GetMachineDeploymentsByCluster(ctx, framework.GetMachineDeploymentsByClusterInput{
375+
Lister: managementClusterProxy.GetClient(),
376+
ClusterName: workLoadClusterName,
377+
Namespace: testNamespace.Name,
378+
})
379+
framework.ScaleAndWaitMachineDeployment(ctx, framework.ScaleAndWaitMachineDeploymentInput{
380+
ClusterProxy: managementClusterProxy,
381+
Cluster: &clusterv1.Cluster{ObjectMeta: metav1.ObjectMeta{Namespace: testNamespace.Name}},
382+
MachineDeployment: testMachineDeployments[0],
383+
Replicas: 2,
384+
WaitForMachineDeployments: input.E2EConfig.GetIntervals(specName, "wait-worker-nodes"),
385+
})
386+
}
358387

359388
By("THE UPGRADED MANAGEMENT CLUSTER WORKS!")
360389

0 commit comments

Comments
 (0)