X-Git-Url: https://git.arvados.org/arvados.git/blobdiff_plain/5dc5645a3279e771796266eb336536ae0ac9cb86..d6a05be901e501bd10c00702fc8540dc1efba68a:/sdk/cwl/arvados_cwl/__init__.py diff --git a/sdk/cwl/arvados_cwl/__init__.py b/sdk/cwl/arvados_cwl/__init__.py index 7bbb3b29e8..79bcee58ee 100644 --- a/sdk/cwl/arvados_cwl/__init__.py +++ b/sdk/cwl/arvados_cwl/__init__.py @@ -152,6 +152,10 @@ def arg_parser(): # type: () -> argparse.ArgumentParser help="When invoked with --submit --wait, always submit a runner to manage the workflow, even when only running a single CommandLineTool", default=False) + parser.add_argument("--match-submitter-images", action="store_true", + default=False, dest="match_local_docker", + help="Where Arvados has more than one Docker image of the same name, use image from the Docker instance on the submitting node.") + exgroup = parser.add_mutually_exclusive_group() exgroup.add_argument("--submit-request-uuid", default=None, @@ -209,6 +213,14 @@ def arg_parser(): # type: () -> argparse.ArgumentParser parser.add_argument("--http-timeout", type=int, default=5*60, dest="http_timeout", help="API request timeout in seconds. Default is 300 seconds (5 minutes).") + exgroup = parser.add_mutually_exclusive_group() + exgroup.add_argument("--enable-preemptible", dest="enable_preemptible", default=None, action="store_true", help="Use preemptible instances. Control individual steps with arv:UsePreemptible hint.") + exgroup.add_argument("--disable-preemptible", dest="enable_preemptible", default=None, action="store_false", help="Don't use preemptible instances.") + + exgroup = parser.add_mutually_exclusive_group() + exgroup.add_argument("--copy-deps", dest="copy_deps", default=None, action="store_true", help="Copy dependencies into the destination project.") + exgroup.add_argument("--no-copy-deps", dest="copy_deps", default=None, action="store_false", help="Leave dependencies where they are.") + parser.add_argument( "--skip-schemas", action="store_true", @@ -249,14 +261,22 @@ def add_arv_hints(): "http://arvados.org/cwl#IntermediateOutput", "http://arvados.org/cwl#ReuseRequirement", "http://arvados.org/cwl#ClusterTarget", - "http://arvados.org/cwl#OutputStorageClass" + "http://arvados.org/cwl#OutputStorageClass", + "http://arvados.org/cwl#ProcessProperties", + "http://commonwl.org/cwltool#CUDARequirement", + "http://arvados.org/cwl#UsePreemptible", + "http://arvados.org/cwl#OutputCollectionProperties", ]) def exit_signal_handler(sigcode, frame): logger.error(str(u"Caught signal {}, exiting.").format(sigcode)) sys.exit(-sigcode) -def main(args, stdout, stderr, api_client=None, keep_client=None, +def main(args=sys.argv[1:], + stdout=sys.stdout, + stderr=sys.stderr, + api_client=None, + keep_client=None, install_sig_handlers=True): parser = arg_parser() @@ -300,7 +320,7 @@ def main(args, stdout, stderr, api_client=None, keep_client=None, api_client.users().current().execute() if keep_client is None: keep_client = arvados.keep.KeepClient(api_client=api_client, num_retries=4) - executor = ArvCwlExecutor(api_client, arvargs, keep_client=keep_client, num_retries=4) + executor = ArvCwlExecutor(api_client, arvargs, keep_client=keep_client, num_retries=4, stdout=stdout) except WorkflowException as e: logger.error(e, exc_info=(sys.exc_info()[1] if arvargs.debug else False)) return 1 @@ -339,6 +359,10 @@ def main(args, stdout, stderr, api_client=None, keep_client=None, # unit tests. stdout = None + if arvargs.submit and arvargs.workflow.startswith("arvwf:"): + executor.loadingContext.do_validate = False + executor.fast_submit = True + return cwltool.main.main(args=arvargs, stdout=stdout, stderr=stderr, @@ -348,5 +372,5 @@ def main(args, stdout, stderr, api_client=None, keep_client=None, logger_handler=arvados.log_handler, custom_schema_callback=add_arv_hints, loadingContext=executor.loadingContext, - runtimeContext=executor.runtimeContext, + runtimeContext=executor.toplevel_runtimeContext, input_required=not (arvargs.create_workflow or arvargs.update_workflow))