Document all options in --help output.  If -n is not in use, then
enhance the banner to print the current state of h, and further tailor
the advice given on useful next steps to take to mention opt_go when
using --opt-mode.
---
 python/nbdsh.py | 37 ++++++++++++++++++++++++++++---------
 1 file changed, 28 insertions(+), 9 deletions(-)

diff --git a/python/nbdsh.py b/python/nbdsh.py
index 0919c9ec..872b94fc 100644
--- a/python/nbdsh.py
+++ b/python/nbdsh.py
@@ -86,11 +86,13 @@ def __call__(self, parser, namespace, values, 
option_string=None):
     parser.add_argument('--connect', dest='uri', action=SnippetAction,
                         help=argparse.SUPPRESS)

-    parser.add_argument('-v', '--verbose', action='store_true')
+    parser.add_argument('-v', '--verbose', action='store_true',
+                        help="enable verbose debugging")
     short_options.append("-v")
     long_options.append("--verbose")

-    parser.add_argument('-V', '--version', action='store_true')
+    parser.add_argument('-V', '--version', action='store_true',
+                        help="display version information")
     short_options.append("-V")
     long_options.append("--version")

@@ -127,7 +129,10 @@ def __call__(self, parser, namespace, values, 
option_string=None):
         os.environ["LIBNBD_DEBUG"] = "1"

     # Create the handle.
-    if not args.n:
+    if args.n:
+        pass
+    else:
+        global h
         h = nbd.NBD()
         h.set_handle_name("nbdsh")

@@ -165,21 +170,35 @@ def line(x): lines.append(x)
     def blank(): line("")
     def example(ex, desc): line("%-34s # %s" % (ex, desc))

+    connect_hint = False
+    go_hint = False
     blank()
     line("Welcome to nbdsh, the shell for interacting with")
     line("Network Block Device (NBD) servers.")
     blank()
-    if not args.n:
-        line("The ‘nbd’ module has already been imported and there")
-        line("is an open NBD handle called ‘h’.")
-        blank()
-    else:
+    if args.n:
         line("The ‘nbd’ module has already been imported.")
         blank()
         example("h = nbd.NBD()", "Create a new handle.")
-    if False:  # args.uri is None:
+        connect_hint = True
+    else:
+        global h
+        state = h.connection_state()
+        state = state[:state.find(':')]
+        line("The ‘nbd’ module has already been imported and there")
+        line("is an open NBD handle called ‘h’ in state '%s'." % state)
+        blank()
+        if h.aio_is_created():
+            connect_hint = True
+            if h.get_opt_mode():
+                go_hint = True
+        elif h.aio_is_negotiating():
+            go_hint = True
+    if connect_hint:
         example('h.connect_tcp("remote", "10809")',
                 "Connect to a remote server.")
+    if go_hint:
+        example("h.opt_go()", "Finish option negotiation")
     example("h.get_size()", "Get size of the remote disk.")
     example("buf = h.pread(512, 0)", "Read the first sector.")
     example("exit() or Ctrl-D", "Quit the shell")
-- 
2.38.1

_______________________________________________
Libguestfs mailing list
Libguestfs@redhat.com
https://listman.redhat.com/mailman/listinfo/libguestfs

Reply via email to