@@ -222,24 +222,27 @@ func (r *ValsSecretReconciler) Reconcile(ctx context.Context, req ctrl.Request)
222
222
data [k ] = b .Bytes ()
223
223
}
224
224
225
- err = r .upsertSecret (& secret , data )
225
+ updated , err : = r .upsertSecret (& secret , data )
226
226
if err != nil {
227
227
r .Log .Error (err , "Failed to create secret" , "name" , secret .Name , "namespace" , secret .Namespace )
228
228
return ctrl.Result {}, nil
229
229
}
230
+
230
231
elapsedProcess := time .Since (start ).Milliseconds () // Calculate the elapsed time
231
232
dmetrics .SecretCreationTime .WithLabelValues (secret .GetName (), secret .GetNamespace ()).Set (float64 (elapsedProcess ))
232
233
dmetrics .SecretError .WithLabelValues (secret .Name , secret .Namespace ).Set (0 )
233
234
234
235
/* Patching resources to force a rollout if required */
235
- for target := range secret .Spec .Rollout {
236
- if secret .Spec .Rollout [target ].Name != "" && secret .Spec .Rollout [target ].Kind != "" {
237
- if err := r .rollout (& secret , secret .Spec .Rollout [target ]); err != nil {
238
- r .Log .Error (err , "Could not perform rollout" ,
239
- "name" , secret .Name ,
240
- "namespace" , secret .Namespace ,
241
- "kind" , secret .Spec .Rollout [target ].Kind ,
242
- "name" , secret .Spec .Rollout [target ].Name )
236
+ if updated {
237
+ for target := range secret .Spec .Rollout {
238
+ if secret .Spec .Rollout [target ].Name != "" && secret .Spec .Rollout [target ].Kind != "" {
239
+ if err := r .rollout (& secret , secret .Spec .Rollout [target ]); err != nil {
240
+ r .Log .Error (err , "Could not perform rollout" ,
241
+ "name" , secret .Name ,
242
+ "namespace" , secret .Namespace ,
243
+ "kind" , secret .Spec .Rollout [target ].Kind ,
244
+ "name" , secret .Spec .Rollout [target ].Name )
245
+ }
243
246
}
244
247
}
245
248
}
@@ -269,8 +272,8 @@ func (r *ValsSecretReconciler) shouldExclude(sDefNamespace string) bool {
269
272
return false
270
273
}
271
274
272
- // upsertSecret will create or update a secret
273
- func (r * ValsSecretReconciler ) upsertSecret (sDef * secretv1.ValsSecret , data map [string ][]byte ) error {
275
+ // upsertSecret will create or update a secret. Returns boolean is update or error
276
+ func (r * ValsSecretReconciler ) upsertSecret (sDef * secretv1.ValsSecret , data map [string ][]byte ) ( bool , error ) {
274
277
var secretName string
275
278
if sDef .Spec .Name != "" {
276
279
secretName = sDef .Spec .Name
@@ -280,15 +283,15 @@ func (r *ValsSecretReconciler) upsertSecret(sDef *secretv1.ValsSecret, data map[
280
283
secret , err := r .getSecret (secretName , sDef .GetNamespace ())
281
284
if err != nil {
282
285
if client .IgnoreNotFound (err ) != nil {
283
- return err
286
+ return false , err
284
287
}
285
288
// secret not found, create a new empty one
286
289
secret = & corev1.Secret {}
287
290
}
288
291
289
292
// Do nothing if the secret does not need updating
290
293
if ! r .secretNeedsUpdate (sDef , secret , data ) {
291
- return nil
294
+ return false , nil
292
295
}
293
296
294
297
if sDef .Spec .Name != "" {
@@ -314,7 +317,7 @@ func (r *ValsSecretReconciler) upsertSecret(sDef *secretv1.ValsSecret, data map[
314
317
secret .ResourceVersion = ""
315
318
316
319
if err = controllerutil .SetControllerReference (sDef , secret , r .Scheme ()); err != nil {
317
- return err
320
+ return false , err
318
321
}
319
322
err = r .Create (r .Ctx , secret )
320
323
if errors .IsAlreadyExists (err ) {
@@ -328,7 +331,7 @@ func (r *ValsSecretReconciler) upsertSecret(sDef *secretv1.ValsSecret, data map[
328
331
}
329
332
dmetrics .SecretFailures .Inc ()
330
333
dmetrics .SecretError .WithLabelValues (secret .Name , secret .Namespace ).SetToCurrentTime ()
331
- return err
334
+ return false , err
332
335
}
333
336
334
337
/* Prometheus */
@@ -343,7 +346,7 @@ func (r *ValsSecretReconciler) upsertSecret(sDef *secretv1.ValsSecret, data map[
343
346
r .updateDatabases (sDef , secret )
344
347
} // end DB section
345
348
346
- return err
349
+ return true , err
347
350
}
348
351
349
352
func (r * ValsSecretReconciler ) updateDatabases (sDef * secretv1.ValsSecret , secret * corev1.Secret ) {
0 commit comments