Skip to content

Commit d9c0839

Browse files
authored
bugfix: do not rollout if there was no update (#86)
1 parent 9584368 commit d9c0839

File tree

2 files changed

+21
-18
lines changed

2 files changed

+21
-18
lines changed

charts/vals-operator/Chart.yaml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -16,10 +16,10 @@ kubeVersion: ">= 1.19.0-0"
1616
type: application
1717

1818
# Chart version
19-
version: 0.7.11
19+
version: 0.7.12
2020

2121
# Latest container tag
22-
appVersion: v0.7.11
22+
appVersion: v0.7.12
2323

2424
maintainers:
2525
- email: info@digitalis.io

controllers/valssecret_controller.go

Lines changed: 19 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -222,24 +222,27 @@ func (r *ValsSecretReconciler) Reconcile(ctx context.Context, req ctrl.Request)
222222
data[k] = b.Bytes()
223223
}
224224

225-
err = r.upsertSecret(&secret, data)
225+
updated, err := r.upsertSecret(&secret, data)
226226
if err != nil {
227227
r.Log.Error(err, "Failed to create secret", "name", secret.Name, "namespace", secret.Namespace)
228228
return ctrl.Result{}, nil
229229
}
230+
230231
elapsedProcess := time.Since(start).Milliseconds() // Calculate the elapsed time
231232
dmetrics.SecretCreationTime.WithLabelValues(secret.GetName(), secret.GetNamespace()).Set(float64(elapsedProcess))
232233
dmetrics.SecretError.WithLabelValues(secret.Name, secret.Namespace).Set(0)
233234

234235
/* 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+
}
243246
}
244247
}
245248
}
@@ -269,8 +272,8 @@ func (r *ValsSecretReconciler) shouldExclude(sDefNamespace string) bool {
269272
return false
270273
}
271274

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) {
274277
var secretName string
275278
if sDef.Spec.Name != "" {
276279
secretName = sDef.Spec.Name
@@ -280,15 +283,15 @@ func (r *ValsSecretReconciler) upsertSecret(sDef *secretv1.ValsSecret, data map[
280283
secret, err := r.getSecret(secretName, sDef.GetNamespace())
281284
if err != nil {
282285
if client.IgnoreNotFound(err) != nil {
283-
return err
286+
return false, err
284287
}
285288
// secret not found, create a new empty one
286289
secret = &corev1.Secret{}
287290
}
288291

289292
// Do nothing if the secret does not need updating
290293
if !r.secretNeedsUpdate(sDef, secret, data) {
291-
return nil
294+
return false, nil
292295
}
293296

294297
if sDef.Spec.Name != "" {
@@ -314,7 +317,7 @@ func (r *ValsSecretReconciler) upsertSecret(sDef *secretv1.ValsSecret, data map[
314317
secret.ResourceVersion = ""
315318

316319
if err = controllerutil.SetControllerReference(sDef, secret, r.Scheme()); err != nil {
317-
return err
320+
return false, err
318321
}
319322
err = r.Create(r.Ctx, secret)
320323
if errors.IsAlreadyExists(err) {
@@ -328,7 +331,7 @@ func (r *ValsSecretReconciler) upsertSecret(sDef *secretv1.ValsSecret, data map[
328331
}
329332
dmetrics.SecretFailures.Inc()
330333
dmetrics.SecretError.WithLabelValues(secret.Name, secret.Namespace).SetToCurrentTime()
331-
return err
334+
return false, err
332335
}
333336

334337
/* Prometheus */
@@ -343,7 +346,7 @@ func (r *ValsSecretReconciler) upsertSecret(sDef *secretv1.ValsSecret, data map[
343346
r.updateDatabases(sDef, secret)
344347
} // end DB section
345348

346-
return err
349+
return true, err
347350
}
348351

349352
func (r *ValsSecretReconciler) updateDatabases(sDef *secretv1.ValsSecret, secret *corev1.Secret) {

0 commit comments

Comments
 (0)