]> git.apps.os.sepia.ceph.com Git - ceph-ci.git/commitdiff
rgw: rewrite rgw_admin help text
authorJosh Soref <2119212+jsoref@users.noreply.github.com>
Thu, 23 Jun 2022 08:11:09 +0000 (04:11 -0400)
committerJosh Soref <2119212+jsoref@users.noreply.github.com>
Mon, 27 Nov 2023 15:26:58 +0000 (10:26 -0500)
* The line wrapping was fairly random.
* There were cases where words appeared to be doubled.
  - In fact one was an argument
  - the other was the start of the help text.

Signed-off-by: Josh Soref <2119212+jsoref@users.noreply.github.com>
src/rgw/rgw_admin.cc
src/test/cli/radosgw-admin/help.t

index d44e66c700cd66663a60179d5e46b39c35c227d6..04d085daee594420a21636617a879aa61f6644b4 100644 (file)
@@ -131,379 +131,363 @@ void usage()
 {
   cout << "usage: radosgw-admin <cmd> [options...]" << std::endl;
   cout << "commands:\n";
-  cout << "  user create                create a new user\n" ;
-  cout << "  user modify                modify user\n";
-  cout << "  user info                  get user info\n";
-  cout << "  user rename                rename user\n";
-  cout << "  user rm                    remove user\n";
-  cout << "  user suspend               suspend a user\n";
-  cout << "  user enable                re-enable user after suspension\n";
-  cout << "  user check                 check user info\n";
-  cout << "  user stats                 show user stats as accounted by quota subsystem\n";
-  cout << "  user list                  list users\n";
-  cout << "  caps add                   add user capabilities\n";
-  cout << "  caps rm                    remove user capabilities\n";
-  cout << "  subuser create             create a new subuser\n" ;
-  cout << "  subuser modify             modify subuser\n";
-  cout << "  subuser rm                 remove subuser\n";
-  cout << "  key create                 create access key\n";
-  cout << "  key rm                     remove access key\n";
-  cout << "  bucket list                list buckets (specify --allow-unordered for\n";
-  cout << "                             faster, unsorted listing)\n";
-  cout << "  bucket limit check         show bucket sharding stats\n";
-  cout << "  bucket link                link bucket to specified user\n";
-  cout << "  bucket unlink              unlink bucket from specified user\n";
-  cout << "  bucket stats               returns bucket statistics\n";
-  cout << "  bucket rm                  remove bucket\n";
-  cout << "  bucket check               check bucket index by verifying size and object count stats\n";
-  cout << "  bucket check olh           check for olh index entries and objects that are pending removal\n";
-  cout << "  bucket check unlinked      check for object versions that are not visible in a bucket listing \n";
-  cout << "  bucket chown               link bucket to specified user and update its object ACLs\n";
-  cout << "  bucket reshard             reshard bucket\n";
-  cout << "  bucket rewrite             rewrite all objects in the specified bucket\n";
-  cout << "  bucket sync checkpoint     poll a bucket's sync status until it catches up to its remote\n";
-  cout << "  bucket sync disable        disable bucket sync\n";
-  cout << "  bucket sync enable         enable bucket sync\n";
-  cout << "  bucket radoslist           list rados objects backing bucket's objects\n";
-  cout << "  bi get                     retrieve bucket index object entries\n";
-  cout << "  bi put                     store bucket index object entries\n";
-  cout << "  bi list                    list raw bucket index entries\n";
-  cout << "  bi purge                   purge bucket index entries\n";
-  cout << "  object rm                  remove object\n";
-  cout << "  object put                 put object\n";
-  cout << "  object stat                stat an object for its metadata\n";
-  cout << "  object unlink              unlink object from bucket index\n";
-  cout << "  object rewrite             rewrite the specified object\n";
-  cout << "  object reindex             reindex the object(s) indicated by --bucket and either --object or --objects-file\n";
-  cout << "  objects expire             run expired objects cleanup\n";
-  cout << "  objects expire-stale list  list stale expired objects (caused by reshard)\n";
-  cout << "  objects expire-stale rm    remove stale expired objects\n";
-  cout << "  period rm                  remove a period\n";
-  cout << "  period get                 get period info\n";
-  cout << "  period get-current         get current period info\n";
-  cout << "  period pull                pull a period\n";
-  cout << "  period push                push a period\n";
-  cout << "  period list                list all periods\n";
-  cout << "  period update              update the staging period\n";
-  cout << "  period commit              commit the staging period\n";
-  cout << "  quota set                  set quota params\n";
-  cout << "  quota enable               enable quota\n";
-  cout << "  quota disable              disable quota\n";
-  cout << "  ratelimit get              get ratelimit params\n";
-  cout << "  ratelimit set              set ratelimit params\n";
-  cout << "  ratelimit enable           enable ratelimit\n";
-  cout << "  ratelimit disable          disable ratelimit\n";
-  cout << "  global quota get           view global quota params\n";
-  cout << "  global quota set           set global quota params\n";
-  cout << "  global quota enable        enable a global quota\n";
-  cout << "  global quota disable       disable a global quota\n";
-  cout << "  global ratelimit get       view global ratelimit params\n";
-  cout << "  global ratelimit set       set global ratelimit params\n";
-  cout << "  global ratelimit enable    enable a ratelimit quota\n";
-  cout << "  global ratelimit disable   disable a ratelimit quota\n";
-  cout << "  realm create               create a new realm\n";
-  cout << "  realm rm                   remove a realm\n";
-  cout << "  realm get                  show realm info\n";
-  cout << "  realm get-default          get default realm name\n";
-  cout << "  realm list                 list realms\n";
-  cout << "  realm list-periods         list all realm periods\n";
-  cout << "  realm rename               rename a realm\n";
-  cout << "  realm set                  set realm info (requires infile)\n";
-  cout << "  realm default              set realm as default\n";
-  cout << "  realm pull                 pull a realm and its current period\n";
-  cout << "  zonegroup add              add a zone to a zonegroup\n";
-  cout << "  zonegroup create           create a new zone group info\n";
-  cout << "  zonegroup default          set default zone group\n";
-  cout << "  zonegroup delete           delete a zone group info\n";
-  cout << "  zonegroup get              show zone group info\n";
-  cout << "  zonegroup modify           modify an existing zonegroup\n";
-  cout << "  zonegroup set              set zone group info (requires infile)\n";
-  cout << "  zonegroup rm               remove a zone from a zonegroup\n";
-  cout << "  zonegroup rename           rename a zone group\n";
-  cout << "  zonegroup list             list all zone groups set on this cluster\n";
-  cout << "  zonegroup placement list   list zonegroup's placement targets\n";
-  cout << "  zonegroup placement get    get a placement target of a specific zonegroup\n";
-  cout << "  zonegroup placement add    add a placement target id to a zonegroup\n";
-  cout << "  zonegroup placement modify modify a placement target of a specific zonegroup\n";
-  cout << "  zonegroup placement rm     remove a placement target from a zonegroup\n";
-  cout << "  zonegroup placement default  set a zonegroup's default placement target\n";
-  cout << "  zone create                create a new zone\n";
-  cout << "  zone rm                    remove a zone\n";
-  cout << "  zone get                   show zone cluster params\n";
-  cout << "  zone modify                modify an existing zone\n";
-  cout << "  zone set                   set zone cluster params (requires infile)\n";
-  cout << "  zone list                  list all zones set on this cluster\n";
-  cout << "  zone rename                rename a zone\n";
-  cout << "  zone placement list        list zone's placement targets\n";
-  cout << "  zone placement get         get a zone placement target\n";
-  cout << "  zone placement add         add a zone placement target\n";
-  cout << "  zone placement modify      modify a zone placement target\n";
-  cout << "  zone placement rm          remove a zone placement target\n";
-  cout << "  metadata sync status       get metadata sync status\n";
-  cout << "  metadata sync init         init metadata sync\n";
-  cout << "  metadata sync run          run metadata sync\n";
-  cout << "  data sync status           get data sync status of the specified source zone\n";
-  cout << "  data sync init             init data sync for the specified source zone\n";
-  cout << "  data sync run              run data sync for the specified source zone\n";
-  cout << "  pool add                   add an existing pool for data placement\n";
-  cout << "  pool rm                    remove an existing pool from data placement set\n";
-  cout << "  pools list                 list placement active set\n";
-  cout << "  policy                     read bucket/object policy\n";
-  cout << "  log list                   list log objects\n";
-  cout << "  log show                   dump a log from specific object or (bucket + date\n";
-  cout << "                             + bucket-id)\n";
-  cout << "                             (NOTE: required to specify formatting of date\n";
-  cout << "                             to \"YYYY-MM-DD-hh\")\n";
-  cout << "  log rm                     remove log object\n";
-  cout << "  usage show                 show usage (by user, by bucket, date range)\n";
-  cout << "  usage trim                 trim usage (by user, by bucket, date range)\n";
-  cout << "  usage clear                reset all the usage stats for the cluster\n";
-  cout << "  gc list                    dump expired garbage collection objects (specify\n";
-  cout << "                             --include-all to list all entries, including unexpired)\n";
-  cout << "  gc process                 manually process garbage (specify\n";
-  cout << "                             --include-all to process all entries, including unexpired)\n";
-  cout << "  lc list                    list all bucket lifecycle progress\n";
-  cout << "  lc get                     get a lifecycle bucket configuration\n";
-  cout << "  lc process                 manually process lifecycle\n";
-  cout << "  lc reshard fix             fix LC for a resharded bucket\n";
-  cout << "  metadata get               get metadata info\n";
-  cout << "  metadata put               put metadata info\n";
-  cout << "  metadata rm                remove metadata info\n";
-  cout << "  metadata list              list metadata info\n";
-  cout << "  mdlog list                 list metadata log\n";
-  cout << "  mdlog autotrim             auto trim metadata log\n";
-  cout << "  mdlog trim                 trim metadata log (use marker)\n";
-  cout << "  mdlog status               read metadata log status\n";
-  cout << "  bilog list                 list bucket index log\n";
-  cout << "  bilog trim                 trim bucket index log (use start-marker, end-marker)\n";
-  cout << "  bilog status               read bucket index log status\n";
-  cout << "  bilog autotrim             auto trim bucket index log\n";
-  cout << "  datalog list               list data log\n";
-  cout << "  datalog trim               trim data log\n";
-  cout << "  datalog status             read data log status\n";
-  cout << "  datalog type               change datalog type to --log_type={fifo,omap}\n";
-  cout << "  orphans find               deprecated -- init and run search for leaked rados objects (use job-id, pool)\n";
-  cout << "  orphans finish             deprecated -- clean up search for leaked rados objects\n";
-  cout << "  orphans list-jobs          deprecated -- list the current job-ids for orphans search\n";
-  cout << "                           * the three 'orphans' sub-commands are now deprecated; consider using the `rgw-orphan-list` tool\n";
-  cout << "  role create                create a AWS role for use with STS\n";
-  cout << "  role delete                remove a role\n";
-  cout << "  role get                   get a role\n";
-  cout << "  role list                  list roles with specified path prefix\n";
-  cout << "  role-trust-policy modify   modify the assume role policy of an existing role\n";
-  cout << "  role-policy put            add/update permission policy to role\n";
-  cout << "  role-policy list           list policies attached to a role\n";
-  cout << "  role-policy get            get the specified inline policy document embedded with the given role\n";
-  cout << "  role-policy delete         remove policy attached to a role\n";
-  cout << "  role update                update max_session_duration of a role\n";
-  cout << "  reshard add                schedule a resharding of a bucket\n";
-  cout << "  reshard list               list all bucket resharding or scheduled to be resharded\n";
-  cout << "  reshard status             read bucket resharding status\n";
-  cout << "  reshard process            process of scheduled reshard jobs\n";
-  cout << "  reshard cancel             cancel resharding a bucket\n";
-  cout << "  reshard stale-instances list list stale-instances from bucket resharding\n";
+  cout << "  user create                      create a new user\n" ;
+  cout << "  user modify                      modify user\n";
+  cout << "  user info                        get user info\n";
+  cout << "  user rename                      rename user\n";
+  cout << "  user rm                          remove user\n";
+  cout << "  user suspend                     suspend a user\n";
+  cout << "  user enable                      re-enable user after suspension\n";
+  cout << "  user check                       check user info\n";
+  cout << "  user stats                       show user stats as accounted by quota subsystem\n";
+  cout << "  user list                        list users\n";
+  cout << "  caps add                         add user capabilities\n";
+  cout << "  caps rm                          remove user capabilities\n";
+  cout << "  subuser create                   create a new subuser\n" ;
+  cout << "  subuser modify                   modify subuser\n";
+  cout << "  subuser rm                       remove subuser\n";
+  cout << "  key create                       create access key\n";
+  cout << "  key rm                           remove access key\n";
+  cout << "  bucket list                      list buckets (specify --allow-unordered for faster, unsorted listing)\n";
+  cout << "  bucket limit check               show bucket sharding stats\n";
+  cout << "  bucket link                      link bucket to specified user\n";
+  cout << "  bucket unlink                    unlink bucket from specified user\n";
+  cout << "  bucket stats                     returns bucket statistics\n";
+  cout << "  bucket rm                        remove bucket\n";
+  cout << "  bucket check                     check bucket index by verifying size and object count stats\n";
+  cout << "  bucket check olh                 check for olh index entries and objects that are pending removal\n";
+  cout << "  bucket check unlinked            check for object versions that are not visible in a bucket listing \n";
+  cout << "  bucket chown                     link bucket to specified user and update its object ACLs\n";
+  cout << "  bucket reshard                   reshard bucket\n";
+  cout << "  bucket rewrite                   rewrite all objects in the specified bucket\n";
+  cout << "  bucket sync checkpoint           poll a bucket's sync status until it catches up to its remote\n";
+  cout << "  bucket sync disable              disable bucket sync\n";
+  cout << "  bucket sync enable               enable bucket sync\n";
+  cout << "  bucket radoslist                 list rados objects backing bucket's objects\n";
+  cout << "  bi get                           retrieve bucket index object entries\n";
+  cout << "  bi put                           store bucket index object entries\n";
+  cout << "  bi list                          list raw bucket index entries\n";
+  cout << "  bi purge                         purge bucket index entries\n";
+  cout << "  object rm                        remove object\n";
+  cout << "  object put                       put object\n";
+  cout << "  object stat                      stat an object for its metadata\n";
+  cout << "  object unlink                    unlink object from bucket index\n";
+  cout << "  object rewrite                   rewrite the specified object\n";
+  cout << "  object reindex                   reindex the object(s) indicated by --bucket and either --object or --objects-file\n";
+  cout << "  objects expire                   run expired objects cleanup\n";
+  cout << "  objects expire-stale list        list stale expired objects (caused by reshard)\n";
+  cout << "  objects expire-stale rm          remove stale expired objects\n";
+  cout << "  period rm                        remove a period\n";
+  cout << "  period get                       get period info\n";
+  cout << "  period get-current               get current period info\n";
+  cout << "  period pull                      pull a period\n";
+  cout << "  period push                      push a period\n";
+  cout << "  period list                      list all periods\n";
+  cout << "  period update                    update the staging period\n";
+  cout << "  period commit                    commit the staging period\n";
+  cout << "  quota set                        set quota params\n";
+  cout << "  quota enable                     enable quota\n";
+  cout << "  quota disable                    disable quota\n";
+  cout << "  ratelimit get                    get ratelimit params\n";
+  cout << "  ratelimit set                    set ratelimit params\n";
+  cout << "  ratelimit enable                 enable ratelimit\n";
+  cout << "  ratelimit disable                disable ratelimit\n";
+  cout << "  global quota get                 view global quota params\n";
+  cout << "  global quota set                 set global quota params\n";
+  cout << "  global quota enable              enable a global quota\n";
+  cout << "  global quota disable             disable a global quota\n";
+  cout << "  global ratelimit get             view global ratelimit params\n";
+  cout << "  global ratelimit set             set global ratelimit params\n";
+  cout << "  global ratelimit enable          enable a ratelimit quota\n";
+  cout << "  global ratelimit disable         disable a ratelimit quota\n";
+  cout << "  realm create                     create a new realm\n";
+  cout << "  realm rm                         remove a realm\n";
+  cout << "  realm get                        show realm info\n";
+  cout << "  realm get-default                get default realm name\n";
+  cout << "  realm list                       list realms\n";
+  cout << "  realm list-periods               list all realm periods\n";
+  cout << "  realm rename                     rename a realm\n";
+  cout << "  realm set                        set realm info (requires infile)\n";
+  cout << "  realm default                    set realm as default\n";
+  cout << "  realm pull                       pull a realm and its current period\n";
+  cout << "  zonegroup add                    add a zone to a zonegroup\n";
+  cout << "  zonegroup create                 create a new zone group info\n";
+  cout << "  zonegroup default                set default zone group\n";
+  cout << "  zonegroup delete                 delete a zone group info\n";
+  cout << "  zonegroup get                    show zone group info\n";
+  cout << "  zonegroup modify                 modify an existing zonegroup\n";
+  cout << "  zonegroup set                    set zone group info (requires infile)\n";
+  cout << "  zonegroup rm                     remove a zone from a zonegroup\n";
+  cout << "  zonegroup rename                 rename a zone group\n";
+  cout << "  zonegroup list                   list all zone groups set on this cluster\n";
+  cout << "  zonegroup placement list         list zonegroup's placement targets\n";
+  cout << "  zonegroup placement get          get a placement target of a specific zonegroup\n";
+  cout << "  zonegroup placement add          add a placement target id to a zonegroup\n";
+  cout << "  zonegroup placement modify       modify a placement target of a specific zonegroup\n";
+  cout << "  zonegroup placement rm           remove a placement target from a zonegroup\n";
+  cout << "  zonegroup placement default      set a zonegroup's default placement target\n";
+  cout << "  zone create                      create a new zone\n";
+  cout << "  zone rm                          remove a zone\n";
+  cout << "  zone get                         show zone cluster params\n";
+  cout << "  zone modify                      modify an existing zone\n";
+  cout << "  zone set                         set zone cluster params (requires infile)\n";
+  cout << "  zone list                        list all zones set on this cluster\n";
+  cout << "  zone rename                      rename a zone\n";
+  cout << "  zone placement list              list zone's placement targets\n";
+  cout << "  zone placement get               get a zone placement target\n";
+  cout << "  zone placement add               add a zone placement target\n";
+  cout << "  zone placement modify            modify a zone placement target\n";
+  cout << "  zone placement rm                remove a zone placement target\n";
+  cout << "  metadata sync status             get metadata sync status\n";
+  cout << "  metadata sync init               init metadata sync\n";
+  cout << "  metadata sync run                run metadata sync\n";
+  cout << "  data sync status                 get data sync status of the specified source zone\n";
+  cout << "  data sync init                   init data sync for the specified source zone\n";
+  cout << "  data sync run                    run data sync for the specified source zone\n";
+  cout << "  pool add                         add an existing pool for data placement\n";
+  cout << "  pool rm                          remove an existing pool from data placement set\n";
+  cout << "  pools list                       list placement active set\n";
+  cout << "  policy                           read bucket/object policy\n";
+  cout << "  log list                         list log objects\n";
+  cout << "  log show                         dump a log from specific object or (bucket + date + bucket-id)\n";
+  cout << "                                   (NOTE: required to specify formatting of date to \"YYYY-MM-DD-hh\")\n";
+  cout << "  log rm                           remove log object\n";
+  cout << "  usage show                       show usage (by user, by bucket, date range)\n";
+  cout << "  usage trim                       trim usage (by user, by bucket, date range)\n";
+  cout << "  usage clear                      reset all the usage stats for the cluster\n";
+  cout << "  gc list                          dump expired garbage collection objects (specify\n";
+  cout << "                                   --include-all to list all entries, including unexpired)\n";
+  cout << "  gc process                       manually process garbage (specify\n";
+  cout << "                                   --include-all to process all entries, including unexpired)\n";
+  cout << "  lc list                          list all bucket lifecycle progress\n";
+  cout << "  lc get                           get a lifecycle bucket configuration\n";
+  cout << "  lc process                       manually process lifecycle\n";
+  cout << "  lc reshard fix                   fix LC for a resharded bucket\n";
+  cout << "  metadata get                     get metadata info\n";
+  cout << "  metadata put                     put metadata info\n";
+  cout << "  metadata rm                      remove metadata info\n";
+  cout << "  metadata list                    list metadata info\n";
+  cout << "  mdlog list                       list metadata log\n";
+  cout << "  mdlog autotrim                   auto trim metadata log\n";
+  cout << "  mdlog trim                       trim metadata log (use marker)\n";
+  cout << "  mdlog status                     read metadata log status\n";
+  cout << "  bilog list                       list bucket index log\n";
+  cout << "  bilog trim                       trim bucket index log (use start-marker, end-marker)\n";
+  cout << "  bilog status                     read bucket index log status\n";
+  cout << "  bilog autotrim                   auto trim bucket index log\n";
+  cout << "  datalog list                     list data log\n";
+  cout << "  datalog trim                     trim data log\n";
+  cout << "  datalog status                   read data log status\n";
+  cout << "  datalog type                     change datalog type to --log_type={fifo,omap}\n";
+  cout << "  orphans find                     deprecated -- init and run search for leaked rados objects (use job-id, pool)\n";
+  cout << "  orphans finish                   deprecated -- clean up search for leaked rados objects\n";
+  cout << "  orphans list-jobs                deprecated -- list the current job-ids for orphans search\n";
+  cout << "    * the three 'orphans' sub-commands are now deprecated; consider using the `rgw-orphan-list` tool\n";
+  cout << "  role create                      create a AWS role for use with STS\n";
+  cout << "  role delete                      remove a role\n";
+  cout << "  role get                         get a role\n";
+  cout << "  role list                        list roles with specified path prefix\n";
+  cout << "  role-trust-policy modify         modify the assume role policy of an existing role\n";
+  cout << "  role-policy put                  add/update permission policy to role\n";
+  cout << "  role-policy list                 list policies attached to a role\n";
+  cout << "  role-policy get                  get the specified inline policy document embedded with the given role\n";
+  cout << "  role-policy delete               remove policy attached to a role\n";
+  cout << "  role update                      update max_session_duration of a role\n";
+  cout << "  reshard add                      schedule a resharding of a bucket\n";
+  cout << "  reshard list                     list all bucket resharding or scheduled to be resharded\n";
+  cout << "  reshard status                   read bucket resharding status\n";
+  cout << "  reshard process                  process of scheduled reshard jobs\n";
+  cout << "  reshard cancel                   cancel resharding a bucket\n";
+  cout << "  reshard stale-instances list     list stale-instances from bucket resharding\n";
   cout << "  reshard stale-instances delete   cleanup stale-instances from bucket resharding\n";
-  cout << "  sync error list            list sync error\n";
-  cout << "  sync error trim            trim sync error\n";
-  cout << "  mfa create                 create a new MFA TOTP token\n";
-  cout << "  mfa list                   list MFA TOTP tokens\n";
-  cout << "  mfa get                    show MFA TOTP token\n";
-  cout << "  mfa remove                 delete MFA TOTP token\n";
-  cout << "  mfa check                  check MFA TOTP token\n";
-  cout << "  mfa resync                 re-sync MFA TOTP token\n";
-  cout << "  topic list                 list bucket notifications topics\n";
-  cout << "  topic get                  get a bucket notifications topic\n";
-  cout << "  topic rm                   remove a bucket notifications topic\n";
-  cout << "  topic stats                get a bucket notifications persistent topic stats (i.e. reservations, entries & size)\n";
-  cout << "  script put                 upload a Lua script to a context\n";
-  cout << "  script get                 get the Lua script of a context\n";
-  cout << "  script rm                  remove the Lua scripts of a context\n";
-  cout << "  script-package add         add a Lua package to the scripts allowlist\n";
-  cout << "  script-package rm          remove a Lua package from the scripts allowlist\n";
-  cout << "  script-package list        get the Lua packages allowlist\n";
-  cout << "  script-package reload      install/remove Lua packages according to allowlist\n";
-  cout << "  notification list          list bucket notifications configuration\n";
-  cout << "  notification get           get a bucket notifications configuration\n";
-  cout << "  notification rm            remove a bucket notifications configuration\n";
+  cout << "  sync error list                  list sync error\n";
+  cout << "  sync error trim                  trim sync error\n";
+  cout << "  mfa create                       create a new MFA TOTP token\n";
+  cout << "  mfa list                         list MFA TOTP tokens\n";
+  cout << "  mfa get                          show MFA TOTP token\n";
+  cout << "  mfa remove                       delete MFA TOTP token\n";
+  cout << "  mfa check                        check MFA TOTP token\n";
+  cout << "  mfa resync                       re-sync MFA TOTP token\n";
+  cout << "  topic list                       list bucket notifications topics\n";
+  cout << "  topic get                        get a bucket notifications topic\n";
+  cout << "  topic rm                         remove a bucket notifications topic\n";
+  cout << "  topic stats                      get a bucket notifications persistent topic stats (i.e. reservations, entries & size)\n";
+  cout << "  script put                       upload a Lua script to a context\n";
+  cout << "  script get                       get the Lua script of a context\n";
+  cout << "  script rm                        remove the Lua scripts of a context\n";
+  cout << "  script-package add               add a Lua package to the scripts allowlist\n";
+  cout << "  script-package rm                remove a Lua package from the scripts allowlist\n";
+  cout << "  script-package list              get the Lua packages allowlist\n";
+  cout << "  script-package reload            install/remove Lua packages according to allowlist\n";
+  cout << "  notification list                list bucket notifications configuration\n";
+  cout << "  notification get                 get a bucket notifications configuration\n";
+  cout << "  notification rm                  remove a bucket notifications configuration\n";
   cout << "options:\n";
-  cout << "   --tenant=<tenant>         tenant name\n";
-  cout << "   --user_ns=<namespace>     namespace of user (oidc in case of users authenticated with oidc provider)\n";
-  cout << "   --uid=<id>                user id\n";
-  cout << "   --new-uid=<id>            new user id\n";
-  cout << "   --subuser=<name>          subuser name\n";
-  cout << "   --access-key=<key>        S3 access key\n";
-  cout << "   --email=<email>           user's email address\n";
-  cout << "   --secret/--secret-key=<key>\n";
-  cout << "                             specify secret key\n";
-  cout << "   --gen-access-key          generate random access key (for S3)\n";
-  cout << "   --gen-secret              generate random secret key\n";
-  cout << "   --key-type=<type>         key type, options are: swift, s3\n";
-  cout << "   --temp-url-key[-2]=<key>  temp url key\n";
-  cout << "   --access=<access>         Set access permissions for sub-user, should be one\n";
-  cout << "                             of read, write, readwrite, full\n";
-  cout << "   --display-name=<name>     user's display name\n";
-  cout << "   --max-buckets             max number of buckets for a user\n";
-  cout << "   --admin                   set the admin flag on the user\n";
-  cout << "   --system                  set the system flag on the user\n";
-  cout << "   --op-mask                 set the op mask on the user\n";
-  cout << "   --bucket=<bucket>         Specify the bucket name. Also used by the quota command.\n";
-  cout << "   --pool=<pool>             Specify the pool name. Also used to scan for leaked rados objects.\n";
-  cout << "   --object=<object>         object name\n";
-  cout << "   --objects-file=<file>     file containing a list of object names to process\n";
-  cout << "   --object-version=<version>         object version\n";
-  cout << "   --date=<date>             date in the format yyyy-mm-dd\n";
-  cout << "   --start-date=<date>       start date in the format yyyy-mm-dd\n";
-  cout << "   --end-date=<date>         end date in the format yyyy-mm-dd\n";
-  cout << "   --bucket-id=<bucket-id>   bucket id\n";
-  cout << "   --bucket-new-name=<bucket>\n";
-  cout << "                             for bucket link: optional new name\n";
-  cout << "   --shard-id=<shard-id>     optional for: \n";
-  cout << "                               mdlog list\n";
-  cout << "                               data sync status\n";
-  cout << "                             required for: \n";
-  cout << "                               mdlog trim\n";
-  cout << "   --gen=<gen-id>            optional for: \n";
-  cout << "                               bilog list\n";
-  cout << "                               bilog trim\n";
-  cout << "                               bilog status\n";
-  cout << "   --max-entries=<entries>   max entries for listing operations\n";
-  cout << "   --metadata-key=<key>      key to retrieve metadata from with metadata get\n";
-  cout << "   --remote=<remote>         zone or zonegroup id of remote gateway\n";
-  cout << "   --period=<id>             period id\n";
-  cout << "   --url=<url>               url for pushing/pulling period/realm\n";
-  cout << "   --epoch=<number>          period epoch\n";
-  cout << "   --commit                  commit the period during 'period update'\n";
-  cout << "   --staging                 get staging period info\n";
-  cout << "   --master                  set as master\n";
-  cout << "   --master-zone=<id>        master zone id\n";
-  cout << "   --rgw-realm=<name>        realm name\n";
-  cout << "   --realm-id=<id>           realm id\n";
-  cout << "   --realm-new-name=<name>   realm new name\n";
-  cout << "   --rgw-zonegroup=<name>    zonegroup name\n";
-  cout << "   --zonegroup-id=<id>       zonegroup id\n";
-  cout << "   --zonegroup-new-name=<name>\n";
-  cout << "                             zonegroup new name\n";
-  cout << "   --rgw-zone=<name>         name of zone in which radosgw is running\n";
-  cout << "   --zone-id=<id>            zone id\n";
-  cout << "   --zone-new-name=<name>    zone new name\n";
-  cout << "   --source-zone             specify the source zone (for data sync)\n";
-  cout << "   --default                 set entity (realm, zonegroup, zone) as default\n";
-  cout << "   --read-only               set zone as read-only (when adding to zonegroup)\n";
-  cout << "   --redirect-zone           specify zone id to redirect when response is 404 (not found)\n";
-  cout << "   --placement-id            placement id for zonegroup placement commands\n";
-  cout << "   --storage-class           storage class for zonegroup placement commands\n";
-  cout << "   --tags=<list>             list of tags for zonegroup placement add and modify commands\n";
-  cout << "   --tags-add=<list>         list of tags to add for zonegroup placement modify command\n";
-  cout << "   --tags-rm=<list>          list of tags to remove for zonegroup placement modify command\n";
-  cout << "   --endpoints=<list>        zone endpoints\n";
-  cout << "   --index-pool=<pool>       placement target index pool\n";
-  cout << "   --data-pool=<pool>        placement target data pool\n";
-  cout << "   --data-extra-pool=<pool>  placement target data extra (non-ec) pool\n";
-  cout << "   --placement-index-type=<type>\n";
-  cout << "                             placement target index type (normal, indexless, or #id)\n";
-  cout << "   --placement-inline-data=<true>\n";
-  cout << "                             set whether the placement target is configured to store a data\n";
-  cout << "                             chunk inline in head objects\n";
-  cout << "   --compression=<type>      placement target compression type (plugin name or empty/none)\n";
-  cout << "   --tier-type=<type>        zone tier type\n";
-  cout << "   --tier-config=<k>=<v>[,...]\n";
-  cout << "                             set zone tier config keys, values\n";
-  cout << "   --tier-config-rm=<k>[,...]\n";
-  cout << "                             unset zone tier config keys\n";
-  cout << "   --sync-from-all[=false]   set/reset whether zone syncs from all zonegroup peers\n";
-  cout << "   --sync-from=[zone-name][,...]\n";
-  cout << "                             set list of zones to sync from\n";
-  cout << "   --sync-from-rm=[zone-name][,...]\n";
-  cout << "                             remove zones from list of zones to sync from\n";
-  cout << "   --bucket-index-max-shards override a zone/zonegroup's default bucket index shard count\n";
-  cout << "   --fix                     besides checking bucket index, will also fix it\n";
-  cout << "   --check-objects           bucket check: rebuilds bucket index according to\n";
-  cout << "                             actual objects state\n";
-  cout << "   --format=<format>         specify output format for certain operations: xml,\n";
-  cout << "                             json\n";
-  cout << "   --purge-data              when specified, user removal will also purge all the\n";
-  cout << "                             user data\n";
-  cout << "   --purge-keys              when specified, subuser removal will also purge all the\n";
-  cout << "                             subuser keys\n";
-  cout << "   --purge-objects           remove a bucket's objects before deleting it\n";
-  cout << "                             (NOTE: required to delete a non-empty bucket)\n";
-  cout << "   --sync-stats              option to 'user stats', update user stats with current\n";
-  cout << "                             stats reported by user's buckets indexes\n";
-  cout << "   --reset-stats             option to 'user stats', reset stats in accordance with user buckets\n";
-  cout << "   --show-config             show configuration\n";
-  cout << "   --show-log-entries=<flag> enable/disable dump of log entries on log show\n";
-  cout << "   --show-log-sum=<flag>     enable/disable dump of log summation on log show\n";
-  cout << "   --skip-zero-entries       log show only dumps entries that don't have zero value\n";
-  cout << "                             in one of the numeric field\n";
-  cout << "   --infile=<file>           file to read in when setting data\n";
-  cout << "   --categories=<list>       comma separated list of categories, used in usage show\n";
-  cout << "   --caps=<caps>             list of caps (e.g., \"usage=read, write; user=read\")\n";
-  cout << "   --op-mask=<op-mask>       permission of user's operations (e.g., \"read, write, delete, *\")\n";
-  cout << "   --yes-i-really-mean-it    required for certain operations\n";
-  cout << "   --warnings-only           when specified with bucket limit check, list\n";
-  cout << "                             only buckets nearing or over the current max\n";
-  cout << "                             objects per shard value\n";
-  cout << "   --bypass-gc               when specified with bucket deletion, triggers\n";
-  cout << "                             object deletions by not involving GC\n";
-  cout << "   --inconsistent-index      when specified with bucket deletion and bypass-gc set to true,\n";
-  cout << "                             ignores bucket index consistency\n";
-  cout << "   --min-rewrite-size        min object size for bucket rewrite (default 4M)\n";
-  cout << "   --max-rewrite-size        max object size for bucket rewrite (default ULLONG_MAX)\n";
-  cout << "   --min-rewrite-stripe-size min stripe size for object rewrite (default 0)\n";
-  cout << "   --trim-delay-ms           time interval in msec to limit the frequency of sync error log entries trimming operations,\n";
-  cout << "                             the trimming process will sleep the specified msec for every 1000 entries trimmed\n";
-  cout << "   --max-concurrent-ios      maximum concurrent ios for bucket operations (default: 32)\n";
-  cout << "   --enable-feature          enable a zone/zonegroup feature\n";
-  cout << "   --disable-feature         disable a zone/zonegroup feature\n";
+  cout << "   --tenant=<tenant>                 tenant name\n";
+  cout << "   --user_ns=<namespace>             namespace of user (oidc in case of users authenticated with oidc provider)\n";
+  cout << "   --uid=<id>                        user id\n";
+  cout << "   --new-uid=<id>                    new user id\n";
+  cout << "   --subuser=<name>                  subuser name\n";
+  cout << "   --access-key=<key>                S3 access key\n";
+  cout << "   --email=<email>                   user's email address\n";
+  cout << "   --secret/--secret-key=<key>       specify secret key\n";
+  cout << "   --gen-access-key                  generate random access key (for S3)\n";
+  cout << "   --gen-secret                      generate random secret key\n";
+  cout << "   --key-type=<type>                 key type, options are: swift, s3\n";
+  cout << "   --temp-url-key[-2]=<key>          temp url key\n";
+  cout << "   --access=<access>                 Set access permissions for sub-user, should be one\n";
+  cout << "                                     of read, write, readwrite, full\n";
+  cout << "   --display-name=<name>             user's display name\n";
+  cout << "   --max-buckets                     max number of buckets for a user\n";
+  cout << "   --admin                           set the admin flag on the user\n";
+  cout << "   --system                          set the system flag on the user\n";
+  cout << "   --op-mask                         set the op mask on the user\n";
+  cout << "   --bucket=<bucket>                 Specify the bucket name. Also used by the quota command.\n";
+  cout << "   --pool=<pool>                     Specify the pool name. Also used to scan for leaked rados objects.\n";
+  cout << "   --object=<object>                 object name\n";
+  cout << "   --objects-file=<file>             file containing a list of object names to process\n";
+  cout << "   --object-version=<version>        object version\n";
+  cout << "   --date=<date>                     date in the format yyyy-mm-dd\n";
+  cout << "   --start-date=<date>               start date in the format yyyy-mm-dd\n";
+  cout << "   --end-date=<date>                 end date in the format yyyy-mm-dd\n";
+  cout << "   --bucket-id=<bucket-id>           bucket id\n";
+  cout << "   --bucket-new-name=<bucket>        for bucket link: optional new name\n";
+  cout << "   --shard-id=<shard-id>             optional for:\n";
+  cout << "                                       mdlog list\n";
+  cout << "                                       data sync status\n";
+  cout << "                                     required for:\n";
+  cout << "                                       mdlog trim\n";
+  cout << "   --gen=<gen-id>                    optional for:\n";
+  cout << "                                       bilog list\n";
+  cout << "                                       bilog trim\n";
+  cout << "                                       bilog status\n";
+  cout << "   --max-entries=<entries>           max entries for listing operations\n";
+  cout << "   --metadata-key=<key>              key to retrieve metadata from with metadata get\n";
+  cout << "   --remote=<remote>                 zone or zonegroup id of remote gateway\n";
+  cout << "   --period=<id>                     period id\n";
+  cout << "   --url=<url>                       url for pushing/pulling period/realm\n";
+  cout << "   --epoch=<number>                  period epoch\n";
+  cout << "   --commit                          commit the period during 'period update'\n";
+  cout << "   --staging                         get staging period info\n";
+  cout << "   --master                          set as master\n";
+  cout << "   --master-zone=<id>                master zone id\n";
+  cout << "   --rgw-realm=<name>                realm name\n";
+  cout << "   --realm-id=<id>                   realm id\n";
+  cout << "   --realm-new-name=<name>           realm new name\n";
+  cout << "   --rgw-zonegroup=<name>            zonegroup name\n";
+  cout << "   --zonegroup-id=<id>               zonegroup id\n";
+  cout << "   --zonegroup-new-name=<name>       zonegroup new name\n";
+  cout << "   --rgw-zone=<name>                 name of zone in which radosgw is running\n";
+  cout << "   --zone-id=<id>                    zone id\n";
+  cout << "   --zone-new-name=<name>            zone new name\n";
+  cout << "   --source-zone                     specify the source zone (for data sync)\n";
+  cout << "   --default                         set entity (realm, zonegroup, zone) as default\n";
+  cout << "   --read-only                       set zone as read-only (when adding to zonegroup)\n";
+  cout << "   --redirect-zone                   specify zone id to redirect when response is 404 (not found)\n";
+  cout << "   --placement-id                    placement id for zonegroup placement commands\n";
+  cout << "   --storage-class                   storage class for zonegroup placement commands\n";
+  cout << "   --tags=<list>                     list of tags for zonegroup placement add and modify commands\n";
+  cout << "   --tags-add=<list>                 list of tags to add for zonegroup placement modify command\n";
+  cout << "   --tags-rm=<list>                  list of tags to remove for zonegroup placement modify command\n";
+  cout << "   --endpoints=<list>                zone endpoints\n";
+  cout << "   --index-pool=<pool>               placement target index pool\n";
+  cout << "   --data-pool=<pool>                placement target data pool\n";
+  cout << "   --data-extra-pool=<pool>          placement target data extra (non-ec) pool\n";
+  cout << "   --placement-index-type=<type>     placement target index type (normal, indexless, or #id)\n";
+  cout << "   --placement-inline-data=<true>    set whether the placement target is configured to store a data\n";
+  cout << "                                     chunk inline in head objects\n";
+  cout << "   --compression=<type>              placement target compression type (plugin name or empty/none)\n";
+  cout << "   --tier-type=<type>                zone tier type\n";
+  cout << "   --tier-config=<k>=<v>[,...]       set zone tier config keys, values\n";
+  cout << "   --tier-config-rm=<k>[,...]        unset zone tier config keys\n";
+  cout << "   --sync-from-all[=false]           set/reset whether zone syncs from all zonegroup peers\n";
+  cout << "   --sync-from=[zone-name][,...]     set list of zones to sync from\n";
+  cout << "   --sync-from-rm=[zone-name][,...]  remove zones from list of zones to sync from\n";
+  cout << "   --bucket-index-max-shards         override a zone/zonegroup's default bucket index shard count\n";
+  cout << "   --fix                             besides checking bucket index, will also fix it\n";
+  cout << "   --check-objects                   bucket check: rebuilds bucket index according to actual objects state\n";
+  cout << "   --format=<format>                 specify output format for certain operations: xml, json\n";
+  cout << "   --purge-data                      when specified, user removal will also purge all the\n";
+  cout << "                                     user data\n";
+  cout << "   --purge-keys                      when specified, subuser removal will also purge all the\n";
+  cout << "                                     subuser keys\n";
+  cout << "   --purge-objects                   remove a bucket's objects before deleting it\n";
+  cout << "                                     (NOTE: required to delete a non-empty bucket)\n";
+  cout << "   --sync-stats                      option to 'user stats', update user stats with current\n";
+  cout << "                                     stats reported by user's buckets indexes\n";
+  cout << "   --reset-stats                     option to 'user stats', reset stats in accordance with user buckets\n";
+  cout << "   --show-config                     show configuration\n";
+  cout << "   --show-log-entries=<flag>         enable/disable dump of log entries on log show\n";
+  cout << "   --show-log-sum=<flag>             enable/disable dump of log summation on log show\n";
+  cout << "   --skip-zero-entries               log show only dumps entries that don't have zero value\n";
+  cout << "                                     in one of the numeric field\n";
+  cout << "   --infile=<file>                   file to read in when setting data\n";
+  cout << "   --categories=<list>               comma separated list of categories, used in usage show\n";
+  cout << "   --caps=<caps>                     list of caps (e.g., \"usage=read, write; user=read\")\n";
+  cout << "   --op-mask=<op-mask>               permission of user's operations (e.g., \"read, write, delete, *\")\n";
+  cout << "   --yes-i-really-mean-it            required for certain operations\n";
+  cout << "   --warnings-only                   when specified with bucket limit check, list\n";
+  cout << "                                     only buckets nearing or over the current max\n";
+  cout << "                                     objects per shard value\n";
+  cout << "   --bypass-gc                       when specified with bucket deletion, triggers\n";
+  cout << "                                     object deletions by not involving GC\n";
+  cout << "   --inconsistent-index              when specified with bucket deletion and bypass-gc set to true,\n";
+  cout << "                                     ignores bucket index consistency\n";
+  cout << "   --min-rewrite-size                min object size for bucket rewrite (default 4M)\n";
+  cout << "   --max-rewrite-size                max object size for bucket rewrite (default ULLONG_MAX)\n";
+  cout << "   --min-rewrite-stripe-size         min stripe size for object rewrite (default 0)\n";
+  cout << "   --trim-delay-ms                   time interval in msec to limit the frequency of sync error log entries trimming operations,\n";
+  cout << "                                     the trimming process will sleep the specified msec for every 1000 entries trimmed\n";
+  cout << "   --max-concurrent-ios              maximum concurrent ios for bucket operations (default: 32)\n";
+  cout << "   --enable-feature                  enable a zone/zonegroup feature\n";
+  cout << "   --disable-feature                 disable a zone/zonegroup feature\n";
   cout << "\n";
   cout << "<date> := \"YYYY-MM-DD[ hh:mm:ss]\"\n";
   cout << "\nQuota options:\n";
-  cout << "   --max-objects             specify max objects (negative value to disable)\n";
-  cout << "   --max-size                specify max size (in B/K/M/G/T, negative value to disable)\n";
-  cout << "   --quota-scope             scope of quota (bucket, user)\n";
+  cout << "   --max-objects                 specify max objects (negative value to disable)\n";
+  cout << "   --max-size                    specify max size (in B/K/M/G/T, negative value to disable)\n";
+  cout << "   --quota-scope                 scope of quota (bucket, user)\n";
   cout << "\nRate limiting options:\n";
-  cout << "   --max-read-ops            specify max requests per minute for READ ops per RGW (GET and HEAD request methods), 0 means unlimited\n";
-  cout << "   --max-read-bytes          specify max bytes per minute for READ ops per RGW (GET and HEAD request methods), 0 means unlimited\n";
-  cout << "   --max-write-ops           specify max requests per minute for WRITE ops per RGW (Not GET or HEAD request methods), 0 means unlimited\n";
-  cout << "   --max-write-bytes         specify max bytes per minute for WRITE ops per RGW (Not GET or HEAD request methods), 0 means unlimited\n";
-  cout << "   --ratelimit-scope         scope of rate limiting: bucket, user, anonymous\n";
-  cout << "                             anonymous can be configured only with global rate limit\n";
+  cout << "   --max-read-ops                specify max requests per minute for READ ops per RGW (GET and HEAD request methods), 0 means unlimited\n";
+  cout << "   --max-read-bytes              specify max bytes per minute for READ ops per RGW (GET and HEAD request methods), 0 means unlimited\n";
+  cout << "   --max-write-ops               specify max requests per minute for WRITE ops per RGW (Not GET or HEAD request methods), 0 means unlimited\n";
+  cout << "   --max-write-bytes             specify max bytes per minute for WRITE ops per RGW (Not GET or HEAD request methods), 0 means unlimited\n";
+  cout << "   --ratelimit-scope             scope of rate limiting: bucket, user, anonymous\n";
+  cout << "                                 anonymous can be configured only with global rate limit\n";
   cout << "\nOrphans search options:\n";
-  cout << "   --num-shards              num of shards to use for keeping the temporary scan info\n";
-  cout << "   --orphan-stale-secs       num of seconds to wait before declaring an object to be an orphan (default: 86400)\n";
-  cout << "   --job-id                  set the job id (for orphans find)\n";
-  cout << "   --detail                  detailed mode, log and stat head objects as well\n";
+  cout << "   --num-shards                  num of shards to use for keeping the temporary scan info\n";
+  cout << "   --orphan-stale-secs           num of seconds to wait before declaring an object to be an orphan (default: 86400)\n";
+  cout << "   --job-id                      set the job id (for orphans find)\n";
+  cout << "   --detail                      detailed mode, log and stat head objects as well\n";
   cout << "\nOrphans list-jobs options:\n";
-  cout << "   --extra-info              provide extra info in job list\n";
+  cout << "   --extra-info                  provide extra info in job list\n";
   cout << "\nRole options:\n";
-  cout << "   --role-name               name of the role to create\n";
-  cout << "   --path                    path to the role\n";
-  cout << "   --assume-role-policy-doc  the trust relationship policy document that grants an entity permission to assume the role\n";
-  cout << "   --policy-name             name of the policy document\n";
-  cout << "   --policy-doc              permission policy document\n";
-  cout << "   --path-prefix             path prefix for filtering roles\n";
+  cout << "   --role-name                   name of the role to create\n";
+  cout << "   --path                        path to the role\n";
+  cout << "   --assume-role-policy-doc      the trust relationship policy document that grants an entity permission to assume the role\n";
+  cout << "   --policy-name                 name of the policy document\n";
+  cout << "   --policy-doc                  permission policy document\n";
+  cout << "   --path-prefix                 path prefix for filtering roles\n";
   cout << "\nMFA options:\n";
-  cout << "   --totp-serial             a string that represents the ID of a TOTP token\n";
-  cout << "   --totp-seed               the secret seed that is used to calculate the TOTP\n";
-  cout << "   --totp-seconds            the time resolution that is being used for TOTP generation\n";
-  cout << "   --totp-window             the number of TOTP tokens that are checked before and after the current token when validating token\n";
-  cout << "   --totp-pin                the valid value of a TOTP token at a certain time\n";
+  cout << "   --totp-serial                 a string that represents the ID of a TOTP token\n";
+  cout << "   --totp-seed                   the secret seed that is used to calculate the TOTP\n";
+  cout << "   --totp-seconds                the time resolution that is being used for TOTP generation\n";
+  cout << "   --totp-window                 the number of TOTP tokens that are checked before and after the current token when validating token\n";
+  cout << "   --totp-pin                    the valid value of a TOTP token at a certain time\n";
   cout << "\nBucket notifications options:\n";
-  cout << "   --topic                   bucket notifications topic name\n";
-  cout << "   --notification-id         bucket notifications id\n";
+  cout << "   --topic                       bucket notifications topic name\n";
+  cout << "   --notification-id             bucket notifications id\n";
   cout << "\nScript options:\n";
-  cout << "   --context                 context in which the script runs. one of: "+LUA_CONTEXT_LIST+"\n";
-  cout << "   --package                 name of the Lua package that should be added/removed to/from the allowlist\n";
-  cout << "   --allow-compilation       package is allowed to compile C code as part of its installation\n";
+  cout << "   --context                     context in which the script runs. one of: "+LUA_CONTEXT_LIST+"\n";
+  cout << "   --package                     name of the Lua package that should be added/removed to/from the allowlist\n";
+  cout << "   --allow-compilation           package is allowed to compile C code as part of its installation\n";
   cout << "\nBucket check olh/unlinked options:\n";
-  cout << "   --min-age-hours           minimum age of unlinked objects to consider for bucket check unlinked (default: 1)\n";
-  cout << "   --dump-keys               when specified, all keys identified as problematic are printed to stdout\n";
-  cout << "   --hide-progress           when specified, per-shard progress details are not printed to stderr\n";
+  cout << "   --min-age-hours               minimum age of unlinked objects to consider for bucket check unlinked (default: 1)\n";
+  cout << "   --dump-keys                   when specified, all keys identified as problematic are printed to stdout\n";
+  cout << "   --hide-progress               when specified, per-shard progress details are not printed to stderr\n";
   cout << "\nradoslist options:\n";
-  cout << "   --rgw-obj-fs              the field separator that will separate the rados\n";
-  cout << "                             object name from the rgw object name;\n";
-  cout << "                             additionally rados objects for incomplete\n";
-  cout << "                             multipart uploads will not be output\n";
+  cout << "   --rgw-obj-fs                  the field separator that will separate the rados object name from the rgw object name;\n";
+  cout << "                                 additionally rados objects for incomplete multipart uploads will not be output\n";
   cout << "\n";
   generic_client_usage();
 }
