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 e46c2f1..0fae51b 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,11 @@ class CallbackModule(CallbackBase): def __init__(self): + if not HAS_MODULES: + self.disabled = True + 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() @@ -197,7 +207,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"))