[PATCH 1/2] virsh: Show 'connected to console' message later

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Right now, we display the message before actually attempting
to connect to the VM console. That operation, however, can
fail for a number of reasons: for example, is the VM doesn't
have a serial device, the output ends up looking like

  $ virsh console cirros
  Connected to domain 'cirros'
  Escape character is ^] (Ctrl + ])
  error: internal error: cannot find character device <null>

The initial message is misleading. Change things so that it's
only printed if we actually successfully connected to the VM
console.

Signed-off-by: Andrea Bolognani <abologna@xxxxxxxxxx>
---
 tools/virsh-console.c | 19 +++++++++++++------
 tools/virsh-domain.c  |  7 -------
 2 files changed, 13 insertions(+), 13 deletions(-)

diff --git a/tools/virsh-console.c b/tools/virsh-console.c
index 7c561a11f3..27f2d09f5f 100644
--- a/tools/virsh-console.c
+++ b/tools/virsh-console.c
@@ -418,12 +418,6 @@ virshRunConsole(vshControl *ctl,
 
     sigemptyset(&sighandler.sa_mask);
 
-    /* Put STDIN into raw mode so that stuff typed does not echo to the screen
-     * (the TTY reads will result in it being echoed back already), and also
-     * ensure Ctrl-C, etc is blocked, and misc other bits */
-    if (vshTTYMakeRaw(ctl, true) < 0)
-        goto resettty;
-
     if (!(con = virConsoleNew()))
         goto resettty;
 
@@ -447,6 +441,19 @@ virshRunConsole(vshControl *ctl,
     if (virDomainOpenConsole(dom, dev_name, con->st, flags) < 0)
         goto cleanup;
 
+    vshPrintExtra(ctl, _("Connected to domain '%1$s'\n"), virDomainGetName(dom));
+    vshPrintExtra(ctl, _("Escape character is %1$s"), priv->escapeChar);
+    if (priv->escapeChar[0] == '^')
+        vshPrintExtra(ctl, " (Ctrl + %c)", priv->escapeChar[1]);
+    vshPrintExtra(ctl, "\n");
+    fflush(stdout);
+
+    /* Put STDIN into raw mode so that stuff typed does not echo to the screen
+     * (the TTY reads will result in it being echoed back already), and also
+     * ensure Ctrl-C, etc is blocked, and misc other bits */
+    if (vshTTYMakeRaw(ctl, true) < 0)
+        goto cleanup;
+
     virObjectRef(con);
     if ((con->stdinWatch = virEventAddHandle(STDIN_FILENO,
                                              VIR_EVENT_HANDLE_READABLE,
diff --git a/tools/virsh-domain.c b/tools/virsh-domain.c
index cd37828660..148b78e878 100644
--- a/tools/virsh-domain.c
+++ b/tools/virsh-domain.c
@@ -2987,7 +2987,6 @@ cmdRunConsole(vshControl *ctl, virDomainPtr dom,
               unsigned int flags)
 {
     int state;
-    virshControl *priv = ctl->privData;
 
     if ((state = virshDomainState(ctl, dom, NULL)) < 0) {
         vshError(ctl, "%s", _("Unable to get domain status"));
@@ -3004,12 +3003,6 @@ cmdRunConsole(vshControl *ctl, virDomainPtr dom,
         return false;
     }
 
-    vshPrintExtra(ctl, _("Connected to domain '%1$s'\n"), virDomainGetName(dom));
-    vshPrintExtra(ctl, _("Escape character is %1$s"), priv->escapeChar);
-    if (priv->escapeChar[0] == '^')
-        vshPrintExtra(ctl, " (Ctrl + %c)", priv->escapeChar[1]);
-    vshPrintExtra(ctl, "\n");
-    fflush(stdout);
     if (virshRunConsole(ctl, dom, name, resume_domain, flags) == 0)
         return true;
 
-- 
2.44.0
_______________________________________________
Devel mailing list -- devel@xxxxxxxxxxxxxxxxx
To unsubscribe send an email to devel-leave@xxxxxxxxxxxxxxxxx




[Index of Archives]     [Virt Tools]     [Libvirt Users]     [Lib OS Info]     [Fedora Users]     [Fedora Desktop]     [Fedora SELinux]     [Big List of Linux Books]     [Yosemite News]     [KDE Users]     [Fedora Tools]

  Powered by Linux