diff --git a/ais/prxdl.go b/ais/prxdl.go index c43195cd9ca..9ae888be3a0 100644 --- a/ais/prxdl.go +++ b/ais/prxdl.go @@ -1,6 +1,6 @@ // Package ais provides core functionality for the AIStore object storage. /* - * Copyright (c) 2018-2022, NVIDIA CORPORATION. All rights reserved. + * Copyright (c) 2018-2025, NVIDIA CORPORATION. All rights reserved. */ package ais diff --git a/ais/s3/bucket.go b/ais/s3/bucket.go index 71bb5d7e0c3..49f810f97e8 100644 --- a/ais/s3/bucket.go +++ b/ais/s3/bucket.go @@ -1,6 +1,6 @@ // Package s3 provides Amazon S3 compatibility layer /* - * Copyright (c) 2018-2022, NVIDIA CORPORATION. All rights reserved. + * Copyright (c) 2018-2025, NVIDIA CORPORATION. All rights reserved. */ package s3 diff --git a/ais/s3/const.go b/ais/s3/const.go index 1c33a7767ec..8680115e46e 100644 --- a/ais/s3/const.go +++ b/ais/s3/const.go @@ -1,6 +1,6 @@ // Package s3 provides Amazon S3 compatibility layer /* - * Copyright (c) 2018-2022, NVIDIA CORPORATION. All rights reserved. + * Copyright (c) 2018-2025, NVIDIA CORPORATION. All rights reserved. */ package s3 diff --git a/api/apc/access.go b/api/apc/access.go index 6e24bd58bf0..d103f240497 100644 --- a/api/apc/access.go +++ b/api/apc/access.go @@ -1,6 +1,6 @@ // Package apc: API control messages and constants /* - * Copyright (c) 2018-2022, NVIDIA CORPORATION. All rights reserved. + * Copyright (c) 2018-2025, NVIDIA CORPORATION. All rights reserved. */ package apc diff --git a/cmd/aisloader/main.go b/cmd/aisloader/main.go index bf723c004e9..8ab0af3eb45 100644 --- a/cmd/aisloader/main.go +++ b/cmd/aisloader/main.go @@ -1,6 +1,6 @@ // Package main for the `aisloader` executable. /* - * Copyright (c) 2018-2022, NVIDIA CORPORATION. All rights reserved. + * Copyright (c) 2018-2025, NVIDIA CORPORATION. All rights reserved. */ package main diff --git a/cmd/authn/const.go b/cmd/authn/const.go index 048472c78c2..4a071014fdc 100644 --- a/cmd/authn/const.go +++ b/cmd/authn/const.go @@ -1,6 +1,6 @@ // Package authn is authentication server for AIStore. /* - * Copyright (c) 2018-2022, NVIDIA CORPORATION. All rights reserved. + * Copyright (c) 2018-2025, NVIDIA CORPORATION. All rights reserved. */ package main diff --git a/cmd/authn/tok/token.go b/cmd/authn/tok/token.go index cc19708d04b..4154e3d2c10 100644 --- a/cmd/authn/tok/token.go +++ b/cmd/authn/tok/token.go @@ -1,7 +1,7 @@ // Package tok provides AuthN token (structure and methods) // for validation by AIS gateways /* - * Copyright (c) 2018-2022, NVIDIA CORPORATION. All rights reserved. + * Copyright (c) 2018-2025, NVIDIA CORPORATION. All rights reserved. */ package tok diff --git a/cmd/authn/utils.go b/cmd/authn/utils.go index 80bba190cb3..01172160c34 100644 --- a/cmd/authn/utils.go +++ b/cmd/authn/utils.go @@ -1,6 +1,6 @@ // Package authn is authentication server for AIStore. /* - * Copyright (c) 2018-2022, NVIDIA CORPORATION. All rights reserved. + * Copyright (c) 2018-2025, NVIDIA CORPORATION. All rights reserved. */ package main diff --git a/cmd/cli/cli/advanced_hdlr.go b/cmd/cli/cli/advanced_hdlr.go index 4f5473c5ff6..9efe3f45db3 100644 --- a/cmd/cli/cli/advanced_hdlr.go +++ b/cmd/cli/cli/advanced_hdlr.go @@ -18,26 +18,26 @@ import ( var ( advancedCmd = cli.Command{ Name: commandAdvanced, - Usage: "special commands intended for development and advanced usage", + Usage: "Special commands intended for development and advanced usage", Subcommands: []cli.Command{ jobStartResilver, { Name: cmdPreload, - Usage: "preload object metadata into in-memory cache", + Usage: "Preload object metadata into in-memory cache", ArgsUsage: bucketArgument, Action: loadLomCacheHandler, BashComplete: bucketCompletions(bcmplop{}), }, { Name: cmdRmSmap, - Usage: "immediately remove node from cluster map (beware: potential data loss!)", + Usage: "Immediately remove node from cluster map (beware: potential data loss!)", ArgsUsage: nodeIDArgument, Action: removeNodeFromSmap, BashComplete: suggestAllNodes, }, { Name: cmdRandNode, - Usage: "print random node ID (by default, ID of a randomly selected target)", + Usage: "Print random node ID (by default, ID of a randomly selected target)", Action: randNode, BashComplete: func(c *cli.Context) { if c.NArg() == 0 { @@ -47,27 +47,27 @@ var ( }, { Name: cmdRandMountpath, - Usage: "print a random mountpath from a given target", + Usage: "Print a random mountpath from a given target", Action: randMountpath, BashComplete: suggestTargets, }, { Name: cmdRotateLogs, - Usage: "rotate aistore logs", + Usage: "Rotate aistore logs", ArgsUsage: optionalNodeIDArgument, Action: rotateLogs, BashComplete: suggestAllNodes, }, { Name: cmdBackendEnable, - Usage: "(re)enable cloud backend (see also: 'ais config cluster backend')", + Usage: "(Re)enable cloud backend (see also: 'ais config cluster backend')", ArgsUsage: cloudProviderArg, Action: backendEnableHandler, BashComplete: suggestCloudProvider, }, { Name: cmdBackendDisable, - Usage: "disable cloud backend (see also: 'ais config cluster backend')", + Usage: "Disable cloud backend (see also: 'ais config cluster backend')", ArgsUsage: cloudProviderArg, Action: backendDisableHandler, BashComplete: suggestCloudProvider, diff --git a/cmd/cli/cli/alias_hdlr.go b/cmd/cli/cli/alias_hdlr.go index b3d054e1681..33b8ae27c9b 100644 --- a/cmd/cli/cli/alias_hdlr.go +++ b/cmd/cli/cli/alias_hdlr.go @@ -43,28 +43,28 @@ func lastAliasedWord(c *cli.Context) string { func (a *acli) getAliasCmd() cli.Command { aliasCmd := cli.Command{ Name: commandAlias, - Usage: "manage top-level aliases", + Usage: "Manage top-level aliases", Action: showAliasHandler, Subcommands: []cli.Command{ { Name: cmdAliasShow, - Usage: "display list of aliases", + Usage: "Display list of aliases", Action: showAliasHandler, }, { Name: cmdAliasRm, - Usage: "remove existing alias", + Usage: "Remove existing alias", ArgsUsage: aliasCmdArgument, Action: rmAliasHandler, }, { Name: cmdAliasReset, - Usage: "reset aliases to default", + Usage: "Reset aliases to default", Action: resetAliasHandler, }, { Name: cmdAliasSet, - Usage: "add new or update existing alias", + Usage: "Add new or update existing alias", ArgsUsage: aliasSetCmdArgument, Action: a.setAliasHandler, }, diff --git a/cmd/cli/cli/app.go b/cmd/cli/cli/app.go index 279d39c116f..aeecbdcd3b7 100644 --- a/cmd/cli/cli/app.go +++ b/cmd/cli/cli/app.go @@ -107,7 +107,7 @@ var ( // `ais help [COMMAND]` var helpCommand = cli.Command{ Name: "help", - Usage: "show a list of commands; show help for a given command", + Usage: "Show a list of commands; show help for a given command", ArgsUsage: "[COMMAND]", Action: helpCmdHandler, BashComplete: func(c *cli.Context) { diff --git a/cmd/cli/cli/arch_hdlr.go b/cmd/cli/cli/arch_hdlr.go index 2b8b1825a2d..77f81a95ded 100644 --- a/cmd/cli/cli/arch_hdlr.go +++ b/cmd/cli/cli/arch_hdlr.go @@ -30,14 +30,14 @@ import ( "golang.org/x/sync/errgroup" ) -const archBucketUsage = "archive selected or matching objects from " + bucketObjectSrcArgument + " as\n" + +const archBucketUsage = "Archive selected or matching objects from " + bucketObjectSrcArgument + " as\n" + indent1 + archExts + "-formatted object (a.k.a. shard),\n" + indent1 + "e.g.:\n" + indent1 + "\t- 'archive bucket ais://src ais://dst/a.tar.lz4 --template \"shard-{001..997}\"'\n" + indent1 + "\t- 'archive bucket \"ais://src/shard-{001..997}\" ais://dst/a.tar.lz4'\t- same as above (notice double quotes)\n" + indent1 + "\t- 'archive bucket \"ais://src/shard-{998..999}\" ais://dst/a.tar.lz4 --append-or-put'\t- append (ie., archive) 2 more objects" -const archPutUsage = "archive a file, a directory, or multiple files and/or directories as\n" + +const archPutUsage = "Archive a file, a directory, or multiple files and/or directories as\n" + indent1 + "\t" + archExts + "-formatted object - aka \"shard\".\n" + indent1 + "\tBoth APPEND (to an existing shard) and PUT (a new version of the shard) are supported.\n" + indent1 + "\tExamples:\n" + @@ -52,7 +52,7 @@ const archPutUsage = "archive a file, a directory, or multiple files and/or dire indent1 + "\t- to archive objects from a ais:// or remote bucket, run 'ais archive bucket' (see --help for details)." // (compare with objGetUsage) -const archGetUsage = "get a shard and extract its content; get an archived file;\n" + +const archGetUsage = "Get a shard and extract its content; get an archived file;\n" + indent4 + "\twrite the content locally with destination options including: filename, directory, STDOUT ('-'), or '/dev/null' (discard);\n" + indent4 + "\tassorted options further include:\n" + indent4 + "\t- '--prefix' to get multiple shards in one shot (empty prefix for the entire bucket);\n" + @@ -68,7 +68,7 @@ const archGetUsage = "get a shard and extract its content; get an archived file; indent4 + "\t- ais://abc/trunk-0123.tar 222.tar --archregx=file45 --archmode=wdskey - return 222.tar with all file45.* files --/--\n" + indent4 + "\t- ais://abc/trunk-0123.tar 333.tar --archregx=subdir/ --archmode=prefix - 333.tar with all subdir/* files --/--" -const genShardsUsage = "generate random " + archExts + "-formatted objects (\"shards\"), e.g.:\n" + +const genShardsUsage = "Generate random " + archExts + "-formatted objects (\"shards\"), e.g.:\n" + indent4 + "\t- gen-shards 'ais://bucket1/shard-{001..999}.tar' - write 999 random shards (default sizes) to ais://bucket1\n" + indent4 + "\t- gen-shards \"gs://bucket2/shard-{01..20..2}.tgz\" - 10 random gzipped tarfiles to Cloud bucket\n" + indent4 + "\t(notice quotation marks in both cases)" @@ -144,7 +144,7 @@ var ( // archive ls archLsCmd = cli.Command{ Name: cmdList, - Usage: "list archived content (supported formats: " + archFormats + ")", + Usage: "List archived content (supported formats: " + archFormats + ")", ArgsUsage: optionalShardArgument, Flags: rmFlags(bucketCmdsFlags[commandList], listArchFlag), // is implied Action: listArchHandler, @@ -163,7 +163,7 @@ var ( // main `ais archive` archCmd = cli.Command{ Name: commandArch, - Usage: "archive multiple objects from a given bucket; archive local files and directories; list archived content", + Usage: "Archive multiple objects from a given bucket; archive local files and directories; list archived content", Action: archUsageHandler, Subcommands: []cli.Command{ archBucketCmd, diff --git a/cmd/cli/cli/auth_hdlr.go b/cmd/cli/cli/auth_hdlr.go index 199f45afeca..432a3ab4550 100644 --- a/cmd/cli/cli/auth_hdlr.go +++ b/cmd/cli/cli/auth_hdlr.go @@ -57,17 +57,17 @@ var ( // define separately to allow for aliasing (see alias_hdlr.go) authCmdShow = cli.Command{ Name: cmdAuthShow, - Usage: "show entity in authn", + Usage: "Show entity in authn", Subcommands: []cli.Command{ { Name: cmdAuthCluster, - Usage: "show AIS clusters managed by this AuthN instance", + Usage: "Show AIS clusters managed by this AuthN instance", ArgsUsage: showAuthClusterArgument, Action: wrapAuthN(showAuthClusterHandler), }, { Name: cmdAuthRole, - Usage: "show existing AuthN roles", + Usage: "Show existing AuthN roles", ArgsUsage: showAuthRoleArgument, Flags: authFlags[flagsAuthRoleShow], Action: wrapAuthN(showAuthRoleHandler), @@ -75,14 +75,14 @@ var ( }, { Name: cmdAuthUser, - Usage: "show user list and details", + Usage: "Show user list and details", Flags: authFlags[flagsAuthUserShow], ArgsUsage: showAuthUserListArgument, Action: wrapAuthN(showAuthUserHandler), }, { Name: cmdAuthConfig, - Usage: "show AuthN server configuration", + Usage: "Show AuthN server configuration", Flags: authFlags[flagsAuthConfShow], Action: wrapAuthN(showAuthConfigHandler), }, @@ -91,18 +91,18 @@ var ( authCmd = cli.Command{ Name: commandAuth, - Usage: "add/remove/show users, manage user roles, manage access to AIS clusters", + Usage: "Add/remove/show users, manage user roles, manage access to AIS clusters", Subcommands: []cli.Command{ // show authCmdShow, // add { Name: cmdAuthAdd, - Usage: "add AuthN entity: user, role, AIS cluster", + Usage: "Add AuthN entity: user, role, AIS cluster", Subcommands: []cli.Command{ { Name: cmdAuthUser, - Usage: "add a new user", + Usage: "Add a new user", ArgsUsage: addAuthUserArgument, Flags: authFlags[cmdAuthUser], Action: wrapAuthN(addAuthUserHandler), @@ -110,13 +110,13 @@ var ( }, { Name: cmdAuthCluster, - Usage: "add AIS cluster (to authenticate access to buckets and to the cluster)", + Usage: "Add AIS cluster (to authenticate access to buckets and to the cluster)", ArgsUsage: addAuthClusterArgument, Action: wrapAuthN(addAuthClusterHandler), }, { Name: cmdAuthRole, - Usage: "create a new role", + Usage: "Create a new role", ArgsUsage: addSetAuthRoleArgument, Flags: authFlags[flagsAuthRoleAddSet], Action: wrapAuthN(addAuthRoleHandler), @@ -127,32 +127,32 @@ var ( // rm { Name: cmdAuthRemove, - Usage: "remove an entity from AuthN", + Usage: "Remove an entity from AuthN", Subcommands: []cli.Command{ { Name: cmdAuthUser, - Usage: "remove an existing user", + Usage: "Remove an existing user", ArgsUsage: deleteAuthUserArgument, Action: wrapAuthN(deleteUserHandler), BashComplete: oneUserCompletions, }, { Name: cmdAuthCluster, - Usage: "remove AIS cluster", + Usage: "Remove AIS cluster", ArgsUsage: deleteAuthClusterArgument, Action: wrapAuthN(deleteAuthClusterHandler), BashComplete: oneClusterCompletions, }, { Name: cmdAuthRole, - Usage: "remove an existing role", + Usage: "Remove an existing role", ArgsUsage: deleteAuthRoleArgument, Action: wrapAuthN(deleteRoleHandler), BashComplete: oneRoleCompletions, }, { Name: cmdAuthToken, - Usage: "revoke AuthN token", + Usage: "Revoke AuthN token", Flags: authFlags[flagsAuthRevokeToken], ArgsUsage: deleteAuthTokenArgument, Action: wrapAuthN(revokeTokenHandler), @@ -162,24 +162,24 @@ var ( // set { Name: cmdAuthSet, - Usage: "update AuthN configuration and its entities: users, roles, and AIS clusters", + Usage: "Update AuthN configuration and its entities: users, roles, and AIS clusters", Subcommands: []cli.Command{ { Name: cmdAuthConfig, - Usage: "update AuthN server configuration", + Usage: "Update AuthN server configuration", Action: wrapAuthN(setAuthConfigHandler), BashComplete: suggestUpdatableAuthNConfig, }, { Name: cmdAuthCluster, - Usage: "update AIS cluster configuration (the cluster must be previously added to AuthN)", + Usage: "Update AIS cluster configuration (the cluster must be previously added to AuthN)", ArgsUsage: addAuthClusterArgument, Action: wrapAuthN(updateAuthClusterHandler), BashComplete: oneClusterCompletions, }, { Name: cmdAuthUser, - Usage: "update an existing user", + Usage: "Update an existing user", ArgsUsage: addAuthUserArgument, Flags: authFlags[cmdAuthUser], Action: wrapAuthN(updateAuthUserHandler), @@ -187,7 +187,7 @@ var ( }, { Name: cmdAuthRole, - Usage: "update an existing role for all users that have it", + Usage: "Update an existing role for all users that have it", ArgsUsage: addSetAuthRoleArgument, Flags: authFlags[flagsAuthRoleAddSet], Action: wrapAuthN(updateAuthRoleHandler), @@ -198,14 +198,14 @@ var ( // login, logout { Name: cmdAuthLogin, - Usage: "log in with existing user ID and password", + Usage: "Log in with existing user ID and password", Flags: authFlags[flagsAuthUserLogin], ArgsUsage: userLoginArgument, Action: wrapAuthN(loginUserHandler), }, { Name: cmdAuthLogout, - Usage: "log out", + Usage: "Log out", Flags: authFlags[flagsAuthUserLogout], Action: wrapAuthN(logoutUserHandler), }, diff --git a/cmd/cli/cli/bencodeway_hdlr.go b/cmd/cli/cli/bencodeway_hdlr.go index 72d5a54bc1c..c141c380621 100644 --- a/cmd/cli/cli/bencodeway_hdlr.go +++ b/cmd/cli/cli/bencodeway_hdlr.go @@ -14,12 +14,12 @@ import ( "github.com/urfave/cli" ) -const mirrorUsage = "configure (or unconfigure) bucket as n-way mirror, and run the corresponding batch job, e.g.:\n" + +const mirrorUsage = "Configure (or unconfigure) bucket as n-way mirror, and run the corresponding batch job, e.g.:\n" + indent1 + "\t- 'ais start mirror ais://m --copies 3'\t- configure ais://m as a 3-way mirror;\n" + indent1 + "\t- 'ais start mirror ais://m --copies 1'\t- configure ais://m for no redundancy (no extra copies).\n" + indent1 + "(see also: 'ais start ec-encode')" -const bencodeUsage = "erasure code entire bucket, e.g.:\n" + +const bencodeUsage = "Erasure code entire bucket, e.g.:\n" + indent1 + "\t- 'ais start ec-encode ais://nnn -d 8 -p 2'\t- erasure-code ais://nnn for 8 data and 2 parity slices;\n" + indent1 + "\t- 'ais start ec-encode ais://nnn --data-slices 8 --parity-slices 2'\t- same as above;\n" + indent1 + "\t- 'ais start ec-encode ais://nnn --recover'\t- check and make sure that every ais://nnn object is properly erasure-coded.\n" + diff --git a/cmd/cli/cli/bucket_hdlr.go b/cmd/cli/cli/bucket_hdlr.go index 661e26ec82e..7d9bd59ba6d 100644 --- a/cmd/cli/cli/bucket_hdlr.go +++ b/cmd/cli/cli/bucket_hdlr.go @@ -31,7 +31,7 @@ Usage examples: ` // ais cp -const copyBucketUsage = "copy entire bucket or selected objects (to select, use '--list', '--template', or '--prefix'),\n" + +const copyBucketUsage = "Copy entire bucket or selected objects (to select, use '--list', '--template', or '--prefix'),\n" + indent1 + "\te.g.:\n" + indent1 + "\t- 'ais cp gs://webdaset-coco ais://dst'\t- copy entire Cloud bucket;\n" + indent1 + "\t- 'ais cp s3://abc ais://nnn --all'\t- copy Cloud bucket that may _not_ be present in cluster (and create destination if doesn't exist);\n" + @@ -51,7 +51,7 @@ const copyBucketUsage = "copy entire bucket or selected objects (to select, use indent1 + "\t- 'ais cp gs://webdataset-coco/d-tokens/ ais:/dst --progress --all'\t- same as above." // ais ls -var listAnyUsage = "list buckets, objects in buckets, and files in " + archExts + "-formatted objects,\n" + +var listAnyUsage = "List buckets, objects in buckets, and files in " + archExts + "-formatted objects,\n" + indent1 + "e.g.:\n" + indent1 + "\t* ais ls \t- list all buckets in a cluster (all providers);\n" + indent1 + "\t* ais ls ais://abc -props name,size,copies,location \t- list all objects from a given bucket, include only the (4) specified properties;\n" + @@ -80,7 +80,7 @@ var listAnyUsage = "list buckets, objects in buckets, and files in " + archExts indent1 + "\t* ais ls s3 --summary --all --dont-add\t- same as above but without adding _non-present_ remote buckets to the cluster's BMD." // ais bucket ... props -const setBpropsUsage = "update bucket properties; the command accepts both JSON-formatted input and plain Name=Value pairs, e.g.:\n" + +const setBpropsUsage = "Update bucket properties; the command accepts both JSON-formatted input and plain Name=Value pairs, e.g.:\n" + indent1 + "\t* ais bucket props set ais://nnn backend_bck=s3://mmm\n" + indent1 + "\t* ais bucket props set ais://nnn backend_bck=none\n" + indent1 + "\t* ais bucket props set gs://vvv versioning.validate_warm_get=false versioning.synchronize=true\n" + @@ -91,7 +91,7 @@ const setBpropsUsage = "update bucket properties; the command accepts both JSON- indent1 + "\t* to show bucket properties (names and current values), use 'ais bucket show'" // ais evict -const evictUsage = "evict one remote bucket, multiple remote buckets, or\n" + +const evictUsage = "Evict one remote bucket, multiple remote buckets, or\n" + indent1 + "selected objects in a given remote bucket or buckets, e.g.:\n" + indent1 + "\t- 'evict gs://abc'\t- evict entire bucket (all gs://abc objects in aistore);\n" + indent1 + "\t- 'evict gs:'\t- evict all GCP buckets from the cluster;\n" + @@ -207,7 +207,7 @@ var ( bucketCmdLRU = cli.Command{ Name: cmdLRU, - Usage: "show bucket's LRU configuration; enable or disable LRU eviction", + Usage: "Show bucket's LRU configuration; enable or disable LRU eviction", ArgsUsage: optionalBucketArgument, Flags: bucketCmdsFlags[cmdLRU], Action: lruBucketHandler, @@ -231,7 +231,7 @@ var ( } bucketCmdRename = cli.Command{ Name: commandRename, - Usage: "rename/move ais bucket", + Usage: "Rename (move) ais bucket", ArgsUsage: bucketArgument + " " + bucketNewArgument, Flags: bucketCmdsFlags[commandRename], Action: mvBucketHandler, @@ -250,7 +250,7 @@ var ( bucketCmd = cli.Command{ Name: commandBucket, - Usage: "create/destroy buckets, list bucket's content, show existing buckets and their properties", + Usage: "Create and destroy buckets, list bucket's content, show existing buckets and their properties", Subcommands: []cli.Command{ bucketsObjectsCmdList, showCmdStgSummary, @@ -260,7 +260,7 @@ var ( makeAlias(showCmdBucket, "", true, commandShow), // alias for `ais show` { Name: commandCreate, - Usage: "create ais buckets", + Usage: "Create ais buckets", ArgsUsage: bucketsArgument, Flags: bucketCmdsFlags[commandCreate], Action: createBucketHandler, @@ -269,7 +269,7 @@ var ( bucketCmdRename, { Name: commandRemove, - Usage: "remove ais buckets", + Usage: "Remove ais buckets", ArgsUsage: bucketsArgument, Flags: bucketCmdsFlags[commandRemove], Action: removeBucketHandler, @@ -279,13 +279,13 @@ var ( }, { Name: cmdProps, - Usage: "show, update or reset bucket properties", + Usage: "Show, update or reset bucket properties", Action: showBckPropsHandler, Subcommands: []cli.Command{ bucketCmdSetProps, { Name: cmdResetBprops, - Usage: "reset bucket properties", + Usage: "Reset bucket properties", ArgsUsage: bucketPropsArgument, Flags: bucketCmdsFlags[cmdResetBprops], Action: resetPropsHandler, diff --git a/cmd/cli/cli/cluster_hdlr.go b/cmd/cli/cli/cluster_hdlr.go index acaa4600daa..8c20cf3ec77 100644 --- a/cmd/cli/cli/cluster_hdlr.go +++ b/cmd/cli/cli/cluster_hdlr.go @@ -26,12 +26,12 @@ const ( ) // (compare with getLogUsage) -const getCluLogsUsage = "download log archives from all clustered nodes (one TAR.GZ per node), e.g.:\n" + +const getCluLogsUsage = "Download log archives from all clustered nodes (one TAR.GZ per node), e.g.:\n" + indent4 + "\t - 'download-logs /tmp/www' - save log archives to /tmp/www directory\n" + indent4 + "\t - 'download-logs --severity w' - errors and warnings to /tmp directory\n" + indent4 + "\t (see related: 'ais log show', 'ais log get')" -const shutdownUsage = "shutdown a node, gracefully or immediately;\n" + +const shutdownUsage = "Shutdown a node, gracefully or immediately;\n" + indent4 + "\tnote: upon shutdown the node won't be decommissioned - it'll remain in the cluster map\n" + indent4 + "\tand can be manually restarted to rejoin the cluster at any later time;\n" + indent4 + "\tsee also: 'ais advanced " + cmdRmSmap + "'" @@ -97,26 +97,26 @@ var ( } stopRebalance = cli.Command{ Name: commandStop, - Usage: "stop rebalancing ais cluster", + Usage: "Stop rebalancing ais cluster", Flags: clusterCmdsFlags[commandStop], Action: stopRebHandler, } clusterCmd = cli.Command{ Name: commandCluster, - Usage: "monitor and manage AIS cluster: add/remove nodes, change primary gateway, etc.", + Usage: "Monitor and manage AIS cluster: add/remove nodes, change primary gateway, etc.", Subcommands: []cli.Command{ makeAlias(showCmdCluster, "", true, commandShow), // alias for `ais show` { Name: cmdCluAttach, - Usage: "attach remote ais cluster", + Usage: "Attach remote ais cluster", ArgsUsage: attachRemoteAISArgument, Flags: clusterCmdsFlags[cmdAttach], Action: attachRemoteAISHandler, }, { Name: cmdCluDetach, - Usage: "detach remote ais cluster", + Usage: "Detach remote ais cluster", ArgsUsage: detachRemoteAISArgument, Flags: clusterCmdsFlags[cmdDetach], Action: detachRemoteAISHandler, @@ -124,13 +124,13 @@ var ( }, { Name: cmdRebalance, - Usage: "administratively start and stop global rebalance; show global rebalance", + Usage: "Administratively start and stop global rebalance; show global rebalance", Subcommands: []cli.Command{ startRebalance, stopRebalance, { Name: commandShow, - Usage: "show global rebalance", + Usage: "Show global rebalance", Flags: clusterCmdsFlags[commandShow], BashComplete: rebalanceCompletions, Action: showClusterRebalanceHandler, @@ -139,7 +139,7 @@ var ( }, { Name: cmdPrimary, - Usage: "select a new primary proxy/gateway", + Usage: "Select a new primary proxy/gateway", ArgsUsage: nodeIDArgument + " [URL]", Flags: clusterCmdsFlags[cmdPrimary], Action: setPrimaryHandler, @@ -156,31 +156,31 @@ var ( // cluster level (compare with the below) { Name: cmdShutdown, - Usage: "shut down entire cluster", + Usage: "Shut down entire cluster", Flags: clusterCmdsFlags[cmdShutdown], Action: clusterShutdownHandler, }, { Name: cmdClusterDecommission, - Usage: "decommission entire cluster", + Usage: "Decommission entire cluster", Flags: clusterCmdsFlags[cmdClusterDecommission], Action: clusterDecommissionHandler, }, // node level { Name: cmdMembership, - Usage: "manage cluster membership (add/remove nodes, temporarily or permanently)", + Usage: "Manage cluster membership (add/remove nodes, temporarily or permanently)", Subcommands: []cli.Command{ { Name: cmdJoin, - Usage: "add a node to the cluster", + Usage: "Add a node to the cluster", ArgsUsage: joinNodeArgument, Flags: clusterCmdsFlags[cmdJoin], Action: joinNodeHandler, }, { Name: cmdStartMaint, - Usage: "put node in maintenance mode, temporarily suspend its operation", + Usage: "Put node in maintenance mode, temporarily suspend its operation", ArgsUsage: nodeIDArgument, Flags: clusterCmdsFlags[cmdStartMaint], Action: nodeMaintShutDecommHandler, @@ -188,7 +188,7 @@ var ( }, { Name: cmdStopMaint, - Usage: "take node out of maintenance mode - activate", + Usage: "Take node out of maintenance mode - activate", ArgsUsage: nodeIDArgument, Flags: clusterCmdsFlags[cmdStopMaint], Action: nodeMaintShutDecommHandler, @@ -196,7 +196,7 @@ var ( }, { Name: cmdNodeDecommission, - Usage: "safely and permanently remove node from the cluster", + Usage: "Safely and permanently remove node from the cluster", ArgsUsage: nodeIDArgument, Flags: clusterCmdsFlags[cmdNodeDecommission+".node"], Action: nodeMaintShutDecommHandler, @@ -214,7 +214,7 @@ var ( }, { Name: cmdResetStats, - Usage: "reset cluster or node stats (all cumulative metrics or only errors)", + Usage: "Reset cluster or node stats (all cumulative metrics or only errors)", ArgsUsage: optionalNodeIDArgument, Flags: clusterCmdsFlags[cmdResetStats], Action: resetStatsHandler, @@ -222,7 +222,7 @@ var ( }, { Name: cmdReloadCreds, - Usage: "reload (updated) backend credentials", + Usage: "Reload (updated) backend credentials", ArgsUsage: "[PROVIDER]", Action: reloadCredsHandler, BashComplete: suggestProvider, diff --git a/cmd/cli/cli/config_hdlr.go b/cmd/cli/cli/config_hdlr.go index 0df0e253d51..538f49c4aec 100644 --- a/cmd/cli/cli/config_hdlr.go +++ b/cmd/cli/cli/config_hdlr.go @@ -1,7 +1,7 @@ // Package cli provides easy-to-use commands to manage, monitor, and utilize AIS clusters. // This file handles commands that interact with the cluster. /* - * Copyright (c) 2021-2022, NVIDIA CORPORATION. All rights reserved. + * Copyright (c) 2021-2025, NVIDIA CORPORATION. All rights reserved. */ package cli @@ -76,7 +76,7 @@ var ( makeAlias(showCmdConfig, "", true, commandShow), // alias for `ais show` { Name: cmdCluster, - Usage: "configure AIS cluster", + Usage: "Configure AIS cluster", ArgsUsage: keyValuePairsArgument, Flags: configCmdsFlags[cmdCluster], Action: setCluConfigHandler, @@ -84,7 +84,7 @@ var ( }, { Name: cmdNode, - Usage: "configure AIS node", + Usage: "Configure AIS node", ArgsUsage: nodeConfigArgument, Flags: configCmdsFlags[cmdNode], Action: setNodeConfigHandler, @@ -92,7 +92,7 @@ var ( }, { Name: cmdReset, - Usage: "reset (cluster | node | CLI) configuration to system defaults", + Usage: "Reset (cluster | node | CLI) configuration to system defaults", ArgsUsage: optionalNodeIDArgument, Action: resetConfigHandler, BashComplete: showConfigCompletions, // `cli cluster p[...] t[...]` @@ -106,19 +106,19 @@ var ( // cli clicfgCmd = cli.Command{ Name: cmdCLI, - Usage: "display and change AIS CLI configuration", + Usage: "Display and change AIS CLI configuration", Action: showCfgCLI, Flags: clicfgCmdFlags[cmdCLIShow], Subcommands: []cli.Command{ { Name: cmdCLIShow, - Usage: "display CLI configuration", + Usage: "Display CLI configuration", Flags: clicfgCmdFlags[cmdCLIShow], Action: showCfgCLI, }, { Name: cmdCLISet, - Usage: "change CLI configuration", + Usage: "Update CLI configuration", ArgsUsage: keyValuePairsArgument, Flags: clicfgCmdFlags[cmdCLISet], Action: setCfgCLI, @@ -126,7 +126,7 @@ var ( }, { Name: cmdCLIReset, - Usage: "reset CLI configurations to system defaults", + Usage: "Reset CLI configurations to system defaults", Action: resetCfgCLI, }, }, diff --git a/cmd/cli/cli/const.go b/cmd/cli/cli/const.go index c58bc28841a..970bcea31ae 100644 --- a/cmd/cli/cli/const.go +++ b/cmd/cli/cli/const.go @@ -270,7 +270,7 @@ const ( jobShowRebalanceArgument = "[REB_ID] [NODE_ID]" // Perf - showPerfArgument = "show performance counters, throughput, latency, disks, used/available capacities (" + tabtab + " specific view)" + showPerfArgument = "Show performance counters, throughput, latency, disks, used/available capacities (" + tabtab + " specific view)" // ETL etlNameArgument = "ETL_NAME" @@ -393,32 +393,32 @@ var ( // // scope 'all' // - allPropsFlag = cli.BoolFlag{Name: scopeAll, Usage: "include all object properties: name, size, atime, location, copies, custom (user-defined), and more"} - allJobsFlag = cli.BoolFlag{Name: scopeAll, Usage: "include all jobs: running, finished, and aborted"} - allRunningJobsFlag = cli.BoolFlag{Name: scopeAll, Usage: "include all running jobs"} - allFinishedJobsFlag = cli.BoolFlag{Name: scopeAll, Usage: "include all finished jobs"} - rmrfFlag = cli.BoolFlag{Name: scopeAll, Usage: "remove all objects (use with extreme caution!)"} - allLogsFlag = cli.BoolFlag{Name: scopeAll, Usage: "download all logs"} + allPropsFlag = cli.BoolFlag{Name: scopeAll, Usage: "Include all object properties: name, size, atime, location, copies, custom (user-defined), and more"} + allJobsFlag = cli.BoolFlag{Name: scopeAll, Usage: "Include all jobs: running, finished, and aborted"} + allRunningJobsFlag = cli.BoolFlag{Name: scopeAll, Usage: "Include all running jobs"} + allFinishedJobsFlag = cli.BoolFlag{Name: scopeAll, Usage: "Include all finished jobs"} + rmrfFlag = cli.BoolFlag{Name: scopeAll, Usage: "Remove all objects (use with extreme caution!)"} + allLogsFlag = cli.BoolFlag{Name: scopeAll, Usage: "Download all logs"} allObjsOrBcksFlag = cli.BoolFlag{ Name: scopeAll, - Usage: "depending on the context, list:\n" + + Usage: "Depending on the context, list:\n" + indent4 + "\t- all buckets, including accessible (visible) remote buckets that are not in-cluster\n" + indent4 + "\t- all objects in a given accessible (visible) bucket, including remote objects and misplaced copies", } copyAllObjsFlag = cli.BoolFlag{ Name: scopeAll, - Usage: "copy all objects from a remote bucket including those that are not present (not cached) in cluster", + Usage: "Copy all objects from a remote bucket including those that are not present (not cached) in cluster", } etlAllObjsFlag = cli.BoolFlag{ Name: scopeAll, - Usage: "transform all objects from a remote bucket including those that are not present (not cached) in cluster", + Usage: "Transform all objects from a remote bucket including those that are not present (not cached) in cluster", } // obj props objPropsFlag = cli.StringFlag{ Name: "props", - Usage: "comma-separated list of object properties including name, size, version, copies, and more; e.g.:\n" + + Usage: "Comma-separated list of object properties including name, size, version, copies, and more; e.g.:\n" + indent4 + "\t--props all\n" + indent4 + "\t--props name,size,cached\n" + indent4 + "\t--props \"ec, copies, custom, location\"", @@ -427,27 +427,27 @@ var ( // prefix (to match) listObjPrefixFlag = cli.StringFlag{ Name: "prefix", - Usage: "list objects with names starting with the specified prefix, e.g.:\n" + + Usage: "List objects with names starting with the specified prefix, e.g.:\n" + indent4 + "\t'--prefix a/b/c' - list virtual directory a/b/c and/or objects from the virtual directory\n" + indent4 + "\ta/b that have their names (relative to this directory) starting with the letter 'c'", } getObjPrefixFlag = cli.StringFlag{ Name: listObjPrefixFlag.Name, - Usage: "get objects with names starting with the specified prefix, e.g.:\n" + + Usage: "Get objects with names starting with the specified prefix, e.g.:\n" + indent4 + "\t'--prefix a/b/c' - get objects from the virtual directory a/b/c and objects from the virtual directory\n" + indent4 + "\ta/b that have their names (relative to this directory) starting with 'c';\n" + indent4 + "\t'--prefix \"\"' - get entire bucket (all objects)", } verbObjPrefixFlag = cli.StringFlag{ Name: listObjPrefixFlag.Name, - Usage: "select virtual directories or objects with names starting with the specified prefix, e.g.:\n" + + Usage: "Select virtual directories or objects with names starting with the specified prefix, e.g.:\n" + indent4 + "\t'--prefix a/b/c'\t- matches names 'a/b/c/d', 'a/b/cdef', and similar;\n" + indent4 + "\t'--prefix a/b/c/'\t- only matches objects from the virtual directory a/b/c/", } bsummPrefixFlag = cli.StringFlag{ Name: listObjPrefixFlag.Name, - Usage: "for each bucket, select only those objects (names) that start with the specified prefix, e.g.:\n" + + Usage: "For each bucket, select only those objects (names) that start with the specified prefix, e.g.:\n" + indent4 + "\t'--prefix a/b/c' - sum up sizes of the virtual directory a/b/c and objects from the virtual directory\n" + indent4 + "\ta/b that have names (relative to this directory) starting with the letter c", } @@ -457,12 +457,12 @@ var ( // refreshFlag = DurationFlag{ Name: "refresh", - Usage: "time interval for continuous monitoring; can be also used to update progress bar (at a given interval);\n" + + Usage: "Time interval for continuous monitoring; can be also used to update progress bar (at a given interval);\n" + indent4 + "\tvalid time units: " + timeUnits, } countFlag = cli.IntFlag{ Name: "count", - Usage: "used together with " + qflprn(refreshFlag) + " to limit the number of generated reports, e.g.:\n" + + Usage: "Used together with " + qflprn(refreshFlag) + " to limit the number of generated reports, e.g.:\n" + indent4 + "\t '--refresh 10 --count 5' - run 5 times with 10s interval", } longRunFlags = []cli.Flag{refreshFlag, countFlag} @@ -470,11 +470,11 @@ var ( // // regex and friends // - regexFlag = cli.StringFlag{Name: "regex", Usage: "regular expression to match and select items in question"} + regexFlag = cli.StringFlag{Name: "regex", Usage: "Regular expression to match and select items in question"} regexLsAnyFlag = cli.StringFlag{ Name: regexFlag.Name, - Usage: "regular expression; use it to match either bucket names or objects in a given bucket, e.g.:\n" + + Usage: "Regular expression; use it to match either bucket names or objects in a given bucket, e.g.:\n" + indent4 + "\tais ls --regex \"(m|n)\"\t- match buckets such as ais://nnn, s3://mmm, etc.;\n" + indent4 + "\tais ls ais://nnn --regex \"^A\"\t- match object names starting with letter A", } @@ -483,7 +483,7 @@ var ( regexColsFlag = cli.StringFlag{ Name: regexFlag.Name, - Usage: "regular expression to select table columns (case-insensitive), e.g.:\n" + + Usage: "Regular expression to select table columns (case-insensitive), e.g.:\n" + indent4 + "\t --regex \"put|err\" - show PUT (count), PUT (total size), and all supported error counters;\n" + indent4 + "\t --regex \"Put|ERR\" - same as above;\n" + indent4 + "\t --regex \"[a-z]\" - show all supported metrics, including those that have zero values across all nodes;\n" + @@ -492,67 +492,67 @@ var ( } regexJobsFlag = cli.StringFlag{ Name: regexFlag.Name, - Usage: "regular expression to select jobs by name, kind, or description, e.g.: --regex \"ec|mirror|elect\"", + Usage: "Regular expression to select jobs by name, kind, or description, e.g.: --regex \"ec|mirror|elect\"", } - jsonFlag = cli.BoolFlag{Name: "json,j", Usage: "json input/output"} - noHeaderFlag = cli.BoolFlag{Name: "no-headers,H", Usage: "display tables without headers"} - noFooterFlag = cli.BoolFlag{Name: "no-footers,F", Usage: "display tables without footers"} + jsonFlag = cli.BoolFlag{Name: "json,j", Usage: "JSON input/output"} + noHeaderFlag = cli.BoolFlag{Name: "no-headers,H", Usage: "Display tables without headers"} + noFooterFlag = cli.BoolFlag{Name: "no-footers,F", Usage: "Display tables without footers"} - progressFlag = cli.BoolFlag{Name: "progress", Usage: "show progress bar(s) and progress of execution in real time"} - dryRunFlag = cli.BoolFlag{Name: "dry-run", Usage: "preview the results without really running the action"} + progressFlag = cli.BoolFlag{Name: "progress", Usage: "Show progress bar(s) and progress of execution in real time"} + dryRunFlag = cli.BoolFlag{Name: "dry-run", Usage: "Preview the results without really running the action"} - verboseFlag = cli.BoolFlag{Name: "verbose,v", Usage: "verbose output"} - verboseJobFlag = cli.BoolFlag{Name: verboseFlag.Name, Usage: "show extended statistics"} + verboseFlag = cli.BoolFlag{Name: "verbose,v", Usage: "Verbose output"} + verboseJobFlag = cli.BoolFlag{Name: verboseFlag.Name, Usage: "Show extended statistics"} - nonverboseFlag = cli.BoolFlag{Name: "non-verbose,nv", Usage: "non-verbose (quiet) output, minimized reporting, fewer warnings"} + nonverboseFlag = cli.BoolFlag{Name: "non-verbose,nv", Usage: "Non-verbose (quiet) output, minimized reporting, fewer warnings"} silentFlag = cli.BoolFlag{ Name: "silent", - Usage: "server-side flag, an indication for aistore _not_ to log assorted errors (e.g., HEAD(object) failures)", + Usage: "Server-side flag, an indication for aistore _not_ to log assorted errors (e.g., HEAD(object) failures)", } - averageSizeFlag = cli.BoolFlag{Name: "average-size", Usage: "show average GET, PUT, etc. request size"} + averageSizeFlag = cli.BoolFlag{Name: "average-size", Usage: "Show average GET, PUT, etc. request size"} ignoreErrorFlag = cli.BoolFlag{ Name: "ignore-error", - Usage: "ignore \"soft\" failures such as \"bucket already exists\", etc.", + Usage: "Ignore \"soft\" failures such as \"bucket already exists\", etc.", } // TODO: ditto `--select` (to select object props) bucketPropsFlag = cli.StringFlag{ Name: "props", - Usage: "create bucket with the specified (non-default) properties, e.g.:\n" + + Usage: "Create bucket with the specified (non-default) properties, e.g.:\n" + indent1 + "\t* ais create ais://mmm --props=\"versioning.validate_warm_get=false versioning.synchronize=true\"\n" + indent1 + "\t* ais create ais://nnn --props='mirror.enabled=true mirror.copies=4 checksum.type=md5'\n" + indent1 + "\t(tip: use '--props' to override properties that a new bucket inherits from cluster config at creation time;\n" + indent1 + "\t see also: 'ais bucket props show' and 'ais bucket props set')", } - forceFlag = cli.BoolFlag{Name: "force,f", Usage: "force execution of the command " + advancedUsageOnly} + forceFlag = cli.BoolFlag{Name: "force,f", Usage: "Force execution of the command " + advancedUsageOnly} forceClnFlag = cli.BoolFlag{ Name: forceFlag.Name, - Usage: "disregard interrupted rebalance and possibly other conditions preventing full cleanup\n" + + Usage: "Disregard interrupted rebalance and possibly other conditions preventing full cleanup\n" + indent1 + "\t(tip: check 'ais config cluster lru.dont_evict_time' as well)", } // TODO: rm smaller than - rmZeroSizeFlag = cli.BoolFlag{Name: "rm-zero-size", Usage: "remove zero size objects " + advancedUsageOnly} + rmZeroSizeFlag = cli.BoolFlag{Name: "rm-zero-size", Usage: "Remove zero size objects " + advancedUsageOnly} smallSizeFlag = cli.StringFlag{ Name: "small-size", - Usage: "count and report all objects that are smaller or equal in size (e.g.: 4, 4b, 1k, 128kib; default: 0)", + Usage: "Count and report all objects that are smaller or equal in size (e.g.: 4, 4b, 1k, 128kib; default: 0)", } largeSizeFlag = cli.StringFlag{ Name: "large-size", - Usage: "count and report all objects that are larger or equal in size (e.g.: 4mb, 1MiB, 1048576, 128k; default: 5 GiB)", + Usage: "Count and report all objects that are larger or equal in size (e.g.: 4mb, 1MiB, 1048576, 128k; default: 5 GiB)", } // units enum { unitsIEC, unitsSI, unitsRaw } unitsFlag = cli.StringFlag{ Name: "units", - Usage: "show statistics and/or parse command-line specified sizes using one of the following units of measurement:\n" + + Usage: "Show statistics and/or parse command-line specified sizes using one of the following units of measurement:\n" + indent4 + "\tiec - IEC format, e.g.: KiB, MiB, GiB (default)\n" + indent4 + "\tsi - SI (metric) format, e.g.: KB, MB, GB\n" + indent4 + "\traw - do not convert to (or from) human-readable format", @@ -560,13 +560,13 @@ var ( dateTimeFlag = cli.BoolFlag{ Name: "date-time", - Usage: "override the default hh:mm:ss (hours, minutes, seconds) time format - include calendar date as well", + Usage: "Override the default hh:mm:ss (hours, minutes, seconds) time format - include calendar date as well", } // list-objects startAfterFlag = cli.StringFlag{ Name: "start-after", - Usage: "list bucket's content alphabetically starting with the first name _after_ the specified", + Usage: "List bucket's content alphabetically starting with the first name _after_ the specified", } // @@ -574,7 +574,7 @@ var ( // objLimitFlag = cli.IntFlag{ Name: "limit", - Usage: "the maximum number of objects to list, get, or otherwise handle (0 - unlimited; see also '--max-pages'),\n" + + Usage: "The maximum number of objects to list, get, or otherwise handle (0 - unlimited; see also '--max-pages'),\n" + indent4 + "\te.g.:\n" + indent4 + "\t- 'ais ls gs://abc/dir --limit 1234 --cached --props size,custom,atime'\t- list no more than 1234 objects\n" + indent4 + "\t- 'ais get gs://abc /dev/null --prefix dir --limit 1234'\t- get --/--\n" + @@ -582,38 +582,38 @@ var ( } pageSizeFlag = cli.IntFlag{ Name: "page-size", - Usage: "maximum number of object names per page; when the flag is omitted or 0 (zero)\n" + + Usage: "Maximum number of object names per page; when the flag is omitted or 0 (zero)\n" + indent4 + "\tthe maximum is defined by the corresponding backend; see also '--max-pages' and '--paged'", } maxPagesFlag = cli.IntFlag{ Name: "max-pages", - Usage: "maximum number of pages to display (see also '--page-size' and '--limit')\n" + + Usage: "Maximum number of pages to display (see also '--page-size' and '--limit')\n" + indent4 + "\te.g.: 'ais ls az://abc --paged --page-size 123 --max-pages 7", } pagedFlag = cli.BoolFlag{ Name: "paged", - Usage: "list objects page by page - one page at a time (see also '--page-size' and '--limit')\n" + + Usage: "List objects page by page - one page at a time (see also '--page-size' and '--limit')\n" + indent4 + "\tnote: recommended for use with very large buckets", } countAndTimeFlag = cli.BoolFlag{ Name: "count-only", - Usage: "print only the resulting number of listed objects and elapsed time", + Usage: "Print only the resulting number of listed objects and elapsed time", } // bucket summary bckSummaryFlag = cli.BoolFlag{ Name: "summary", - Usage: "show object numbers, bucket sizes, and used capacity;\n" + + Usage: "Show object numbers, bucket sizes, and used capacity;\n" + indent4 + "\tnote: applies only to buckets and objects that are _present_ in the cluster", } showUnmatchedFlag = cli.BoolFlag{ Name: "show-unmatched", - Usage: "list also objects that were not matched by regex and/or template (range)", + Usage: "List also objects that were not matched by regex and/or template (range)", } diffFlag = cli.BoolFlag{ Name: "diff", - Usage: "perform a bidirectional diff between in-cluster and remote content, which further entails:\n" + + Usage: "Perform a bidirectional diff between in-cluster and remote content, which further entails:\n" + indent4 + "\t- detecting remote version changes (a.k.a. out-of-band updates), and\n" + indent4 + "\t- remotely deleted objects (out-of-band deletions (*));\n" + indent4 + "\t the option requires remote backends supporting some form of versioning (e.g., object version, checksum, and/or ETag);\n" + @@ -624,7 +624,7 @@ var ( useInventoryFlag = cli.BoolFlag{ Name: "inventory", - Usage: "list objects using _bucket inventory_ (docs/s3inventory.md); requires s3:// backend; will provide significant performance\n" + + Usage: "List objects using _bucket inventory_ (docs/s3inventory.md); requires s3:// backend; will provide significant performance\n" + indent4 + "\tboost when used with very large s3 buckets; e.g. usage:\n" + indent4 + "\t 1) 'ais ls s3://abc --inventory'\n" + indent4 + "\t 2) 'ais ls s3://abc --inventory --paged --prefix=subdir/'\n" + @@ -632,41 +632,41 @@ var ( } invNameFlag = cli.StringFlag{ Name: "inv-name", // compare w/ HdrInvName - Usage: "bucket inventory name (optional; system default name is '.inventory')", + Usage: "Bucket inventory name (optional; system default name is '.inventory')", } invIDFlag = cli.StringFlag{ Name: "inv-id", // cpmpare w/ HdrInvID - Usage: "bucket inventory ID (optional; by default, we use bucket name as the bucket's inventory ID)", + Usage: "Bucket inventory ID (optional; by default, we use bucket name as the bucket's inventory ID)", } - keepMDFlag = cli.BoolFlag{Name: "keep-md", Usage: "keep bucket metadata"} + keepMDFlag = cli.BoolFlag{Name: "keep-md", Usage: "Keep bucket metadata"} - copiesFlag = cli.IntFlag{Name: "copies", Usage: "number of object replicas", Value: 1, Required: true} + copiesFlag = cli.IntFlag{Name: "copies", Usage: "Number of object replicas", Value: 1, Required: true} - dataSlicesFlag = cli.IntFlag{Name: "data-slices,d", Value: 2, Usage: "number of data slices"} - paritySlicesFlag = cli.IntFlag{Name: "parity-slices,p", Value: 2, Usage: "number of parity slices"} + dataSlicesFlag = cli.IntFlag{Name: "data-slices,d", Value: 2, Usage: "Number of data slices"} + paritySlicesFlag = cli.IntFlag{Name: "parity-slices,p", Value: 2, Usage: "Number of parity slices"} checkAndRecoverFlag = cli.BoolFlag{ Name: "recover", - Usage: "check and make sure that each and every object is properly erasure coded", + Usage: "Check and make sure that each and every object is properly erasure coded", } - compactPropFlag = cli.BoolFlag{Name: "compact,c", Usage: "display properties grouped in human-readable mode"} + compactPropFlag = cli.BoolFlag{Name: "compact,c", Usage: "Display properties grouped in human-readable mode"} nameOnlyFlag = cli.BoolFlag{ Name: "name-only", - Usage: "faster request to retrieve only the names of objects (if defined, '--props' flag will be ignored)", + Usage: "Faster request to retrieve only the names of objects (if defined, '--props' flag will be ignored)", } // Log severity (cmn.LogInfo, ....) enum logSevFlag = cli.StringFlag{ Name: "severity", - Usage: "log severity is either 'i' or 'info' (default, can be omitted), or 'error', whereby error logs contain\n" + + Usage: "Log severity is either 'i' or 'info' (default, can be omitted), or 'error', whereby error logs contain\n" + indent4 + "\tonly errors and warnings, e.g.: '--severity info', '--severity error', '--severity e'", } logFlushFlag = DurationFlag{ Name: "log-flush", - Usage: "can be used in combination with " + qflprn(refreshFlag) + " to override configured '" + nodeLogFlushName + "'", + Usage: "Can be used in combination with " + qflprn(refreshFlag) + " to override configured '" + nodeLogFlushName + "'", Value: logFlushTime, } @@ -675,36 +675,36 @@ var ( dloadTimeoutFlag = cli.StringFlag{ // TODO -- FIXME: must be DurationFlag Name: "download-timeout", - Usage: "server-side time limit for downloading a single file from remote source;\n" + + Usage: "Server-side time limit for downloading a single file from remote source;\n" + indent4 + "\tvalid time units: " + timeUnits, } dloadProgressFlag = cli.StringFlag{ // TODO ditto Name: "progress-interval", - Usage: "download progress interval for continuous monitoring;\n" + + Usage: "Download progress interval for continuous monitoring;\n" + indent4 + "\tvalid time units: " + timeUnits, Value: dload.DownloadProgressInterval.String(), } limitConnectionsFlag = cli.IntFlag{ Name: "max-conns", - Usage: "maximum number of connections each target can make concurrently (up to num mountpaths)", + Usage: "Maximum number of connections each target can make concurrently (up to num mountpaths)", } limitBytesPerHourFlag = cli.StringFlag{ Name: "limit-bph", - Usage: "maximum download speed, or more exactly: maximum download size per target (node) per hour, e.g.:\n" + + Usage: "Maximum download speed, or more exactly: maximum download size per target (node) per hour, e.g.:\n" + indent4 + "\t'--limit-bph 1GiB' (or same: '--limit-bph 1073741824');\n" + indent4 + "\tthe value is parsed in accordance with the '--units' (see '--units' for details);\n" + indent4 + "\tomitting the flag or specifying '--limit-bph 0' means that download won't be throttled", } objectsListFlag = cli.StringFlag{ Name: "object-list,from", - Usage: "path to file containing JSON array of object names to download", + Usage: "Path to file containing JSON array of object names to download", } // sync latestVerFlag = cli.BoolFlag{ Name: "latest", - Usage: "check in-cluster metadata and, possibly, GET, download, prefetch, or otherwise copy the latest object version\n" + + Usage: "Check in-cluster metadata and, possibly, GET, download, prefetch, or otherwise copy the latest object version\n" + indent1 + "\tfrom the associated remote bucket;\n" + indent1 + "\tthe option provides operation-level control over object versioning (and version synchronization)\n" + indent1 + "\twithout the need to change the corresponding bucket configuration: 'versioning.validate_warm_get';\n" + @@ -717,7 +717,7 @@ var ( } syncFlag = cli.BoolFlag{ Name: "sync", - Usage: "fully synchronize in-cluster content of a given remote bucket with its (Cloud or remote AIS) source;\n" + + Usage: "Fully synchronize in-cluster content of a given remote bucket with its (Cloud or remote AIS) source;\n" + indent1 + "\tthe option is, effectively, a stronger variant of the '--latest' (option):\n" + indent1 + "\tin addition to bringing existing in-cluster objects in-sync with their respective out-of-band updates (if any)\n" + indent1 + "\tit also entails removing in-cluster objects that are no longer present remotely;\n" + @@ -730,51 +730,51 @@ var ( } // gen-shards - fsizeFlag = cli.StringFlag{Name: "fsize", Value: "1024", Usage: "size of the files in a shard"} - fcountFlag = cli.IntFlag{Name: "fcount", Value: 5, Usage: "number of files in a shard"} + fsizeFlag = cli.StringFlag{Name: "fsize", Value: "1024", Usage: "Size of the files in a shard"} + fcountFlag = cli.IntFlag{Name: "fcount", Value: 5, Usage: "Number of files in a shard"} dfltFext = ".test" fextsFlag = cli.StringFlag{ Name: "fext", - Usage: "comma-separated list of file extensions (default \"" + dfltFext + "\"), e.g.:\n" + + Usage: "Comma-separated list of file extensions (default \"" + dfltFext + "\"), e.g.:\n" + indent4 + "\t--fext .mp3\n" + indent4 + "\t--fext '.mp3,.json,.cls' (or, same: \".mp3, .json, .cls\")", } // dsort - dsortLogFlag = cli.StringFlag{Name: "log", Usage: "filename to log metrics (statistics)"} - dsortSpecFlag = cli.StringFlag{Name: "file,f", Value: "", Usage: "path to JSON or YAML job specification"} + dsortLogFlag = cli.StringFlag{Name: "log", Usage: "Filename to log metrics (statistics)"} + dsortSpecFlag = cli.StringFlag{Name: "file,f", Value: "", Usage: "Path to JSON or YAML job specification"} cleanupFlag = cli.BoolFlag{ Name: "cleanup", - Usage: "remove old bucket and create it again (warning: removes the entire content of the old bucket)", + Usage: "Remove old bucket and create it again (warning: removes the entire content of the old bucket)", } // waiting waitJobXactFinishedFlag = DurationFlag{ Name: "timeout", - Usage: "maximum time to wait for a job to finish; if omitted: wait forever or until Ctrl-C;\n" + + Usage: "Maximum time to wait for a job to finish; if omitted: wait forever or until Ctrl-C;\n" + indent4 + "\tvalid time units: " + timeUnits, } waitPodReadyTimeoutFlag = DurationFlag{ Name: waitJobXactFinishedFlag.Name, - Usage: "ais target waiting time for POD to become ready;\n" + + Usage: "AIS target waiting time for POD to become ready;\n" + indent4 + "\tvalid time units: " + timeUnits, } waitFlag = cli.BoolFlag{ Name: "wait", - Usage: "wait for an asynchronous operation to finish (optionally, use '--timeout' to limit the waiting time)", + Usage: "Wait for an asynchronous operation to finish (optionally, use '--timeout' to limit the waiting time)", } dontWaitFlag = cli.BoolFlag{ Name: "dont-wait", - Usage: "when _summarizing_ buckets do not wait for the respective job to finish -\n" + + Usage: "When _summarizing_ buckets do not wait for the respective job to finish -\n" + indent4 + "\tuse the job's UUID to query the results interactively", } // multi-object / multi-file listFlag = cli.StringFlag{ Name: "list", - Usage: "comma-separated list of object or file names, e.g.:\n" + + Usage: "Comma-separated list of object or file names, e.g.:\n" + indent4 + "\t--list 'o1,o2,o3'\n" + indent4 + "\t--list \"abc/1.tar, abc/1.cls, abc/1.jpeg\"\n" + indent4 + "\tor, when listing files and/or directories:\n" + @@ -782,7 +782,7 @@ var ( } templateFlag = cli.StringFlag{ Name: "template", - Usage: "template to match object or file names; may contain prefix (that could be empty) with zero or more ranges\n" + + Usage: "Template to match object or file names; may contain prefix (that could be empty) with zero or more ranges\n" + "\t(with optional steps and gaps), e.g.:\n" + indent4 + "\t--template \"\" # (an empty or '*' template matches eveything)\n" + indent4 + "\t--template 'dir/subdir/'\n" + @@ -805,10 +805,10 @@ var ( // read range (aka range read) offsetFlag = cli.StringFlag{ Name: "offset", - Usage: "object read offset; must be used together with '--length'; default formatting: IEC (use '--units' to override)"} + Usage: "Object read offset; must be used together with '--length'; default formatting: IEC (use '--units' to override)"} lengthFlag = cli.StringFlag{ Name: "length", - Usage: "object read length; default formatting: IEC (use '--units' to override)", + Usage: "Object read length; default formatting: IEC (use '--units' to override)", } // NOTE: @@ -820,44 +820,44 @@ var ( // See also: apc.Flt* enum. headObjPresentFlag = cli.BoolFlag{ Name: "check-cached", - Usage: "check whether a given named object is present in cluster\n" + + Usage: "Check whether a given named object is present in cluster\n" + indent1 + "\t(applies only to buckets with remote backend)", } _onlyin = "only in-cluster objects - only those objects from the respective remote bucket that are present (\"cached\")" listObjCachedFlag = cli.BoolFlag{ Name: "cached", - Usage: "list " + _onlyin, + Usage: "List " + _onlyin, } getObjCachedFlag = cli.BoolFlag{ Name: listObjCachedFlag.Name, - Usage: "get " + _onlyin, + Usage: "Get " + _onlyin, } scrubObjCachedFlag = cli.BoolFlag{ Name: listObjCachedFlag.Name, - Usage: "visit " + _onlyin, + Usage: "Visit " + _onlyin, } // when '--all' is used for/by another flag objNotCachedPropsFlag = cli.BoolFlag{ Name: "not-cached", - Usage: "show properties of _all_ objects from a remote bucket including those (objects) that are not present (not \"cached\")", + Usage: "Show properties of _all_ objects from a remote bucket including those (objects) that are not present (not \"cached\")", } dontHeadSrcDstBucketsFlag = cli.BoolFlag{ Name: "skip-lookup", - Usage: "skip checking source and destination buckets' existence (trading off extra lookup for performance)\n", + Usage: "Skip checking source and destination buckets' existence (trading off extra lookup for performance)\n", } dontHeadRemoteFlag = cli.BoolFlag{ Name: "skip-lookup", - Usage: "do not execute HEAD(bucket) request to lookup remote bucket and its properties; possible usage scenarios include:\n" + + Usage: "Do not execute HEAD(bucket) request to lookup remote bucket and its properties; possible usage scenarios include:\n" + indent4 + "\t 1) adding remote bucket to aistore without first checking the bucket's accessibility\n" + indent4 + "\t (e.g., to configure the bucket's aistore properties with alternative security profile and/or endpoint)\n" + indent4 + "\t 2) listing public-access Cloud buckets where certain operations (e.g., 'HEAD(bucket)') may be disallowed", } dontAddRemoteFlag = cli.BoolFlag{ Name: "dont-add", - Usage: "list remote bucket without adding it to cluster's metadata - e.g.:\n" + + Usage: "List remote bucket without adding it to cluster's metadata - e.g.:\n" + indent1 + "\t - let's say, s3://abc is accessible but not present in the cluster (e.g., 'ais ls' returns error);\n" + indent1 + "\t - then, if we ask aistore to list remote buckets: `ais ls s3://abc --all'\n" + indent1 + "\t the bucket will be added (in effect, it'll be created);\n" + @@ -865,146 +865,147 @@ var ( } addRemoteFlag = cli.BoolFlag{ Name: "add", - Usage: "add remote bucket to cluster's metadata\n" + + Usage: "Add remote bucket to cluster's metadata\n" + indent1 + "\t - let's say, s3://abc is accessible but not present in the cluster (e.g., 'ais ls' returns error);\n" + indent1 + "\t - most of the time, there's no need to worry about it as aistore handles presence/non-presence\n" + indent1 + "\t transparently behind the scenes;\n" + indent1 + "\t - but if you do want to (explicltly) add the bucket, you could also use '--add' option", } - enableFlag = cli.BoolFlag{Name: "enable", Usage: "enable"} - disableFlag = cli.BoolFlag{Name: "disable", Usage: "disable"} - recursFlag = cli.BoolFlag{Name: "recursive,r", Usage: "recursive operation"} + enableFlag = cli.BoolFlag{Name: "enable", Usage: "Enable"} + disableFlag = cli.BoolFlag{Name: "disable", Usage: "Disable"} + recursFlag = cli.BoolFlag{Name: "recursive,r", Usage: "Recursive operation"} noRecursFlag = cli.BoolFlag{ Name: "non-recursive,nr", - Usage: "non-recursive operation, e.g.:\n" + + Usage: "Non-recursive operation, e.g.:\n" + "\t- 'ais ls gs://bucket/prefix --nr'\t- list objects and/or virtual subdirectories with names starting with the specified prefix;\n" + "\t- 'ais ls gs://bucket/prefix/ --nr'\t- list contained objects and/or immediately nested virtual subdirectories _without_ recursing into the latter;\n" + "\t- 'ais prefetch s3://bck/abcd --nr'\t- prefetch a single named object (see 'ais prefetch --help' for details);\n" + "\t- 'ais rmo gs://bucket/prefix --nr'\t- remove a single object with the specified name (see 'ais rmo --help' for details)", } - noDirsFlag = cli.BoolFlag{Name: "no-dirs", Usage: "do not return virtual subdirectories (applies to remote buckets only)"} + noDirsFlag = cli.BoolFlag{Name: "no-dirs", Usage: "Do not return virtual subdirectories (applies to remote buckets only)"} - overwriteFlag = cli.BoolFlag{Name: "overwrite-dst,o", Usage: "overwrite destination, if exists"} - deleteSrcFlag = cli.BoolFlag{Name: "delete-src", Usage: "delete successfully promoted source"} - targetIDFlag = cli.StringFlag{Name: "target-id", Usage: "ais target designated to carry out the entire operation"} + overwriteFlag = cli.BoolFlag{Name: "overwrite-dst,o", Usage: "Overwrite destination, if exists"} + deleteSrcFlag = cli.BoolFlag{Name: "delete-src", Usage: "Delete successfully promoted source"} + targetIDFlag = cli.StringFlag{Name: "target-id", Usage: "AIS target designated to carry out the entire operation"} notFshareFlag = cli.BoolFlag{ Name: "not-file-share", - Usage: "each target must act autonomously skipping file-share auto-detection and promoting the entire source " + + Usage: "Each target must act autonomously skipping file-share auto-detection and promoting the entire source " + "(as seen from the target)", } - yesFlag = cli.BoolFlag{Name: "yes,y", Usage: "assume 'yes' to all questions"} + yesFlag = cli.BoolFlag{Name: "yes,y", Usage: "Assume 'yes' to all questions"} // usage: STDIN, blob chunkSizeFlag = cli.StringFlag{ Name: "chunk-size", - Usage: "chunk size in IEC or SI units, or \"raw\" bytes (e.g.: 4mb, 1MiB, 1048576, 128k; see '--units')", + Usage: "Chunk size in IEC or SI units, or \"raw\" bytes (e.g.: 4mb, 1MiB, 1048576, 128k; see '--units')", } blobThresholdFlag = cli.StringFlag{ Name: "blob-threshold", - Usage: "utilize built-in blob-downloader for remote objects greater than the specified (threshold) size\n" + + Usage: "Utilize built-in blob-downloader for remote objects greater than the specified (threshold) size\n" + indent1 + "\tin IEC or SI units, or \"raw\" bytes (e.g.: 4mb, 1MiB, 1048576, 128k; see '--units')", } blobDownloadFlag = cli.BoolFlag{ Name: apc.ActBlobDl, - Usage: "utilize built-in blob-downloader (and the corresponding alternative datapath) to read very large remote objects", + Usage: "Utilize built-in blob-downloader (and the corresponding alternative datapath) to read very large remote objects", } // num-workers numBlobWorkersFlag = cli.IntFlag{ Name: "num-workers", - Usage: "number of concurrent blob-downloading workers (readers); system default when omitted or zero", + Usage: "Number of concurrent blob-downloading workers (readers); system default when omitted or zero", } noWorkers = indent4 + "\tuse (-1) to indicate single-threaded serial execution (ie., no workers);\n" numListRangeWorkersFlag = cli.IntFlag{ Name: numBlobWorkersFlag.Name, - Usage: "number of concurrent workers (readers); defaults to a number of target mountpaths if omitted or zero;\n" + + Usage: "Number of concurrent workers (readers); defaults to a number of target mountpaths if omitted or zero;\n" + noWorkers + indent4 + "\tany positive value will be adjusted _not_ to exceed the number of target CPUs", } numGenShardWorkersFlag = cli.IntFlag{ Name: numBlobWorkersFlag.Name, Value: 10, - Usage: "limits the number of shards created concurrently", + Usage: "Limits the number of shards created concurrently", } numPutWorkersFlag = cli.IntFlag{ Name: numBlobWorkersFlag.Name, Value: 10, - Usage: "number of concurrent client-side workers (to execute PUT or append requests);\n" + + Usage: "Number of concurrent client-side workers (to execute PUT or append requests);\n" + noWorkers + indent4 + "\tany positive value will be adjusted _not_ to exceed twice the number of client CPUs", } // validate - cksumFlag = cli.BoolFlag{Name: "checksum", Usage: "validate checksum"} + cksumFlag = cli.BoolFlag{Name: "checksum", Usage: "Validate checksum"} // ais put putObjCksumText = indent4 + "\tand provide it as part of the PUT request for subsequent validation on the server side" putObjCksumFlags = initPutObjCksumFlags() putObjDfltCksumFlag = cli.BoolFlag{ Name: "compute-checksum", - Usage: "[end-to-end protection] compute client-side checksum configured for the destination bucket\n" + - putObjCksumText, + Usage: "Compute client-side checksum - one of the supported checksum types that is currently configured for the destination bucket -\n" + + putObjCksumText + "\n" + + indent4 + "\t(see also: \"end-to-end protection\")", } putRetriesFlag = cli.IntFlag{ Name: "retries", Value: 1, - Usage: "when failing to PUT retry the operation up to so many times (with increasing timeout if timed out)", + Usage: "When failing to PUT retry the operation up to so many times (with increasing timeout if timed out)", } appendConcatFlag = cli.BoolFlag{ Name: "append", - Usage: "concatenate files: append a file or multiple files as a new _or_ to an existing object", + Usage: "Concatenate files: append a file or multiple files as a new _or_ to an existing object", } skipVerCksumFlag = cli.BoolFlag{ Name: "skip-vc", - Usage: "skip loading object metadata (and the associated checksum & version related processing)", + Usage: "Skip loading object metadata (and the associated checksum & version related processing)", } // auth - descRoleFlag = cli.StringFlag{Name: "description,desc", Usage: "role description"} - clusterRoleFlag = cli.StringFlag{Name: "cluster", Usage: "associate role with the specified AIS cluster"} - clusterTokenFlag = cli.StringFlag{Name: "cluster", Usage: "issue token for the cluster"} - bucketRoleFlag = cli.StringFlag{Name: "bucket", Usage: "associate a role with the specified bucket"} + descRoleFlag = cli.StringFlag{Name: "description,desc", Usage: "Role description"} + clusterRoleFlag = cli.StringFlag{Name: "cluster", Usage: "Associate role with the specified AIS cluster"} + clusterTokenFlag = cli.StringFlag{Name: "cluster", Usage: "Issue token for the cluster"} + bucketRoleFlag = cli.StringFlag{Name: "bucket", Usage: "Associate a role with the specified bucket"} clusterFilterFlag = cli.StringFlag{ Name: "cluster", - Usage: "comma-separated list of AIS cluster IDs (type ',' for an empty cluster ID)", + Usage: "Comma-separated list of AIS cluster IDs (type ',' for an empty cluster ID)", } // archive - listArchFlag = cli.BoolFlag{Name: "archive", Usage: "list archived content (see docs/archive.md for details)"} + listArchFlag = cli.BoolFlag{Name: "archive", Usage: "List archived content (see docs/archive.md for details)"} archpathFlag = cli.StringFlag{ // for apc.QparamArchpath; PUT/append => shard Name: "archpath", - Usage: "filename in an object (\"shard\") formatted as: " + archFormats, + Usage: "Filename in an object (\"shard\") formatted as: " + archFormats, } archpathGetFlag = cli.StringFlag{ // for apc.QparamArchpath; GET from shard Name: archpathFlag.Name, - Usage: "extract the specified file from an object (\"shard\") formatted as: " + archFormats + ";\n" + + Usage: "Extract the specified file from an object (\"shard\") formatted as: " + archFormats + ";\n" + indent4 + "\tsee also: '--archregx'", } archmimeFlag = cli.StringFlag{ // for apc.QparamArchmime Name: "archmime", - Usage: "expected format (mime type) of an object (\"shard\") formatted as: " + archFormats + ";\n" + + Usage: "Expected format (mime type) of an object (\"shard\") formatted as: " + archFormats + ";\n" + indent4 + "\tespecially usable for shards with non-standard extensions\n", } archregxFlag = cli.StringFlag{ // for apc.QparamArchregx Name: "archregx", - Usage: "specifies prefix, suffix, substring, WebDataset key, _or_ a general-purpose regular expression\n" + + Usage: "Specifies prefix, suffix, substring, WebDataset key, _or_ a general-purpose regular expression\n" + indent4 + "\tto select possibly multiple matching archived files from a given shard;\n" + indent4 + "\tis used in combination with '--archmode' (\"matching mode\") option", } archmodeFlag = cli.StringFlag{ // for apc.QparamArchmode Name: "archmode", - Usage: "enumerated \"matching mode\" that tells aistore how to handle '--archregx', one of:\n" + + Usage: "Enumerated \"matching mode\" that tells aistore how to handle '--archregx', one of:\n" + indent4 + "\t * regexp - general purpose regular expression;\n" + indent4 + "\t * prefix - matching filename starts with;\n" + indent4 + "\t * suffix - matching filename ends with;\n" + @@ -1018,47 +1019,47 @@ var ( // client side extractFlag = cli.BoolFlag{ Name: "extract,x", - Usage: "extract all files from archive(s)", + Usage: "Extract all files from archive(s)", } inclSrcBucketNameFlag = cli.BoolFlag{ Name: "include-src-bck", - Usage: "prefix the names of archived files with the source bucket name", + Usage: "Prefix the names of archived files with the source bucket name", } archSrcDirNameFlag = cli.BoolFlag{ Name: "include-src-dir", - Usage: "prefix the names of archived files with the (root) source directory", + Usage: "Prefix the names of archived files with the (root) source directory", } putSrcDirNameFlag = cli.BoolFlag{ Name: archSrcDirNameFlag.Name, - Usage: "prefix destination object names with the source directory", + Usage: "Prefix destination object names with the source directory", } // 'ais archive put': conditional APPEND archAppendOrPutFlag = cli.BoolFlag{ Name: "append-or-put", - Usage: "append to an existing destination object (\"archive\", \"shard\") iff exists; otherwise PUT a new archive (shard);\n" + + Usage: "Append to an existing destination object (\"archive\", \"shard\") iff exists; otherwise PUT a new archive (shard);\n" + indent4 + "\tnote that PUT (with subsequent overwrite if the destination exists) is the default behavior when the flag is omitted", } // 'ais archive put': unconditional APPEND: destination must exist archAppendOnlyFlag = cli.BoolFlag{ Name: "append", - Usage: "add newly archived content to the destination object (\"archive\", \"shard\") that must exist", + Usage: "Add newly archived content to the destination object (\"archive\", \"shard\") that must exist", } continueOnErrorFlag = cli.BoolFlag{ Name: "cont-on-err", - Usage: "keep running archiving xaction (job) in presence of errors in a any given multi-object transaction", + Usage: "Keep running archiving xaction (job) in presence of errors in a any given multi-object transaction", } // end archive // AuthN - tokenFileFlag = cli.StringFlag{Name: "file,f", Value: "", Usage: "path to file"} - passwordFlag = cli.StringFlag{Name: "password,p", Value: "", Usage: "user password"} + tokenFileFlag = cli.StringFlag{Name: "file,f", Value: "", Usage: "Path to file"} + passwordFlag = cli.StringFlag{Name: "password,p", Value: "", Usage: "User password"} expireFlag = DurationFlag{ Name: "expire,e", - Usage: "token expiration time, '0' - for never-expiring token;\n" + + Usage: "Token expiration time, '0' - for never-expiring token;\n" + indent4 + "\tvalid time units: " + timeUnits, Value: 24 * time.Hour, } @@ -1066,11 +1067,11 @@ var ( // Copy Bucket copyDryRunFlag = cli.BoolFlag{ Name: "dry-run", - Usage: "show total size of new objects without really creating them", + Usage: "Show total size of new objects without really creating them", } copyPrependFlag = cli.StringFlag{ Name: "prepend", - Usage: "prefix to prepend to every object name during operation (copy or transform), e.g.:\n" + + Usage: "Prefix to prepend to every object name during operation (copy or transform), e.g.:\n" + indent4 + "\t--prepend=abc\t- prefix all object names with \"abc\"\n" + indent4 + "\t--prepend=abc/\t- use \"abc\" as a virtual directory (note trailing filepath separator)\n" + indent4 + "\t\t- during 'copy', this flag applies to copied objects\n" + @@ -1078,7 +1079,7 @@ var ( } // ETL - etlExtFlag = cli.StringFlag{Name: "ext", Usage: "mapping from old to new extensions of transformed objects' names"} + etlExtFlag = cli.StringFlag{Name: "ext", Usage: "Mapping from old to new extensions of transformed objects' names"} etlNameFlag = cli.StringFlag{ Name: "name", Usage: "unique ETL name (leaving this field empty will have unique ID auto-generated)", @@ -1086,26 +1087,26 @@ var ( } etlBucketRequestTimeout = DurationFlag{ Name: "etl-timeout", - Usage: "server-side timeout transforming a single object;\n" + + Usage: "Server-side timeout transforming a single object;\n" + indent4 + "\tvalid time units: " + timeUnits, } fromFileFlag = cli.StringFlag{ Name: "from-file", - Usage: "absolute path to the file with the spec/code for ETL", + Usage: "Absolute path to the file with the spec/code for ETL", Required: true, } depsFileFlag = cli.StringFlag{ Name: "deps-file", - Usage: "absolute path to the file with dependencies that must be installed before running the code", + Usage: "Absolute path to the file with dependencies that must be installed before running the code", } runtimeFlag = cli.StringFlag{ Name: "runtime", - Usage: "environment used to run the provided code (currently supported: python3.8v2, python3.10v2, python3.11v2)", + Usage: "Python version used to run the provided code (currently supported: python3.8v2, python3.10v2, python3.11v2)", Required: true, } commTypeFlag = cli.StringFlag{ Name: "comm-type", - Usage: "enumerated communication type used between aistore cluster and ETL containers that run custom transformations:\n" + + Usage: "Enumerated communication type used between aistore cluster and ETL containers that run custom transformations:\n" + indent4 + "\t - 'hpush' or 'hpush://' - ETL container provides HTTP PUT handler that'll be invoked upon every request to transform\n" + indent4 + "\t - '' - same as 'hpush://' (default, can be omitted)\n" + indent4 + "\t - 'hpull' or 'hpull://' - same, but ETL container is expected to provide HTTP GET endpoint\n" + @@ -1118,7 +1119,7 @@ var ( funcTransformFlag = cli.StringFlag{ Name: "transform", Value: "transform", // NOTE: default name of the transform() function - Usage: "receives and _transforms_ the payload", + Usage: "Receives and _transforms_ the payload", } argTypeFlag = cli.StringFlag{ Name: "arg-type", @@ -1131,19 +1132,19 @@ var ( // Node roleFlag = cli.StringFlag{ Name: "role", Required: true, - Usage: "role of this AIS daemon: proxy or target", + Usage: "Role of this AIS daemon: proxy or target", } nonElectableFlag = cli.BoolFlag{ Name: "non-electable", - Usage: "this proxy must not be elected as primary " + advancedUsageOnly, + Usage: "This proxy must not be elected as primary " + advancedUsageOnly, } noRebalanceFlag = cli.BoolFlag{ Name: "no-rebalance", - Usage: "do _not_ run global rebalance after putting node in maintenance " + advancedUsageOnly, + Usage: "Do _not_ run global rebalance after putting node in maintenance " + advancedUsageOnly, } mountpathLabelFlag = cli.StringFlag{ Name: "label", - Usage: "an optional _mountpath label_ to facilitate extended functionality and context, including:\n" + + Usage: "An optional _mountpath label_ to facilitate extended functionality and context, including:\n" + indent2 + "1. device sharing (or non-sharing) between multiple mountpaths;\n" + indent2 + "2. associated storage class (one of the enumerated ones, as in: \"different storage media for different datasets\");\n" + indent2 + "3. parallelism multiplier - a number of goroutines to concurrently read, write, and/or traverse the mountpath in question\n" + @@ -1154,55 +1155,55 @@ var ( } noResilverFlag = cli.BoolFlag{ Name: "no-resilver", - Usage: "do _not_ resilver data off of the mountpaths that are being disabled or detached", + Usage: "Do _not_ resilver data off of the mountpaths that are being disabled or detached", } noShutdownFlag = cli.BoolFlag{ Name: "no-shutdown", - Usage: "do not shutdown node upon decommissioning it from the cluster", + Usage: "Do not shutdown node upon decommissioning it from the cluster", } rmUserDataFlag = cli.BoolFlag{ Name: "rm-user-data", - Usage: "remove all user data when decommissioning node from the cluster", + Usage: "Remove all user data when decommissioning node from the cluster", } keepInitialConfigFlag = cli.BoolFlag{ Name: "keep-initial-config", - Usage: "keep the original plain-text configuration the node was deployed with\n" + + Usage: "Keep the original plain-text configuration the node was deployed with\n" + indent4 + "\t(the option can be used to restart aisnode from scratch)", } transientFlag = cli.BoolFlag{ Name: "transient", - Usage: "update config in memory without storing the change(s) on disk", + Usage: "Update config in memory without storing the change(s) on disk", } setNewCustomMDFlag = cli.BoolFlag{ Name: "set-new-custom", - Usage: "remove existing custom keys (if any) and store new custom metadata", + Usage: "Remove existing custom keys (if any) and store new custom metadata", } cliConfigPathFlag = cli.BoolFlag{ Name: "path", - Usage: "display path to the AIS CLI configuration", + Usage: "Display path to the AIS CLI configuration", } errorsOnlyFlag = cli.BoolFlag{ Name: "errors-only", - Usage: "reset only error counters", + Usage: "Reset only error counters", } diskSummaryFlag = cli.BoolFlag{ Name: "summary", - Usage: "tally up target disks to show per-target read/write summary stats and average utilizations", + Usage: "Tally up target disks to show per-target read/write summary stats and average utilizations", } mountpathFlag = cli.BoolFlag{ Name: "mountpath", - Usage: "show target mountpaths with underlying disks and used/available capacities", + Usage: "Show target mountpaths with underlying disks and used/available capacities", } // LRU lruBucketsFlag = cli.StringFlag{ Name: "buckets", - Usage: "comma-separated list of bucket names, e.g.:\n" + + Usage: "Comma-separated list of bucket names, e.g.:\n" + indent1 + "\t\t\t--buckets 'ais://b1,ais://b2,ais://b3'\n" + indent1 + "\t\t\t--buckets \"gs://b1, s3://b2\"", } diff --git a/cmd/cli/cli/etl.go b/cmd/cli/cli/etl.go index b93d110a19e..4d0201acaaf 100644 --- a/cmd/cli/cli/etl.go +++ b/cmd/cli/cli/etl.go @@ -68,12 +68,12 @@ var ( } showCmdETL = cli.Command{ Name: commandShow, - Usage: "show ETL(s)", + Usage: "Show ETL(s)", Action: etlListHandler, Subcommands: []cli.Command{ { Name: cmdDetails, - Usage: "show ETL details", + Usage: "Show ETL details", ArgsUsage: etlNameArgument, Action: etlShowDetailsHandler, }, @@ -81,7 +81,7 @@ var ( } stopCmdETL = cli.Command{ Name: cmdStop, - Usage: "stop ETL", + Usage: "Stop ETL", ArgsUsage: etlNameListArgument, Action: etlStopHandler, BashComplete: etlIDCompletions, @@ -89,7 +89,7 @@ var ( } startCmdETL = cli.Command{ Name: cmdStart, - Usage: "start ETL", + Usage: "Start ETL", ArgsUsage: etlNameArgument, Action: etlStartHandler, BashComplete: etlIDCompletions, @@ -97,7 +97,7 @@ var ( } removeCmdETL = cli.Command{ Name: commandRemove, - Usage: "remove ETL", + Usage: "Remove ETL", ArgsUsage: etlNameArgument, Action: etlRemoveHandler, BashComplete: etlIDCompletions, @@ -105,17 +105,17 @@ var ( } initCmdETL = cli.Command{ Name: cmdInit, - Usage: "start ETL job: 'spec' job (requires pod yaml specification) or 'code' job (with transforming function or script in a local file)", + Usage: "Start ETL job: 'spec' job (requires pod yaml specification) or 'code' job (with transforming function or script in a local file)", Subcommands: []cli.Command{ { Name: cmdSpec, - Usage: "start ETL job with YAML Pod specification", + Usage: "Start ETL job with YAML Pod specification", Flags: etlSubFlags[cmdSpec], Action: etlInitSpecHandler, }, { Name: cmdCode, - Usage: "start ETL job using the specified transforming function or script", + Usage: "Start ETL job using the specified transforming function or script", Flags: etlSubFlags[cmdCode], Action: etlInitCodeHandler, }, @@ -123,14 +123,14 @@ var ( } objCmdETL = cli.Command{ Name: cmdObject, - Usage: "transform object", + Usage: "Transform object", ArgsUsage: etlNameArgument + " " + objectArgument + " OUTPUT", Action: etlObjectHandler, BashComplete: etlIDCompletions, } bckCmdETL = cli.Command{ Name: cmdBucket, - Usage: "transform entire bucket or selected objects (to select, use '--list', '--template', or '--prefix')", + Usage: "Transform entire bucket or selected objects (to select, use '--list', '--template', or '--prefix')", ArgsUsage: etlNameArgument + " " + bucketObjectSrcArgument + " " + bucketDstArgument, Action: etlBucketHandler, Flags: etlSubFlags[cmdBucket], @@ -138,7 +138,7 @@ var ( } logsCmdETL = cli.Command{ Name: cmdViewLogs, - Usage: "view ETL logs", + Usage: "View ETL logs", ArgsUsage: etlNameArgument + " " + optionalTargetIDArgument, Action: etlLogsHandler, BashComplete: etlIDCompletions, @@ -146,7 +146,7 @@ var ( // subcommands etlCmd = cli.Command{ Name: commandETL, - Usage: "execute custom transformations on objects", + Usage: "Execute custom transformations on objects", Subcommands: []cli.Command{ initCmdETL, showCmdETL, diff --git a/cmd/cli/cli/job_hdlr.go b/cmd/cli/cli/job_hdlr.go index 34fe536f06a..8c4ab0fc2f4 100644 --- a/cmd/cli/cli/job_hdlr.go +++ b/cmd/cli/cli/job_hdlr.go @@ -26,7 +26,7 @@ import ( "github.com/urfave/cli" ) -const prefetchUsage = "prefetch one remote bucket, multiple remote buckets, or\n" + +const prefetchUsage = "Prefetch one remote bucket, multiple remote buckets, or\n" + indent1 + "selected objects in a given remote bucket or buckets, e.g.:\n" + indent1 + "\t- 'prefetch gs://abc'\t- prefetch entire bucket (all gs://abc objects that are _not_ in-cluster);\n" + indent1 + "\t- 'prefetch gs://abc --num-workers 32'\t- same as above with 32 concurrent (prefetching) workers;\n" + @@ -38,16 +38,16 @@ const prefetchUsage = "prefetch one remote bucket, multiple remote buckets, or\n indent1 + "\t- 'prefetch gs://abc --template \"shard-{0000..9999}.tar.lz4\"'\t- prefetch the matching range (prefix + brace expansion);\n" + indent1 + "\t- 'prefetch \"gs://abc/shard-{0000..9999}.tar.lz4\"'\t- same as above (notice double quotes)" -const blobDownloadUsage = "run a job to download large object(s) from remote storage to aistore cluster, e.g.:\n" + +const blobDownloadUsage = "Run a job to download large object(s) from remote storage to aistore cluster, e.g.:\n" + indent1 + "\t- 'blob-download s3://ab/largefile --chunk-size=2mb --progress'\t- download one blob at a given chunk size\n" + indent1 + "\t- 'blob-download s3://ab --list \"f1, f2\" --num-workers=4 --progress'\t- run 4 concurrent readers to download 2 (listed) blobs\n" + indent1 + "When _not_ using '--progress' option, run 'ais show job' to monitor." -const resilverUsage = "resilver user data on a given target (or all targets in the cluster); entails:\n" + +const resilverUsage = "Resilver user data on a given target (or all targets in the cluster); entails:\n" + indent1 + "\t- fix data redundancy with respect to bucket configuration;\n" + indent1 + "\t- remove migrated objects and old/obsolete workfiles." -const stopUsage = "terminate a single batch job or multiple jobs, e.g.:\n" + +const stopUsage = "Terminate a single batch job or multiple jobs, e.g.:\n" + indent1 + "\t- 'stop tco-cysbohAGL'\t- terminate a given (multi-object copy/transform) job identified by its unique ID;\n" + indent1 + "\t- 'stop copy-listrange'\t- terminate all multi-object copies;\n" + indent1 + "\t- 'stop copy-objects'\t- same as above (using display name);\n" + @@ -63,7 +63,7 @@ const stopUsage = "terminate a single batch job or multiple jobs, e.g.:\n" + var ( jobCmd = cli.Command{ Name: commandJob, - Usage: "monitor, query, start/stop and manage jobs and eXtended actions (xactions)", + Usage: "Monitor, query, start/stop and manage jobs and eXtended actions (xactions)", Subcommands: jobSub, } // NOTE: `appendJobSub` (below) expects jobSub[0] to be the `jobStartSub` @@ -135,7 +135,7 @@ var ( jobStartRebalance = cli.Command{ Name: commandRebalance, - Usage: "rebalance ais cluster", + Usage: "Rebalance ais cluster", ArgsUsage: bucketEmbeddedPrefixArg, Flags: startSpecialFlags[commandRebalance], Action: startRebHandler, @@ -168,13 +168,13 @@ var ( jobStartSub = cli.Command{ Name: commandStart, - Usage: "run batch job", + Usage: "Run batch job", Subcommands: []cli.Command{ prefetchStartCmd, blobDownloadCmd, { Name: cmdDownload, - Usage: "download files and objects from remote sources", + Usage: "Download files and objects from remote sources", ArgsUsage: startDownloadArgument, Flags: startSpecialFlags[cmdDownload], Action: startDownloadHandler, @@ -182,14 +182,14 @@ var ( dsortStartCmd, { Name: cmdLRU, - Usage: "run LRU eviction", + Usage: "Run LRU eviction", Flags: startSpecialFlags[cmdLRU], Action: startLRUHandler, BashComplete: bucketCompletions(bcmplop{}), }, { Name: commandETL, - Usage: "start ETL", + Usage: "Start ETL", Subcommands: []cli.Command{ initCmdETL, objCmdETL, diff --git a/cmd/cli/cli/ls.go b/cmd/cli/cli/ls.go index 576c29762c1..862aa5e7def 100644 --- a/cmd/cli/cli/ls.go +++ b/cmd/cli/cli/ls.go @@ -283,7 +283,7 @@ func listObjects(c *cli.Context, bck cmn.Bck, prefix string, listArch, printEmpt return fmt.Errorf("flag %s only applies to remote backends that maintain at least some form of versioning information (have: %s)", qflprn(diffFlag), bck.String()) } - msg.SetFlag(apc.LsVerChanged) + msg.SetFlag(apc.LsDiff) } if flagIsSet(c, listObjCachedFlag) { @@ -449,7 +449,7 @@ func listObjects(c *cli.Context, bck cmn.Bck, prefix string, listArch, printEmpt toPrint = lst.Entries } err = printLso(c, toPrint, lstFilter, propsStr, nil /*_listed*/, now, - addCachedCol, bck.IsRemote(), msg.IsFlagSet(apc.LsVerChanged)) + addCachedCol, bck.IsRemote(), msg.IsFlagSet(apc.LsDiff)) if err != nil { return err } @@ -495,7 +495,7 @@ func listObjects(c *cli.Context, bck cmn.Bck, prefix string, listArch, printEmpt return fmt.Errorf("%s/%s not found", bck.Cname(""), msg.Prefix) } return printLso(c, lst.Entries, lstFilter, propsStr, _listed, now, - addCachedCol, bck.IsRemote(), msg.IsFlagSet(apc.LsVerChanged)) + addCachedCol, bck.IsRemote(), msg.IsFlagSet(apc.LsDiff)) } func lsoErr(msg *apc.LsoMsg, err error) error { diff --git a/cmd/cli/cli/object_hdlr.go b/cmd/cli/cli/object_hdlr.go index c510b262cec..4ba9ecf2c5d 100644 --- a/cmd/cli/cli/object_hdlr.go +++ b/cmd/cli/cli/object_hdlr.go @@ -22,7 +22,7 @@ import ( // in this file: operations on objects // (compare with archGetUsage) -const objGetUsage = "get an object, a shard, an archived file, or a range of bytes from all of the above;\n" + +const objGetUsage = "Get an object, a shard, an archived file, or a range of bytes from all of the above;\n" + indent4 + "\twrite the content locally with destination options including: filename, directory, STDOUT ('-'), or '/dev/null' (discard);\n" + indent4 + "\tassorted options further include:\n" + indent4 + "\t- '--prefix' to get multiple objects in one shot (empty prefix for the entire bucket);\n" + @@ -57,7 +57,7 @@ const objPromoteUsage = "PROMOTE target-accessible files and directories.\n" + indent1 + "\t- 'promote /tmp/subdir ais://nnn/aaa/'\t - ais://nnn/aaa/f1, ais://nnn/aaa/f2, ais://nnn/aaa/f3\n" + indent1 + "Other supported options follow below." -const objRmUsage = "remove object or selected objects from the specified bucket, or buckets - e.g.:\n" + +const objRmUsage = "Remove object or selected objects from the specified bucket, or buckets - e.g.:\n" + indent1 + "\t- 'rm ais://nnn --all'\t- remove all objects from the bucket ais://nnn;\n" + indent1 + "\t- 'rm s3://abc' --all\t- remove all objects including those that are not _present_ in the cluster;\n" + indent1 + "\t- 'rm gs://abc --prefix images/'\t- remove all objects from the virtual subdirectory \"images\";\n" + @@ -66,7 +66,7 @@ const objRmUsage = "remove object or selected objects from the specified bucket, indent1 + "\t- 'rm gs://abc --template \"shard-{0000..9999}.tar.lz4\"'\t- remove the matching range (prefix + brace expansion);\n" + indent1 + "\t- 'rm \"gs://abc/shard-{0000..9999}.tar.lz4\"'\t- same as above (notice double quotes)" -const concatUsage = "append a file, a directory, or multiple files and/or directories\n" + +const concatUsage = "Append a file, a directory, or multiple files and/or directories\n" + indent1 + "as a new " + objectArgument + " if doesn't exists, and to an existing " + objectArgument + " otherwise, e.g.:\n" + indent1 + "$ ais object concat docs ais://nnn/all-docs ### concatenate all files from docs/ directory." @@ -203,7 +203,7 @@ var ( objectCmdSetCustom = cli.Command{ Name: commandSetCustom, - Usage: "set object's custom properties", + Usage: "Set object's custom properties", ArgsUsage: setCustomArgument, Flags: objectCmdsFlags[commandSetCustom], Action: setCustomPropsHandler, @@ -229,7 +229,7 @@ var ( objectCmd = cli.Command{ Name: commandObject, - Usage: "put, get, list, rename, remove, and other operations on objects", + Usage: "PUT, GET, list, rename, remove, and other operations on objects", Subcommands: []cli.Command{ objectCmdGet, bucketsObjectsCmdList, @@ -244,7 +244,7 @@ var ( makeAlias(showCmdObject, "", true, commandShow), // alias for `ais show` { Name: commandRename, - Usage: "move/rename object", + Usage: "Move (rename) object", ArgsUsage: renameObjectArgument, Flags: objectCmdsFlags[commandRename], Action: mvObjectHandler, @@ -252,7 +252,7 @@ var ( }, { Name: commandCat, - Usage: "cat an object (i.e., print its contents to STDOUT)", + Usage: "Print object's content to STDOUT (same as Linux shell 'cat')", ArgsUsage: objectArgument, Flags: objectCmdsFlags[commandCat], Action: catHandler, diff --git a/cmd/cli/cli/performance.go b/cmd/cli/cli/performance.go index d00dc65cd27..cc2f24ccdd0 100644 --- a/cmd/cli/cli/performance.go +++ b/cmd/cli/cli/performance.go @@ -70,7 +70,7 @@ var ( } showCounters = cli.Command{ Name: cmdShowCounters, - Usage: "show (GET, PUT, DELETE, RENAME, EVICT, APPEND) object counts, as well as:\n" + + Usage: "Show (GET, PUT, DELETE, RENAME, EVICT, APPEND) object counts, as well as:\n" + indent2 + "\t- numbers of list-objects requests;\n" + indent2 + "\t- (GET, PUT, etc.) cumulative and average sizes;\n" + indent2 + "\t- associated error counters, if any, and more.", @@ -81,7 +81,7 @@ var ( } showThroughput = cli.Command{ Name: cmdShowThroughput, - Usage: "show GET and PUT throughput, associated (cumulative, average) sizes and counters", + Usage: "Show GET and PUT throughput, associated (cumulative, average) sizes and counters", ArgsUsage: optionalTargetIDArgument, Flags: showPerfFlags, Action: showThroughputHandler, @@ -89,7 +89,7 @@ var ( } showLatency = cli.Command{ Name: cmdShowLatency, - Usage: "show GET, PUT, and APPEND latencies and average sizes", + Usage: "Show GET, PUT, and APPEND latencies and average sizes", ArgsUsage: optionalTargetIDArgument, Flags: showPerfFlags, Action: showLatencyHandler, @@ -97,7 +97,7 @@ var ( } showCmdMpathCapacity = cli.Command{ Name: cmdCapacity, - Usage: "show target mountpaths, disks, and used/available capacity", + Usage: "Show target mountpaths, disks, and used/available capacity", ArgsUsage: optionalTargetIDArgument, Flags: append(showPerfFlags, mountpathFlag), Action: showMpathCapHandler, diff --git a/cmd/cli/cli/scrub.go b/cmd/cli/cli/scrub.go index 2bc97ea5507..39f3235da9b 100644 --- a/cmd/cli/cli/scrub.go +++ b/cmd/cli/cli/scrub.go @@ -271,7 +271,7 @@ func (ctx *scrCtx) ls(bck cmn.Bck) (*scrBp, error) { scr.Cname = bck.Cname("") propNames := []string{apc.GetPropsName, apc.GetPropsSize, apc.GetPropsVersion, apc.GetPropsCopies, apc.GetPropsLocation, apc.GetPropsCustom} if bck.IsRemote() { - lsmsg.Flags |= apc.LsVerChanged + lsmsg.Flags |= apc.LsDiff lsmsg.AddProps(propNames...) ctx.haveRemote.Store(true) // columns version-changed etc. } else { diff --git a/cmd/cli/cli/show_hdlr.go b/cmd/cli/cli/show_hdlr.go index 03a81583613..edc394b99db 100644 --- a/cmd/cli/cli/show_hdlr.go +++ b/cmd/cli/cli/show_hdlr.go @@ -28,7 +28,7 @@ import ( "github.com/urfave/cli" ) -const showJobUsage = "show running and/or finished jobs\n" + +const showJobUsage = "Show running and/or finished jobs\n" + indent1 + "\t- 'show job tco-cysbohAGL'\t- show a given (multi-object copy/transform) job identified by its unique ID;\n" + indent1 + "\t- 'show job copy-listrange'\t- show all running multi-object copies;\n" + indent1 + "\t- 'show job copy-objects'\t- same as above (using display name);\n" + @@ -134,7 +134,7 @@ var ( showCmdStorage = cli.Command{ Name: commandStorage, - Usage: "show storage usage and utilization, disks and mountpaths", + Usage: "Show storage usage and utilization, disks and mountpaths", ArgsUsage: optionalTargetIDArgument, Flags: storageFlags[commandStorage], Action: showStorageHandler, @@ -147,7 +147,7 @@ var ( } showCmdObject = cli.Command{ Name: cmdObject, - Usage: "show object properties", + Usage: "Show object properties", ArgsUsage: objectArgument, Flags: showCmdsFlags[cmdObject], Action: showObjectHandler, @@ -155,7 +155,7 @@ var ( } showCmdCluster = cli.Command{ Name: cmdCluster, - Usage: "main dashboard: show cluster at-a-glance (nodes, software versions, utilization, capacity, memory and more)", + Usage: "Main dashboard: show cluster at-a-glance (nodes, software versions, utilization, capacity, memory and more)", ArgsUsage: showClusterArgument, Flags: showCmdsFlags[cmdCluster], Action: showClusterHandler, @@ -163,7 +163,7 @@ var ( Subcommands: []cli.Command{ { Name: cmdSmap, - Usage: "show cluster map (Smap)", + Usage: "Show cluster map (Smap)", ArgsUsage: optionalNodeIDArgument, Flags: showCmdsFlags[cmdSmap], Action: showSmapHandler, @@ -171,7 +171,7 @@ var ( }, { Name: cmdBMD, - Usage: "show bucket metadata (BMD)", + Usage: "Show bucket metadata (BMD)", ArgsUsage: optionalNodeIDArgument, Flags: showCmdsFlags[cmdBMD], Action: showBMDHandler, @@ -179,7 +179,7 @@ var ( }, { Name: cmdConfig, - Usage: "show cluster and node configuration", + Usage: "Show cluster and node configuration", ArgsUsage: showClusterConfigArgument, Flags: showCmdsFlags[cmdConfig], Action: showClusterConfigHandler, @@ -189,7 +189,7 @@ var ( } showCmdBucket = cli.Command{ Name: cmdBucket, - Usage: "show bucket properties", + Usage: "Show bucket properties", ArgsUsage: bucketAndPropsArgument, Flags: showCmdsFlags[cmdBucket], Action: showBckPropsHandler, @@ -197,7 +197,7 @@ var ( } showCmdConfig = cli.Command{ Name: cmdConfig, - Usage: "show CLI, cluster, or node configurations (nodes inherit cluster and have local)", + Usage: "Show CLI, cluster, or node configurations (nodes inherit cluster and have local)", ArgsUsage: showConfigArgument, Flags: showCmdsFlags[cmdConfig], Action: showAnyConfigHandler, @@ -205,7 +205,7 @@ var ( } showCmdRemoteAIS = cli.Command{ Name: cmdShowRemoteAIS, - Usage: "show attached AIS clusters", + Usage: "Show attached AIS clusters", ArgsUsage: "", Flags: showCmdsFlags[cmdShowRemoteAIS], Action: showRemoteAISHandler, diff --git a/cmd/cli/cli/storage_hdlr.go b/cmd/cli/cli/storage_hdlr.go index 968f1ae391a..52a423da3ee 100644 --- a/cmd/cli/cli/storage_hdlr.go +++ b/cmd/cli/cli/storage_hdlr.go @@ -39,7 +39,7 @@ type bsummCtx struct { res cmn.AllBsummResults } -var scrubUsage = "check in-cluster content for misplaced objects, objects that have insufficient numbers of copies, zero size, and more\n" + +var scrubUsage = "Check in-cluster content for misplaced objects, objects that have insufficient numbers of copies, zero size, and more\n" + indent1 + "e.g.:\n" + indent1 + "\t* ais storage validate \t- validate all in-cluster buckets;\n" + indent1 + "\t* ais scrub \t- same as above;\n" + @@ -61,13 +61,13 @@ var ( mpathCmd = cli.Command{ Name: cmdMountpath, - Usage: "show and attach/detach target mountpaths", + Usage: "Show and attach/detach target mountpaths", Action: showMpathHandler, Subcommands: []cli.Command{ makeAlias(showCmdMpath, "", true, commandShow), // alias for `ais show` { Name: cmdMpathAttach, - Usage: "attach mountpath to a given target node", + Usage: "Attach mountpath to a given target node", ArgsUsage: nodeMountpathPairArgument, Flags: mpathCmdsFlags[cmdMpathAttach], Action: mpathAttachHandler, @@ -75,14 +75,14 @@ var ( }, { Name: cmdMpathEnable, - Usage: "(re)enable target's mountpath", + Usage: "(Re)enable target's mountpath", ArgsUsage: nodeMountpathPairArgument, Action: mpathEnableHandler, BashComplete: suggestMpathEnable, }, { Name: cmdMpathDetach, - Usage: "detach mountpath from a target node (disable and remove it from the target's volume)", + Usage: "Detach mountpath from a target node (disable and remove it from the target's volume)", ArgsUsage: nodeMountpathPairArgument, Flags: mpathCmdsFlags["default"], Action: mpathDetachHandler, @@ -90,7 +90,7 @@ var ( }, { Name: cmdMpathDisable, - Usage: "disable mountpath (deactivate but keep in a target's volume for possible future activation)", + Usage: "Disable mountpath (deactivate but keep in a target's volume for possible future activation)", ArgsUsage: nodeMountpathPairArgument, Flags: mpathCmdsFlags["default"], Action: mpathDisableHandler, @@ -101,7 +101,7 @@ var ( // { Name: cmdMpathRescanDisks, - Usage: "re-resolve (mountpath, filesystem) to its underlying disk(s) and revalidate the disks\n" + + Usage: "Re-resolve (mountpath, filesystem) to its underlying disk(s) and revalidate the disks\n" + indent1 + "\t" + advancedUsageOnly, ArgsUsage: nodeMountpathPairArgument, Flags: mpathCmdsFlags["default"], @@ -110,7 +110,7 @@ var ( }, { Name: cmdMpathFshc, - Usage: "run filesystem health checker (FSHC) to test selected mountpath for read and write errors", + Usage: "Run filesystem health checker (FSHC) to test selected mountpath for read and write errors", ArgsUsage: nodeMountpathPairArgument, Action: mpathFshcHandler, BashComplete: suggestMpathActive, @@ -128,7 +128,7 @@ var ( } cleanupCmd = cli.Command{ Name: cmdStgCleanup, - Usage: "remove deleted objects and old/obsolete workfiles; remove misplaced objects; optionally, remove zero size objects", + Usage: "Remove deleted objects and old/obsolete workfiles; remove misplaced objects; optionally, remove zero size objects", ArgsUsage: lsAnyCommandArgument, Flags: cleanupFlags, Action: cleanupStorageHandler, diff --git a/cmd/cli/cli/x509.go b/cmd/cli/cli/x509.go index 3a910f82803..24f6061abd4 100644 --- a/cmd/cli/cli/x509.go +++ b/cmd/cli/cli/x509.go @@ -20,20 +20,20 @@ var ( showTLS = cli.Command{ Name: commandTLS, ArgsUsage: optionalNodeIDArgument, - Usage: "show TLS certificate's version, issuer's common name, from/to validity bounds", + Usage: "Show TLS certificate's version, issuer's common name, from/to validity bounds", Action: showCertHandler, BashComplete: suggestAllNodes, } loadTLS = cli.Command{ Name: cmdLoadTLS, - Usage: "load TLS certificate", + Usage: "Load TLS certificate", ArgsUsage: optionalNodeIDArgument, Action: loadCertHandler, BashComplete: suggestAllNodes, } validateTLS = cli.Command{ Name: cmdValidateTLS, - Usage: "check that all TLS certficates are identical", + Usage: "Check that all TLS certficates are identical", ArgsUsage: optionalNodeIDArgument, Action: validateCertHandler, } @@ -41,7 +41,7 @@ var ( // top-level tlsCmd = cli.Command{ Name: commandTLS, - Usage: "load or reload (an updated) TLS certificate; display information about currently deployed certificates", + Usage: "Load or reload (an updated) TLS certificate; display information about currently deployed certificates", Subcommands: []cli.Command{ makeAlias(showTLS, "", true, commandShow), loadTLS, diff --git a/cmd/cli/go.mod b/cmd/cli/go.mod index a63edb0f8ea..56bb42e2181 100644 --- a/cmd/cli/go.mod +++ b/cmd/cli/go.mod @@ -3,7 +3,7 @@ module github.com/NVIDIA/aistore/cmd/cli go 1.23.4 require ( - github.com/NVIDIA/aistore v1.3.26-0.20250126174152-de32e6f2a88e + github.com/NVIDIA/aistore v1.3.26-0.20250127175459-4f2fb0695b30 github.com/fatih/color v1.18.0 github.com/json-iterator/go v1.1.12 github.com/onsi/ginkgo/v2 v2.21.0 diff --git a/cmd/cli/go.sum b/cmd/cli/go.sum index b632124e1a4..fd5b553e521 100644 --- a/cmd/cli/go.sum +++ b/cmd/cli/go.sum @@ -1,7 +1,7 @@ code.cloudfoundry.org/bytefmt v0.0.0-20190710193110-1eb035ffe2b6/go.mod h1:wN/zk7mhREp/oviagqUXY3EwuHhWyOvAdsn5Y4CzOrc= github.com/BurntSushi/toml v1.4.0/go.mod h1:ukJfTF/6rtPPRCnwkur4qwRxa8vTRFBF0uk2lLoLwho= -github.com/NVIDIA/aistore v1.3.26-0.20250126174152-de32e6f2a88e h1:kC2QpcBn8oJhWxNTsPJPvqlcAQdl+XvmtUzg6rGRQSs= -github.com/NVIDIA/aistore v1.3.26-0.20250126174152-de32e6f2a88e/go.mod h1:rbl6S+ehV6m949UsHJA1Iz2+76/lZHwDm/KcfUnt9fw= +github.com/NVIDIA/aistore v1.3.26-0.20250127175459-4f2fb0695b30 h1:lrLETbvGzp0V8lr62ELCe0Sf1kn5laf06wZRnz+59m0= +github.com/NVIDIA/aistore v1.3.26-0.20250127175459-4f2fb0695b30/go.mod h1:rbl6S+ehV6m949UsHJA1Iz2+76/lZHwDm/KcfUnt9fw= github.com/OneOfOne/xxhash v1.2.8 h1:31czK/TI9sNkxIKfaUfGlU47BAxQ0ztGgd9vPyqimf8= github.com/OneOfOne/xxhash v1.2.8/go.mod h1:eZbhyaAYD41SGSSsnmcpxVoRiQ/MPUTjUdIIOT9Um7Q= github.com/VividCortex/ewma v1.1.1/go.mod h1:2Tkkvm3sRDVXaiyucHiACn4cqf7DpdyLvmxzcbUokwA= diff --git a/cmd/ishard/go.mod b/cmd/ishard/go.mod index b713bd65c59..1feb06b102b 100644 --- a/cmd/ishard/go.mod +++ b/cmd/ishard/go.mod @@ -3,7 +3,7 @@ module github.com/NVIDIA/aistore/cmd/ishard go 1.23.4 require ( - github.com/NVIDIA/aistore v1.3.26-0.20250126174152-de32e6f2a88e + github.com/NVIDIA/aistore v1.3.26-0.20250127175459-4f2fb0695b30 github.com/json-iterator/go v1.1.12 github.com/vbauerster/mpb/v4 v4.12.2 ) diff --git a/cmd/ishard/go.sum b/cmd/ishard/go.sum index db86859f885..932402df3bf 100644 --- a/cmd/ishard/go.sum +++ b/cmd/ishard/go.sum @@ -1,6 +1,6 @@ code.cloudfoundry.org/bytefmt v0.0.0-20190710193110-1eb035ffe2b6/go.mod h1:wN/zk7mhREp/oviagqUXY3EwuHhWyOvAdsn5Y4CzOrc= -github.com/NVIDIA/aistore v1.3.26-0.20250126174152-de32e6f2a88e h1:kC2QpcBn8oJhWxNTsPJPvqlcAQdl+XvmtUzg6rGRQSs= -github.com/NVIDIA/aistore v1.3.26-0.20250126174152-de32e6f2a88e/go.mod h1:rbl6S+ehV6m949UsHJA1Iz2+76/lZHwDm/KcfUnt9fw= +github.com/NVIDIA/aistore v1.3.26-0.20250127175459-4f2fb0695b30 h1:lrLETbvGzp0V8lr62ELCe0Sf1kn5laf06wZRnz+59m0= +github.com/NVIDIA/aistore v1.3.26-0.20250127175459-4f2fb0695b30/go.mod h1:rbl6S+ehV6m949UsHJA1Iz2+76/lZHwDm/KcfUnt9fw= github.com/OneOfOne/xxhash v1.2.8 h1:31czK/TI9sNkxIKfaUfGlU47BAxQ0ztGgd9vPyqimf8= github.com/OneOfOne/xxhash v1.2.8/go.mod h1:eZbhyaAYD41SGSSsnmcpxVoRiQ/MPUTjUdIIOT9Um7Q= github.com/VividCortex/ewma v1.1.1 h1:MnEK4VOv6n0RSY4vtRe3h11qjxL3+t0B8yOL8iMXdcM= diff --git a/cmn/cos/bitflags.go b/cmn/cos/bitflags.go index 4582d9dcd07..fe80ff572a7 100644 --- a/cmn/cos/bitflags.go +++ b/cmn/cos/bitflags.go @@ -1,6 +1,6 @@ // Package cos provides common low-level types and utilities for all aistore projects /* - * Copyright (c) 2018-2022, NVIDIA CORPORATION. All rights reserved. + * Copyright (c) 2018-2025, NVIDIA CORPORATION. All rights reserved. */ package cos diff --git a/cmn/jsp/app.go b/cmn/jsp/app.go index 2f5a4274add..6fbd81755bf 100644 --- a/cmn/jsp/app.go +++ b/cmn/jsp/app.go @@ -1,7 +1,7 @@ // Package jsp (JSON persistence) provides utilities to store and load arbitrary // JSON-encoded structures with optional checksumming and compression. /* - * Copyright (c) 2018-2022, NVIDIA CORPORATION. All rights reserved. + * Copyright (c) 2018-2025, NVIDIA CORPORATION. All rights reserved. */ package jsp diff --git a/core/lom_xattr_test.go b/core/lom_xattr_test.go index 9234b1273ba..f29ddabaebd 100644 --- a/core/lom_xattr_test.go +++ b/core/lom_xattr_test.go @@ -1,6 +1,6 @@ // Package core_test provides tests for cluster package /* -* Copyright (c) 2018-2022, NVIDIA CORPORATION. All rights reserved. +* Copyright (c) 2018-2025, NVIDIA CORPORATION. All rights reserved. */ package core_test diff --git a/core/meta/bck_test.go b/core/meta/bck_test.go index cf5342c582f..dab47d0d29e 100644 --- a/core/meta/bck_test.go +++ b/core/meta/bck_test.go @@ -1,6 +1,6 @@ // Package meta_test: unit tests for the package /* - * Copyright (c) 2018-2022, NVIDIA CORPORATION. All rights reserved. + * Copyright (c) 2018-2025, NVIDIA CORPORATION. All rights reserved. */ package meta_test diff --git a/ext/dload/list.go b/ext/dload/list.go index cb70f00ca87..125ac8adef5 100644 --- a/ext/dload/list.go +++ b/ext/dload/list.go @@ -1,6 +1,6 @@ // Package dload implements functionality to download resources into AIS cluster from external source. /* - * Copyright (c) 2018-2022, NVIDIA CORPORATION. All rights reserved. + * Copyright (c) 2018-2025, NVIDIA CORPORATION. All rights reserved. */ package dload diff --git a/ext/dload/throttler.go b/ext/dload/throttler.go index 75e3436efe1..826d78cfe22 100644 --- a/ext/dload/throttler.go +++ b/ext/dload/throttler.go @@ -1,6 +1,6 @@ // Package dload implements functionality to download resources into AIS cluster from external source. /* - * Copyright (c) 2018-2022, NVIDIA CORPORATION. All rights reserved. + * Copyright (c) 2018-2025, NVIDIA CORPORATION. All rights reserved. */ package dload diff --git a/ext/dload/utils.go b/ext/dload/utils.go index 6f277d1db7d..e534c9be6da 100644 --- a/ext/dload/utils.go +++ b/ext/dload/utils.go @@ -1,6 +1,6 @@ // Package dload implements functionality to download resources into AIS cluster from external source. /* - * Copyright (c) 2018-2022, NVIDIA CORPORATION. All rights reserved. + * Copyright (c) 2018-2025, NVIDIA CORPORATION. All rights reserved. */ package dload diff --git a/ext/dload/xact.go b/ext/dload/xact.go index 5fbdb22ad69..8017045d0fb 100644 --- a/ext/dload/xact.go +++ b/ext/dload/xact.go @@ -1,6 +1,6 @@ // Package dload implements functionality to download resources into AIS cluster from external source. /* - * Copyright (c) 2018-2022, NVIDIA CORPORATION. All rights reserved. + * Copyright (c) 2018-2025, NVIDIA CORPORATION. All rights reserved. */ package dload diff --git a/ext/dsort/dsort_suite_test.go b/ext/dsort/dsort_suite_test.go index 1318a3e1a3c..e166d0baa3a 100644 --- a/ext/dsort/dsort_suite_test.go +++ b/ext/dsort/dsort_suite_test.go @@ -1,6 +1,6 @@ // Package dsort provides distributed massively parallel resharding for very large datasets. /* - * Copyright (c) 2018-2022, NVIDIA CORPORATION. All rights reserved. + * Copyright (c) 2018-2025, NVIDIA CORPORATION. All rights reserved. */ package dsort_test diff --git a/ext/etl/emd.go b/ext/etl/emd.go index 75e5d208c00..2b4e69c1a66 100644 --- a/ext/etl/emd.go +++ b/ext/etl/emd.go @@ -1,6 +1,6 @@ // Package etl provides utilities to initialize and use transformation pods. /* - * Copyright (c) 2021-2022, NVIDIA CORPORATION. All rights reserved. + * Copyright (c) 2021-2025, NVIDIA CORPORATION. All rights reserved. */ package etl diff --git a/ext/etl/runtime/all.go b/ext/etl/runtime/all.go index 65ba5168d4e..ca00cf054e4 100644 --- a/ext/etl/runtime/all.go +++ b/ext/etl/runtime/all.go @@ -1,6 +1,6 @@ // Package runtime provides skeletons and static specifications for building ETL from scratch. /* - * Copyright (c) 2018-2022, NVIDIA CORPORATION. All rights reserved. + * Copyright (c) 2018-2025, NVIDIA CORPORATION. All rights reserved. */ package runtime diff --git a/memsys/slab.go b/memsys/slab.go index 42615b05e3f..cef5742d757 100644 --- a/memsys/slab.go +++ b/memsys/slab.go @@ -1,7 +1,7 @@ // Package memsys provides memory management and slab/SGL allocation with io.Reader and io.Writer interfaces // on top of scatter-gather lists of reusable buffers. /* - * Copyright (c) 2018-2022, NVIDIA CORPORATION. All rights reserved. + * Copyright (c) 2018-2025, NVIDIA CORPORATION. All rights reserved. */ package memsys diff --git a/sys/mem_linux.go b/sys/mem_linux.go index 4b2464130ca..44ddc9c4bb1 100644 --- a/sys/mem_linux.go +++ b/sys/mem_linux.go @@ -1,6 +1,6 @@ // Package sys provides methods to read system information /* - * Copyright (c) 2018-2022, NVIDIA CORPORATION. All rights reserved. + * Copyright (c) 2018-2025, NVIDIA CORPORATION. All rights reserved. */ package sys diff --git a/xact/xreg/bucket.go b/xact/xreg/bucket.go index 5f7476ecdbc..e3233542900 100644 --- a/xact/xreg/bucket.go +++ b/xact/xreg/bucket.go @@ -1,6 +1,6 @@ // Package xreg provides registry and (renew, find) functions for AIS eXtended Actions (xactions). /* - * Copyright (c) 2018-2022, NVIDIA CORPORATION. All rights reserved. + * Copyright (c) 2018-2025, NVIDIA CORPORATION. All rights reserved. */ package xreg