Skip to content

Commit 225d2eb

Browse files
Merge pull request #1311 from bshephar/tidy-deployment-reconciler
Remove unnecessary NodeSet loop and dedicated NodeSet List logic
2 parents c4c78a5 + c3ec006 commit 225d2eb

File tree

1 file changed

+50
-52
lines changed

1 file changed

+50
-52
lines changed

controllers/dataplane/openstackdataplanedeployment_controller.go

Lines changed: 50 additions & 52 deletions
Original file line numberDiff line numberDiff line change
@@ -149,56 +149,29 @@ func (r *OpenStackDataPlaneDeploymentReconciler) Reconcile(ctx context.Context,
149149
}()
150150

151151
// Ensure NodeSets
152-
nodeSets := dataplanev1.OpenStackDataPlaneNodeSetList{}
153-
for _, nodeSet := range instance.Spec.NodeSets {
154-
155-
// Fetch the OpenStackDataPlaneNodeSet instance
156-
nodeSetInstance := &dataplanev1.OpenStackDataPlaneNodeSet{}
157-
err := r.Client.Get(
158-
ctx,
159-
types.NamespacedName{
160-
Namespace: instance.GetNamespace(),
161-
Name: nodeSet,
162-
},
163-
nodeSetInstance)
164-
if err != nil {
165-
// NodeSet not found, force a requeue
166-
if k8s_errors.IsNotFound(err) {
167-
Log.Info("NodeSet not found", "NodeSet", nodeSet)
168-
return ctrl.Result{RequeueAfter: time.Second * time.Duration(instance.Spec.DeploymentRequeueTime)}, nil
169-
}
170-
instance.Status.Conditions.MarkFalse(
171-
dataplanev1.SetupReadyCondition,
172-
condition.ErrorReason,
173-
condition.SeverityError,
174-
dataplanev1.DataPlaneNodeSetErrorMessage,
175-
err.Error())
176-
// Error reading the object - requeue the request.
177-
return ctrl.Result{}, err
178-
}
179-
if err = nodeSetInstance.Spec.ValidateTLS(instance.GetNamespace(), r.Client, ctx); err != nil {
180-
Log.Info("error while comparing TLS settings of nodeset %s with control plane: %w", nodeSet, err)
181-
instance.Status.Conditions.MarkFalse(
182-
dataplanev1.SetupReadyCondition,
183-
condition.ErrorReason,
184-
condition.SeverityError,
185-
dataplanev1.DataPlaneNodeSetErrorMessage,
186-
err.Error())
187-
return ctrl.Result{}, err
152+
nodeSets, err := r.listNodeSets(ctx, &Log, instance)
153+
if err != nil {
154+
if k8s_errors.IsNotFound(err) {
155+
return ctrl.Result{RequeueAfter: time.Second * time.Duration(instance.Spec.DeploymentRequeueTime)}, nil
188156
}
189-
nodeSets.Items = append(nodeSets.Items, *nodeSetInstance)
157+
return ctrl.Result{}, err
190158
}
191159

192-
// Check that all nodeSets are SetupReady
160+
globalInventorySecrets := map[string]string{}
161+
globalSSHKeySecrets := map[string]string{}
162+
163+
// Check that all NodeSets are ready and get TLS certs
193164
for _, nodeSet := range nodeSets.Items {
165+
166+
// Add inventory secret to list of inventories for global services
167+
globalInventorySecrets[nodeSet.Name] = fmt.Sprintf("dataplanenodeset-%s", nodeSet.Name)
168+
globalSSHKeySecrets[nodeSet.Name] = nodeSet.Spec.NodeTemplate.AnsibleSSHPrivateKeySecret
169+
194170
if !nodeSet.Status.Conditions.IsTrue(dataplanev1.SetupReadyCondition) {
195171
Log.Info("NodeSet SetupReadyCondition is not True", "NodeSet", nodeSet.Name)
196172
return ctrl.Result{RequeueAfter: time.Second * time.Duration(instance.Spec.DeploymentRequeueTime)}, nil
197173
}
198-
}
199174

200-
// get TLS certs
201-
for _, nodeSet := range nodeSets.Items {
202175
if nodeSet.Spec.TLSEnabled {
203176
var services []string
204177
if len(instance.Spec.ServicesOverride) != 0 {
@@ -260,16 +233,6 @@ func (r *OpenStackDataPlaneDeploymentReconciler) Reconcile(ctx context.Context,
260233
var nodesetServiceMap map[string][]string
261234
backoffLimitReached := false
262235

263-
globalInventorySecrets := map[string]string{}
264-
globalSSHKeySecrets := map[string]string{}
265-
266-
// Gathering individual inventory and ssh secrets for later use
267-
for _, nodeSet := range nodeSets.Items {
268-
// Add inventory secret to list of inventories for global services
269-
globalInventorySecrets[nodeSet.Name] = fmt.Sprintf("dataplanenodeset-%s", nodeSet.Name)
270-
globalSSHKeySecrets[nodeSet.Name] = nodeSet.Spec.NodeTemplate.AnsibleSSHPrivateKeySecret
271-
}
272-
273236
if nodesetServiceMap, err = deployment.DedupeServices(ctx, helper, nodeSets.Items,
274237
instance.Spec.ServicesOverride); err != nil {
275238
util.LogErrorForObject(helper, err, "OpenStackDeployment error for deployment", instance)
@@ -389,7 +352,7 @@ func (r *OpenStackDataPlaneDeploymentReconciler) Reconcile(ctx context.Context,
389352
if version != nil {
390353
instance.Status.DeployedVersion = version.Spec.TargetVersion
391354
}
392-
err = r.setHashes(ctx, helper, instance, nodeSets)
355+
err = r.setHashes(ctx, helper, instance, *nodeSets)
393356
if err != nil {
394357
Log.Error(err, "Error setting service hashes")
395358
}
@@ -523,3 +486,38 @@ func (r *OpenStackDataPlaneDeploymentReconciler) SetupWithManager(mgr ctrl.Manag
523486
handler.EnqueueRequestsFromMapFunc(certFn)).
524487
Complete(r)
525488
}
489+
490+
func (r *OpenStackDataPlaneDeploymentReconciler) listNodeSets(ctx context.Context, Log *logr.Logger, instance *dataplanev1.OpenStackDataPlaneDeployment) (*dataplanev1.OpenStackDataPlaneNodeSetList, error) {
491+
492+
var nodeSets = dataplanev1.OpenStackDataPlaneNodeSetList{}
493+
var err error
494+
495+
for _, nodeSet := range instance.Spec.NodeSets {
496+
497+
// Fetch the OpenStackDataPlaneNodeSet instance
498+
nodeSetInstance := &dataplanev1.OpenStackDataPlaneNodeSet{}
499+
err := r.Client.Get(
500+
ctx,
501+
types.NamespacedName{
502+
Namespace: instance.GetNamespace(),
503+
Name: nodeSet,
504+
},
505+
nodeSetInstance)
506+
if err != nil {
507+
Log.Info("NodeSet not found", "NodeSet", nodeSet)
508+
return &nodeSets, err
509+
}
510+
if err = nodeSetInstance.Spec.ValidateTLS(instance.GetNamespace(), r.Client, ctx); err != nil {
511+
Log.Info("error while comparing TLS settings of nodeset %s with control plane: %w", nodeSet, err)
512+
instance.Status.Conditions.MarkFalse(
513+
dataplanev1.SetupReadyCondition,
514+
condition.ErrorReason,
515+
condition.SeverityError,
516+
dataplanev1.DataPlaneNodeSetErrorMessage,
517+
err.Error())
518+
return &nodeSets, err
519+
}
520+
nodeSets.Items = append(nodeSets.Items, *nodeSetInstance)
521+
}
522+
return &nodeSets, err
523+
}

0 commit comments

Comments
 (0)