@@ -146,13 +146,16 @@ func (r *DockerMachinePoolReconciler) reconcileDockerMachines(ctx context.Contex
146
146
if existingMachine , ok := dockerMachineMap [machine .Name ()]; ok {
147
147
log .V (2 ).Info ("Patching existing DockerMachine" , "DockerMachine" , klog .KObj (& existingMachine ))
148
148
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
+ }
151
154
}
152
155
153
156
dockerMachineMap [desiredMachine .Name ] = * desiredMachine
154
157
} 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 ())
156
159
desiredMachine := computeDesiredDockerMachine (machine .Name (), cluster , machinePool , dockerMachinePool , nil )
157
160
if err := ssa .Patch (ctx , r .Client , dockerMachinePoolControllerName , desiredMachine ); err != nil {
158
161
return errors .Wrap (err , "failed to create a new docker machine" )
@@ -169,7 +172,7 @@ func (r *DockerMachinePoolReconciler) reconcileDockerMachines(ctx context.Contex
169
172
for _ , dockerMachine := range dockerMachineMap {
170
173
if _ , ok := externalMachineMap [dockerMachine .Name ]; ! ok {
171
174
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 ))
173
176
if err := r .deleteMachinePoolMachine (ctx , dockerMachine ); err != nil {
174
177
return err
175
178
}
@@ -263,7 +266,7 @@ func computeDesiredDockerMachine(name string, cluster *clusterv1.Cluster, machin
263
266
if existingDockerMachine != nil {
264
267
dockerMachine .SetUID (existingDockerMachine .UID )
265
268
dockerMachine .SetOwnerReferences (existingDockerMachine .OwnerReferences )
266
- }
269
+ }
267
270
268
271
// 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.
269
272
dockerMachine .SetOwnerReferences (util .EnsureOwnerRef (dockerMachine .OwnerReferences , metav1.OwnerReference {
@@ -272,6 +275,7 @@ func computeDesiredDockerMachine(name string, cluster *clusterv1.Cluster, machin
272
275
Name : dockerMachinePool .Name ,
273
276
UID : dockerMachinePool .UID ,
274
277
}))
278
+
275
279
dockerMachine .Labels [clusterv1 .ClusterNameLabel ] = cluster .Name
276
280
dockerMachine .Labels [clusterv1 .MachinePoolNameLabel ] = format .MustFormatValue (machinePool .Name )
277
281
@@ -288,7 +292,7 @@ func (r *DockerMachinePoolReconciler) deleteMachinePoolMachine(ctx context.Conte
288
292
}
289
293
// 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.
290
294
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 ))
292
296
293
297
// If the DockerMachine does not have an owner Machine, do not attempt to delete the DockerMachine as the MachinePool controller will create the
294
298
// 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
297
301
// 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
298
302
// DockerMachinePool, so that is covered as well.
299
303
300
- return nil
304
+ // Returning error as we need the dockerMachine not to proceed.
305
+ return errors .New ("No owner Machine exists for DockerMachine" )
301
306
}
302
307
303
308
log .Info ("Deleting Machine for DockerMachine" , "Machine" , klog .KObj (machine ), "DockerMachine" , klog .KObj (& dockerMachine ))
0 commit comments