@@ -27,6 +27,7 @@ import (
27
27
apiextensionsv1 "k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1"
28
28
apierrors "k8s.io/apimachinery/pkg/api/errors"
29
29
"k8s.io/apimachinery/pkg/types"
30
+ "k8s.io/client-go/util/retry"
30
31
"sigs.k8s.io/controller-runtime/pkg/client"
31
32
32
33
configv1alpha1 "github.com/projectsveltos/addon-controller/api/v1alpha1"
@@ -115,11 +116,11 @@ func collectResourceSummariesFromCluster(ctx context.Context, c client.Client,
115
116
// ignore deleted ClassifierReport
116
117
continue
117
118
}
118
- if rs .Status .ResourcesChanged || rs .Status .HelmResourcesChanged {
119
+ if rs .Status .ResourcesChanged || rs .Status .HelmResourcesChanged || rs . Status . KustomizeResourcesChanged {
119
120
// process resourceSummary
120
121
err = processResourceSummary (ctx , c , remoteClient , rs , l )
121
122
if err != nil {
122
- return nil
123
+ return err
123
124
}
124
125
}
125
126
}
@@ -160,45 +161,59 @@ func processResourceSummary(ctx context.Context, c, remoteClient client.Client,
160
161
var clusterSummaryNamespace string
161
162
clusterSummaryNamespace , ok = rs .Labels [libsveltosv1alpha1 .ClusterSummaryNamespaceLabel ]
162
163
if ! ok {
163
- logger .V (logs .LogInfo ).Info ("clusterSummaryspace name label not set. Cannot process it" )
164
+ logger .V (logs .LogInfo ).Info ("clusterSummary namespace label not set. Cannot process it" )
164
165
return nil
165
166
}
166
167
167
- clusterSummary := & configv1alpha1.ClusterSummary {}
168
- err := c .Get (ctx , types.NamespacedName {Namespace : clusterSummaryNamespace , Name : clusterSummaryName }, clusterSummary )
169
- if err != nil {
170
- if apierrors .IsNotFound (err ) {
171
- logger .V (logs .LogInfo ).Info ("clusterSummary not found. Nothing to do." )
172
- return nil
168
+ err := retry .RetryOnConflict (retry .DefaultRetry , func () error {
169
+ clusterSummary := & configv1alpha1.ClusterSummary {}
170
+ err := c .Get (ctx , types.NamespacedName {Namespace : clusterSummaryNamespace , Name : clusterSummaryName },
171
+ clusterSummary )
172
+ if err != nil {
173
+ if apierrors .IsNotFound (err ) {
174
+ logger .V (logs .LogInfo ).Info ("clusterSummary not found. Nothing to do." )
175
+ return nil
176
+ }
177
+ return err
173
178
}
174
- return err
175
- }
176
179
177
- if ! clusterSummary .DeletionTimestamp .IsZero () {
178
- logger .V (logs .LogInfo ).Info ("clusterSummary is marked for deletion. Nothing to do." )
179
- return nil
180
- }
180
+ if ! clusterSummary .DeletionTimestamp .IsZero () {
181
+ logger .V (logs .LogInfo ).Info ("clusterSummary is marked for deletion. Nothing to do." )
182
+ return nil
183
+ }
181
184
182
- l := logger .WithValues ("clusterSummary" , clusterSummary .Name )
183
- for i := range clusterSummary .Status .FeatureSummaries {
184
- if clusterSummary .Status .FeatureSummaries [i ].FeatureID == configv1alpha1 .FeatureHelm {
185
- if rs .Status .HelmResourcesChanged {
186
- l .V (logs .LogDebug ).Info ("redeploy helm" )
187
- clusterSummary .Status .FeatureSummaries [i ].Hash = nil
188
- clusterSummary .Status .FeatureSummaries [i ].Status = configv1alpha1 .FeatureStatusProvisioning
189
- }
190
- } else if clusterSummary .Status .FeatureSummaries [i ].FeatureID == configv1alpha1 .FeatureResources {
191
- if rs .Status .ResourcesChanged {
192
- l .V (logs .LogDebug ).Info ("redeploy resources" )
193
- clusterSummary .Status .FeatureSummaries [i ].Hash = nil
194
- clusterSummary .Status .FeatureSummaries [i ].Status = configv1alpha1 .FeatureStatusProvisioning
185
+ l := logger .WithValues ("clusterSummary" , clusterSummary .Name )
186
+ for i := range clusterSummary .Status .FeatureSummaries {
187
+ if clusterSummary .Status .FeatureSummaries [i ].FeatureID == configv1alpha1 .FeatureHelm {
188
+ if rs .Status .HelmResourcesChanged {
189
+ l .V (logs .LogDebug ).Info ("redeploy helm" )
190
+ clusterSummary .Status .FeatureSummaries [i ].Hash = nil
191
+ clusterSummary .Status .FeatureSummaries [i ].Status = configv1alpha1 .FeatureStatusProvisioning
192
+ }
193
+ } else if clusterSummary .Status .FeatureSummaries [i ].FeatureID == configv1alpha1 .FeatureResources {
194
+ if rs .Status .ResourcesChanged {
195
+ l .V (logs .LogDebug ).Info ("redeploy resources" )
196
+ clusterSummary .Status .FeatureSummaries [i ].Hash = nil
197
+ clusterSummary .Status .FeatureSummaries [i ].Status = configv1alpha1 .FeatureStatusProvisioning
198
+ }
199
+ } else if clusterSummary .Status .FeatureSummaries [i ].FeatureID == configv1alpha1 .FeatureKustomize {
200
+ if rs .Status .KustomizeResourcesChanged {
201
+ l .V (logs .LogDebug ).Info ("redeploy kustomization resources" )
202
+ clusterSummary .Status .FeatureSummaries [i ].Hash = nil
203
+ clusterSummary .Status .FeatureSummaries [i ].Status = configv1alpha1 .FeatureStatusProvisioning
204
+ }
195
205
}
196
206
}
197
- }
198
207
199
- err = c .Status ().Update (ctx , clusterSummary )
208
+ err = c .Status ().Update (ctx , clusterSummary )
209
+ if err != nil {
210
+ logger .V (logs .LogInfo ).Info (fmt .Sprintf ("failed to update ClusterSummary status: %v" , err ))
211
+ return err
212
+ }
213
+ return nil
214
+ })
215
+
200
216
if err != nil {
201
- logger .V (logs .LogInfo ).Info (fmt .Sprintf ("failed to update ClusterSummary status: %v" , err ))
202
217
return err
203
218
}
204
219
0 commit comments