@@ -2402,7 +2386,7 @@ static void get_data_sync_status(const rgw_zone_id& source_zone, list<string>& s
     push_ss(ss, status, tab) << "data is caught up with source";
   } else if (total_behind > 0) {
     push_ss(ss, status, tab) << "data is behind on " << total_behind << " shards";
-    push_ss(ss, status, tab) << "behind shards: " << "[" << shards_behind_set << "]" ;
+    push_ss(ss, status, tab) << "behind shards: " << "[" << shards_behind_set << "]";
     if (oldest) {
       push_ss(ss, status, tab) << "oldest incremental change not applied: "
           << oldest->second << " [" << oldest->first << ']';
@@ -2611,7 +2595,7 @@ static int bucket_source_sync_status(const DoutPrefixProvider *dpp, rgw::sal::Ra
   }
   if (!shards_behind.empty()) {
     out << indented{width} << "bucket is behind on " << shards_behind.size() << " shards\n";
-    out << indented{width} << "behind shards: [" << shards_behind << "]\n" ;
+    out << indented{width} << "behind shards: [" << shards_behind << "]\n";
   } else {
     out << indented{width} << "bucket is caught up with source\n";
   }
index 179094dc4b548bee41f9094829d16008e341df65..8f6fc36190ccb0af54c709269d3275e11208f214 100644 (file)
   $ radosgw-admin --help
   usage: radosgw-admin <cmd> [options...]
   commands:
-    user create                create a new user
-    user modify                modify user
-    user info                  get user info
-    user rename                rename user
-    user rm                    remove user
-    user suspend               suspend a user
-    user enable                re-enable user after suspension
-    user check                 check user info
-    user stats                 show user stats as accounted by quota subsystem
-    user list                  list users
-    caps add                   add user capabilities
-    caps rm                    remove user capabilities
-    subuser create             create a new subuser
-    subuser modify             modify subuser
-    subuser rm                 remove subuser
-    key create                 create access key
-    key rm                     remove access key
-    bucket list                list buckets (specify --allow-unordered for
-                               faster, unsorted listing)
-    bucket limit check         show bucket sharding stats
-    bucket link                link bucket to specified user
-    bucket unlink              unlink bucket from specified user
-    bucket stats               returns bucket statistics
-    bucket rm                  remove bucket
-    bucket check               check bucket index by verifying size and object count stats
-    bucket check olh           check for olh index entries and objects that are pending removal
-    bucket check unlinked      check for object versions that are not visible in a bucket listing 
-    bucket chown               link bucket to specified user and update its object ACLs
-    bucket reshard             reshard bucket
-    bucket rewrite             rewrite all objects in the specified bucket
-    bucket sync checkpoint     poll a bucket's sync status until it catches up to its remote
-    bucket sync disable        disable bucket sync
-    bucket sync enable         enable bucket sync
-    bucket radoslist           list rados objects backing bucket's objects
-    bi get                     retrieve bucket index object entries
-    bi put                     store bucket index object entries
-    bi list                    list raw bucket index entries
-    bi purge                   purge bucket index entries
-    object rm                  remove object
-    object put                 put object
-    object stat                stat an object for its metadata
-    object unlink              unlink object from bucket index
-    object rewrite             rewrite the specified object
-    object reindex             reindex the object(s) indicated by --bucket and either --object or --objects-file
-    objects expire             run expired objects cleanup
-    objects expire-stale list  list stale expired objects (caused by reshard)
-    objects expire-stale rm    remove stale expired objects
-    period rm                  remove a period
-    period get                 get period info
-    period get-current         get current period info
-    period pull                pull a period
-    period push                push a period
-    period list                list all periods
-    period update              update the staging period
-    period commit              commit the staging period
-    quota set                  set quota params
-    quota enable               enable quota
-    quota disable              disable quota
-    ratelimit get              get ratelimit params
-    ratelimit set              set ratelimit params
-    ratelimit enable           enable ratelimit
-    ratelimit disable          disable ratelimit
-    global quota get           view global quota params
-    global quota set           set global quota params
-    global quota enable        enable a global quota
-    global quota disable       disable a global quota
-    global ratelimit get       view global ratelimit params
-    global ratelimit set       set global ratelimit params
-    global ratelimit enable    enable a ratelimit quota
-    global ratelimit disable   disable a ratelimit quota
-    realm create               create a new realm
-    realm rm                   remove a realm
-    realm get                  show realm info
-    realm get-default          get default realm name
-    realm list                 list realms
-    realm list-periods         list all realm periods
-    realm rename               rename a realm
-    realm set                  set realm info (requires infile)
-    realm default              set realm as default
-    realm pull                 pull a realm and its current period
-    zonegroup add              add a zone to a zonegroup
-    zonegroup create           create a new zone group info
-    zonegroup default          set default zone group
-    zonegroup delete           delete a zone group info
-    zonegroup get              show zone group info
-    zonegroup modify           modify an existing zonegroup
-    zonegroup set              set zone group info (requires infile)
-    zonegroup rm               remove a zone from a zonegroup
-    zonegroup rename           rename a zone group
-    zonegroup list             list all zone groups set on this cluster
-    zonegroup placement list   list zonegroup's placement targets
-    zonegroup placement get    get a placement target of a specific zonegroup
-    zonegroup placement add    add a placement target id to a zonegroup
-    zonegroup placement modify modify a placement target of a specific zonegroup
-    zonegroup placement rm     remove a placement target from a zonegroup
-    zonegroup placement default  set a zonegroup's default placement target
-    zone create                create a new zone
-    zone rm                    remove a zone
-    zone get                   show zone cluster params
-    zone modify                modify an existing zone
-    zone set                   set zone cluster params (requires infile)
-    zone list                  list all zones set on this cluster
-    zone rename                rename a zone
-    zone placement list        list zone's placement targets
-    zone placement get         get a zone placement target
-    zone placement add         add a zone placement target
-    zone placement modify      modify a zone placement target
-    zone placement rm          remove a zone placement target
-    metadata sync status       get metadata sync status
-    metadata sync init         init metadata sync
-    metadata sync run          run metadata sync
-    data sync status           get data sync status of the specified source zone
-    data sync init             init data sync for the specified source zone
-    data sync run              run data sync for the specified source zone
-    pool add                   add an existing pool for data placement
-    pool rm                    remove an existing pool from data placement set
-    pools list                 list placement active set
-    policy                     read bucket/object policy
-    log list                   list log objects
-    log show                   dump a log from specific object or (bucket + date
-                               + bucket-id)
-                               (NOTE: required to specify formatting of date
-                               to "YYYY-MM-DD-hh")
-    log rm                     remove log object
-    usage show                 show usage (by user, by bucket, date range)
-    usage trim                 trim usage (by user, by bucket, date range)
-    usage clear                reset all the usage stats for the cluster
-    gc list                    dump expired garbage collection objects (specify
-                               --include-all to list all entries, including unexpired)
-    gc process                 manually process garbage (specify
-                               --include-all to process all entries, including unexpired)
-    lc list                    list all bucket lifecycle progress
-    lc get                     get a lifecycle bucket configuration
-    lc process                 manually process lifecycle
-    lc reshard fix             fix LC for a resharded bucket
-    metadata get               get metadata info
-    metadata put               put metadata info
-    metadata rm                remove metadata info
-    metadata list              list metadata info
-    mdlog list                 list metadata log
-    mdlog autotrim             auto trim metadata log
-    mdlog trim                 trim metadata log (use marker)
-    mdlog status               read metadata log status
-    bilog list                 list bucket index log
-    bilog trim                 trim bucket index log (use start-marker, end-marker)
-    bilog status               read bucket index log status
-    bilog autotrim             auto trim bucket index log
-    datalog list               list data log
-    datalog trim               trim data log
-    datalog status             read data log status
-    datalog type               change datalog type to --log_type={fifo,omap}
-    orphans find               deprecated -- init and run search for leaked rados objects (use job-id, pool)
-    orphans finish             deprecated -- clean up search for leaked rados objects
-    orphans list-jobs          deprecated -- list the current job-ids for orphans search
-                             * the three 'orphans' sub-commands are now deprecated; consider using the `rgw-orphan-list` tool
-    role create                create a AWS role for use with STS
-    role delete                remove a role
-    role get                   get a role
-    role list                  list roles with specified path prefix
-    role-trust-policy modify   modify the assume role policy of an existing role
-    role-policy put            add/update permission policy to role
-    role-policy list           list policies attached to a role
-    role-policy get            get the specified inline policy document embedded with the given role
-    role-policy delete         remove policy attached to a role
-    role update                update max_session_duration of a role
-    reshard add                schedule a resharding of a bucket
-    reshard list               list all bucket resharding or scheduled to be resharded
-    reshard status             read bucket resharding status
-    reshard process            process of scheduled reshard jobs
-    reshard cancel             cancel resharding a bucket
-    reshard stale-instances list list stale-instances from bucket resharding
+    user create                      create a new user
+    user modify                      modify user
+    user info                        get user info
+    user rename                      rename user
+    user rm                          remove user
+    user suspend                     suspend a user
+    user enable                      re-enable user after suspension
+    user check                       check user info
+    user stats                       show user stats as accounted by quota subsystem
+    user list                        list users
+    caps add                         add user capabilities
+    caps rm                          remove user capabilities
+    subuser create                   create a new subuser
+    subuser modify                   modify subuser
+    subuser rm                       remove subuser
+    key create                       create access key
+    key rm                           remove access key
+    bucket list                      list buckets (specify --allow-unordered for faster, unsorted listing)
+    bucket limit check               show bucket sharding stats
+    bucket link                      link bucket to specified user
+    bucket unlink                    unlink bucket from specified user
+    bucket stats                     returns bucket statistics
+    bucket rm                        remove bucket
+    bucket check                     check bucket index by verifying size and object count stats
+    bucket check olh                 check for olh index entries and objects that are pending removal
+    bucket check unlinked            check for object versions that are not visible in a bucket listing 
+    bucket chown                     link bucket to specified user and update its object ACLs
+    bucket reshard                   reshard bucket
+    bucket rewrite                   rewrite all objects in the specified bucket
+    bucket sync checkpoint           poll a bucket's sync status until it catches up to its remote
+    bucket sync disable              disable bucket sync
+    bucket sync enable               enable bucket sync
+    bucket radoslist                 list rados objects backing bucket's objects
+    bi get                           retrieve bucket index object entries
+    bi put                           store bucket index object entries
+    bi list                          list raw bucket index entries
+    bi purge                         purge bucket index entries
+    object rm                        remove object
+    object put                       put object
+    object stat                      stat an object for its metadata
+    object unlink                    unlink object from bucket index
+    object rewrite                   rewrite the specified object
+    object reindex                   reindex the object(s) indicated by --bucket and either --object or --objects-file
+    objects expire                   run expired objects cleanup
+    objects expire-stale list        list stale expired objects (caused by reshard)
+    objects expire-stale rm          remove stale expired objects
+    period rm                        remove a period
+    period get                       get period info
+    period get-current               get current period info
+    period pull                      pull a period
+    period push                      push a period
+    period list                      list all periods
+    period update                    update the staging period
+    period commit                    commit the staging period
+    quota set                        set quota params
+    quota enable                     enable quota
+    quota disable                    disable quota
+    ratelimit get                    get ratelimit params
+    ratelimit set                    set ratelimit params
+    ratelimit enable                 enable ratelimit
+    ratelimit disable                disable ratelimit
+    global quota get                 view global quota params
+    global quota set                 set global quota params
+    global quota enable              enable a global quota
+    global quota disable             disable a global quota
+    global ratelimit get             view global ratelimit params
+    global ratelimit set             set global ratelimit params
+    global ratelimit enable          enable a ratelimit quota
+    global ratelimit disable         disable a ratelimit quota
+    realm create                     create a new realm
+    realm rm                         remove a realm
+    realm get                        show realm info
+    realm get-default                get default realm name
+    realm list                       list realms
+    realm list-periods               list all realm periods
+    realm rename                     rename a realm
+    realm set                        set realm info (requires infile)
+    realm default                    set realm as default
+    realm pull                       pull a realm and its current period
+    zonegroup add                    add a zone to a zonegroup
+    zonegroup create                 create a new zone group info
+    zonegroup default                set default zone group
+    zonegroup delete                 delete a zone group info
+    zonegroup get                    show zone group info
+    zonegroup modify                 modify an existing zonegroup
+    zonegroup set                    set zone group info (requires infile)
+    zonegroup rm                     remove a zone from a zonegroup
+    zonegroup rename                 rename a zone group
+    zonegroup list                   list all zone groups set on this cluster
+    zonegroup placement list         list zonegroup's placement targets
+    zonegroup placement get          get a placement target of a specific zonegroup
+    zonegroup placement add          add a placement target id to a zonegroup
+    zonegroup placement modify       modify a placement target of a specific zonegroup
+    zonegroup placement rm           remove a placement target from a zonegroup
+    zonegroup placement default      set a zonegroup's default placement target
+    zone create                      create a new zone
+    zone rm                          remove a zone
+    zone get                         show zone cluster params
+    zone modify                      modify an existing zone
+    zone set                         set zone cluster params (requires infile)
+    zone list                        list all zones set on this cluster
+    zone rename                      rename a zone
+    zone placement list              list zone's placement targets
+    zone placement get               get a zone placement target
+    zone placement add               add a zone placement target
+    zone placement modify            modify a zone placement target
+    zone placement rm                remove a zone placement target
+    metadata sync status             get metadata sync status
+    metadata sync init               init metadata sync
+    metadata sync run                run metadata sync
+    data sync status                 get data sync status of the specified source zone
+    data sync init                   init data sync for the specified source zone
+    data sync run                    run data sync for the specified source zone
+    pool add                         add an existing pool for data placement
+    pool rm                          remove an existing pool from data placement set
+    pools list                       list placement active set
+    policy                           read bucket/object policy
+    log list                         list log objects
+    log show                         dump a log from specific object or (bucket + date + bucket-id)
+                                     (NOTE: required to specify formatting of date to "YYYY-MM-DD-hh")
+    log rm                           remove log object
+    usage show                       show usage (by user, by bucket, date range)
+    usage trim                       trim usage (by user, by bucket, date range)
+    usage clear                      reset all the usage stats for the cluster
+    gc list                          dump expired garbage collection objects (specify
+                                     --include-all to list all entries, including unexpired)
+    gc process                       manually process garbage (specify
+                                     --include-all to process all entries, including unexpired)
+    lc list                          list all bucket lifecycle progress
+    lc get                           get a lifecycle bucket configuration
+    lc process                       manually process lifecycle
+    lc reshard fix                   fix LC for a resharded bucket
+    metadata get                     get metadata info
+    metadata put                     put metadata info
+    metadata rm                      remove metadata info
+    metadata list                    list metadata info
+    mdlog list                       list metadata log
+    mdlog autotrim                   auto trim metadata log
+    mdlog trim                       trim metadata log (use marker)
+    mdlog status                     read metadata log status
+    bilog list                       list bucket index log
+    bilog trim                       trim bucket index log (use start-marker, end-marker)
+    bilog status                     read bucket index log status
+    bilog autotrim                   auto trim bucket index log
+    datalog list                     list data log
+    datalog trim                     trim data log
+    datalog status                   read data log status
+    datalog type                     change datalog type to --log_type={fifo,omap}
+    orphans find                     deprecated -- init and run search for leaked rados objects (use job-id, pool)
+    orphans finish                   deprecated -- clean up search for leaked rados objects
+    orphans list-jobs                deprecated -- list the current job-ids for orphans search
+      * the three 'orphans' sub-commands are now deprecated; consider using the `rgw-orphan-list` tool
+    role create                      create a AWS role for use with STS
+    role delete                      remove a role
+    role get                         get a role
+    role list                        list roles with specified path prefix
+    role-trust-policy modify         modify the assume role policy of an existing role
+    role-policy put                  add/update permission policy to role
+    role-policy list                 list policies attached to a role
+    role-policy get                  get the specified inline policy document embedded with the given role
+    role-policy delete               remove policy attached to a role
+    role update                      update max_session_duration of a role
+    reshard add                      schedule a resharding of a bucket
+    reshard list                     list all bucket resharding or scheduled to be resharded
+    reshard status                   read bucket resharding status
+    reshard process                  process of scheduled reshard jobs
+    reshard cancel                   cancel resharding a bucket
+    reshard stale-instances list     list stale-instances from bucket resharding
     reshard stale-instances delete   cleanup stale-instances from bucket resharding
-    sync error list            list sync error
-    sync error trim            trim sync error
-    mfa create                 create a new MFA TOTP token
-    mfa list                   list MFA TOTP tokens
-    mfa get                    show MFA TOTP token
-    mfa remove                 delete MFA TOTP token
-    mfa check                  check MFA TOTP token
-    mfa resync                 re-sync MFA TOTP token
-    topic list                 list bucket notifications topics
-    topic get                  get a bucket notifications topic
-    topic rm                   remove a bucket notifications topic
-    topic stats                get a bucket notifications persistent topic stats (i.e. reservations, entries & size)
-    script put                 upload a Lua script to a context
-    script get                 get the Lua script of a context
-    script rm                  remove the Lua scripts of a context
-    script-package add         add a Lua package to the scripts allowlist
-    script-package rm          remove a Lua package from the scripts allowlist
-    script-package list        get the Lua packages allowlist
-    script-package reload      install/remove Lua packages according to allowlist
-    notification list          list bucket notifications configuration
-    notification get           get a bucket notifications configuration
-    notification rm            remove a bucket notifications configuration
+    sync error list                  list sync error
+    sync error trim                  trim sync error
+    mfa create                       create a new MFA TOTP token
+    mfa list                         list MFA TOTP tokens
+    mfa get                          show MFA TOTP token
+    mfa remove                       delete MFA TOTP token
+    mfa check                        check MFA TOTP token
+    mfa resync                       re-sync MFA TOTP token
+    topic list                       list bucket notifications topics
+    topic get                        get a bucket notifications topic
+    topic rm                         remove a bucket notifications topic
+    topic stats                      get a bucket notifications persistent topic stats (i.e. reservations, entries & size)
+    script put                       upload a Lua script to a context
+    script get                       get the Lua script of a context
+    script rm                        remove the Lua scripts of a context
+    script-package add               add a Lua package to the scripts allowlist
+    script-package rm                remove a Lua package from the scripts allowlist
+    script-package list              get the Lua packages allowlist
+    script-package reload            install/remove Lua packages according to allowlist
+    notification list                list bucket notifications configuration
+    notification get                 get a bucket notifications configuration
+    notification rm                  remove a bucket notifications configuration
   options:
-     --tenant=<tenant>         tenant name
-     --user_ns=<namespace>     namespace of user (oidc in case of users authenticated with oidc provider)
-     --uid=<id>                user id
-     --new-uid=<id>            new user id
-     --subuser=<name>          subuser name
-     --access-key=<key>        S3 access key
-     --email=<email>           user's email address
-     --secret/--secret-key=<key>
-                               specify secret key
-     --gen-access-key          generate random access key (for S3)
-     --gen-secret              generate random secret key
-     --key-type=<type>         key type, options are: swift, s3
-     --temp-url-key[-2]=<key>  temp url key
-     --access=<access>         Set access permissions for sub-user, should be one
-                               of read, write, readwrite, full
-     --display-name=<name>     user's display name
-     --max-buckets             max number of buckets for a user
-     --admin                   set the admin flag on the user
-     --system                  set the system flag on the user
-     --op-mask                 set the op mask on the user
-     --bucket=<bucket>         Specify the bucket name. Also used by the quota command.
-     --pool=<pool>             Specify the pool name. Also used to scan for leaked rados objects.
-     --object=<object>         object name
-     --objects-file=<file>     file containing a list of object names to process
-     --object-version=<version>         object version
-     --date=<date>             date in the format yyyy-mm-dd
-     --start-date=<date>       start date in the format yyyy-mm-dd
-     --end-date=<date>         end date in the format yyyy-mm-dd
-     --bucket-id=<bucket-id>   bucket id
-     --bucket-new-name=<bucket>
-                               for bucket link: optional new name
-     --shard-id=<shard-id>     optional for: 
-                                 mdlog list
-                                 data sync status
-                               required for: 
-                                 mdlog trim
-     --gen=<gen-id>            optional for: 
-                                 bilog list
-                                 bilog trim
-                                 bilog status
-     --max-entries=<entries>   max entries for listing operations
-     --metadata-key=<key>      key to retrieve metadata from with metadata get
-     --remote=<remote>         zone or zonegroup id of remote gateway
-     --period=<id>             period id
-     --url=<url>               url for pushing/pulling period/realm
-     --epoch=<number>          period epoch
-     --commit                  commit the period during 'period update'
-     --staging                 get staging period info
-     --master                  set as master
-     --master-zone=<id>        master zone id
-     --rgw-realm=<name>        realm name
-     --realm-id=<id>           realm id
-     --realm-new-name=<name>   realm new name
-     --rgw-zonegroup=<name>    zonegroup name
-     --zonegroup-id=<id>       zonegroup id
-     --zonegroup-new-name=<name>
-                               zonegroup new name
-     --rgw-zone=<name>         name of zone in which radosgw is running
-     --zone-id=<id>            zone id
-     --zone-new-name=<name>    zone new name
-     --source-zone             specify the source zone (for data sync)
-     --default                 set entity (realm, zonegroup, zone) as default
-     --read-only               set zone as read-only (when adding to zonegroup)
-     --redirect-zone           specify zone id to redirect when response is 404 (not found)
-     --placement-id            placement id for zonegroup placement commands
-     --storage-class           storage class for zonegroup placement commands
-     --tags=<list>             list of tags for zonegroup placement add and modify commands
-     --tags-add=<list>         list of tags to add for zonegroup placement modify command
-     --tags-rm=<list>          list of tags to remove for zonegroup placement modify command
-     --endpoints=<list>        zone endpoints
-     --index-pool=<pool>       placement target index pool
-     --data-pool=<pool>        placement target data pool
-     --data-extra-pool=<pool>  placement target data extra (non-ec) pool
-     --placement-index-type=<type>
-                               placement target index type (normal, indexless, or #id)
-     --placement-inline-data=<true>
-                               set whether the placement target is configured to store a data
-                               chunk inline in head objects
-     --compression=<type>      placement target compression type (plugin name or empty/none)
-     --tier-type=<type>        zone tier type
-     --tier-config=<k>=<v>[,...]
-                               set zone tier config keys, values
-     --tier-config-rm=<k>[,...]
-                               unset zone tier config keys
-     --sync-from-all[=false]   set/reset whether zone syncs from all zonegroup peers
-     --sync-from=[zone-name][,...]
-                               set list of zones to sync from
-     --sync-from-rm=[zone-name][,...]
-                               remove zones from list of zones to sync from
-     --bucket-index-max-shards override a zone/zonegroup's default bucket index shard count
-     --fix                     besides checking bucket index, will also fix it
-     --check-objects           bucket check: rebuilds bucket index according to
-                               actual objects state
-     --format=<format>         specify output format for certain operations: xml,
-                               json
-     --purge-data              when specified, user removal will also purge all the
-                               user data
-     --purge-keys              when specified, subuser removal will also purge all the
-                               subuser keys
-     --purge-objects           remove a bucket's objects before deleting it
-                               (NOTE: required to delete a non-empty bucket)
-     --sync-stats              option to 'user stats', update user stats with current
-                               stats reported by user's buckets indexes
-     --reset-stats             option to 'user stats', reset stats in accordance with user buckets
-     --show-config             show configuration
-     --show-log-entries=<flag> enable/disable dump of log entries on log show
-     --show-log-sum=<flag>     enable/disable dump of log summation on log show
-     --skip-zero-entries       log show only dumps entries that don't have zero value
-                               in one of the numeric field
-     --infile=<file>           file to read in when setting data
-     --categories=<list>       comma separated list of categories, used in usage show
-     --caps=<caps>             list of caps (e.g., "usage=read, write; user=read")
-     --op-mask=<op-mask>       permission of user's operations (e.g., "read, write, delete, *")
-     --yes-i-really-mean-it    required for certain operations
-     --warnings-only           when specified with bucket limit check, list
-                               only buckets nearing or over the current max
-                               objects per shard value
-     --bypass-gc               when specified with bucket deletion, triggers
-                               object deletions by not involving GC
-     --inconsistent-index      when specified with bucket deletion and bypass-gc set to true,
-                               ignores bucket index consistency
-     --min-rewrite-size        min object size for bucket rewrite (default 4M)
-     --max-rewrite-size        max object size for bucket rewrite (default ULLONG_MAX)
-     --min-rewrite-stripe-size min stripe size for object rewrite (default 0)
-     --trim-delay-ms           time interval in msec to limit the frequency of sync error log entries trimming operations,
-                               the trimming process will sleep the specified msec for every 1000 entries trimmed
-     --max-concurrent-ios      maximum concurrent ios for bucket operations (default: 32)
-     --enable-feature          enable a zone/zonegroup feature
-     --disable-feature         disable a zone/zonegroup feature
+     --tenant=<tenant>                 tenant name
+     --user_ns=<namespace>             namespace of user (oidc in case of users authenticated with oidc provider)
+     --uid=<id>                        user id
+     --new-uid=<id>                    new user id
+     --subuser=<name>                  subuser name
+     --access-key=<key>                S3 access key
+     --email=<email>                   user's email address
+     --secret/--secret-key=<key>       specify secret key
+     --gen-access-key                  generate random access key (for S3)
+     --gen-secret                      generate random secret key
+     --key-type=<type>                 key type, options are: swift, s3
+     --temp-url-key[-2]=<key>          temp url key
+     --access=<access>                 Set access permissions for sub-user, should be one
+                                       of read, write, readwrite, full
+     --display-name=<name>             user's display name
+     --max-buckets                     max number of buckets for a user
+     --admin                           set the admin flag on the user
+     --system                          set the system flag on the user
+     --op-mask                         set the op mask on the user
+     --bucket=<bucket>                 Specify the bucket name. Also used by the quota command.
+     --pool=<pool>                     Specify the pool name. Also used to scan for leaked rados objects.
+     --object=<object>                 object name
+     --objects-file=<file>             file containing a list of object names to process
+     --object-version=<version>        object version
+     --date=<date>                     date in the format yyyy-mm-dd
+     --start-date=<date>               start date in the format yyyy-mm-dd
+     --end-date=<date>                 end date in the format yyyy-mm-dd
+     --bucket-id=<bucket-id>           bucket id
+     --bucket-new-name=<bucket>        for bucket link: optional new name
+     --shard-id=<shard-id>             optional for:
+                                         mdlog list
+                                         data sync status
+                                       required for:
+                                         mdlog trim
+     --gen=<gen-id>                    optional for:
+                                         bilog list
+                                         bilog trim
+                                         bilog status
+     --max-entries=<entries>           max entries for listing operations
+     --metadata-key=<key>              key to retrieve metadata from with metadata get
+     --remote=<remote>                 zone or zonegroup id of remote gateway
+     --period=<id>                     period id
+     --url=<url>                       url for pushing/pulling period/realm
+     --epoch=<number>                  period epoch
+     --commit                          commit the period during 'period update'
+     --staging                         get staging period info
+     --master                          set as master
+     --master-zone=<id>                master zone id
+     --rgw-realm=<name>                realm name
+     --realm-id=<id>                   realm id
+     --realm-new-name=<name>           realm new name
+     --rgw-zonegroup=<name>            zonegroup name
+     --zonegroup-id=<id>               zonegroup id
+     --zonegroup-new-name=<name>       zonegroup new name
+     --rgw-zone=<name>                 name of zone in which radosgw is running
+     --zone-id=<id>                    zone id
+     --zone-new-name=<name>            zone new name
+     --source-zone                     specify the source zone (for data sync)
+     --default                         set entity (realm, zonegroup, zone) as default
+     --read-only                       set zone as read-only (when adding to zonegroup)
+     --redirect-zone                   specify zone id to redirect when response is 404 (not found)
+     --placement-id                    placement id for zonegroup placement commands
+     --storage-class                   storage class for zonegroup placement commands
+     --tags=<list>                     list of tags for zonegroup placement add and modify commands
+     --tags-add=<list>                 list of tags to add for zonegroup placement modify command
+     --tags-rm=<list>                  list of tags to remove for zonegroup placement modify command
+     --endpoints=<list>                zone endpoints
+     --index-pool=<pool>               placement target index pool
+     --data-pool=<pool>                placement target data pool
+     --data-extra-pool=<pool>          placement target data extra (non-ec) pool
+     --placement-index-type=<type>     placement target index type (normal, indexless, or #id)
+     --placement-inline-data=<true>    set whether the placement target is configured to store a data
+                                       chunk inline in head objects
+     --compression=<type>              placement target compression type (plugin name or empty/none)
+     --tier-type=<type>                zone tier type
+     --tier-config=<k>=<v>[,...]       set zone tier config keys, values
+     --tier-config-rm=<k>[,...]        unset zone tier config keys
+     --sync-from-all[=false]           set/reset whether zone syncs from all zonegroup peers
+     --sync-from=[zone-name][,...]     set list of zones to sync from
+     --sync-from-rm=[zone-name][,...]  remove zones from list of zones to sync from
+     --bucket-index-max-shards         override a zone/zonegroup's default bucket index shard count
+     --fix                             besides checking bucket index, will also fix it
+     --check-objects                   bucket check: rebuilds bucket index according to actual objects state
+     --format=<format>                 specify output format for certain operations: xml, json
+     --purge-data                      when specified, user removal will also purge all the
+                                       user data
+     --purge-keys                      when specified, subuser removal will also purge all the
+                                       subuser keys
+     --purge-objects                   remove a bucket's objects before deleting it
+                                       (NOTE: required to delete a non-empty bucket)
+     --sync-stats                      option to 'user stats', update user stats with current
+                                       stats reported by user's buckets indexes
+     --reset-stats                     option to 'user stats', reset stats in accordance with user buckets
+     --show-config                     show configuration
+     --show-log-entries=<flag>         enable/disable dump of log entries on log show
+     --show-log-sum=<flag>             enable/disable dump of log summation on log show
+     --skip-zero-entries               log show only dumps entries that don't have zero value
+                                       in one of the numeric field
+     --infile=<file>                   file to read in when setting data
+     --categories=<list>               comma separated list of categories, used in usage show
+     --caps=<caps>                     list of caps (e.g., "usage=read, write; user=read")
+     --op-mask=<op-mask>               permission of user's operations (e.g., "read, write, delete, *")
+     --yes-i-really-mean-it            required for certain operations
+     --warnings-only                   when specified with bucket limit check, list
+                                       only buckets nearing or over the current max
+                                       objects per shard value
+     --bypass-gc                       when specified with bucket deletion, triggers
+                                       object deletions by not involving GC
+     --inconsistent-index              when specified with bucket deletion and bypass-gc set to true,
+                                       ignores bucket index consistency
+     --min-rewrite-size                min object size for bucket rewrite (default 4M)
+     --max-rewrite-size                max object size for bucket rewrite (default ULLONG_MAX)
+     --min-rewrite-stripe-size         min stripe size for object rewrite (default 0)
+     --trim-delay-ms                   time interval in msec to limit the frequency of sync error log entries trimming operations,
+                                       the trimming process will sleep the specified msec for every 1000 entries trimmed
+     --max-concurrent-ios              maximum concurrent ios for bucket operations (default: 32)
+     --enable-feature                  enable a zone/zonegroup feature
+     --disable-feature                 disable a zone/zonegroup feature
   
   <date> := "YYYY-MM-DD[ hh:mm:ss]"
   
   Quota options:
-     --max-objects             specify max objects (negative value to disable)
-     --max-size                specify max size (in B/K/M/G/T, negative value to disable)
-     --quota-scope             scope of quota (bucket, user)
+     --max-objects                 specify max objects (negative value to disable)
+     --max-size                    specify max size (in B/K/M/G/T, negative value to disable)
+     --quota-scope                 scope of quota (bucket, user)
   
   Rate limiting options:
-     --max-read-ops            specify max requests per minute for READ ops per RGW (GET and HEAD request methods), 0 means unlimited
-     --max-read-bytes          specify max bytes per minute for READ ops per RGW (GET and HEAD request methods), 0 means unlimited
-     --max-write-ops           specify max requests per minute for WRITE ops per RGW (Not GET or HEAD request methods), 0 means unlimited
-     --max-write-bytes         specify max bytes per minute for WRITE ops per RGW (Not GET or HEAD request methods), 0 means unlimited
-     --ratelimit-scope         scope of rate limiting: bucket, user, anonymous
-                               anonymous can be configured only with global rate limit
+     --max-read-ops                specify max requests per minute for READ ops per RGW (GET and HEAD request methods), 0 means unlimited
+     --max-read-bytes              specify max bytes per minute for READ ops per RGW (GET and HEAD request methods), 0 means unlimited
+     --max-write-ops               specify max requests per minute for WRITE ops per RGW (Not GET or HEAD request methods), 0 means unlimited
+     --max-write-bytes             specify max bytes per minute for WRITE ops per RGW (Not GET or HEAD request methods), 0 means unlimited
+     --ratelimit-scope             scope of rate limiting: bucket, user, anonymous
+                                   anonymous can be configured only with global rate limit
   
   Orphans search options:
-     --num-shards              num of shards to use for keeping the temporary scan info
-     --orphan-stale-secs       num of seconds to wait before declaring an object to be an orphan (default: 86400)
-     --job-id                  set the job id (for orphans find)
-     --detail                  detailed mode, log and stat head objects as well
+     --num-shards                  num of shards to use for keeping the temporary scan info
+     --orphan-stale-secs           num of seconds to wait before declaring an object to be an orphan (default: 86400)
+     --job-id                      set the job id (for orphans find)
+     --detail                      detailed mode, log and stat head objects as well
   
   Orphans list-jobs options:
-     --extra-info              provide extra info in job list
+     --extra-info                  provide extra info in job list
   
   Role options:
-     --role-name               name of the role to create
-     --path                    path to the role
-     --assume-role-policy-doc  the trust relationship policy document that grants an entity permission to assume the role
-     --policy-name             name of the policy document
-     --policy-doc              permission policy document
-     --path-prefix             path prefix for filtering roles
+     --role-name                   name of the role to create
+     --path                        path to the role
+     --assume-role-policy-doc      the trust relationship policy document that grants an entity permission to assume the role
+     --policy-name                 name of the policy document
+     --policy-doc                  permission policy document
+     --path-prefix                 path prefix for filtering roles
   
   MFA options:
-     --totp-serial             a string that represents the ID of a TOTP token
-     --totp-seed               the secret seed that is used to calculate the TOTP
-     --totp-seconds            the time resolution that is being used for TOTP generation
-     --totp-window             the number of TOTP tokens that are checked before and after the current token when validating token
-     --totp-pin                the valid value of a TOTP token at a certain time
+     --totp-serial                 a string that represents the ID of a TOTP token
+     --totp-seed                   the secret seed that is used to calculate the TOTP
+     --totp-seconds                the time resolution that is being used for TOTP generation
+     --totp-window                 the number of TOTP tokens that are checked before and after the current token when validating token
+     --totp-pin                    the valid value of a TOTP token at a certain time
   
   Bucket notifications options:
-     --topic                   bucket notifications topic name
-     --notification-id         bucket notifications id
+     --topic                       bucket notifications topic name
+     --notification-id             bucket notifications id
   
   Script options:
-     --context                 context in which the script runs. one of: prerequest, postrequest, background, getdata, putdata
-     --package                 name of the Lua package that should be added/removed to/from the allowlist
-     --allow-compilation       package is allowed to compile C code as part of its installation
+     --context                     context in which the script runs. one of: prerequest, postrequest, background, getdata, putdata
+     --package                     name of the Lua package that should be added/removed to/from the allowlist
+     --allow-compilation           package is allowed to compile C code as part of its installation
   
   Bucket check olh/unlinked options:
-     --min-age-hours           minimum age of unlinked objects to consider for bucket check unlinked (default: 1)
-     --dump-keys               when specified, all keys identified as problematic are printed to stdout
-     --hide-progress           when specified, per-shard progress details are not printed to stderr
+     --min-age-hours               minimum age of unlinked objects to consider for bucket check unlinked (default: 1)
+     --dump-keys                   when specified, all keys identified as problematic are printed to stdout
+     --hide-progress               when specified, per-shard progress details are not printed to stderr
   
   radoslist options:
-     --rgw-obj-fs              the field separator that will separate the rados
-                               object name from the rgw object name;
-                               additionally rados objects for incomplete
-                               multipart uploads will not be output
+     --rgw-obj-fs                  the field separator that will separate the rados object name from the rgw object name;
+                                   additionally rados objects for incomplete multipart uploads will not be output
   
     --conf/-c FILE    read configuration from the given configuration file
     --id ID           set ID portion of my name