From 26ca0d005d662f57936c509c10c7e9d29f29ee99 Mon Sep 17 00:00:00 2001 From: Venkat Ramaraju Date: Tue, 4 Aug 2020 16:44:36 -0700 Subject: [PATCH 1/2] Stopping reconciliation on rescue --- internal/ansible/controller/reconcile.go | 3 +++ internal/ansible/runner/eventapi/types.go | 12 ++++++++++++ 2 files changed, 15 insertions(+) diff --git a/internal/ansible/controller/reconcile.go b/internal/ansible/controller/reconcile.go index ee2d7fdff42..1e683c95b02 100644 --- a/internal/ansible/controller/reconcile.go +++ b/internal/ansible/controller/reconcile.go @@ -186,6 +186,9 @@ func (r *AnsibleOperatorReconciler) Reconcile(request reconcile.Request) (reconc return reconcile.Result{}, err } } + if event.Rescued() { + return reconcileResult, nil + } if event.Event == eventapi.EventRunnerOnFailed && !event.IgnoreError() { failureMessages = append(failureMessages, event.GetFailedPlaybookMessage()) } diff --git a/internal/ansible/runner/eventapi/types.go b/internal/ansible/runner/eventapi/types.go index f8098da3e88..5d06361d14c 100644 --- a/internal/ansible/runner/eventapi/types.go +++ b/internal/ansible/runner/eventapi/types.go @@ -122,3 +122,15 @@ func (je JobEvent) IgnoreError() bool { } return false } + +// Rescued - Stops reconciliation when an event is rescued +func (je JobEvent) Rescued() bool { + if rescued, contains := je.EventData["rescued"]; contains { + for _, v := range rescued.(map[string]interface{}) { + if int(v.(float64)) == 1 { + return true + } + } + } + return false +} From eb541b7e677c333a08efc36cf080f712a993c193 Mon Sep 17 00:00:00 2001 From: Venkat Ramaraju Date: Wed, 5 Aug 2020 07:21:35 -0700 Subject: [PATCH 2/2] Added error check --- internal/ansible/controller/reconcile.go | 5 +---- internal/ansible/runner/eventapi/types.go | 2 +- 2 files changed, 2 insertions(+), 5 deletions(-) diff --git a/internal/ansible/controller/reconcile.go b/internal/ansible/controller/reconcile.go index 1e683c95b02..d6945561313 100644 --- a/internal/ansible/controller/reconcile.go +++ b/internal/ansible/controller/reconcile.go @@ -186,10 +186,7 @@ func (r *AnsibleOperatorReconciler) Reconcile(request reconcile.Request) (reconc return reconcile.Result{}, err } } - if event.Rescued() { - return reconcileResult, nil - } - if event.Event == eventapi.EventRunnerOnFailed && !event.IgnoreError() { + if event.Event == eventapi.EventRunnerOnFailed && !event.IgnoreError() && !event.Rescued() { failureMessages = append(failureMessages, event.GetFailedPlaybookMessage()) } } diff --git a/internal/ansible/runner/eventapi/types.go b/internal/ansible/runner/eventapi/types.go index 5d06361d14c..d0ba259e7b2 100644 --- a/internal/ansible/runner/eventapi/types.go +++ b/internal/ansible/runner/eventapi/types.go @@ -123,7 +123,7 @@ func (je JobEvent) IgnoreError() bool { return false } -// Rescued - Stops reconciliation when an event is rescued +// Rescued - Detects whether or not a task was rescued func (je JobEvent) Rescued() bool { if rescued, contains := je.EventData["rescued"]; contains { for _, v := range rescued.(map[string]interface{}) {