[arvados] created: 2.7.0-6056-g49d28d5ca3

git repository hosting git at public.arvados.org
Sun Feb 25 04:34:34 UTC 2024


        at  49d28d5ca3ca70c9110df68eaabe986c76b456ac (commit)


commit 49d28d5ca3ca70c9110df68eaabe986c76b456ac
Author: Brett Smith <brett.smith at curii.com>
Date:   Sat Feb 24 23:33:20 2024 -0500

    21504: Refine arv-mount description and epilog
    
    * Modernize the description.
    * Remove outdated mode information.
    * Move epilog to --exec help.
    
    Arvados-DCO-1.1-Signed-off-by: Brett Smith <brett.smith at curii.com>

diff --git a/services/fuse/arvados_fuse/command.py b/services/fuse/arvados_fuse/command.py
index 623df34008..fe100bd469 100644
--- a/services/fuse/arvados_fuse/command.py
+++ b/services/fuse/arvados_fuse/command.py
@@ -28,14 +28,8 @@ class ArgumentParser(argparse.ArgumentParser):
     def __init__(self):
         super(ArgumentParser, self).__init__(
             parents=[arv_cmd.retry_opt],
-            description="""
-Mount Keep data under the local filesystem.  Default mode is --home
-""",
-            epilog="""
-    Note: When using the --exec feature, you must either specify the
-    mountpoint before --exec, or mark the end of your --exec arguments
-    with "--".
-            """)
+            description="Interact with Arvados data through a local filesystem",
+        )
         self.add_argument(
             '--version',
             action='version',
@@ -203,7 +197,13 @@ and delete it when unmounting.
             '--exec',
             nargs=argparse.REMAINDER,
             dest="exec_args",
-            help="""Mount, run a command, then unmount and exit""",
+            help="""
+Mount data, run the specified command, then unmount and exit.
+--exec reads all remaining options as the command to run,
+so it must be the last option you specify.
+Either end your command arguments (and other options) with a `--` argument,
+or specify --exec after your mount point.
+""",
         )
         lifecycle.add_argument(
             '--foreground',

commit 2166855c9bc5c21a9e5cf54af72baafe26d0b293
Author: Brett Smith <brett.smith at curii.com>
Date:   Sat Feb 24 23:26:21 2024 -0500

    21504: Refine metavars for arv-mount options
    
    Arvados-DCO-1.1-Signed-off-by: Brett Smith <brett.smith at curii.com>

diff --git a/services/fuse/arvados_fuse/command.py b/services/fuse/arvados_fuse/command.py
index 6d8c047a9f..623df34008 100644
--- a/services/fuse/arvados_fuse/command.py
+++ b/services/fuse/arvados_fuse/command.py
@@ -71,7 +71,7 @@ Mount a top level meta-directory with subdirectories as specified by additional
         )
         mode.add_argument(
             '--collection',
-            metavar='UUID_or_PDH',
+            metavar='UUID_OR_PDH',
             help="""Mount only the specified collection.""",
         )
         mode.add_argument(
@@ -203,7 +203,6 @@ and delete it when unmounting.
             '--exec',
             nargs=argparse.REMAINDER,
             dest="exec_args",
-            metavar=('command', 'args', '...', '--'),
             help="""Mount, run a command, then unmount and exit""",
         )
         lifecycle.add_argument(
@@ -214,8 +213,7 @@ and delete it when unmounting.
         )
         lifecycle.add_argument(
             '--subtype',
-            metavar='STRING',
-            help="""Report mounted filesystem type as "fuse.STRING", instead of just "fuse".""",
+            help="""Report mounted filesystem type as "fuse.SUBTYPE", instead of just "fuse".""",
         )
         unmount = lifecycle.add_mutually_exclusive_group()
         unmount.add_argument(
@@ -261,6 +259,7 @@ Time to wait for graceful shutdown after --exec program exits and filesystem is
             '--crunchstat-interval',
             type=float,
             default=0.0,
+            metavar='SECONDS',
             help="Write stats to stderr every N seconds (default disabled)",
         )
         reporting.add_argument(
@@ -291,18 +290,21 @@ Time to wait for graceful shutdown after --exec program exits and filesystem is
         )
         cache.add_argument(
             '--disk-cache-dir',
+            metavar="DIRECTORY",
             help="Disk cache location (default ~/.cache/arvados/keep)",
         )
         cache.add_argument(
             '--directory-cache',
             type=int,
             default=128*1024*1024,
+            metavar='BYTES',
             help="Directory data cache size, in bytes (default 128 MiB)",
         )
         cache.add_argument(
             '--file-cache',
             type=int,
             default=0,
+            metavar='BYTES',
             help="""
 File data cache size, in bytes
 (default 8 GiB for disk-based cache or 256 MiB with RAM-only cache)

commit fcc1154442af6919767c367a05ce86cf95622e57
Author: Brett Smith <brett.smith at curii.com>
Date:   Sat Feb 24 23:17:53 2024 -0500

    21504: Organize arv-mount options into groups
    
    Groups are ordered roughly from more to less important, although
    different users will have different needs. Options within a group are
    mostly alphabetical except when organization requires otherwise.
    
    Arvados-DCO-1.1-Signed-off-by: Brett Smith <brett.smith at curii.com>

diff --git a/services/fuse/arvados_fuse/command.py b/services/fuse/arvados_fuse/command.py
index cec5053c64..6d8c047a9f 100644
--- a/services/fuse/arvados_fuse/command.py
+++ b/services/fuse/arvados_fuse/command.py
@@ -46,18 +46,9 @@ Mount Keep data under the local filesystem.  Default mode is --home
             'mountpoint',
             help="""Mount point.""",
         )
-        self.add_argument(
-            '--allow-other',
-            action='store_true',
-            help="""Let other users read the mount""",
-        )
-        self.add_argument(
-            '--subtype',
-            metavar='STRING',
-            help="""Report mounted filesystem type as "fuse.STRING", instead of just "fuse".""",
-        )
 
-        mode = self.add_mutually_exclusive_group()
+        mode_group = self.add_argument_group("Mount contents")
+        mode = mode_group.add_mutually_exclusive_group()
         mode.add_argument(
             '--all',
             action='store_const',
@@ -78,6 +69,11 @@ Mount a top level meta-directory with subdirectories as specified by additional
 (default if any --mount-* arguments are given).
 """,
         )
