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 )