projects
/
arvados.git
/ blobdiff
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
17776: Merge branch 'master' into 17776-more-throttling
[arvados.git]
/
sdk
/
python
/
arvados
/
commands
/
put.py
diff --git
a/sdk/python/arvados/commands/put.py
b/sdk/python/arvados/commands/put.py
index 0920369646c6b7556babdef38fced98fee2e18b8..4f0ac1fffaf9c4ee6875c0092ba1090d6e3eb9a6 100644
(file)
--- a/
sdk/python/arvados/commands/put.py
+++ b/
sdk/python/arvados/commands/put.py
@@
-173,7
+173,8
@@
Follow file and directory symlinks (default).
""")
_group.add_argument('--no-follow-links', action='store_false', dest='follow_links',
help="""
""")
_group.add_argument('--no-follow-links', action='store_false', dest='follow_links',
help="""
-Do not follow file and directory symlinks.
+Ignore file and directory symlinks. Even paths given explicitly on the
+command line will be skipped if they are symlinks.
""")
""")
@@
-259,9
+260,8
@@
def parse_arguments(arguments):
args.paths = ["-" if x == "/dev/stdin" else x for x in args.paths]
args.paths = ["-" if x == "/dev/stdin" else x for x in args.paths]
- if len(args.paths) != 1 or os.path.isdir(args.paths[0]):
- if args.filename:
- arg_parser.error("""
+ if args.filename and (len(args.paths) != 1 or os.path.isdir(args.paths[0])):
+ arg_parser.error("""
--filename argument cannot be used when storing a directory or
multiple files.
""")
--filename argument cannot be used when storing a directory or
multiple files.
""")
@@
-525,6
+525,9
@@
class ArvPutUploadJob(object):
self._write_stdin(self.filename or 'stdin')
elif not os.path.exists(path):
raise PathDoesNotExistError(u"file or directory '{}' does not exist.".format(path))
self._write_stdin(self.filename or 'stdin')
elif not os.path.exists(path):
raise PathDoesNotExistError(u"file or directory '{}' does not exist.".format(path))
+ elif (not self.follow_links) and os.path.islink(path):
+ self.logger.warning("Skipping symlink '{}'".format(path))
+ continue
elif os.path.isdir(path):
# Use absolute paths on cache index so CWD doesn't interfere
# with the caching logic.
elif os.path.isdir(path):
# Use absolute paths on cache index so CWD doesn't interfere
# with the caching logic.
@@
-659,6
+662,9
@@
class ArvPutUploadJob(object):
self._remote_collection.save(num_retries=self.num_retries,
trash_at=self._collection_trash_at())
else:
self._remote_collection.save(num_retries=self.num_retries,
trash_at=self._collection_trash_at())
else:
+ if len(self._local_collection) == 0:
+ self.logger.warning("No files were uploaded, skipping collection creation.")
+ return
self._local_collection.save_new(
name=self.name, owner_uuid=self.owner_uuid,
ensure_unique_name=self.ensure_unique_name,
self._local_collection.save_new(
name=self.name, owner_uuid=self.owner_uuid,
ensure_unique_name=self.ensure_unique_name,
@@
-1310,7
+1316,7
@@
def main(arguments=None, stdout=sys.stdout, stderr=sys.stderr,
output = writer.manifest_text()
elif args.raw:
output = ','.join(writer.data_locators())
output = writer.manifest_text()
elif args.raw:
output = ','.join(writer.data_locators())
- el
s
e:
+ el
if writer.manifest_locator() is not Non
e:
try:
expiration_notice = ""
if writer.collection_trash_at() is not None:
try:
expiration_notice = ""
if writer.collection_trash_at() is not None:
@@
-1336,6
+1342,8
@@
def main(arguments=None, stdout=sys.stdout, stderr=sys.stderr,
"arv-put: Error creating Collection on project: {}.".format(
error))
status = 1
"arv-put: Error creating Collection on project: {}.".format(
error))
status = 1
+ else:
+ status = 1
# Print the locator (uuid) of the new collection.
if output is None:
# Print the locator (uuid) of the new collection.
if output is None: