def __finish(options, client, client_outputs, result_status): pulsar_outputs = PulsarOutputs.from_status_response(result_status) cleanup_job = 'always' if not getattr(options, 'cleanup', True): cleanup_job = 'never' finish_args = dict( client=client, job_completed_normally=True, cleanup_job=cleanup_job, # Default should 'always' if overridden via options. client_outputs=client_outputs, pulsar_outputs=pulsar_outputs, ) failed = finish_job(**finish_args) if failed: failed_message_template = "Failed to complete job correctly, final status %s, finish exceptions %s." failed_message = failed_message_template % (result_status, failed) assert False, failed_message
def _run_client_for_job(args): if args.job_id is None: args.job_id = str(uuid.uuid4()) output_patterns = [] output_patterns.extend(args.output_pattern) for output in args.output: output_patterns.append(fnmatch.translate(output)) client_options = extract_client_options(args) client, client_manager = client_info(args, client_options) try: working_directory = args.working_directory client_outputs = ClientOutputs( working_directory=working_directory, dynamic_outputs=output_patterns, ) job_description = ClientJobDescription( command_line=args.command, working_directory=working_directory, client_outputs=client_outputs, ) submit_job(client, job_description) waiter = Waiter(client, client_manager) result_status = waiter.wait() pulsar_outputs = PulsarOutputs.from_status_response(result_status) if args.result_json: open(args.result_json, "w").write(json_dumps(result_status)) finish_args = dict( client=client, job_completed_normally=True, cleanup_job=args.cleanup, client_outputs=client_outputs, pulsar_outputs=pulsar_outputs, ) failed = finish_job(**finish_args) return failed finally: client_manager.shutdown()