X-Git-Url: https://git.arvados.org/arvados.git/blobdiff_plain/7fec33bab2fb68405a1c641d3cd956d21487e14b..7bdffdeb9ccec113d1d9b848423be60d85a501ed:/sdk/python/arvados/commands/arv_copy.py diff --git a/sdk/python/arvados/commands/arv_copy.py b/sdk/python/arvados/commands/arv_copy.py index d6af681ffb..7f5245db86 100755 --- a/sdk/python/arvados/commands/arv_copy.py +++ b/sdk/python/arvados/commands/arv_copy.py @@ -171,6 +171,9 @@ def main(): for d in listvalues(local_repo_dir): shutil.rmtree(d, ignore_errors=True) + if not result: + exit(1) + # If no exception was thrown and the response does not have an # error_token field, presume success if result is None or 'error_token' in result or 'uuid' not in result: @@ -327,13 +330,23 @@ def copy_workflow(wf_uuid, src, dst, args): env = {"ARVADOS_API_HOST": urllib.parse.urlparse(src._rootDesc["rootUrl"]).netloc, "ARVADOS_API_TOKEN": src.api_token, "PATH": os.environ["PATH"]} - result = subprocess.run(["arvados-cwl-runner", "--quiet", "--print-keep-deps", "arvwf:"+wf_uuid], - env=env) - print(result) - exit() + try: + result = subprocess.run(["arvados-cwl-runner", "--quiet", "--print-keep-deps", "arvwf:"+wf_uuid], + capture_output=True, env=env) + except FileNotFoundError: + no_arv_copy = True + else: + no_arv_copy = result.returncode == 2 + + if no_arv_copy: + raise Exception('Copying workflows requires arvados-cwl-runner 2.7.1 or later to be installed in PATH.') + elif result.returncode != 0: + raise Exception('There was an error getting Keep dependencies from workflow using arvados-cwl-runner --print-keep-deps') + + locations = json.loads(result.stdout) - #if locations: - # copy_collections(locations, src, dst, args) + if locations: + copy_collections(locations, src, dst, args) # copy the workflow itself del wf['uuid']