@@ -65,47 +65,50 @@ func NewReconciler(controllerManagerCtx *capvcontext.ControllerManagerContext) R
6565
6666func (r Reconciler ) Reconcile (ctx context.Context , clusterCtx * capvcontext.ClusterContext ) (reconcile.Result , error ) {
6767 log := ctrl .LoggerFrom (ctx )
68- log .Info ("Reconciling cluster modules" )
6968
7069 if ! clustermodule .IsClusterCompatible (clusterCtx ) {
7170 conditions .MarkFalse (clusterCtx .VSphereCluster , infrav1 .ClusterModulesAvailableCondition , infrav1 .VCenterVersionIncompatibleReason , clusterv1 .ConditionSeverityInfo ,
72- "vCenter API version %s is not compatible with cluster modules" , clusterCtx .VSphereCluster .Status .VCenterVersion )
73- log .Info ("Cluster is not compatible for anti affinity (vCenter >= 7 required)" ,
74- "vCenterVersion" , clusterCtx .VSphereCluster .Status .VCenterVersion )
71+ "vCenter version %s does not support cluster modules" , clusterCtx .VSphereCluster .Status .VCenterVersion )
72+ log .V (3 ).Info (fmt .Sprintf ("vCenter version %s does not support cluster modules to implement anti affinity (vCenter >= 7 required)" , clusterCtx .VSphereCluster .Status .VCenterVersion ))
7573 return reconcile.Result {}, nil
7674 }
7775
7876 objectMap , err := r .fetchMachineOwnerObjects (ctx , clusterCtx )
7977 if err != nil {
80- return reconcile.Result {}, err
78+ return reconcile.Result {}, errors . Wrapf ( err , "failed to get Machine owner objects" )
8179 }
8280
8381 modErrs := []clusterModError {}
8482
8583 clusterModuleSpecs := []infrav1.ClusterModule {}
8684 for _ , mod := range clusterCtx .VSphereCluster .Spec .ClusterModules {
8785 // Note: We have to use := here to not overwrite log & ctx outside the for loop.
88- log := log .WithValues ("targetObjectName" , mod .TargetObjectName , "moduleUUID" , mod .ModuleUUID )
86+ log := log
87+ // It is safe to infer KubeadmControlPlane or MachineDeployment from .ControlPlane as modules
88+ // are only implemented for these types.
89+ if mod .ControlPlane {
90+ log = log .WithValues ("KubeadmControlPlane" , klog .KRef (clusterCtx .VSphereCluster .Namespace , mod .TargetObjectName ), "moduleUUID" , mod .ModuleUUID )
91+ } else {
92+ log = log .WithValues ("MachineDeployment" , klog .KRef (clusterCtx .VSphereCluster .Namespace , mod .TargetObjectName ), "moduleUUID" , mod .ModuleUUID )
93+ }
8994 ctx := ctrl .LoggerInto (ctx , log )
9095
9196 curr := mod .TargetObjectName
9297 if mod .ControlPlane {
9398 curr = appendKCPKey (curr )
9499 }
95100 if obj , ok := objectMap [curr ]; ! ok {
96- // delete the cluster module as the object is marked for deletion
97- // or already deleted.
101+ // Delete the cluster module as the object is marked for deletion or already deleted.
98102 if err := r .ClusterModuleService .Remove (ctx , clusterCtx , mod .ModuleUUID ); err != nil {
99- log .Error (err , "failed to delete cluster module for object" )
103+ log .Error (err , "Failed to delete cluster module for object" )
100104 }
101105 delete (objectMap , curr )
102106 } else {
103- // verify the cluster module
107+ // Verify the cluster module
104108 exists , err := r .ClusterModuleService .DoesExist (ctx , clusterCtx , obj , mod .ModuleUUID )
105109 if err != nil {
106- // Add the error to modErrs so it gets handled below.
107- modErrs = append (modErrs , clusterModError {obj .GetName (), errors .Wrapf (err , "failed to verify cluster module %q" , mod .ModuleUUID )})
108- log .Error (err , "failed to verify cluster module for object" )
110+ modErrs = append (modErrs , clusterModError {obj .GetName (), errors .Wrapf (err , "failed to check if cluster module %q exists" , mod .ModuleUUID )})
111+ log .Error (err , "Failed to check if cluster module for object exists" )
109112 // Append the module and remove it from objectMap to not create new ones instead.
110113 clusterModuleSpecs = append (clusterModuleSpecs , infrav1.ClusterModule {
111114 ControlPlane : obj .IsControlPlane (),
@@ -116,7 +119,7 @@ func (r Reconciler) Reconcile(ctx context.Context, clusterCtx *capvcontext.Clust
116119 continue
117120 }
118121
119- // append the module and object info to the VSphereCluster object
122+ // Append the module and object info to the VSphereCluster object
120123 // and remove it from the object map since no new cluster module
121124 // needs to be created.
122125 if exists {
@@ -127,16 +130,20 @@ func (r Reconciler) Reconcile(ctx context.Context, clusterCtx *capvcontext.Clust
127130 })
128131 delete (objectMap , curr )
129132 } else {
130- log .Info ("module for object not found" )
133+ log .V ( 4 ). Info ("Module for object not found (will be created) " )
131134 }
132135 }
133136 }
134137
135138 for _ , obj := range objectMap {
139+ // Note: We have to use := here to create a new variable and not overwrite log & ctx outside the for loop.
140+ log := log .WithValues (obj .GetObjectKind ().GroupVersionKind ().Kind , klog .KObj (obj ))
141+ ctx := ctrl .LoggerInto (ctx , log )
142+
136143 moduleUUID , err := r .ClusterModuleService .Create (ctx , clusterCtx , obj )
137144 if err != nil {
138- log . Error ( err , "failed to create cluster module for target object" , "targetObjectName" , obj . GetName () )
139- modErrs = append ( modErrs , clusterModError { obj . GetName (), err } )
145+ modErrs = append ( modErrs , clusterModError { obj . GetName (), errors . Wrapf ( err , "failed to create cluster module" )} )
146+ log . Error ( err , "Failed to create cluster module for object" )
140147 continue
141148 }
142149 // module creation was skipped
@@ -180,14 +187,14 @@ func (r Reconciler) toAffinityInput(ctx context.Context, obj client.Object) []re
180187 OwnerReferences : obj .GetOwnerReferences (),
181188 })
182189 if err != nil {
183- log .Error (err , "failed to get owner cluster " )
190+ log .V ( 4 ). Error (err , "Failed to get owner Cluster " )
184191 return nil
185192 }
186193 log = log .WithValues ("Cluster" , klog .KObj (cluster ))
187194 ctx = ctrl .LoggerInto (ctx , log )
188195
189196 if cluster .Spec .InfrastructureRef == nil {
190- log .Error (err , "Cluster infrastructureRef not set. Requeueing " )
197+ log .V ( 4 ). Error (err , "Failed to get VSphereCluster: Cluster.spec. infrastructureRef not set" )
191198 return nil
192199 }
193200
@@ -199,7 +206,7 @@ func (r Reconciler) toAffinityInput(ctx context.Context, obj client.Object) []re
199206 Name : cluster .Spec .InfrastructureRef .Name ,
200207 Namespace : cluster .Namespace ,
201208 }, vsphereCluster ); err != nil {
202- log .Error (err , "Failed to get vSphereCluster object " )
209+ log .V ( 4 ). Error (err , "Failed to get VSphereCluster " )
203210 return nil
204211 }
205212
@@ -244,7 +251,7 @@ func (r Reconciler) fetchMachineOwnerObjects(ctx context.Context, clusterCtx *ca
244251
245252 name , ok := clusterCtx .VSphereCluster .GetLabels ()[clusterv1 .ClusterNameLabel ]
246253 if ! ok {
247- return nil , errors .Errorf ("missing CAPI cluster label" )
254+ return nil , errors .Errorf ("failed to get Cluster name from VSphereCluster: missing cluster name label" )
248255 }
249256
250257 labels := map [string ]string {clusterv1 .ClusterNameLabel : name }
@@ -253,10 +260,10 @@ func (r Reconciler) fetchMachineOwnerObjects(ctx context.Context, clusterCtx *ca
253260 ctx , kcpList ,
254261 client .InNamespace (clusterCtx .VSphereCluster .GetNamespace ()),
255262 client .MatchingLabels (labels )); err != nil {
256- return nil , errors .Wrapf (err , "failed to list control plane objects" )
263+ return nil , errors .Wrapf (err , "failed to list KubeadmControlPlane objects" )
257264 }
258265 if len (kcpList .Items ) > 1 {
259- return nil , errors .Errorf ("multiple control plane objects found, expected 1, found %d" , len (kcpList .Items ))
266+ return nil , errors .Errorf ("multiple KubeadmControlPlane objects found, expected 1, found %d" , len (kcpList .Items ))
260267 }
261268
262269 if len (kcpList .Items ) != 0 {
@@ -270,7 +277,7 @@ func (r Reconciler) fetchMachineOwnerObjects(ctx context.Context, clusterCtx *ca
270277 ctx , mdList ,
271278 client .InNamespace (clusterCtx .VSphereCluster .GetNamespace ()),
272279 client .MatchingLabels (labels )); err != nil {
273- return nil , errors .Wrapf (err , "failed to list machine deployment objects" )
280+ return nil , errors .Wrapf (err , "failed to list MachineDeployment objects" )
274281 }
275282 for _ , md := range mdList .Items {
276283 if md .DeletionTimestamp .IsZero () {
0 commit comments