From 6d6b4a50c21c1216002fc53bc25126b80033c1a6 Mon Sep 17 00:00:00 2001 From: Alex Chrystal Date: Tue, 28 Nov 2023 09:03:07 -0500 Subject: [PATCH] getting name of bolt plan that failed, if so --- actions/get_formatted_error.py | 4 ++-- actions/lib/base_action.py | 34 ++++++++++++++++++++++++++-------- 2 files changed, 28 insertions(+), 10 deletions(-) diff --git a/actions/get_formatted_error.py b/actions/get_formatted_error.py index 24b9db2..fee3ad6 100644 --- a/actions/get_formatted_error.py +++ b/actions/get_formatted_error.py @@ -41,9 +41,9 @@ def run(self, **kwargs): for exe in self.parent_errors: if exe.status == 'failed' or exe.status == 'timeout': if html_tags: - errors += self.format_error_strings(self.get_error_message(exe.result)) + errors += self.format_error_strings(self.get_error_message(exe.result, exe)) else: - errors += self.get_error_message(exe.result) + errors += self.get_error_message(exe.result, exe) return errors return self.format_error(html_tags) diff --git a/actions/lib/base_action.py b/actions/lib/base_action.py index 845a464..a10c812 100644 --- a/actions/lib/base_action.py +++ b/actions/lib/base_action.py @@ -88,9 +88,9 @@ def format_error(self, html_tags): if self.child_error: for error in self.child_error: if html_tags: - err_message = self.format_error_strings(self.get_error_message(error.result)) + err_message = self.format_error_strings(self.get_error_message(error.result, error)) else: - err_message = self.get_error_message(error.result) + err_message = self.get_error_message(error.result, error) err_message = err_message if "orquesta" in error.context: @@ -99,14 +99,14 @@ def format_error(self, html_tags): error.id, err_message) else: - err_string += self.get_error_message(error.result) + err_string += self.get_error_message(error.result, error) else: if html_tags: error_result = self.parent_error.result if self.errors_as_string: parent_error = self.errors_as_string else: - parent_error = self.get_error_message(error_result) + parent_error = self.get_error_message(error_result, self.parent_error) err_message = self.format_error_strings(parent_error) err_string += self.get_error_string(html_tags, self.parent_error @@ -117,7 +117,7 @@ def format_error(self, html_tags): if self.errors_as_string: parent_error = self.errors_as_string else: - parent_error = self.get_error_message(self.parent_error.result) + parent_error = self.get_error_message(self.parent_error.result, self.parent_error) parent_error = parent_error err_string += self.get_error_string(html_tags, @@ -135,6 +135,15 @@ def get_error_string(self, html_tags, err_context, err_id, err_message): else: return ("Error task: {0}\nError execution ID: {1}\nError message: {2}" "\n".format(err_context, err_id, err_message)) + + def get_error_string(self, html_tags, err_context, err_id, err_message): + if html_tags: + line = '
' + else: + line = '\n' + + return ("Error task: {0}{3}Error execution ID: {1}{3}Error message: {2}" + "{3}".format(err_context, err_id, err_message, line)) def format_error_strings(self, error_string): """ formats error strings by dropping extra string escapes @@ -155,7 +164,7 @@ def format_error_strings(self, error_string): return error_string - def get_error_message(self, error_result): + def get_error_message(self, error_result, error_exe): # Custom Error Messages returned from workflow outputs if 'output' in error_result and error_result['output']: if 'error' in error_result['output'] and error_result['output']['error'] is not None: @@ -168,7 +177,14 @@ def get_error_message(self, error_result): # StackStorm errors (ex. timeouts) if 'error' in error_result: - return error_result['error'] + messages = [] + messages.append(error_result['error']) + + if 'plan' in error_exe.parameters: + plan_msg = "Bolt Plan {} failed to complete successfully!".format(error_exe.parameters['plan']) + messages.append(plan_msg) + + return messages # Bolt plans (https://github.com/StackStorm-Exchange/stackstorm-bolt) if ('result' in error_result and @@ -177,7 +193,9 @@ def get_error_message(self, error_result): if 'details' in error_result['result']: if 'result_set' in error_result['result']['details']: result_set = error_result['result']['details']['result_set'][0] - return result_set['value']['_error']['msg'] + err_msg = result_set['value']['_error']['msg'] + err_msg += "\nBolt Plan: {}".format(error_exe.parameters['plan']) + return err_msg if isinstance(error_result['result'], string_types): return error_result['result']