1
0
Fork 0
mirror of https://github.com/ansible-collections/community.general.git synced 2024-09-14 20:13:21 +02:00

[opentelemetry] minor changes in the import, docs and exception (#3450)

* OrderedDict has been added to the Python stdlib since version 2.7

* Docs: cosmetic change in the python lib

* See https://github.com/ansible/ansible/issues/75726

* Add changelog fragment

* Apply suggestions from code review

Co-authored-by: Felix Fontein <felix@fontein.de>

Co-authored-by: Felix Fontein <felix@fontein.de>
This commit is contained in:
Victor Martinez 2021-10-01 13:39:22 +01:00 committed by GitHub
parent 316e1d6bf2
commit 774b2f642b
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
2 changed files with 8 additions and 23 deletions

View file

@ -0,0 +1,2 @@
bugfixes:
- opentelemetry callback plugin - validated the task result exception without crashing. Also simplifying code a bit (https://github.com/ansible-collections/community.general/pull/3450, https://github.com/ansible/ansible/issues/75726).

View file

@ -38,9 +38,9 @@ DOCUMENTATION = '''
env: env:
- name: TRACEPARENT - name: TRACEPARENT
requirements: requirements:
- opentelemetry-api (python lib) - opentelemetry-api (Python library)
- opentelemetry-exporter-otlp (python lib) - opentelemetry-exporter-otlp (Python library)
- opentelemetry-sdk (python lib) - opentelemetry-sdk (Python library)
''' '''
@ -57,12 +57,12 @@ examples: |
''' '''
import getpass import getpass
import os
import socket import socket
import sys import sys
import time import time
import uuid import uuid
from collections import OrderedDict
from os.path import basename from os.path import basename
from ansible.errors import AnsibleError from ansible.errors import AnsibleError
@ -88,18 +88,6 @@ except ImportError as imp_exc:
else: else:
OTEL_LIBRARY_IMPORT_ERROR = None OTEL_LIBRARY_IMPORT_ERROR = None
try:
from collections import OrderedDict
except ImportError:
try:
from ordereddict import OrderedDict
except ImportError as imp_exc:
ORDER_LIBRARY_IMPORT_ERROR = imp_exc
else:
ORDER_LIBRARY_IMPORT_ERROR = None
else:
ORDER_LIBRARY_IMPORT_ERROR = None
class TaskData: class TaskData:
""" """
@ -253,7 +241,7 @@ class OpenTelemetrySource(object):
res = host_data.result._result res = host_data.result._result
rc = res.get('rc', 0) rc = res.get('rc', 0)
if host_data.status == 'failed': if host_data.status == 'failed':
if 'exception' in res: if res.get('exception') is not None:
message = res['exception'].strip().split('\n')[-1] message = res['exception'].strip().split('\n')[-1]
elif 'msg' in res: elif 'msg' in res:
message = res['msg'] message = res['msg']
@ -315,12 +303,7 @@ class CallbackModule(CallbackBase):
AnsibleError('The `opentelemetry-api`, `opentelemetry-exporter-otlp` or `opentelemetry-sdk` must be installed to use this plugin'), AnsibleError('The `opentelemetry-api`, `opentelemetry-exporter-otlp` or `opentelemetry-sdk` must be installed to use this plugin'),
OTEL_LIBRARY_IMPORT_ERROR) OTEL_LIBRARY_IMPORT_ERROR)
if ORDER_LIBRARY_IMPORT_ERROR: self.tasks_data = OrderedDict()
raise_from(
AnsibleError('The `ordereddict` must be installed to use this plugin'),
ORDER_LIBRARY_IMPORT_ERROR)
else:
self.tasks_data = OrderedDict()
self.opentelemetry = OpenTelemetrySource(display=self._display) self.opentelemetry = OpenTelemetrySource(display=self._display)