From 4e3044de2097e88af958623ac68dfd2774216ecf Mon Sep 17 00:00:00 2001 From: "Brian C. Lane" Date: Thu, 26 Jul 2018 10:23:39 -0700 Subject: [PATCH] Update compose.py to use new handle_api_result Use the new function to properly handle error responses for all the commands. (cherry picked from commit 760aeb61a7de6fdf5b8359a6ee7bc7bf72b6357b) --- src/composer/cli/compose.py | 77 +++++++++++++++++++------------------ 1 file changed, 39 insertions(+), 38 deletions(-) diff --git a/src/composer/cli/compose.py b/src/composer/cli/compose.py index 408c56af..b0c60541 100644 --- a/src/composer/cli/compose.py +++ b/src/composer/cli/compose.py @@ -184,19 +184,12 @@ def compose_start(socket_path, api_version, args, show_json=False, testmode=0): test_url = "" api_route = client.api_url(api_version, "/compose" + test_url) result = client.post_url_json(socket_path, api_route, json.dumps(config)) - - if show_json: - print(json.dumps(result, indent=4)) - return 0 - - for err in result.get("errors", []): - log.error(err) - - if result["status"] == False or result.get("errors", False): - return 1 + (rc, exit_now) = handle_api_result(result, show_json) + if exit_now: + return rc print("Compose %s added to the queue" % result["build_id"]) - return 0 + return rc def compose_log(socket_path, api_version, args, show_json=False, testmode=0): """Show the last part of the compose log @@ -263,7 +256,7 @@ def compose_cancel(socket_path, api_version, args, show_json=False, testmode=0): api_route = client.api_url(api_version, "/compose/cancel/%s" % args[0]) result = client.delete_url_json(socket_path, api_route) - return handle_api_result(result, show_json) + return handle_api_result(result, show_json)[0] def compose_delete(socket_path, api_version, args, show_json=False, testmode=0): """Delete a finished compose's results @@ -290,19 +283,7 @@ def compose_delete(socket_path, api_version, args, show_json=False, testmode=0): api_route = client.api_url(api_version, "/compose/delete/%s" % (",".join(argify(args)))) result = client.delete_url_json(socket_path, api_route) - - if show_json: - print(json.dumps(result, indent=4)) - return 0 - - # Print any errors - for err in result.get("errors", []): - log.error(err) - - if result.get("errors", []): - return 1 - else: - return 0 + return handle_api_result(result, show_json)[0] def compose_info(socket_path, api_version, args, show_json=False, testmode=0): """Return detailed information about the compose @@ -328,15 +309,9 @@ def compose_info(socket_path, api_version, args, show_json=False, testmode=0): api_route = client.api_url(api_version, "/compose/info/%s" % args[0]) result = client.get_url_json(socket_path, api_route) - if show_json: - print(json.dumps(result, indent=4)) - return 0 - - for err in result.get("errors", []): - log.error(err) - - if result.get("errors", []): - return 1 + (rc, exit_now) = handle_api_result(result, show_json) + if exit_now: + return rc if result["image_size"] > 0: image_size = str(result["image_size"]) @@ -362,6 +337,8 @@ def compose_info(socket_path, api_version, args, show_json=False, testmode=0): for d in result["deps"]["packages"]: print(" " + packageNEVRA(d)) + return rc + def compose_metadata(socket_path, api_version, args, show_json=False, testmode=0): """Download a tar file of the compose's metadata @@ -385,7 +362,13 @@ def compose_metadata(socket_path, api_version, args, show_json=False, testmode=0 return 1 api_route = client.api_url(api_version, "/compose/metadata/%s" % args[0]) - return client.download_file(socket_path, api_route) + try: + rc = client.download_file(socket_path, api_route) + except RuntimeError as e: + print(str(e)) + rc = 1 + + return rc def compose_results(socket_path, api_version, args, show_json=False, testmode=0): """Download a tar file of the compose's results @@ -411,7 +394,13 @@ def compose_results(socket_path, api_version, args, show_json=False, testmode=0) return 1 api_route = client.api_url(api_version, "/compose/results/%s" % args[0]) - return client.download_file(socket_path, api_route, sys.stdout.isatty()) + try: + rc = client.download_file(socket_path, api_route, sys.stdout.isatty()) + except RuntimeError as e: + print(str(e)) + rc = 1 + + return rc def compose_logs(socket_path, api_version, args, show_json=False, testmode=0): """Download a tar of the compose's logs @@ -436,7 +425,13 @@ def compose_logs(socket_path, api_version, args, show_json=False, testmode=0): return 1 api_route = client.api_url(api_version, "/compose/logs/%s" % args[0]) - return client.download_file(socket_path, api_route, sys.stdout.isatty()) + try: + rc = client.download_file(socket_path, api_route, sys.stdout.isatty()) + except RuntimeError as e: + print(str(e)) + rc = 1 + + return rc def compose_image(socket_path, api_version, args, show_json=False, testmode=0): """Download the compose's output image @@ -462,4 +457,10 @@ def compose_image(socket_path, api_version, args, show_json=False, testmode=0): return 1 api_route = client.api_url(api_version, "/compose/image/%s" % args[0]) - return client.download_file(socket_path, api_route, sys.stdout.isatty()) + try: + rc = client.download_file(socket_path, api_route, sys.stdout.isatty()) + except RuntimeError as e: + print(str(e)) + rc = 1 + + return rc