+        mode.add_argument(
+            '--collection',
+            metavar='UUID_or_PDH',
+            help="""Mount only the specified collection.""",
+        )
         mode.add_argument(
             '--home',
             action='store_const',
@@ -85,6 +81,11 @@ Mount a top level meta-directory with subdirectories as specified by additional
             dest='mode',
             help="""Mount only the user's home project.""",
         )
+        mode.add_argument(
+            '--project',
+            metavar='UUID',
+            help="""Mount the specified project.""",
+        )
         mode.add_argument(
             '--shared',
             action='store_const',
@@ -92,13 +93,6 @@ Mount a top level meta-directory with subdirectories as specified by additional
             dest='mode',
             help="""Mount only list of projects shared with the user.""",
         )
-        mode.add_argument(
-            '--by-tag',
-            action='store_const',
-            const='by_tag',
-            dest='mode',
-            help="""Mount subdirectories listed by tag.""",
-        )
         mode.add_argument(
             '--by-id',
             action='store_const',
@@ -114,26 +108,29 @@ Mount a top level meta-directory with subdirectories as specified by additional
             help="""Mount subdirectories listed by portable data hash.""",
         )
         mode.add_argument(
-            '--project',
-            metavar='UUID',
-            help="""Mount the specified project.""",
-        )
-        mode.add_argument(
-            '--collection',
-            metavar='UUID_or_PDH',
-            help="""Mount only the specified collection.""",
+            '--by-tag',
+            action='store_const',
+            const='by_tag',
+            dest='mode',
+            help="""Mount subdirectories listed by tag.""",
         )
 
