From 726918930b744009c9e3e9cf839536d1506abb8c Mon Sep 17 00:00:00 2001 From: "patchback[bot]" <45432694+patchback[bot]@users.noreply.github.com> Date: Sat, 4 Dec 2021 19:55:20 +0100 Subject: [PATCH] opentelemetry: honour ignore errors (#3837) (#3846) * opentelemetry: honour the ignore_errors * fix-encoding-pragma * Add changelog fragment * opentelemetry: ignore produces unset span status (cherry picked from commit ce6d0a749e28faf2e02271dc914dbaf884b046df) Co-authored-by: Victor Martinez --- ...37-opentelemetry_plugin-honour_ignore_errors.yaml | 2 ++ plugins/callback/opentelemetry.py | 12 ++++++++++-- 2 files changed, 12 insertions(+), 2 deletions(-) create mode 100644 changelogs/fragments/3837-opentelemetry_plugin-honour_ignore_errors.yaml diff --git a/changelogs/fragments/3837-opentelemetry_plugin-honour_ignore_errors.yaml b/changelogs/fragments/3837-opentelemetry_plugin-honour_ignore_errors.yaml new file mode 100644 index 0000000000..2f33f45eec --- /dev/null +++ b/changelogs/fragments/3837-opentelemetry_plugin-honour_ignore_errors.yaml @@ -0,0 +1,2 @@ +bugfixes: + - opentelemetry_plugin - honour ``ignore_errors`` when a task has failed instead of reporting an error (https://github.com/ansible-collections/community.general/pull/3837). diff --git a/plugins/callback/opentelemetry.py b/plugins/callback/opentelemetry.py index 7604730461..4a46815d37 100644 --- a/plugins/callback/opentelemetry.py +++ b/plugins/callback/opentelemetry.py @@ -1,3 +1,4 @@ +# -*- coding: utf-8 -*- # (C) 2021, Victor Martinez # GNU General Public License v3.0+ (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt) @@ -263,6 +264,8 @@ class OpenTelemetrySource(object): else: message = 'skipped' status = Status(status_code=StatusCode.UNSET) + elif host_data.status == 'ignored': + status = Status(status_code=StatusCode.UNSET) span.set_status(status) self.set_span_attribute(span, "ansible.task.args", task_data.args) @@ -392,10 +395,15 @@ class CallbackModule(CallbackBase): ) def v2_runner_on_failed(self, result, ignore_errors=False): - self.errors += 1 + if ignore_errors: + status = 'ignored' + else: + status = 'failed' + self.errors += 1 + self.opentelemetry.finish_task( self.tasks_data, - 'failed', + status, result )