diff --git a/api/v1alpha1/conditions_const.go b/api/v1alpha1/conditions_const.go index c72d865c..d2d0a5bb 100644 --- a/api/v1alpha1/conditions_const.go +++ b/api/v1alpha1/conditions_const.go @@ -53,6 +53,9 @@ const ( // CloudNotSetReason is used when user don't specify a valid clouds.yaml inside a secret. CloudNotSetReason = "CloudNotSet" + + // SecretNotFoundReason is used when the secret specified by the user is not found. + SecretNotFoundReason = "SecretNotFound" ) const ( diff --git a/internal/controller/openstackclusterstackrelease_controller.go b/internal/controller/openstackclusterstackrelease_controller.go index 6c832862..c75db7c4 100644 --- a/internal/controller/openstackclusterstackrelease_controller.go +++ b/internal/controller/openstackclusterstackrelease_controller.go @@ -129,7 +129,9 @@ func (r *OpenStackClusterStackReleaseReconciler) Reconcile(ctx context.Context, clusterv1beta1.ConditionSeverityError, err.Error(), ) - return ctrl.Result{RequeueAfter: 1 * time.Minute}, fmt.Errorf("failed to create release: %w", err) + record.Warnf(openstackclusterstackrelease, "IssueWithReleaseAssets", err.Error()) + logger.Error(err, "failed to create release") + return ctrl.Result{RequeueAfter: 1 * time.Minute}, nil } if download { @@ -140,7 +142,8 @@ func (r *OpenStackClusterStackReleaseReconciler) Reconcile(ctx context.Context, r.openStackClusterStackRelDownloadDirectoryMutex.Lock() if err := downloadReleaseAssets(ctx, releaseTag, releaseAssets.LocalDownloadPath, gc); err != nil { - return ctrl.Result{RequeueAfter: 1 * time.Minute}, fmt.Errorf("failed to download release assets: %w", err) + logger.Error(err, "failed to download release assets") + return ctrl.Result{RequeueAfter: 1 * time.Minute}, nil } r.openStackClusterStackRelDownloadDirectoryMutex.Unlock() diff --git a/internal/controller/openstacknodeimagerelease_controller.go b/internal/controller/openstacknodeimagerelease_controller.go index 5a93b920..836ec41c 100644 --- a/internal/controller/openstacknodeimagerelease_controller.go +++ b/internal/controller/openstacknodeimagerelease_controller.go @@ -96,13 +96,24 @@ func (r *OpenStackNodeImageReleaseReconciler) Reconcile(ctx context.Context, req // Get OpenStack cloud config from sercet cloud, err := r.getCloudFromSecret(ctx, openstacknodeimagerelease.Namespace, openstacknodeimagerelease.Spec.IdentityRef.Name, openstacknodeimagerelease.Spec.CloudName) if err != nil { + if apierrors.IsNotFound(err) { + conditions.MarkFalse(openstacknodeimagerelease, + apiv1alpha1.CloudAvailableCondition, + apiv1alpha1.SecretNotFoundReason, + clusterv1beta1.ConditionSeverityError, + err.Error(), + ) + record.Warnf(openstacknodeimagerelease, "SecretNotFound", err.Error()) + logger.Error(err, "failed to get secret") + return ctrl.Result{RequeueAfter: 1 * time.Minute}, nil + } conditions.MarkFalse(openstacknodeimagerelease, apiv1alpha1.CloudAvailableCondition, apiv1alpha1.CloudNotSetReason, clusterv1beta1.ConditionSeverityError, err.Error(), ) - record.Warnf(openstacknodeimagerelease, "CloudNotSetReason", err.Error()) + record.Warnf(openstacknodeimagerelease, "CloudNotSet", err.Error()) return ctrl.Result{}, fmt.Errorf("failed to get cloud from secret: %w", err) } @@ -286,7 +297,7 @@ func (r *OpenStackNodeImageReleaseReconciler) getCloudFromSecret(ctx context.Con Name: secretName, }, secret) if err != nil { - return emptyCloud, fmt.Errorf("failed to get secret %s: %w", secretName, err) + return emptyCloud, fmt.Errorf("failed to get secret %s in namespace %s: %w", secretName, secretNamespace, err) } content, ok := secret.Data[cloudsSecretKey] if !ok {