-        mounts = self.add_argument_group('Custom mount options')
+        mounts = self.add_argument_group("Mount custom layout and filtering")
         mounts.add_argument(
-            '--mount-by-pdh',
+            '--filters',
+            type=arv_cmd.JSONArgument(arv_cmd.validate_filters),
+            help="""
+Filters to apply to all project, shared, and tag directory contents.
+Pass filters as either a JSON string or a path to a JSON file.
+The JSON object should be a list of filters in Arvados API list filter syntax.
+""",
+        )
+        mounts.add_argument(
+            '--mount-home',
             metavar='PATH',
             action='append',
             default=[],
-            help="""
-Mount each readable collection at mountpoint/PATH/P
-where P is the collection's portable data hash.
-""",
+            help="Mount the current user's home project at mountpoint/PATH.",
         )
         mounts.add_argument(
             '--mount-by-id',
@@ -146,25 +143,28 @@ where PDH is the collection's portable data hash and UUID is its UUID.
 """,
         )
         mounts.add_argument(
-            '--mount-by-tag',
+            '--mount-by-pdh',
             metavar='PATH',
             action='append',
             default=[],
-            help="Mount all collections with tag TAG at mountpoint/PATH/TAG/UUID.",
+            help="""
+Mount each readable collection at mountpoint/PATH/P
+where P is the collection's portable data hash.
+""",
         )
         mounts.add_argument(
-            '--mount-home',
+            '--mount-shared',
             metavar='PATH',
             action='append',
             default=[],
-            help="Mount the current user's home project at mountpoint/PATH.",
+            help="Mount projects shared with the current user at mountpoint/PATH.",
         )
         mounts.add_argument(
-            '--mount-shared',
+            '--mount-by-tag',
             metavar='PATH',
             action='append',
             default=[],
-            help="Mount projects shared with the current user at mountpoint/PATH.",
+            help="Mount all collections with tag TAG at mountpoint/PATH/TAG/UUID.",
         )
         mounts.add_argument(
             '--mount-tmp',
@@ -177,103 +177,55 @@ and delete it when unmounting.
 """,
         )
 
