@@ -23,11 +23,12 @@ import (
23
23
"reflect"
24
24
"sort"
25
25
"strings"
26
+ "time"
26
27
27
28
csov1alpha1 "github.com/SovereignCloudStack/cluster-stack-operator/api/v1alpha1"
28
29
"github.com/SovereignCloudStack/cluster-stack-operator/internal/clusterstackrelease"
30
+ "github.com/SovereignCloudStack/cluster-stack-operator/pkg/assetsclient"
29
31
"github.com/SovereignCloudStack/cluster-stack-operator/pkg/clusterstack"
30
- githubclient "github.com/SovereignCloudStack/cluster-stack-operator/pkg/github/client"
31
32
"github.com/SovereignCloudStack/cluster-stack-operator/pkg/version"
32
33
corev1 "k8s.io/api/core/v1"
33
34
apierrors "k8s.io/apimachinery/pkg/api/errors"
@@ -55,7 +56,7 @@ import (
55
56
// ClusterStackReconciler reconciles a ClusterStack object.
56
57
type ClusterStackReconciler struct {
57
58
client.Client
58
- GitHubClientFactory githubclient .Factory
59
+ AssetsClientFactory assetsclient .Factory
59
60
ReleaseDirectory string
60
61
WatchFilterValue string
61
62
}
@@ -112,32 +113,39 @@ func (r *ClusterStackReconciler) Reconcile(ctx context.Context, req reconcile.Re
112
113
var latest * string
113
114
114
115
if clusterStack .Spec .AutoSubscribe {
115
- gc , err := r .GitHubClientFactory .NewClient (ctx )
116
+ gc , err := r .AssetsClientFactory .NewClient (ctx )
116
117
if err != nil {
118
+ isSet := conditions .IsFalse (clusterStack , csov1alpha1 .AssetsClientAPIAvailableCondition )
117
119
conditions .MarkFalse (clusterStack ,
118
- csov1alpha1 .GitAPIAvailableCondition ,
119
- csov1alpha1 .GitTokenOrEnvVariableNotSetReason ,
120
+ csov1alpha1 .AssetsClientAPIAvailableCondition ,
121
+ csov1alpha1 .FailedCreateAssetsClientReason ,
120
122
clusterv1 .ConditionSeverityError ,
121
123
err .Error (),
122
124
)
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
125
132
}
126
133
127
- conditions .MarkTrue (clusterStack , csov1alpha1 .GitAPIAvailableCondition )
134
+ conditions .MarkTrue (clusterStack , csov1alpha1 .AssetsClientAPIAvailableCondition )
135
+
128
136
latest , err = getLatestReleaseFromRemoteRepository (ctx , clusterStack , gc )
129
137
if err != nil {
130
138
// only log error and mark condition as false, but continue
131
139
conditions .MarkFalse (clusterStack ,
132
- csov1alpha1 .GitReleasesSyncedCondition ,
140
+ csov1alpha1 .ReleasesSyncedCondition ,
133
141
csov1alpha1 .FailedToSyncReason ,
134
142
clusterv1 .ConditionSeverityWarning ,
135
143
err .Error (),
136
144
)
137
145
logger .Error (err , "failed to get latest release from remote repository" )
138
146
}
139
147
140
- conditions .MarkTrue (clusterStack , csov1alpha1 .GitReleasesSyncedCondition )
148
+ conditions .MarkTrue (clusterStack , csov1alpha1 .ReleasesSyncedCondition )
141
149
}
142
150
143
151
inUse , err := r .getClusterStackReleasesInUse (ctx , req .Namespace )
@@ -536,21 +544,18 @@ func getLatestReadyClusterStackRelease(clusterStackReleases []*csov1alpha1.Clust
536
544
return latest , k8sversion , nil
537
545
}
538
546
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 )
541
549
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 )
546
551
}
547
552
548
553
var clusterStacks clusterstack.ClusterStacks
549
554
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 )
552
557
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 )
554
559
}
555
560
556
561
if matches {
0 commit comments