@@ -23,11 +23,12 @@ import (
2323 "reflect"
2424 "sort"
2525 "strings"
26+ "time"
2627
2728 csov1alpha1 "github.com/SovereignCloudStack/cluster-stack-operator/api/v1alpha1"
2829 "github.com/SovereignCloudStack/cluster-stack-operator/internal/clusterstackrelease"
30+ "github.com/SovereignCloudStack/cluster-stack-operator/pkg/assetsclient"
2931 "github.com/SovereignCloudStack/cluster-stack-operator/pkg/clusterstack"
30- githubclient "github.com/SovereignCloudStack/cluster-stack-operator/pkg/github/client"
3132 "github.com/SovereignCloudStack/cluster-stack-operator/pkg/version"
3233 corev1 "k8s.io/api/core/v1"
3334 apierrors "k8s.io/apimachinery/pkg/api/errors"
@@ -55,7 +56,7 @@ import (
5556// ClusterStackReconciler reconciles a ClusterStack object.
5657type ClusterStackReconciler struct {
5758 client.Client
58- GitHubClientFactory githubclient .Factory
59+ AssetsClientFactory assetsclient .Factory
5960 ReleaseDirectory string
6061 WatchFilterValue string
6162}
@@ -112,32 +113,39 @@ func (r *ClusterStackReconciler) Reconcile(ctx context.Context, req reconcile.Re
112113 var latest * string
113114
114115 if clusterStack .Spec .AutoSubscribe {
115- gc , err := r .GitHubClientFactory .NewClient (ctx )
116+ gc , err := r .AssetsClientFactory .NewClient (ctx )
116117 if err != nil {
118+ isSet := conditions .IsFalse (clusterStack , csov1alpha1 .AssetsClientAPIAvailableCondition )
117119 conditions .MarkFalse (clusterStack ,
118- csov1alpha1 .GitAPIAvailableCondition ,
119- csov1alpha1 .GitTokenOrEnvVariableNotSetReason ,
120+ csov1alpha1 .AssetsClientAPIAvailableCondition ,
121+ csov1alpha1 .FailedCreateAssetsClientReason ,
120122 clusterv1 .ConditionSeverityError ,
121123 err .Error (),
122124 )
123- record .Warnf (clusterStack , "GitTokenOrEnvVariableNotSet" , err .Error ())
124- return reconcile.Result {}, fmt .Errorf ("failed to create Github client: %w" , err )
125+ record .Warnf (clusterStack , "FailedCreateAssetsClient" , err .Error ())
126+
127+ // give the assets client a second change
128+ if isSet {
129+ return reconcile.Result {RequeueAfter : 5 * time .Second }, nil
130+ }
131+ return reconcile.Result {}, nil
125132 }
126133
127- conditions .MarkTrue (clusterStack , csov1alpha1 .GitAPIAvailableCondition )
134+ conditions .MarkTrue (clusterStack , csov1alpha1 .AssetsClientAPIAvailableCondition )
135+
128136 latest , err = getLatestReleaseFromRemoteRepository (ctx , clusterStack , gc )
129137 if err != nil {
130138 // only log error and mark condition as false, but continue
131139 conditions .MarkFalse (clusterStack ,
132- csov1alpha1 .GitReleasesSyncedCondition ,
140+ csov1alpha1 .ReleasesSyncedCondition ,
133141 csov1alpha1 .FailedToSyncReason ,
134142 clusterv1 .ConditionSeverityWarning ,
135143 err .Error (),
136144 )
137145 logger .Error (err , "failed to get latest release from remote repository" )
138146 }
139147
140- conditions .MarkTrue (clusterStack , csov1alpha1 .GitReleasesSyncedCondition )
148+ conditions .MarkTrue (clusterStack , csov1alpha1 .ReleasesSyncedCondition )
141149 }
142150
143151 inUse , err := r .getClusterStackReleasesInUse (ctx , req .Namespace )
@@ -536,21 +544,18 @@ func getLatestReadyClusterStackRelease(clusterStackReleases []*csov1alpha1.Clust
536544 return latest , k8sversion , nil
537545}
538546
539- func getLatestReleaseFromRemoteRepository (ctx context.Context , clusterStack * csov1alpha1.ClusterStack , gc githubclient .Client ) (* string , error ) {
540- ghReleases , resp , err := gc .ListRelease (ctx )
547+ func getLatestReleaseFromRemoteRepository (ctx context.Context , clusterStack * csov1alpha1.ClusterStack , ac assetsclient .Client ) (* string , error ) {
548+ releases , err := ac .ListRelease (ctx )
541549 if err != nil {
542- return nil , fmt .Errorf ("failed to list releases on remote Git repository: %w" , err )
543- }
544- if resp != nil && resp .StatusCode != 200 {
545- return nil , fmt .Errorf ("got unexpected status from call to remote Git repository: %s" , resp .Status )
550+ return nil , fmt .Errorf ("failed to list releases on remote repository: %w" , err )
546551 }
547552
548553 var clusterStacks clusterstack.ClusterStacks
549554
550- for _ , ghRelease := range ghReleases {
551- clusterStackObject , matches , err := matchesSpec (ghRelease . GetTagName () , & clusterStack .Spec )
555+ for _ , release := range releases {
556+ clusterStackObject , matches , err := matchesSpec (release , & clusterStack .Spec )
552557 if err != nil {
553- return nil , fmt .Errorf ("failed to get match release tag %q with spec of ClusterStack: %w" , ghRelease . GetTagName () , err )
558+ return nil , fmt .Errorf ("failed to get match release tag %q with spec of ClusterStack: %w" , release , err )
554559 }
555560
556561 if matches {
0 commit comments