From c71e84d067a0e4b651de874a3dcfd3c9219b7a2f Mon Sep 17 00:00:00 2001 From: Romain Demeure Date: Tue, 24 Mar 2026 14:16:02 +0100 Subject: [PATCH] =?UTF-8?q?=F0=9F=90=9B=20fix:=20return=20non=20zero=20on?= =?UTF-8?q?=20failure?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- oks_cli/cluster.py | 24 +++++++++++++++++------- 1 file changed, 17 insertions(+), 7 deletions(-) diff --git a/oks_cli/cluster.py b/oks_cli/cluster.py index 600a8bf..dec5ee8 100644 --- a/oks_cli/cluster.py +++ b/oks_cli/cluster.py @@ -736,19 +736,29 @@ def _run_kubectl(project_id, cluster_id, user, group, args, input=None, capture= if not kubeconfig_raw: click.echo("Cannot get kubeconfig") - raise SystemExit() + raise SystemExit(1) kubeconfig_path = save_cache(project_id, cluster_id, 'kubeconfig', kubeconfig_raw, user, group) env = dict(os.environ) env['KUBECONFIG'] = str(kubeconfig_path) - cmd = ['kubectl'] - cmd += list(args) + + cmd = ['kubectl'] + list(args) logging.info("running %s", cmd) - if not input: - return subprocess.run(cmd, env=env, capture_output=capture) - else: - return subprocess.run(cmd, input=input, text=True, env=env, capture_output=capture) + + try: + if not input: + return subprocess.run(cmd, env=env, capture_output=capture, check=True) + else: + return subprocess.run(cmd, input=input, text=True, env=env, capture_output=capture, check=True) + + except subprocess.CalledProcessError as e: + if e.stderr: + click.echo(e.stderr, err=True) + elif e.stdout: + click.echo(e.stdout, err=True) + + raise SystemExit(e.returncode) @cluster.command('kubectl', help='Fetch the kubeconfig for a cluster and run kubectl against it', context_settings={"ignore_unknown_options": True})