@@ -26,6 +26,7 @@ import (
2626 "github.com/google/go-cmp/cmp"
2727 corev1 "k8s.io/api/core/v1"
2828 apierrors "k8s.io/apimachinery/pkg/api/errors"
29+ metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
2930 "k8s.io/client-go/tools/record"
3031 "k8s.io/klog/v2"
3132 ctrl "sigs.k8s.io/controller-runtime"
@@ -37,17 +38,17 @@ import (
3738 "sigs.k8s.io/controller-runtime/pkg/predicate"
3839 "sigs.k8s.io/controller-runtime/pkg/reconcile"
3940
40- clusterv1 "sigs.k8s.io/cluster-api/api/core/v1beta1 "
41+ clusterv1 "sigs.k8s.io/cluster-api/api/core/v1beta2 "
4142 "sigs.k8s.io/cluster-api/util/annotations"
42- "sigs.k8s.io/cluster-api/util/deprecated/v1beta1/conditions"
43- v1beta1conditions "sigs.k8s.io/cluster-api/util/deprecated/v1beta1/conditions"
43+ "sigs.k8s.io/cluster-api/util/conditions"
4444 "sigs.k8s.io/cluster-api/util/predicates"
4545
4646 infrav1 "sigs.k8s.io/cluster-api-provider-gcp/api/v1beta1"
4747 "sigs.k8s.io/cluster-api-provider-gcp/cloud/scope"
4848 "sigs.k8s.io/cluster-api-provider-gcp/cloud/services/compute/instancegroupmanagers"
4949 "sigs.k8s.io/cluster-api-provider-gcp/cloud/services/compute/instancetemplates"
5050 expinfrav1 "sigs.k8s.io/cluster-api-provider-gcp/exp/api/v1beta1"
51+ "sigs.k8s.io/cluster-api-provider-gcp/pkg/capiutils"
5152 exputil "sigs.k8s.io/cluster-api/exp/util"
5253 "sigs.k8s.io/controller-runtime/pkg/log"
5354)
@@ -124,18 +125,12 @@ func (r *GCPMachinePoolReconciler) Reconcile(ctx context.Context, req ctrl.Reque
124125 return ctrl.Result {}, err
125126 }
126127
127- // Always close the scope when exiting this function so we can persist any GCPMachine changes.
128+ // Always close the scope when exiting this function so we can persist any GCPMachinePool changes.
128129 defer func () {
129- // set Ready condition before GCPMachinePool is patched
130- v1beta1conditions .SetSummary (machinePoolScope .GCPMachinePool ,
131- v1beta1conditions .WithConditions (
132- expinfrav1 .MIGReadyCondition ,
133- expinfrav1 .InstanceTemplateReadyCondition ,
134- ),
135- v1beta1conditions .WithStepCounterIfOnly (
136- expinfrav1 .MIGReadyCondition ,
137- expinfrav1 .InstanceTemplateReadyCondition ,
138- ),
130+ // Compute the Ready condition from the other conditions
131+ conditions .SetSummaryCondition (machinePoolScope .GCPMachinePool , machinePoolScope .GCPMachinePool ,
132+ expinfrav1 .ReadyCondition ,
133+ conditions .ForConditionTypes ([]string {string (expinfrav1 .MIGReadyCondition ), string (expinfrav1 .InstanceTemplateReadyCondition )}),
139134 )
140135
141136 if err := machinePoolScope .Close (); err != nil && reterr == nil {
@@ -215,31 +210,52 @@ func (r *GCPMachinePoolReconciler) reconcile(ctx context.Context, machinePoolSco
215210 // Make sure bootstrap data is available and populated
216211 if machinePoolScope .MachinePool .Spec .Template .Spec .Bootstrap .DataSecretName == nil {
217212 log .Info ("Bootstrap data secret reference is not yet available" )
218- conditions .MarkFalse (machinePoolScope .GCPMachinePool , expinfrav1 .MIGReadyCondition , infrav1 .WaitingForBootstrapDataReason , clusterv1 .ConditionSeverityInfo , "" )
213+ conditions .Set (machinePoolScope .GCPMachinePool , metav1.Condition {
214+ Type : string (expinfrav1 .MIGReadyCondition ),
215+ Status : metav1 .ConditionFalse ,
216+ Reason : infrav1 .WaitingForBootstrapDataReason ,
217+ Message : "Bootstrap data secret reference is not yet available" ,
218+ })
219219 return ctrl.Result {}, nil
220220 }
221221
222222 instanceTemplateKey , err := instancetemplates .New (machinePoolScope ).Reconcile (ctx )
223223 if err != nil {
224224 log .Error (err , "Error reconciling instanceTemplate" )
225+ conditions .Set (machinePoolScope .GCPMachinePool , metav1.Condition {
226+ Type : string (expinfrav1 .InstanceTemplateReadyCondition ),
227+ Status : metav1 .ConditionFalse ,
228+ Reason : expinfrav1 .InstanceTemplateReconcileFailedReason ,
229+ Message : fmt .Sprintf ("Error creating instance template: %v" , err ),
230+ })
225231 // record.Warnf(machineScope.GCPMachine, "GCPMachineReconcile", "Reconcile error - %v", err)
226- conditions .MarkUnknown (machinePoolScope .GCPMachinePool , expinfrav1 .InstanceTemplateReadyCondition , expinfrav1 .InstanceTemplateNotFoundReason , "%s" , err .Error ())
227232 return ctrl.Result {}, err
228233 }
229234
230235 // set the InstanceTemplateReadyCondition condition
231- conditions .MarkTrue (machinePoolScope .GCPMachinePool , expinfrav1 .InstanceTemplateReadyCondition )
236+ conditions .Set (machinePoolScope .GCPMachinePool , metav1.Condition {
237+ Type : string (expinfrav1 .InstanceTemplateReadyCondition ),
238+ Status : metav1 .ConditionTrue ,
239+ })
232240
233241 igm , err := instancegroupmanagers .New (machinePoolScope ).Reconcile (ctx , instanceTemplateKey )
234242 if err != nil {
235243 log .Error (err , "Error reconciling instanceGroupManager" )
236244 // record.Warnf(machineScope.GCPMachine, "GCPMachineReconcile", "Reconcile error - %v", err)
237- conditions .MarkUnknown (machinePoolScope .GCPMachinePool , expinfrav1 .MIGReadyCondition , expinfrav1 .MIGNotFoundReason , "%s" , err .Error ())
245+ conditions .Set (machinePoolScope .GCPMachinePool , metav1.Condition {
246+ Type : string (expinfrav1 .MIGReadyCondition ),
247+ Status : metav1 .ConditionFalse ,
248+ Reason : expinfrav1 .MIGProvisionFailedReason ,
249+ Message : fmt .Sprintf ("Error creating instanceGroupManager: %v" , err ),
250+ })
238251 return ctrl.Result {}, err
239252 }
240253
241254 // set the MIGReadyCondition condition
242- conditions .MarkTrue (machinePoolScope .GCPMachinePool , expinfrav1 .MIGReadyCondition )
255+ conditions .Set (machinePoolScope .GCPMachinePool , metav1.Condition {
256+ Type : string (expinfrav1 .MIGReadyCondition ),
257+ Status : metav1 .ConditionTrue ,
258+ })
243259
244260 igmInstances , err := instancegroupmanagers .New (machinePoolScope ).ListInstances (ctx , igm )
245261 if err != nil {
@@ -286,7 +302,12 @@ func (r *GCPMachinePoolReconciler) reconcileDelete(ctx context.Context, machineP
286302 r .Recorder .Eventf (machinePoolScope .GCPMachinePool , corev1 .EventTypeWarning , "FailedDelete" , "Failed to delete instancegroupmanager: %v" , err )
287303
288304 // record.Warnf(machineScope.GCPMachine, "GCPMachineReconcile", "Reconcile error - %v", err)
289- conditions .MarkUnknown (machinePoolScope .GCPMachinePool , expinfrav1 .MIGReadyCondition , expinfrav1 .MIGNotFoundReason , "%s" , err .Error ())
305+ conditions .Set (machinePoolScope .GCPMachinePool , metav1.Condition {
306+ Type : string (expinfrav1 .MIGReadyCondition ),
307+ Status : metav1 .ConditionUnknown ,
308+ Reason : expinfrav1 .MIGDeletionInProgress ,
309+ Message : fmt .Sprintf ("Error deleting instanceGroupManager: %v" , err ),
310+ })
290311 return err
291312 }
292313
@@ -295,7 +316,12 @@ func (r *GCPMachinePoolReconciler) reconcileDelete(ctx context.Context, machineP
295316 r .Recorder .Eventf (machinePoolScope .GCPMachinePool , corev1 .EventTypeWarning , "FailedDelete" , "Failed to delete instance template: %v" , err )
296317
297318 // record.Warnf(machineScope.GCPMachine, "GCPMachineReconcile", "Reconcile error - %v", err)
298- conditions .MarkUnknown (machinePoolScope .GCPMachinePool , expinfrav1 .InstanceTemplateReadyCondition , expinfrav1 .InstanceTemplateReconcileFailedReason , "%s" , err .Error ())
319+ conditions .Set (machinePoolScope .GCPMachinePool , metav1.Condition {
320+ Type : string (expinfrav1 .InstanceTemplateReadyCondition ),
321+ Status : metav1 .ConditionUnknown ,
322+ Reason : expinfrav1 .InstanceTemplateReconcileFailedReason ,
323+ Message : fmt .Sprintf ("Error deleting instanceTemplate: %v" , err ),
324+ })
299325 return err
300326 }
301327
0 commit comments