Skip to content

Commit 0213ff1

Browse files
committed
Fix e2e test for dockermachinePool
Signed-off-by: serngawy <[email protected]>
1 parent cf5979e commit 0213ff1

File tree

2 files changed

+15
-10
lines changed

2 files changed

+15
-10
lines changed

test/infrastructure/docker/exp/internal/controllers/dockermachinepool_controller_phases.go

+12-7
Original file line numberDiff line numberDiff line change
@@ -146,13 +146,16 @@ func (r *DockerMachinePoolReconciler) reconcileDockerMachines(ctx context.Contex
146146
if existingMachine, ok := dockerMachineMap[machine.Name()]; ok {
147147
log.V(2).Info("Patching existing DockerMachine", "DockerMachine", klog.KObj(&existingMachine))
148148
desiredMachine := computeDesiredDockerMachine(machine.Name(), cluster, machinePool, dockerMachinePool, &existingMachine)
149-
if err := ssa.Patch(ctx, r.Client, dockerMachinePoolControllerName, desiredMachine, ssa.WithCachingProxy{Cache: r.ssaCache, Original: &existingMachine}); err != nil {
150-
return errors.Wrapf(err, "failed to update DockerMachine %q", klog.KObj(desiredMachine))
149+
// check if the dockerMachine not deleted before patching
150+
if existingMachine.DeletionTimestamp.IsZero() {
151+
if err := ssa.Patch(ctx, r.Client, dockerMachinePoolControllerName, desiredMachine, ssa.WithCachingProxy{Cache: r.ssaCache, Original: &existingMachine}); err != nil {
152+
return errors.Wrapf(err, "failed to update DockerMachine %q", klog.KObj(desiredMachine))
153+
}
151154
}
152155

153156
dockerMachineMap[desiredMachine.Name] = *desiredMachine
154157
} else {
155-
log.V(2).Info("Creating a new DockerMachine for Docker container", "container", machine.Name())
158+
log.Info("Creating a new DockerMachine for Docker container", "container", machine.Name())
156159
desiredMachine := computeDesiredDockerMachine(machine.Name(), cluster, machinePool, dockerMachinePool, nil)
157160
if err := ssa.Patch(ctx, r.Client, dockerMachinePoolControllerName, desiredMachine); err != nil {
158161
return errors.Wrap(err, "failed to create a new docker machine")
@@ -169,7 +172,7 @@ func (r *DockerMachinePoolReconciler) reconcileDockerMachines(ctx context.Contex
169172
for _, dockerMachine := range dockerMachineMap {
170173
if _, ok := externalMachineMap[dockerMachine.Name]; !ok {
171174
dockerMachine := dockerMachine
172-
log.V(2).Info("Deleting DockerMachine with no underlying infrastructure", "DockerMachine", klog.KObj(&dockerMachine))
175+
log.Info("Deleting DockerMachine with no underlying infrastructure", "DockerMachine", klog.KObj(&dockerMachine))
173176
if err := r.deleteMachinePoolMachine(ctx, dockerMachine); err != nil {
174177
return err
175178
}
@@ -263,7 +266,7 @@ func computeDesiredDockerMachine(name string, cluster *clusterv1.Cluster, machin
263266
if existingDockerMachine != nil {
264267
dockerMachine.SetUID(existingDockerMachine.UID)
265268
dockerMachine.SetOwnerReferences(existingDockerMachine.OwnerReferences)
266-
}
269+
}
267270

268271
// Note: Since the MachinePool controller has not created its owner Machine yet, we want to set the DockerMachinePool as the owner so it's not orphaned.
269272
dockerMachine.SetOwnerReferences(util.EnsureOwnerRef(dockerMachine.OwnerReferences, metav1.OwnerReference{
@@ -272,6 +275,7 @@ func computeDesiredDockerMachine(name string, cluster *clusterv1.Cluster, machin
272275
Name: dockerMachinePool.Name,
273276
UID: dockerMachinePool.UID,
274277
}))
278+
275279
dockerMachine.Labels[clusterv1.ClusterNameLabel] = cluster.Name
276280
dockerMachine.Labels[clusterv1.MachinePoolNameLabel] = format.MustFormatValue(machinePool.Name)
277281

@@ -288,7 +292,7 @@ func (r *DockerMachinePoolReconciler) deleteMachinePoolMachine(ctx context.Conte
288292
}
289293
// util.GetOwnerMachine() returns a nil Machine without error if there is no Machine kind in the ownerRefs, so we must verify that machine is not nil.
290294
if machine == nil {
291-
log.V(2).Info("No owner Machine exists for DockerMachine", "dockerMachine", klog.KObj(&dockerMachine))
295+
log.Info("No owner Machine exists for DockerMachine", "dockerMachine", klog.KObj(&dockerMachine))
292296

293297
// If the DockerMachine does not have an owner Machine, do not attempt to delete the DockerMachine as the MachinePool controller will create the
294298
// Machine and we want to let it catch up. If we are too hasty to delete, that introduces a race condition where the DockerMachine could be deleted
@@ -297,7 +301,8 @@ func (r *DockerMachinePoolReconciler) deleteMachinePoolMachine(ctx context.Conte
297301
// In the case where the MachinePool is being deleted and the Machine will never come online, the DockerMachine will be deleted via its ownerRef to the
298302
// DockerMachinePool, so that is covered as well.
299303

300-
return nil
304+
// Returning error as we need the dockerMachine not to proceed.
305+
return errors.New("No owner Machine exists for DockerMachine")
301306
}
302307

303308
log.Info("Deleting Machine for DockerMachine", "Machine", klog.KObj(machine), "DockerMachine", klog.KObj(&dockerMachine))

test/infrastructure/docker/internal/controllers/dockermachine_controller.go

+3-3
Original file line numberDiff line numberDiff line change
@@ -183,7 +183,7 @@ func (r *DockerMachineReconciler) Reconcile(ctx context.Context, req ctrl.Reques
183183
}
184184

185185
// Handle deleted machines
186-
if !dockerMachine.ObjectMeta.DeletionTimestamp.IsZero() {
186+
if !dockerMachine.DeletionTimestamp.IsZero() {
187187
return ctrl.Result{}, r.reconcileDelete(ctx, dockerCluster, machine, dockerMachine, externalMachine, externalLoadBalancer)
188188
}
189189

@@ -455,11 +455,11 @@ func (r *DockerMachineReconciler) reconcileDelete(ctx context.Context, dockerClu
455455

456456
// delete the machine
457457
if err := externalMachine.Delete(ctx); err != nil {
458-
return errors.Wrap(err, "failed to delete DockerMachine")
458+
return errors.Wrap(err, "failed to delete external DockerMachine")
459459
}
460460

461461
// if the deleted machine is a control-plane node, remove it from the load balancer configuration;
462-
if util.IsControlPlaneMachine(machine) {
462+
if machine != nil && util.IsControlPlaneMachine(machine) {
463463
unsafeLoadBalancerConfigTemplate, err := r.getUnsafeLoadBalancerConfigTemplate(ctx, dockerCluster)
464464
if err != nil {
465465
return errors.Wrap(err, "failed to retrieve HAProxy configuration from CustomHAProxyConfigTemplateRef")

0 commit comments

Comments
 (0)