From 2fe0d85102759c01e84b33470f4939f8e6bfa8e2 Mon Sep 17 00:00:00 2001 From: Edward Medvedev Date: Thu, 26 Nov 2015 07:10:29 +0300 Subject: [PATCH] ChatOps: Avoid failing the whole action chain when result output is disabled --- contrib/chatops/actions/format_result.py | 7 +++---- contrib/chatops/actions/skip_message.py | 13 +++++++++++++ contrib/chatops/actions/skip_message.yaml | 7 +++++++ contrib/chatops/actions/workflows/post_result.yaml | 4 ++++ 4 files changed, 27 insertions(+), 4 deletions(-) create mode 100755 contrib/chatops/actions/skip_message.py create mode 100755 contrib/chatops/actions/skip_message.yaml diff --git a/contrib/chatops/actions/format_result.py b/contrib/chatops/actions/format_result.py index fbe79df976..b82c2fb7cf 100755 --- a/contrib/chatops/actions/format_result.py +++ b/contrib/chatops/actions/format_result.py @@ -36,9 +36,8 @@ def run(self, execution): result = getattr(alias, 'result', None) if result: - enabled = result.get('enabled', True) - - if enabled and 'format' in alias.result: + if not result.get('enabled', True): + raise Exception("Output of this template is disabled.") + if 'format' in alias.result: template = alias.result['format'] - return self.jinja.from_string(template).render(context) diff --git a/contrib/chatops/actions/skip_message.py b/contrib/chatops/actions/skip_message.py new file mode 100755 index 0000000000..f5edc9e6e2 --- /dev/null +++ b/contrib/chatops/actions/skip_message.py @@ -0,0 +1,13 @@ +from st2actions.runners.pythonrunner import Action + +__all__ = [ + 'SkipMessageAction' +] + + +class SkipMessageAction(Action): + def run(self): + # That's a placeholder for format_result failure + # to avoid failing action chain on aliases with + # disabled output. + return diff --git a/contrib/chatops/actions/skip_message.yaml b/contrib/chatops/actions/skip_message.yaml new file mode 100755 index 0000000000..b379e240f1 --- /dev/null +++ b/contrib/chatops/actions/skip_message.yaml @@ -0,0 +1,7 @@ +--- +name: "skip_message" +pack: chatops +runner_type: "run-python" +description: "Skip sending an execution result for chatops" +enabled: true +entry_point: "skip_message.py" diff --git a/contrib/chatops/actions/workflows/post_result.yaml b/contrib/chatops/actions/workflows/post_result.yaml index 6cf5e5fa66..95ed6457e8 100755 --- a/contrib/chatops/actions/workflows/post_result.yaml +++ b/contrib/chatops/actions/workflows/post_result.yaml @@ -17,6 +17,7 @@ chain: publish: message: "{{format_result.result}}" on-success: "post_message" + on-failure: "skip_message" - name: "post_message" ref: "chatops.post_message" @@ -25,3 +26,6 @@ chain: channel: "{{channel}}" whisper: "{{whisper}}" message: "{{message}}" + - + name: "skip_message" + ref: "chatops.skip_message"