From e37fdb26edb6c0b3dcea4e4dbb9003fdbeb81be0 Mon Sep 17 00:00:00 2001 From: Ivan Dimitrov Date: Tue, 27 Oct 2015 00:00:34 +0200 Subject: [PATCH 1/2] Check if datadog library exists before starting --- datadog_callback.py | 15 ++++++++++++--- 1 file changed, 12 insertions(+), 3 deletions(-) diff --git a/datadog_callback.py b/datadog_callback.py index e46c2f1..d1d5200 100644 --- a/datadog_callback.py +++ b/datadog_callback.py @@ -2,8 +2,13 @@ import os.path import time -import datadog -import yaml +try: + import datadog + import yaml + HAS_MODULES = True +except ImportError: + HAS_MODULES = False + from ansible.plugins.callback import CallbackBase from __main__ import cli @@ -11,6 +16,9 @@ class CallbackModule(CallbackBase): def __init__(self): + if not HAS_MODULES: + self.disabled = True + print 'Datadog callback disabled.\nMake sure you call all required libraries.' self._playbook_name = None self._start_time = time.time() @@ -197,7 +205,8 @@ def v2_playbook_on_start(self, playbook): def v2_playbook_on_play_start(self, play): # On Ansible v2, Ansible doesn't set `self.play` automatically self.play = play - self.disabled = False + if self.disabled: + return # Read config and hostvars api_key, url = self._load_conf(os.path.join(os.path.dirname(__file__), "datadog_callback.yml")) From bd1956e6df0e579319b3b2805c00d4e2b3fa3e03 Mon Sep 17 00:00:00 2001 From: Maxime Mouial Date: Tue, 26 Dec 2017 11:49:45 -0500 Subject: [PATCH 2/2] Set default for disabled and update error message --- CHANGELOG.md | 3 +++ datadog_callback.py | 4 +++- 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 0b78149..9ce9b4a 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,6 +1,9 @@ CHANGELOG ========= +# 2.1.0 / 2017-12-26 +- [FEATURE] Disable callback if required python packages aren't installed. See [#28][] (thanks to @dobber) + # 2.0.0 / 2017-12-12 - [FEATURE] Add support for getting api_key from hostvars and thus from vault. See [#25][] - [BREAKING CHANGE] Drop support for ansible <2.0 diff --git a/datadog_callback.py b/datadog_callback.py index d1d5200..0fae51b 100644 --- a/datadog_callback.py +++ b/datadog_callback.py @@ -18,7 +18,9 @@ class CallbackModule(CallbackBase): def __init__(self): if not HAS_MODULES: self.disabled = True - print 'Datadog callback disabled.\nMake sure you call all required libraries.' + print 'Datadog callback disabled.\nMake sure you call all required libraries: "datadog" and "yaml".' + else: + self.disabled = False self._playbook_name = None self._start_time = time.time()