@@ -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