From f1bfbd3eea16bfb57d96efa4bb9610ee77aaacf8 Mon Sep 17 00:00:00 2001 From: Stefan Reimer Date: Wed, 6 Jul 2022 15:35:28 +0200 Subject: [PATCH] fix: Improve error handling in Pulumi execute functions --- cloudbender/cli.py | 4 +++- cloudbender/stack.py | 14 +++++++++----- 2 files changed, 12 insertions(+), 6 deletions(-) diff --git a/cloudbender/cli.py b/cloudbender/cli.py index 2031d89..f08f39a 100644 --- a/cloudbender/cli.py +++ b/cloudbender/cli.py @@ -201,7 +201,9 @@ def execute(cb, stack_name, function, args): for s in stacks: if s.mode == "pulumi": - s.execute(function, args) + ret = s.execute(function, args) + if ret: + raise click.Abort() else: logger.info( "{} uses Cloudformation, no execute feature available.".format( diff --git a/cloudbender/stack.py b/cloudbender/stack.py index 8036769..7cbb6a9 100644 --- a/cloudbender/stack.py +++ b/cloudbender/stack.py @@ -894,11 +894,15 @@ class Stack(object): exec_function = f"_execute_{function}" if exec_function in vars(self._pulumi_code): pulumi_stack = self._get_pulumi_stack() - vars(self._pulumi_code)[exec_function]( - config=pulumi_stack.get_all_config(), - outputs=pulumi_stack.outputs(), - args=args, - ) + + try: + vars(self._pulumi_code)[exec_function]( + config=pulumi_stack.get_all_config(), + outputs=pulumi_stack.outputs(), + args=args, + ) + except Exception as e: + return e.returncode else: logger.error("{} is not defined in {}".format(function, self._pulumi_code))