-        self.add_argument(
-            '--debug',
-            action='store_true',
-            help="""Debug mode""",
-        )
-        self.add_argument(
-            '--logfile',
-            help="""Write debug logs and errors to the specified file (default stderr).""",
-        )
-        self.add_argument(
-            '--foreground',
-            action='store_true',
-            default=False,
-            help="""Run in foreground (default is to daemonize unless --exec specified)""",
-        )
-        self.add_argument(
-            '--encoding',
-            default="utf-8",
-            help="""
-Character encoding to use for filesystem, default is utf-8
-(see Python codec registry for list of available encodings)"
-""",
-        )
-
-        self.add_argument(
-            '--file-cache',
-            type=int,
-            default=0,
-            help="""
-File data cache size, in bytes
-(default 8 GiB for disk-based cache or 256 MiB with RAM-only cache)
-""",
-        )
-        self.add_argument(
-            '--directory-cache',
-            type=int,
-            default=128*1024*1024,
-            help="Directory data cache size, in bytes (default 128 MiB)",
-        )
-
-        cachetype = self.add_mutually_exclusive_group()
-        cachetype.add_argument(
-            '--ram-cache',
-            action='store_false',
-            default=True,
-            dest='disk_cache',
-            help="Use in-memory caching only",
-        )
-        cachetype.add_argument(
-            '--disk-cache',
-            action='store_true',
-            default=True,
-            dest='disk_cache',
-            help="Use disk based caching (default)",
-        )
-
-        self.add_argument(
-            '--disk-cache-dir',
-            help="Disk cache location (default ~/.cache/arvados/keep)",
-        )
-
-        self.add_argument(
-            '--disable-event-listening',
+        perms = self.add_argument_group("Mount access and permissions")
+        perms.add_argument(
+            '--allow-other',
             action='store_true',
-            dest='disable_event_listening',
-            default=False,
-            help="Don't subscribe to events on the API server",
+            help="""Let other users read the mount""",
         )
-
-        self.add_argument(
+        perms.add_argument(
             '--read-only',
             action='store_false',
             default=False,
             dest='enable_write',
             help="Mount will be read only (default)",
         )
-        self.add_argument(
+        perms.add_argument(
             '--read-write',
             action='store_true',
             default=False,
             dest='enable_write',
             help="Mount will be read-write",
         )
-        self.add_argument(
-            '--storage-classes',
-            metavar='CLASSES',
-            help="Specify comma separated list of storage classes to be used when saving data of new collections",
-        )
 
-        self.add_argument(
-            '--crunchstat-interval',
-            type=float,
-            default=0.0,
-            help="Write stats to stderr every N seconds (default disabled)",
+        lifecycle = self.add_argument_group("Mount lifecycle management")
+        lifecycle.add_argument(
+            '--exec',
+            nargs=argparse.REMAINDER,
+            dest="exec_args",
+            metavar=('command', 'args', '...', '--'),
+            help="""Mount, run a command, then unmount and exit""",
+        )
+        lifecycle.add_argument(
+            '--foreground',
+            action='store_true',
+            default=False,
+            help="""Run in foreground (default is to daemonize unless --exec specified)""",
+        )
+        lifecycle.add_argument(
+            '--subtype',
+            metavar='STRING',
+            help="""Report mounted filesystem type as "fuse.STRING", instead of just "fuse".""",
+        )
+        unmount = lifecycle.add_mutually_exclusive_group()
+        unmount.add_argument(
+            '--replace',
+            action='store_true',
+            default=False,
+            help="""
+If a fuse mount is already present at mountpoint, forcefully unmount it before mounting
+""",
         )
-
-        unmount = self.add_mutually_exclusive_group()
         unmount.add_argument(
             '--unmount',
             action='store_true',
@@ -295,15 +247,7 @@ Exit non-zero if any other types of mounts are found at or below the given path.
 WARNING: This command can affect any kind of fuse mount, not just arv-mount.
 """,
         )
-        unmount.add_argument(
-            '--replace',
-            action='store_true',
-            default=False,
-            help="""
-If a fuse mount is already present at mountpoint, forcefully unmount it before mounting
-""",
-        )
-        self.add_argument(
+        lifecycle.add_argument(
             '--unmount-timeout',
             type=float,
             default=2.0,
@@ -311,21 +255,80 @@ If a fuse mount is already present at mountpoint, forcefully unmount it before m
 Time to wait for graceful shutdown after --exec program exits and filesystem is unmounted
 """,
         )
-        self.add_argument(
-            '--filters',
-            type=arv_cmd.JSONArgument(arv_cmd.validate_filters),
+
+        reporting = self.add_argument_group("Mount logging and statistics")
+        reporting.add_argument(
+            '--crunchstat-interval',
+            type=float,
+            default=0.0,
+            help="Write stats to stderr every N seconds (default disabled)",
+        )
+        reporting.add_argument(
+            '--debug',
+            action='store_true',
+            help="""Debug mode""",
+        )
+        reporting.add_argument(
+            '--logfile',
+            help="""Write debug logs and errors to the specified file (default stderr).""",
+        )
+
+        cache = self.add_argument_group("Mount local cache setup")
+        cachetype = cache.add_mutually_exclusive_group()
+        cachetype.add_argument(
+            '--disk-cache',
+            action='store_true',
+            default=True,
+            dest='disk_cache',
+            help="Use disk based caching (default)",
+        )
+        cachetype.add_argument(
+            '--ram-cache',
+            action='store_false',
+            default=True,
+            dest='disk_cache',
+            help="Use in-memory caching only",
+        )
+        cache.add_argument(
+            '--disk-cache-dir',
+            help="Disk cache location (default ~/.cache/arvados/keep)",
+        )
+        cache.add_argument(
+            '--directory-cache',
+            type=int,
+            default=128*1024*1024,
+            help="Directory data cache size, in bytes (default 128 MiB)",
+        )
+        cache.add_argument(
+            '--file-cache',
+            type=int,
+            default=0,
             help="""
-Filters to apply to all project, shared, and tag directory contents.
-Pass filters as either a JSON string or a path to a JSON file.
-The JSON object should be a list of filters in Arvados API list filter syntax.
+File data cache size, in bytes
+(default 8 GiB for disk-based cache or 256 MiB with RAM-only cache)
 """,
         )
-        self.add_argument(
-            '--exec',
-            nargs=argparse.REMAINDER,
-            dest="exec_args",
-            metavar=('command', 'args', '...', '--'),
-            help="""Mount, run a command, then unmount and exit""",
+
+        plumbing = self.add_argument_group("Mount interactions with Arvados and Linux")
+        plumbing.add_argument(
+            '--disable-event-listening',
+            action='store_true',
+            dest='disable_event_listening',
+            default=False,
+            help="Don't subscribe to events on the API server",
+        )
+        plumbing.add_argument(
+            '--encoding',
+            default="utf-8",
+            help="""
+Character encoding to use for filesystem, default is utf-8
+(see Python codec registry for list of available encodings)
+""",
+        )
+        plumbing.add_argument(
+            '--storage-classes',
+            metavar='CLASSES',
+            help="Specify comma separated list of storage classes to be used when saving data of new collections",
         )
 
 

commit 84225502fc158312c02825da20f235232f66909d
Author: Brett Smith <brett.smith at curii.com>
Date:   Sat Feb 24 22:44:47 2024 -0500

    21504: Style arv-mount argument creation consistently
    
    This is purely a code style change: every argparse argument is created
    with one argument per line. This is preparation for readability
    reorganization I'm about to do.
    
    Remove arguments that match the argparse defaults as part of this.
    
    Arvados-DCO-1.1-Signed-off-by: Brett Smith <brett.smith at curii.com>

diff --git a/services/fuse/arvados_fuse/command.py b/services/fuse/arvados_fuse/command.py
index 610da477ca..cec5053c64 100644
--- a/services/fuse/arvados_fuse/command.py
+++ b/services/fuse/arvados_fuse/command.py
@@ -28,105 +28,305 @@ class ArgumentParser(argparse.ArgumentParser):
     def __init__(self):
         super(ArgumentParser, self).__init__(
             parents=[arv_cmd.retry_opt],
-            description='''Mount Keep data under the local filesystem.  Default mode is --home''',
+            description="""
+Mount Keep data under the local filesystem.  Default mode is --home
+""",
             epilog="""
     Note: When using the --exec feature, you must either specify the
     mountpoint before --exec, or mark the end of your --exec arguments
     with "--".
             """)
-        self.add_argument('--version', action='version',
-                          version=u"%s %s" % (sys.argv[0], __version__),
-                          help='Print version and exit.')
-        self.add_argument('mountpoint', type=str, help="""Mount point.""")
-        self.add_argument('--allow-other', action='store_true',
-                            help="""Let other users read the mount""")
-        self.add_argument('--subtype', type=str, metavar='STRING',
-                            help="""Report mounted filesystem type as "fuse.STRING", instead of just "fuse".""")
+        self.add_argument(
+            '--version',
+            action='version',
+            version=u"%s %s" % (sys.argv[0], __version__),
+            help='Print version and exit.',
+        )
+        self.add_argument(
+            'mountpoint',
+            help="""Mount point.""",
+        )
+        self.add_argument(
+            '--allow-other',
+            action='store_true',
+            help="""Let other users read the mount""",
+        )
+        self.add_argument(
+            '--subtype',
+            metavar='STRING',
+            help="""Report mounted filesystem type as "fuse.STRING", instead of just "fuse".""",
+        )
 
         mode = self.add_mutually_exclusive_group()
-
-        mode.add_argument('--all', action='store_const', const='all', dest='mode',
-                                help="""Mount a subdirectory for each mode: home, shared, by_tag, by_id (default if no --mount-* arguments are given).""")
-        mode.add_argument('--custom', action='store_const', const=None, dest='mode',
-                                help="""Mount a top level meta-directory with subdirectories as specified by additional --mount-* arguments (default if any --mount-* arguments are given).""")
-        mode.add_argument('--home', action='store_const', const='home', dest='mode',
-                                help="""Mount only the user's home project.""")
-        mode.add_argument('--shared', action='store_const', const='shared', dest='mode',
-                                help="""Mount only list of projects shared with the user.""")
-        mode.add_argument('--by-tag', action='store_const', const='by_tag', dest='mode',
-                                help="""Mount subdirectories listed by tag.""")
-        mode.add_argument('--by-id', action='store_const', const='by_id', dest='mode',
-                                help="""Mount subdirectories listed by portable data hash or uuid.""")
-        mode.add_argument('--by-pdh', action='store_const', const='by_pdh', dest='mode',
-                                help="""Mount subdirectories listed by portable data hash.""")
-        mode.add_argument('--project', type=str, metavar='UUID',
-                                help="""Mount the specified project.""")
-        mode.add_argument('--collection', type=str, metavar='UUID_or_PDH',
-                                help="""Mount only the specified collection.""")
+        mode.add_argument(
+            '--all',
+            action='store_const',
+            const='all',
+            dest='mode',
+            help="""
+Mount a subdirectory for each mode: home, shared, by_tag, by_id
+(default if no --mount-* arguments are given).
+""",
+        )
+        mode.add_argument(
+            '--custom',
+            action='store_const',
+            const=None,
+            dest='mode',
+            help="""
+Mount a top level meta-directory with subdirectories as specified by additional --mount-* arguments
+(default if any --mount-* arguments are given).
+""",
+        )
+        mode.add_argument(
+            '--home',
+            action='store_const',
+            const='home',
+            dest='mode',
+            help="""Mount only the user's home project.""",
+        )
+        mode.add_argument(
+            '--shared',
+            action='store_const',
+            const='shared',
+            dest='mode',
+            help="""Mount only list of projects shared with the user.""",
+        )
+        mode.add_argument(
+            '--by-tag',
+            action='store_const',
+            const='by_tag',
+            dest='mode',
+            help="""Mount subdirectories listed by tag.""",
+        )
+        mode.add_argument(
+            '--by-id',
+            action='store_const',
+            const='by_id',
+            dest='mode',
+            help="""Mount subdirectories listed by portable data hash or uuid.""",
+        )
+        mode.add_argument(
+            '--by-pdh',
+            action='store_const',
+            const='by_pdh',
+            dest='mode',
+            help="""Mount subdirectories listed by portable data hash.""",
+        )
+        mode.add_argument(
+            '--project',
+            metavar='UUID',
+            help="""Mount the specified project.""",
+        )
+        mode.add_argument(
+            '--collection',
+            metavar='UUID_or_PDH',
+            help="""Mount only the specified collection.""",
+        )
 
         mounts = self.add_argument_group('Custom mount options')
-        mounts.add_argument('--mount-by-pdh',
-                            type=str, metavar='PATH', action='append', default=[],
-                            help="Mount each readable collection at mountpoint/PATH/P where P is the collection's portable data hash.")
-        mounts.add_argument('--mount-by-id',
-                            type=str, metavar='PATH', action='append', default=[],
-                            help="Mount each readable collection at mountpoint/PATH/UUID and mountpoint/PATH/PDH where PDH is the collection's portable data hash and UUID is its UUID.")
-        mounts.add_argument('--mount-by-tag',
-                            type=str, metavar='PATH', action='append', default=[],
-                            help="Mount all collections with tag TAG at mountpoint/PATH/TAG/UUID.")
-        mounts.add_argument('--mount-home',
-                            type=str, metavar='PATH', action='append', default=[],
-                            help="Mount the current user's home project at mountpoint/PATH.")
-        mounts.add_argument('--mount-shared',
-                            type=str, metavar='PATH', action='append', default=[],
-                            help="Mount projects shared with the current user at mountpoint/PATH.")
-        mounts.add_argument('--mount-tmp',
-                            type=str, metavar='PATH', action='append', default=[],
-                            help="Create a new collection, mount it in read/write mode at mountpoint/PATH, and delete it when unmounting.")
-
-
-        self.add_argument('--debug', action='store_true', help="""Debug mode""")
-        self.add_argument('--logfile', help="""Write debug logs and errors to the specified file (default stderr).""")
-        self.add_argument('--foreground', action='store_true', help="""Run in foreground (default is to daemonize unless --exec specified)""", default=False)
-        self.add_argument('--encoding', type=str, help="Character encoding to use for filesystem, default is utf-8 (see Python codec registry for list of available encodings)", default="utf-8")
-
-        self.add_argument('--file-cache', type=int, help="File data cache size, in bytes (default 8 GiB for disk-based cache or 256 MiB with RAM-only cache)", default=0)
-        self.add_argument('--directory-cache', type=int, help="Directory data cache size, in bytes (default 128 MiB)", default=128*1024*1024)
+        mounts.add_argument(
+            '--mount-by-pdh',
+            metavar='PATH',
+            action='append',
+            default=[],
+            help="""
+Mount each readable collection at mountpoint/PATH/P
+where P is the collection's portable data hash.
+""",
+        )
+        mounts.add_argument(
+            '--mount-by-id',
+            metavar='PATH',
+            action='append',
+            default=[],
+            help="""
+Mount each readable collection at mountpoint/PATH/UUID and mountpoint/PATH/PDH
+where PDH is the collection's portable data hash and UUID is its UUID.
+""",
+        )
+        mounts.add_argument(
+            '--mount-by-tag',
+            metavar='PATH',
+            action='append',
+            default=[],
+            help="Mount all collections with tag TAG at mountpoint/PATH/TAG/UUID.",
+        )
+        mounts.add_argument(
+            '--mount-home',
+            metavar='PATH',
+            action='append',
+            default=[],
+            help="Mount the current user's home project at mountpoint/PATH.",
+        )
+        mounts.add_argument(
+            '--mount-shared',
+            metavar='PATH',
+            action='append',
+            default=[],
+            help="Mount projects shared with the current user at mountpoint/PATH.",
+        )
+        mounts.add_argument(
+            '--mount-tmp',
+            metavar='PATH',
+            action='append',
+            default=[],
+            help="""
+Create a new collection, mount it in read/write mode at mountpoint/PATH,
+and delete it when unmounting.
+""",
+        )
+
+        self.add_argument(
+            '--debug',
+            action='store_true',
+            help="""Debug mode""",
+        )
+        self.add_argument(
+            '--logfile',
+            help="""Write debug logs and errors to the specified file (default stderr).""",
+        )
+        self.add_argument(
+            '--foreground',
+            action='store_true',
+            default=False,
+            help="""Run in foreground (default is to daemonize unless --exec specified)""",
+        )
+        self.add_argument(
+            '--encoding',
+            default="utf-8",
+            help="""
+Character encoding to use for filesystem, default is utf-8
+(see Python codec registry for list of available encodings)"
+""",
+        )
+
+        self.add_argument(
+            '--file-cache',
+            type=int,
+            default=0,
+            help="""
+File data cache size, in bytes
+(default 8 GiB for disk-based cache or 256 MiB with RAM-only cache)
+""",
+        )
+        self.add_argument(
+            '--directory-cache',
+            type=int,
+            default=128*1024*1024,
+            help="Directory data cache size, in bytes (default 128 MiB)",
+        )
 
         cachetype = self.add_mutually_exclusive_group()
-        cachetype.add_argument('--ram-cache', action='store_false', dest='disk_cache', help="Use in-memory caching only", default=True)
-        cachetype.add_argument('--disk-cache', action='store_true', dest='disk_cache', help="Use disk based caching (default)", default=True)
+        cachetype.add_argument(
+            '--ram-cache',
+            action='store_false',
+            default=True,
+            dest='disk_cache',
+            help="Use in-memory caching only",
+        )
+        cachetype.add_argument(
+            '--disk-cache',
+            action='store_true',
+            default=True,
+            dest='disk_cache',
+            help="Use disk based caching (default)",
+        )
 
-        self.add_argument('--disk-cache-dir', type=str, help="Disk cache location (default ~/.cache/arvados/keep)", default=None)
+        self.add_argument(
+            '--disk-cache-dir',
+            help="Disk cache location (default ~/.cache/arvados/keep)",
+        )
 
-        self.add_argument('--disable-event-listening', action='store_true', help="Don't subscribe to events on the API server", dest="disable_event_listening", default=False)
+        self.add_argument(
+            '--disable-event-listening',
+            action='store_true',
+            dest='disable_event_listening',
+            default=False,
+            help="Don't subscribe to events on the API server",
+        )
 
-        self.add_argument('--read-only', action='store_false', help="Mount will be read only (default)", dest="enable_write", default=False)
-        self.add_argument('--read-write', action='store_true', help="Mount will be read-write", dest="enable_write", default=False)
-        self.add_argument('--storage-classes', type=str, metavar='CLASSES', help="Specify comma separated list of storage classes to be used when saving data of new collections", default=None)
+        self.add_argument(
+            '--read-only',
+            action='store_false',
+            default=False,
+            dest='enable_write',
+            help="Mount will be read only (default)",
+        )
+        self.add_argument(
+            '--read-write',
+            action='store_true',
+            default=False,
+            dest='enable_write',
+            help="Mount will be read-write",
+        )
+        self.add_argument(
+            '--storage-classes',
+            metavar='CLASSES',
+            help="Specify comma separated list of storage classes to be used when saving data of new collections",
+        )
 
-        self.add_argument('--crunchstat-interval', type=float, help="Write stats to stderr every N seconds (default disabled)", default=0)
+        self.add_argument(
+            '--crunchstat-interval',
+            type=float,
+            default=0.0,
+            help="Write stats to stderr every N seconds (default disabled)",
+        )
 
         unmount = self.add_mutually_exclusive_group()
-        unmount.add_argument('--unmount', action='store_true', default=False,
-                             help="Forcefully unmount the specified mountpoint (if it's a fuse mount) and exit. If --subtype is given, unmount only if the mount has the specified subtype. WARNING: This command can affect any kind of fuse mount, not just arv-mount.")
-        unmount.add_argument('--unmount-all', action='store_true', default=False,
-                             help="Forcefully unmount every fuse mount at or below the specified path and exit. If --subtype is given, unmount only mounts that have the specified subtype. Exit non-zero if any other types of mounts are found at or below the given path. WARNING: This command can affect any kind of fuse mount, not just arv-mount.")
-        unmount.add_argument('--replace', action='store_true', default=False,
-                             help="If a fuse mount is already present at mountpoint, forcefully unmount it before mounting")
-        self.add_argument('--unmount-timeout',
-                          type=float, default=2.0,
-                          help="Time to wait for graceful shutdown after --exec program exits and filesystem is unmounted")
+        unmount.add_argument(
+            '--unmount',
+            action='store_true',
+            default=False,
+            help="""
+Forcefully unmount the specified mountpoint (if it's a fuse mount) and exit.
+If --subtype is given, unmount only if the mount has the specified subtype.
+WARNING: This command can affect any kind of fuse mount, not just arv-mount.
+""",
+        )
+        unmount.add_argument(
+            '--unmount-all',
+            action='store_true',
+            default=False,
+            help="""
+Forcefully unmount every fuse mount at or below the specified path and exit.
+If --subtype is given, unmount only mounts that have the specified subtype.
+Exit non-zero if any other types of mounts are found at or below the given path.
+WARNING: This command can affect any kind of fuse mount, not just arv-mount.
+""",
+        )
+        unmount.add_argument(
+            '--replace',
+            action='store_true',
+            default=False,
+            help="""
+If a fuse mount is already present at mountpoint, forcefully unmount it before mounting
+""",
+        )
+        self.add_argument(
+            '--unmount-timeout',
+            type=float,
+            default=2.0,
+            help="""
+Time to wait for graceful shutdown after --exec program exits and filesystem is unmounted
+""",
+        )
         self.add_argument(
             '--filters',
             type=arv_cmd.JSONArgument(arv_cmd.validate_filters),
-            help="""Filters to apply to all project, shared, and tag directory
-contents. Pass filters as either a JSON string or a path to a JSON file.
+            help="""
+Filters to apply to all project, shared, and tag directory contents.
+Pass filters as either a JSON string or a path to a JSON file.
 The JSON object should be a list of filters in Arvados API list filter syntax.
-""")
-        self.add_argument('--exec', type=str, nargs=argparse.REMAINDER,
-                            dest="exec_args", metavar=('command', 'args', '...', '--'),
-                            help="""Mount, run a command, then unmount and exit""")
+""",
+        )
+        self.add_argument(
+            '--exec',
+            nargs=argparse.REMAINDER,
+            dest="exec_args",
+            metavar=('command', 'args', '...', '--'),
+            help="""Mount, run a command, then unmount and exit""",
+        )
 
 
 class Mount(object):

-----------------------------------------------------------------------


hooks/post-receive
-- 




More information about the arvados-commits mailing list