Skip to content
This repository was archived by the owner on Dec 16, 2025. It is now read-only.

Commit 6aa18f2

Browse files
authored
🌱 Create GitHub client only if it is necessary (#92)
* Create GitHub client only if it is necessary Fixes #80 Signed-off-by: Roman Hros <[email protected]> * Defer unlocking of mutex Based on SovereignCloudStack/cluster-stack-operator#70 Signed-off-by: Roman Hros <[email protected]> * Create a GitHub client before mutex Signed-off-by: Roman Hros <[email protected]> --------- Signed-off-by: Roman Hros <[email protected]>
1 parent 171b131 commit 6aa18f2

File tree

1 file changed

+17
-17
lines changed

1 file changed

+17
-17
lines changed

internal/controller/openstackclusterstackrelease_controller.go

Lines changed: 17 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -104,21 +104,6 @@ func (r *OpenStackClusterStackReleaseReconciler) Reconcile(ctx context.Context,
104104
}
105105
}()
106106

107-
gc, err := r.GitHubClientFactory.NewClient(ctx)
108-
if err != nil {
109-
conditions.MarkFalse(openstackclusterstackrelease,
110-
apiv1alpha1.GitAPIAvailableCondition,
111-
apiv1alpha1.GitTokenOrEnvVariableNotSetReason,
112-
clusterv1beta1.ConditionSeverityError,
113-
err.Error(),
114-
)
115-
record.Warnf(openstackclusterstackrelease, "GitTokenOrEnvVariableNotSet", err.Error())
116-
logger.Error(err, "failed to create Github client")
117-
return ctrl.Result{}, nil
118-
}
119-
120-
conditions.MarkTrue(openstackclusterstackrelease, apiv1alpha1.GitAPIAvailableCondition)
121-
122107
// name of OpenStackClusterStackRelease object is same as the release tag
123108
releaseTag := openstackclusterstackrelease.Name
124109

@@ -138,17 +123,32 @@ func (r *OpenStackClusterStackReleaseReconciler) Reconcile(ctx context.Context,
138123
if download {
139124
conditions.MarkFalse(openstackclusterstackrelease, apiv1alpha1.ClusterStackReleaseAssetsReadyCondition, apiv1alpha1.ReleaseAssetsNotDownloadedYetReason, clusterv1beta1.ConditionSeverityInfo, "assets not downloaded yet")
140125

126+
gc, err := r.GitHubClientFactory.NewClient(ctx)
127+
if err != nil {
128+
conditions.MarkFalse(openstackclusterstackrelease,
129+
apiv1alpha1.GitAPIAvailableCondition,
130+
apiv1alpha1.GitTokenOrEnvVariableNotSetReason,
131+
clusterv1beta1.ConditionSeverityError,
132+
err.Error(),
133+
)
134+
record.Warnf(openstackclusterstackrelease, "GitTokenOrEnvVariableNotSet", err.Error())
135+
logger.Error(err, "failed to create Github client")
136+
return ctrl.Result{}, nil
137+
}
138+
139+
conditions.MarkTrue(openstackclusterstackrelease, apiv1alpha1.GitAPIAvailableCondition)
140+
141141
// this is the point where we download the release from github
142142
// acquire lock so that only one reconcile loop can download the release
143143
r.openStackClusterStackRelDownloadDirectoryMutex.Lock()
144144

145+
defer r.openStackClusterStackRelDownloadDirectoryMutex.Unlock()
146+
145147
if err := downloadReleaseAssets(ctx, releaseTag, releaseAssets.LocalDownloadPath, gc); err != nil {
146148
logger.Error(err, "failed to download release assets")
147149
return ctrl.Result{RequeueAfter: 1 * time.Minute}, nil
148150
}
149151

150-
r.openStackClusterStackRelDownloadDirectoryMutex.Unlock()
151-
152152
record.Eventf(openstackclusterstackrelease, "ClusterStackReleaseAssetsReady", "successfully downloaded ClusterStackReleaseAssets %q", releaseTag)
153153
// requeue to make sure release assets can be accessed
154154
return ctrl.Result{Requeue: true}, nil

0 commit comments

Comments
 (0)