[Libguestfs] [libnbd PATCH v2] nbdsh: Prefer --uri over --connect

Eric Blake eblake at redhat.com
Thu Sep 12 21:06:48 UTC 2019


Typing nbdsh --con (the minimum to get an unambiguous prefix for
--connect, different from --command) is annoying compared to having a
short option.  Since it takes a URI as an argument, using -u/--uri is
a nicer mnemonic.  We still accept --connect for back-compat, and
document it in the man page, but omit it from --help as the new
spelling is nicer all around.
---

Here's what things evolved to after hiding --connect from --help output.

I've gone ahead and pushed this.

 sh/nbdsh.pod       |  8 ++++++--
 python/nbdsh.py    |  8 +++++---
 sh/test-context.sh | 24 ++++++++++++------------
 sh/test-pattern.sh |  2 +-
 4 files changed, 24 insertions(+), 18 deletions(-)

diff --git a/sh/nbdsh.pod b/sh/nbdsh.pod
index d44c8d8..41a88a5 100644
--- a/sh/nbdsh.pod
+++ b/sh/nbdsh.pod
@@ -32,11 +32,11 @@ For documentation about the libnbd API please open the shell and type:

 =head2 Print the size of an NBD export

-The I<--connect> option connects to an NBD URI.  The I<-c> option lets
+The I<-u> option connects to an NBD URI.  The I<-c> option lets
 you execute single Python statements from the command line.  Combining
 these two options lets you print the size in bytes of an NBD export:

- $ nbdsh --connect nbd://localhost -c 'print (h.get_size ())'
+ $ nbdsh -u nbd://localhost -c 'print (h.get_size ())'
  1073741824

 =head2 Hexdump the boot sector of an NBD export
@@ -76,6 +76,10 @@ can be specified multiple times in order to run multiple commands.

 Read standard input and execute it as a command.

+=item B<-u> URI
+
+=item B<-uri> URI
+
 =item B<--connect> URI

 Connect to the given L<NBD URI|https://github.com/NetworkBlockDevice/nbd/blob/master/doc/uri.md>.
diff --git a/python/nbdsh.py b/python/nbdsh.py
index 098cc8a..3b4ad0e 100644
--- a/python/nbdsh.py
+++ b/python/nbdsh.py
@@ -29,8 +29,10 @@ def shell():
                                       epilog=epilog)
     parser.add_argument ('--base-allocation', action='store_true',
                          help='request the "base:allocation" meta context')
-    parser.add_argument ('--connect', metavar='URI',
+    parser.add_argument ('-u', '--uri',
                          help="connect to NBD URI")
+    # For back-compat, provide --connect as an undocumented synonym to --uri
+    parser.add_argument ('--connect', dest='uri', help=argparse.SUPPRESS)
     parser.add_argument ('-c', '--command', action='append',
                          help="run a command")
     parser.add_argument ('-V', '--version', action='version',
@@ -56,8 +58,8 @@ help (nbd)                          # Display documentation

     if args.base_allocation:
         h.add_meta_context (nbd.CONTEXT_BASE_ALLOCATION)
-    if args.connect is not None:
-        h.connect_uri (args.connect)
+    if args.uri is not None:
+        h.connect_uri (args.uri)
     # If there are no -c or --command parameters, go interactive,
     # otherwise we run the commands and exit.
     if not args.command:
diff --git a/sh/test-context.sh b/sh/test-context.sh
index 9a7d3ab..ab3ae80 100755
--- a/sh/test-context.sh
+++ b/sh/test-context.sh
@@ -21,7 +21,7 @@ fail=0

 # Without --base-allocation, no meta context is requested
 output=$(nbdkit -U - null --run 'nbdsh \
-    --connect "nbd+unix://?socket=$unixsocket" \
+    -u "nbd+unix://?socket=$unixsocket" \
     -c "print (h.can_meta_context (nbd.CONTEXT_BASE_ALLOCATION))"')
 if test "x$output" != xFalse; then
     echo "$0: unexpected output: $output"
@@ -30,26 +30,26 @@ fi

 # With --base-allocation (and a server that supports it), meta context works.
 output=$(nbdkit -U - null --run 'nbdsh \
-    --base-allocation --connect "nbd+unix://?socket=$unixsocket" \
-    -c "print (h.can_meta_context (nbd.CONTEXT_BASE_ALLOCATION))"')
-if test "x$output" != xTrue; then
-    echo "$0: unexpected output: $output"
-    fail=1
-fi
-
-# Again, but with --b after --connect, and with abbreviated option names
-output=$(nbdkit -U - null --run 'nbdsh \
-    --conn "nbd+unix://?socket=$unixsocket" --b \
+    --base-allocation --uri "nbd+unix://?socket=$unixsocket" \
     --command "print (h.can_meta_context (nbd.CONTEXT_BASE_ALLOCATION))"')
 if test "x$output" != xTrue; then
     echo "$0: unexpected output: $output"
     fail=1
 fi

+# Again, but with --b after -u, and with abbreviated option names
+output=$(nbdkit -U - null --run 'nbdsh \
+    -u "nbd+unix://?socket=$unixsocket" --b \
+    -c "print (h.can_meta_context (nbd.CONTEXT_BASE_ALLOCATION))"')
+if test "x$output" != xTrue; then
+    echo "$0: unexpected output: $output"
+    fail=1
+fi
+
 if [[ $(nbdkit --help) =~ --no-sr ]]; then
     # meta context depends on server cooperation
     output=$(nbdkit -U - --no-sr null --run 'nbdsh \
-      --connect "nbd+unix://?socket=$unixsocket" --base-allocation \
+      -u "nbd+unix://?socket=$unixsocket" --base-allocation \
       -c "print (h.can_meta_context (nbd.CONTEXT_BASE_ALLOCATION))"')
     if test "x$output" != xFalse; then
         echo "$0: unexpected output: $output"
diff --git a/sh/test-pattern.sh b/sh/test-pattern.sh
index 2d4e261..855bec7 100755
--- a/sh/test-pattern.sh
+++ b/sh/test-pattern.sh
@@ -36,7 +36,7 @@ if ! test -f "$pidfile"; then
     exit 1
 fi

-nbdsh --connect "nbd+unix://?socket=$sock" \
+nbdsh -u "nbd+unix://?socket=$sock" \
     -c '
 def size():
   return h.get_size()
-- 
2.21.0




More information about the Libguestfs mailing list