@@ -147,6 +147,17 @@ func (r *ImageClusterInstallReconciler) Reconcile(ctx context.Context, req ctrl.
147147 return res , err
148148 }
149149
150+ var cd * hivev1.ClusterDeployment
151+ if ici .Spec .ClusterDeploymentRef != nil && ici .Spec .ClusterDeploymentRef .Name != "" {
152+ var err error
153+ cd , err = r .getCD (ctx , ici )
154+ if err != nil {
155+ log .Error (err )
156+ }
157+ }
158+
159+ r .labelReferencedObjectsForBackup (ctx , log , ici , cd )
160+
150161 // Nothing to do if the installation is complete
151162 if InstallationCompleted (ici ) {
152163 return ctrl.Result {}, nil
@@ -199,7 +210,7 @@ func (r *ImageClusterInstallReconciler) Reconcile(ctx context.Context, req ctrl.
199210 // when the problem is resolved.
200211 // - ConfigurationFailed: sets this reason when AutomatedCleaningMode cannot be modified in BMH.
201212 cond .Reason = v1alpha1 .ConfigurationPendingReason
202- cd , bmh , err := r .validateConfiguration (ctx , ici , & cond , log )
213+ bmh , err := r .validateConfiguration (ctx , ici , cd , & cond , log )
203214 if cd == nil || bmh == nil || err != nil {
204215 return ctrl.Result {}, err
205216 }
@@ -231,8 +242,6 @@ func (r *ImageClusterInstallReconciler) Reconcile(ctx context.Context, req ctrl.
231242 return res , err
232243 }
233244
234- r .labelReferencedObjectsForBackup (ctx , log , ici , cd )
235-
236245 // 4. Host configuration phase
237246 // Possible reasons for not meeting requirements and exiting reconcile:
238247 // - HostConfigurationPending: sets this reason in following scenarios:
@@ -261,34 +270,33 @@ func GetClusterConfigDir(namespacesDir, namespace, uid string) string {
261270func (r * ImageClusterInstallReconciler ) validateConfiguration (
262271 ctx context.Context ,
263272 ici * v1alpha1.ImageClusterInstall ,
273+ cd * hivev1.ClusterDeployment ,
264274 cond * hivev1.ClusterInstallCondition ,
265275 log logrus.FieldLogger ,
266- ) (* hivev1. ClusterDeployment , * bmh_v1alpha1.BareMetalHost , error ) {
267-
268- if ici .Spec .ClusterDeploymentRef == nil || ici .Spec .ClusterDeploymentRef .Name == "" {
269- cond .Message = "ClusterDeploymentRef is unset"
270- log .Error (errors .New (cond .Message ))
271- return nil , nil , nil
272- }
276+ ) (* bmh_v1alpha1.BareMetalHost , error ) {
277+ if cd == nil {
278+ if ici .Spec .ClusterDeploymentRef == nil || ici .Spec .ClusterDeploymentRef .Name == "" {
279+ cond .Message = "ClusterDeploymentRef is unset"
280+ log .Error (errors .New (cond .Message ))
281+ return nil , nil
282+ }
273283
274- cd , err := r .getCD (ctx , ici )
275- if err != nil {
284+ // in this case error would have been logged when cd couldn't be queried earlier in Reconcile so just set the Message here
276285 cond .Message = fmt .Sprintf ("failed to get ClusterDeployment %s/%s" , ici .Namespace , ici .Spec .ClusterDeploymentRef .Name )
277- log .Error (err )
278- return nil , nil , nil
286+ return nil , nil
279287 }
280288
281289 if ici .Spec .BareMetalHostRef == nil || ici .Spec .BareMetalHostRef .Name == "" {
282290 cond .Message = "BareMetalHostRef is unset"
283291 log .Error (errors .New (cond .Message ))
284- return nil , nil , nil
292+ return nil , nil
285293 }
286294
287295 bmh , err := r .getBMH (ctx , ici .Spec .BareMetalHostRef )
288296 if err != nil {
289297 cond .Message = fmt .Sprintf ("failed to get BareMetalHost %s/%s" , ici .Spec .BareMetalHostRef .Namespace , ici .Spec .BareMetalHostRef .Name )
290298 log .Error (err )
291- return nil , nil , nil
299+ return nil , nil
292300 }
293301
294302 // AutomatedCleaningMode is set at the beginning of this flow because we don't want ironic to format the disk
@@ -300,11 +308,11 @@ func (r *ImageClusterInstallReconciler) validateConfiguration(
300308 cond .Reason = v1alpha1 .ConfigurationFailedReason
301309 cond .Message = fmt .Sprintf ("failed to disable automated cleaning mode for BareMetalHost %s/%s" , bmh .Namespace , bmh .Name )
302310 log .WithError (err ).Error (cond .Message )
303- return nil , nil , err
311+ return nil , err
304312 }
305313 }
306314
307- return cd , bmh , nil
315+ return bmh , nil
308316}
309317
310318func (r * ImageClusterInstallReconciler ) validateHost (
@@ -933,19 +941,6 @@ func (r *ImageClusterInstallReconciler) labelDataImageForBackup(ctx context.Cont
933941}
934942
935943func (r * ImageClusterInstallReconciler ) labelReferencedObjectsForBackup (ctx context.Context , log logrus.FieldLogger , ici * v1alpha1.ImageClusterInstall , cd * hivev1.ClusterDeployment ) {
936- if ici .Spec .ClusterMetadata != nil {
937- kubeconfigKey := types.NamespacedName {Name : ici .Spec .ClusterMetadata .AdminKubeconfigSecretRef .Name , Namespace : ici .Namespace }
938- if err := r .labelSecretForBackup (ctx , kubeconfigKey ); err != nil {
939- log .WithError (err ).Errorf ("failed to label Secret %s for backup" , kubeconfigKey )
940- }
941- if ici .Spec .ClusterMetadata .AdminPasswordSecretRef != nil {
942- passwordKey := types.NamespacedName {Name : ici .Spec .ClusterMetadata .AdminPasswordSecretRef .Name , Namespace : ici .Namespace }
943- if err := r .labelSecretForBackup (ctx , passwordKey ); err != nil {
944- log .WithError (err ).Errorf ("failed to label Secret %s for backup" , passwordKey )
945- }
946- }
947- }
948-
949944 if ici .Spec .CABundleRef != nil {
950945 caBundleKey := types.NamespacedName {Name : ici .Spec .CABundleRef .Name , Namespace : ici .Namespace }
951946 if err := r .labelConfigMapForBackup (ctx , caBundleKey ); err != nil {
@@ -960,10 +955,17 @@ func (r *ImageClusterInstallReconciler) labelReferencedObjectsForBackup(ctx cont
960955 }
961956 }
962957
963- if cd .Spec .PullSecretRef != nil {
964- psKey := types.NamespacedName {Name : cd .Spec .PullSecretRef .Name , Namespace : cd .Namespace }
965- if err := r .labelSecretForBackup (ctx , psKey ); err != nil {
966- log .WithError (err ).Errorf ("failed to label Secret %s for backup" , psKey )
958+ if cd != nil {
959+ reconfigKey := types.NamespacedName {Name : credentials .SeedReconfigurationSecretName (cd .Name ), Namespace : cd .Namespace }
960+ if err := r .labelSecretForBackup (ctx , reconfigKey ); err != nil {
961+ log .WithError (err ).Errorf ("failed to label Secret %s for backup" , reconfigKey )
962+ }
963+
964+ if cd .Spec .PullSecretRef != nil {
965+ psKey := types.NamespacedName {Name : cd .Spec .PullSecretRef .Name , Namespace : cd .Namespace }
966+ if err := r .labelSecretForBackup (ctx , psKey ); err != nil {
967+ log .WithError (err ).Errorf ("failed to label Secret %s for backup" , psKey )
968+ }
967969 }
968970 }
969971
@@ -976,6 +978,19 @@ func (r *ImageClusterInstallReconciler) labelReferencedObjectsForBackup(ctx cont
976978 log .WithError (err ).Errorf ("failed to label DataImage %s/%s for backup" , ici .Spec .BareMetalHostRef .Namespace , ici .Spec .BareMetalHostRef .Name )
977979 }
978980 }
981+
982+ if ici .Spec .ClusterMetadata != nil {
983+ kubeconfigKey := types.NamespacedName {Name : ici .Spec .ClusterMetadata .AdminKubeconfigSecretRef .Name , Namespace : ici .Namespace }
984+ if err := r .labelSecretForBackup (ctx , kubeconfigKey ); err != nil {
985+ log .WithError (err ).Errorf ("failed to label Secret %s for backup" , kubeconfigKey )
986+ }
987+ if ici .Spec .ClusterMetadata .AdminPasswordSecretRef != nil {
988+ passwordKey := types.NamespacedName {Name : ici .Spec .ClusterMetadata .AdminPasswordSecretRef .Name , Namespace : ici .Namespace }
989+ if err := r .labelSecretForBackup (ctx , passwordKey ); err != nil {
990+ log .WithError (err ).Errorf ("failed to label Secret %s for backup" , passwordKey )
991+ }
992+ }
993+ }
979994}
980995
981996func (r * ImageClusterInstallReconciler ) configDirs (ici * v1alpha1.ImageClusterInstall ) (string , string , error ) {
0 commit comments