Skip to content

Commit a88b513

Browse files
committed
fixes
1 parent 58e9cba commit a88b513

File tree

3 files changed

+34
-37
lines changed

3 files changed

+34
-37
lines changed

controllers/clustermodule_reconciler.go

+2-1
Original file line numberDiff line numberDiff line change
@@ -183,6 +183,7 @@ func (r Reconciler) Reconcile(ctx context.Context, clusterCtx *capvcontext.Clust
183183
Reason: infrav1.VSphereClusterClusterModulesNotReadyV1Beta2Reason,
184184
Message: generateClusterModuleErrorMessage(modErrs),
185185
})
186+
return reconcile.Result{}, err
186187
case len(modErrs) == 0 && len(clusterModuleSpecs) > 0:
187188
conditions.MarkTrue(clusterCtx.VSphereCluster, infrav1.ClusterModulesAvailableCondition)
188189
default:
@@ -337,7 +338,7 @@ type clusterModError struct {
337338

338339
func generateClusterModuleErrorMessage(errList []clusterModError) string {
339340
sb := strings.Builder{}
340-
sb.WriteString("failed to create cluster modules for: ")
341+
sb.WriteString("Failed to create cluster modules for: ")
341342

342343
for _, e := range errList {
343344
sb.WriteString(fmt.Sprintf("%s %s, ", e.name, e.err.Error()))

controllers/vspherecluster_reconciler.go

+31-35
Original file line numberDiff line numberDiff line change
@@ -118,6 +118,11 @@ func (r *clusterReconciler) Reconcile(ctx context.Context, req ctrl.Request) (_
118118
return r.reconcileDelete(ctx, clusterContext)
119119
}
120120

121+
if cluster == nil {
122+
log.Info("Waiting for Cluster controller to set OwnerRef on VSphereCluster")
123+
return reconcile.Result{}, nil
124+
}
125+
121126
// Handle non-deleted clusters
122127
return r.reconcileNormal(ctx, clusterContext)
123128
}
@@ -131,28 +136,15 @@ func (r *clusterReconciler) patch(ctx context.Context, clusterCtx *capvcontext.C
131136
),
132137
)
133138

134-
if !v1beta2conditions.Has(clusterCtx.VSphereCluster, infrav1.VSphereClusterVCenterAvailableV1Beta2Condition) {
135-
v1beta2conditions.Set(clusterCtx.VSphereCluster, metav1.Condition{
136-
Type: infrav1.VSphereClusterVCenterAvailableV1Beta2Condition,
137-
Status: metav1.ConditionFalse,
138-
Reason: infrav1.VSphereClusterVCenterNotAvailableV1Beta2Reason,
139-
Message: "did not observe VCenterAvailable status",
140-
})
141-
}
142-
143-
if !v1beta2conditions.Has(clusterCtx.VSphereCluster, infrav1.VSphereClusterClusterModulesReadyV1Beta2Condition) {
144-
v1beta2conditions.Set(clusterCtx.VSphereCluster, metav1.Condition{
145-
Type: infrav1.VSphereClusterClusterModulesReadyV1Beta2Condition,
146-
Status: metav1.ConditionFalse,
147-
Reason: infrav1.VSphereClusterClusterModulesNotReadyV1Beta2Reason,
148-
Message: "did not observe cluster module status",
149-
})
150-
}
151-
152139
if err := v1beta2conditions.SetSummaryCondition(clusterCtx.VSphereCluster, clusterCtx.VSphereCluster, infrav1.VSphereClusterReadyV1Beta2Condition,
153140
v1beta2conditions.ForConditionTypes{
154-
infrav1.VSphereClusterFailureDomainsReadyV1Beta2Condition,
155141
infrav1.VSphereClusterVCenterAvailableV1Beta2Condition,
142+
// FailureDomainsReady and ClusterModuelsReady may not be always set.
143+
infrav1.VSphereClusterFailureDomainsReadyV1Beta2Condition,
144+
infrav1.VSphereClusterClusterModulesReadyV1Beta2Condition,
145+
},
146+
v1beta2conditions.IgnoreTypesIfMissing{
147+
infrav1.VSphereClusterFailureDomainsReadyV1Beta2Condition,
156148
infrav1.VSphereClusterClusterModulesReadyV1Beta2Condition,
157149
},
158150
// Using a custom merge strategy to override reasons applied during merge.
@@ -171,7 +163,6 @@ func (r *clusterReconciler) patch(ctx context.Context, clusterCtx *capvcontext.C
171163
}
172164

173165
return clusterCtx.PatchHelper.Patch(ctx, clusterCtx.VSphereCluster,
174-
patch.WithOwnedConditions{Conditions: []clusterv1.ConditionType{}},
175166
patch.WithOwnedV1Beta2Conditions{Conditions: []string{
176167
clusterv1.PausedV1Beta2Condition,
177168
infrav1.VSphereClusterReadyV1Beta2Condition,
@@ -190,13 +181,11 @@ func (r *clusterReconciler) reconcileDelete(ctx context.Context, clusterCtx *cap
190181
Status: metav1.ConditionFalse,
191182
Reason: infrav1.VSphereClusterVCenterAvailableDeletingV1Beta2Reason,
192183
})
193-
194184
v1beta2conditions.Set(clusterCtx.VSphereCluster, metav1.Condition{
195185
Type: infrav1.VSphereClusterClusterModulesReadyV1Beta2Condition,
196186
Status: metav1.ConditionFalse,
197187
Reason: infrav1.VSphereClusterClusterModulesDeletingV1Beta2Reason,
198188
})
199-
200189
v1beta2conditions.Set(clusterCtx.VSphereCluster, metav1.Condition{
201190
Type: infrav1.VSphereClusterFailureDomainsReadyV1Beta2Condition,
202191
Status: metav1.ConditionFalse,
@@ -265,6 +254,7 @@ func (r *clusterReconciler) reconcileDelete(ctx context.Context, clusterCtx *cap
265254
func (r *clusterReconciler) reconcileNormal(ctx context.Context, clusterCtx *capvcontext.ClusterContext) (reconcile.Result, error) {
266255
log := ctrl.LoggerFrom(ctx)
267256

257+
// Reconcile failure domains.
268258
ok, err := r.reconcileDeploymentZones(ctx, clusterCtx)
269259
if err != nil {
270260
v1beta2conditions.Set(clusterCtx.VSphereCluster, metav1.Condition{
@@ -276,22 +266,10 @@ func (r *clusterReconciler) reconcileNormal(ctx context.Context, clusterCtx *cap
276266
return reconcile.Result{}, err
277267
}
278268
if !ok {
279-
v1beta2conditions.Set(clusterCtx.VSphereCluster, metav1.Condition{
280-
Type: infrav1.VSphereClusterFailureDomainsReadyV1Beta2Condition,
281-
Status: metav1.ConditionFalse,
282-
Reason: infrav1.VSphereClusterFailureDomainsWaitingForFailureDomainStatusV1Beta2Reason,
283-
Message: "waiting for failure domains to report ready status",
284-
})
285269
return reconcile.Result{RequeueAfter: 10 * time.Second}, nil
286270
}
287-
v1beta2conditions.Set(clusterCtx.VSphereCluster, metav1.Condition{
288-
Type: infrav1.VSphereClusterFailureDomainsReadyV1Beta2Condition,
289-
Status: metav1.ConditionTrue,
290-
Reason: infrav1.VSphereClusterFailureDomainsReadyV1Beta2Reason,
291-
})
292-
293-
// TODO check all occurencies of infrav1.VCenterAvailableCondition and infrav1.ClusterModulesAvailable/ready condition
294271

272+
// Reconcile vCenter availability.
295273
if err := r.reconcileIdentitySecret(ctx, clusterCtx); err != nil {
296274
conditions.MarkFalse(clusterCtx.VSphereCluster, infrav1.VCenterAvailableCondition, infrav1.VCenterUnreachableReason, clusterv1.ConditionSeverityError, err.Error())
297275
v1beta2conditions.Set(clusterCtx.VSphereCluster, metav1.Condition{
@@ -322,6 +300,7 @@ func (r *clusterReconciler) reconcileNormal(ctx context.Context, clusterCtx *cap
322300
Reason: infrav1.VSphereClusterVCenterAvailableV1Beta2Reason,
323301
})
324302

303+
// Reconcile cluster modules.
325304
err = r.reconcileVCenterVersion(clusterCtx, vcenterSession)
326305
if err != nil || clusterCtx.VSphereCluster.Status.VCenterVersion == "" {
327306
conditions.MarkFalse(clusterCtx.VSphereCluster, infrav1.ClusterModulesAvailableCondition, infrav1.MissingVCenterVersionReason, clusterv1.ConditionSeverityWarning, err.Error())
@@ -470,14 +449,31 @@ func (r *clusterReconciler) reconcileDeploymentZones(ctx context.Context, cluste
470449
if readyNotReported > 0 {
471450
log.Info("Waiting for failure domains to be reconciled")
472451
conditions.MarkFalse(clusterCtx.VSphereCluster, infrav1.FailureDomainsAvailableCondition, infrav1.WaitingForFailureDomainStatusReason, clusterv1.ConditionSeverityInfo, "waiting for failure domains to report ready status")
452+
v1beta2conditions.Set(clusterCtx.VSphereCluster, metav1.Condition{
453+
Type: infrav1.VSphereClusterFailureDomainsReadyV1Beta2Condition,
454+
Status: metav1.ConditionTrue,
455+
Reason: infrav1.VSphereClusterFailureDomainsNotReadyV1Beta2Reason,
456+
Message: "Waiting for failure domains to report ready status",
457+
})
473458
return false, nil
474459
}
475460

476461
if len(failureDomains) > 0 {
477462
if notReady > 0 {
478463
conditions.MarkFalse(clusterCtx.VSphereCluster, infrav1.FailureDomainsAvailableCondition, infrav1.FailureDomainsSkippedReason, clusterv1.ConditionSeverityInfo, "one or more failure domains are not ready")
464+
v1beta2conditions.Set(clusterCtx.VSphereCluster, metav1.Condition{
465+
Type: infrav1.VSphereClusterFailureDomainsReadyV1Beta2Condition,
466+
Status: metav1.ConditionTrue,
467+
Reason: infrav1.VSphereClusterFailureDomainsNotReadyV1Beta2Reason,
468+
Message: "One or more failure domains are not ready",
469+
})
479470
} else {
480471
conditions.MarkTrue(clusterCtx.VSphereCluster, infrav1.FailureDomainsAvailableCondition)
472+
v1beta2conditions.Set(clusterCtx.VSphereCluster, metav1.Condition{
473+
Type: infrav1.VSphereClusterFailureDomainsReadyV1Beta2Condition,
474+
Status: metav1.ConditionTrue,
475+
Reason: infrav1.VSphereClusterFailureDomainsReadyV1Beta2Reason,
476+
})
481477
}
482478
} else {
483479
// Remove the condition if failure domains do not exist

pkg/session/session.go

+1-1
Original file line numberDiff line numberDiff line change
@@ -274,7 +274,7 @@ func (s *Session) GetVersion() (infrav1.VCenterVersion, error) {
274274
if version.Major >= 6 {
275275
return infrav1.NewVCenterVersion(svcVersion), nil
276276
}
277-
return "", errors.Errorf("version %q lower than 7", svcVersion)
277+
return "", errors.Errorf("version %q lower than 6", svcVersion)
278278
}
279279

280280
// Clear is meant to destroy all the cached sessions.

0 commit comments

Comments
 (0)