Skip to content

Commit

Permalink
Catch NotFound secret and add condition
Browse files Browse the repository at this point in the history
Also, modify requeue logic for download assets from github

Signed-off-by: Roman Hros <[email protected]>
  • Loading branch information
chess-knight authored and matofeder committed Jan 15, 2024
1 parent 4ead3ef commit 542bd3e
Show file tree
Hide file tree
Showing 3 changed files with 21 additions and 4 deletions.
3 changes: 3 additions & 0 deletions api/v1alpha1/conditions_const.go
Original file line number Diff line number Diff line change
Expand Up @@ -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 (
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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 {
Expand All @@ -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()
Expand Down
15 changes: 13 additions & 2 deletions internal/controller/openstacknodeimagerelease_controller.go
Original file line number Diff line number Diff line change
Expand Up @@ -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)
}

Expand Down Expand Up @@ -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 {
Expand Down

0 comments on commit 542bd3e

Please sign in to comment.