in cli/src/pcluster/cli/entrypoint.py [0:0]
def main():
pcluster_logging.config_logger()
try:
ret = run(sys.argv[1:])
if ret:
output_str = json.dumps(ret, indent=2)
print(output_str)
LOGGER.info(output_str)
sys.exit(0)
except NoCredentialsError: # TODO: remove from here
LOGGER.error("AWS Credentials not found.")
sys.exit(1)
except KeyboardInterrupt:
LOGGER.info("Received KeyboardInterrupt. Exiting.")
sys.exit(1)
except ParameterException as e:
print(json.dumps(e.data, indent=2))
sys.exit(1)
except APIOperationException as e:
LOGGER.error(json.dumps(e.data), exc_info=True)
print(json.dumps(e.data, indent=2))
sys.exit(1)
except BrokenPipeError:
pass
except Exception as e:
LOGGER.exception("Unexpected error of type %s: %s", type(e).__name__, e)
sys.exit(1)
finally:
# If an external process has closed the other end of this pipe, flush
# now to see if we'd get a BrokenPipeError on exit and if so, dup2 a
# devnull over that output.
try:
sys.stdout.flush()
except BrokenPipeError:
os.dup2(os.open(os.devnull, os.O_WRONLY), sys.stdout.fileno())
try:
sys.stderr.flush()
except BrokenPipeError:
os.dup2(os.open(os.devnull, os.O_WRONLY), sys.stderr.fileno())