X-Git-Url: https://git.arvados.org/arvados.git/blobdiff_plain/c5e5db25e95289376a0df35695ab2b5f48131b1f..e39e11d5850c1a2509f377e2f2551105507f59e3:/sdk/python/arvados/commands/run.py diff --git a/sdk/python/arvados/commands/run.py b/sdk/python/arvados/commands/run.py index 6b929ac3e9..be94e7304a 100644 --- a/sdk/python/arvados/commands/run.py +++ b/sdk/python/arvados/commands/run.py @@ -19,7 +19,7 @@ logger.setLevel(logging.INFO) arvrun_parser = argparse.ArgumentParser(parents=[arv_cmd.retry_opt]) arvrun_parser.add_argument('--dry-run', action="store_true", help="Print out the pipeline that would be submitted and exit") arvrun_parser.add_argument('--local', action="store_true", help="Run locally using arv-run-pipeline-instance") -arvrun_parser.add_argument('--docker-image', type=str, default="arvados/jobs", help="Docker image to use, default arvados/jobs") +arvrun_parser.add_argument('--docker-image', type=str, help="Docker image to use, otherwise use instance default.") arvrun_parser.add_argument('--ignore-rcode', action="store_true", help="Commands that return non-zero return codes should not be considered failed.") arvrun_parser.add_argument('--no-reuse', action="store_true", help="Do not reuse past jobs.") arvrun_parser.add_argument('--no-wait', action="store_true", help="Do not wait and display logs after submitting command, just exit.") @@ -101,10 +101,12 @@ def statfile(prefix, fn): return prefix+fn -def uploadfiles(files, api): +def uploadfiles(files, api, dry_run=False, num_retries=0, project=None): # Find the smallest path prefix that includes all the files that need to be uploaded. # This starts at the root and iteratively removes common parent directory prefixes # until all file pathes no longer have a common parent. + n = True + pathprefix = "/" while n: pathstep = None for c in files: @@ -133,12 +135,12 @@ def uploadfiles(files, api): logger.info("Upload local files: \"%s\"", '" "'.join([c.fn for c in files])) - if args.dry_run: + if dry_run: logger.info("$(input) is %s", pathprefix.rstrip('/')) pdh = "$(input)" else: files = sorted(files, key=lambda x: x.fn) - collection = arvados.CollectionWriter(api, num_retries=args.retries) + collection = arvados.CollectionWriter(api, num_retries=num_retries) stream = None for f in files: sp = os.path.split(f.fn) @@ -234,11 +236,9 @@ def main(arguments=None): command[i] = statfile(m.group(1), m.group(2)) break - n = True - pathprefix = "/" files = [c for command in slots[1:] for c in command if isinstance(c, UploadFile)] if files: - uploadfiles(files, api) + uploadfiles(files, api, dry_run=args.dry_run, num_retries=args.num_retries, project=project) for i in xrange(1, len(slots)): slots[i] = [("%s%s" % (c.prefix, c.fn)) if isinstance(c, ArvFile) else c for c in slots[i]] @@ -249,11 +249,12 @@ def main(arguments=None): "repository": args.repository, "script_parameters": { }, - "runtime_constraints": { - "docker_image": args.docker_image - } + "runtime_constraints": {} } + if args.docker_image: + component["runtime_constraints"]["docker_image"] = args.docker_image + task_foreach = [] group_parser = argparse.ArgumentParser() group_parser.add_argument('-b', '--batch-size', type=int)