X-Git-Url: https://git.arvados.org/arvados.git/blobdiff_plain/83561af02e156758b09ea771510ad4f9ee506b06..348c0d6b9927b7fd416085b131e9afbc54e90446:/sdk/python/bin/arv-get diff --git a/sdk/python/bin/arv-get b/sdk/python/bin/arv-get index 7f07e22bc0..c1b2bcbaf5 100755 --- a/sdk/python/bin/arv-get +++ b/sdk/python/bin/arv-get @@ -8,7 +8,13 @@ import string import sys import logging -logger = logging.getLogger(os.path.basename(sys.argv[0])) +import arvados + +logger = logging.getLogger('arvados.arv-get') + +def abort(msg, code=1): + print >>sys.stderr, "arv-get:", msg + exit(code) parser = argparse.ArgumentParser( description='Copy data from Keep to a local file or pipe.') @@ -87,7 +93,7 @@ if not args.r and (os.path.isdir(args.destination) or args.destination[-1] == os.path.sep): args.destination = os.path.join(args.destination, os.path.basename(args.locator)) - logger.debug("Appended source file name to destination directory: %s" % + logger.debug("Appended source file name to destination directory: %s", args.destination) # Turn on --progress by default if stderr is a tty and stdout isn't. @@ -107,8 +113,6 @@ else: args.destination = args.destination.rstrip(os.sep) -import arvados - r = re.search(r'^(.*?)(/.*)?$', args.locator) collection = r.group(1) get_prefix = r.group(2) @@ -121,23 +125,22 @@ if not get_prefix: try: if not args.n: if not args.f and os.path.exists(args.destination): - logger.error('Local file %s already exists' % args.destination) - sys.exit(1) + abort('Local file %s already exists.' % (args.destination,)) with open(args.destination, 'wb') as f: try: c = arvados.api('v1').collections().get( uuid=collection).execute() manifest = c['manifest_text'] except Exception as e: - logging.warning( - "API lookup failed for collection %s (%s: %s)" % - (collection, type(e), str(e))) + logger.warning( + "Collection %s not found. " + + "Trying to fetch directly from Keep (deprecated).", + collection) manifest = arvados.Keep.get(collection) f.write(manifest) sys.exit(0) except arvados.errors.NotFoundError as e: - logger.error(e) - sys.exit(1) + abort(e) reader = arvados.CollectionReader(collection) @@ -156,8 +159,7 @@ try: os.path.join(s.name(), f.name())[len(get_prefix)+1:]) if (not (args.n or args.f or args.skip_existing) and os.path.exists(dest_path)): - logger.error('Local file %s already exists' % dest_path) - sys.exit(1) + abort('Local file %s already exists.' % (dest_path,)) else: if os.path.join(s.name(), f.name()) != '.' + get_prefix: continue @@ -165,8 +167,7 @@ try: todo += [(s, f, dest_path)] todo_bytes += f.size() except arvados.errors.NotFoundError as e: - logger.error(e) - sys.exit(1) + abort(e) # Read data, and (if not -n) write to local file(s) or pipe. @@ -176,21 +177,19 @@ for s,f,outfilename in todo: digestor = None if not args.n: if args.skip_existing and os.path.exists(outfilename): - logger.debug('Local file %s exists. Skipping.' % outfilename) + logger.debug('Local file %s exists. Skipping.', outfilename) continue elif not args.f and (os.path.isfile(outfilename) or os.path.isdir(outfilename)): # Good thing we looked again: apparently this file wasn't # here yet when we checked earlier. - logger.error('Local file %s already exists' % outfilename) - sys.exit(1) + abort('Local file %s already exists.' % (outfilename,)) if args.r: arvados.util.mkdir_dash_p(os.path.dirname(outfilename)) try: outfile = open(outfilename, 'wb') except Exception as e: - logger.error('Open(%s) failed: %s' % (outfilename, e)) - sys.exit(1) + abort('Open(%s) failed: %s' % (outfilename, e)) if args.hash: digestor = hashlib.new(args.hash) try: