mirror of
https://gitlab.com/libvirt/libvirt.git
synced 2024-12-21 21:25:25 +00:00
virsh: add console --resume
support
This patch adds the command line flag `--resume` to the `virsh console` command. This resumes a paused guest after connecting to the console. This might be handy since it's a "common" pattern to start a guest paused, connect to the console, and then resume it so as not to miss any console messages. Reviewed-by: Boris Fiuczynski <fiuczy@linux.ibm.com> Signed-off-by: Marc Hartmayer <mhartmay@linux.ibm.com> Signed-off-by: Michal Privoznik <mprivozn@redhat.com> Reviewed-by: Thomas Huth <thuth@redhat.com> Reviewed-by: Michal Privoznik <mprivozn@redhat.com>
This commit is contained in:
parent
1622012cc4
commit
49e3e7f9e8
@ -1442,7 +1442,7 @@ console
|
||||
|
||||
::
|
||||
|
||||
console domain [devname] [--safe] [--force]
|
||||
console domain [devname] [--safe] [--force] [--resume]
|
||||
|
||||
Connect the virtual serial console for the guest. The optional
|
||||
*devname* parameter refers to the device alias of an alternate
|
||||
@ -1455,6 +1455,9 @@ the server has to ensure exclusive access to console devices. Optionally
|
||||
the *--force* flag may be specified, requesting to disconnect any existing
|
||||
sessions, such as in a case of a broken connection.
|
||||
|
||||
If the flag *--resume* is specified then the guest is resumed after connecting
|
||||
to the console.
|
||||
|
||||
|
||||
cpu-stats
|
||||
---------
|
||||
|
@ -401,6 +401,7 @@ int
|
||||
virshRunConsole(vshControl *ctl,
|
||||
virDomainPtr dom,
|
||||
const char *dev_name,
|
||||
const bool resume_domain,
|
||||
unsigned int flags)
|
||||
{
|
||||
virConsole *con = NULL;
|
||||
@ -476,6 +477,14 @@ virshRunConsole(vshControl *ctl,
|
||||
goto cleanup;
|
||||
}
|
||||
|
||||
if (resume_domain) {
|
||||
if (virDomainResume(dom) != 0) {
|
||||
vshError(ctl, _("Failed to resume domain '%1$s'"),
|
||||
virDomainGetName(dom));
|
||||
goto cleanup;
|
||||
}
|
||||
}
|
||||
|
||||
while (!con->quit) {
|
||||
if (virCondWait(&con->cond, &con->parent.lock) < 0) {
|
||||
virReportError(VIR_ERR_INTERNAL_ERROR, "%s",
|
||||
|
@ -27,6 +27,7 @@
|
||||
int virshRunConsole(vshControl *ctl,
|
||||
virDomainPtr dom,
|
||||
const char *dev_name,
|
||||
const bool resume_domain,
|
||||
unsigned int flags);
|
||||
|
||||
#endif /* !WIN32 */
|
||||
|
@ -3012,6 +3012,10 @@ static const vshCmdOptDef opts_console[] = {
|
||||
.type = VSH_OT_BOOL,
|
||||
.help = N_("force console connection (disconnect already connected sessions)")
|
||||
},
|
||||
{.name = "resume",
|
||||
.type = VSH_OT_BOOL,
|
||||
.help = N_("resume a paused guest after connecting to console")
|
||||
},
|
||||
{.name = "safe",
|
||||
.type = VSH_OT_BOOL,
|
||||
.help = N_("only connect if safe console handling is supported")
|
||||
@ -3022,6 +3026,7 @@ static const vshCmdOptDef opts_console[] = {
|
||||
static bool
|
||||
cmdRunConsole(vshControl *ctl, virDomainPtr dom,
|
||||
const char *name,
|
||||
const bool resume_domain,
|
||||
unsigned int flags)
|
||||
{
|
||||
int state;
|
||||
@ -3048,7 +3053,7 @@ cmdRunConsole(vshControl *ctl, virDomainPtr dom,
|
||||
vshPrintExtra(ctl, " (Ctrl + %c)", priv->escapeChar[1]);
|
||||
vshPrintExtra(ctl, "\n");
|
||||
fflush(stdout);
|
||||
if (virshRunConsole(ctl, dom, name, flags) == 0)
|
||||
if (virshRunConsole(ctl, dom, name, resume_domain, flags) == 0)
|
||||
return true;
|
||||
|
||||
return false;
|
||||
@ -3059,6 +3064,7 @@ cmdConsole(vshControl *ctl, const vshCmd *cmd)
|
||||
{
|
||||
g_autoptr(virshDomain) dom = NULL;
|
||||
bool force = vshCommandOptBool(cmd, "force");
|
||||
bool resume = vshCommandOptBool(cmd, "resume");
|
||||
bool safe = vshCommandOptBool(cmd, "safe");
|
||||
unsigned int flags = 0;
|
||||
const char *name = NULL;
|
||||
@ -3074,7 +3080,7 @@ cmdConsole(vshControl *ctl, const vshCmd *cmd)
|
||||
if (safe)
|
||||
flags |= VIR_DOMAIN_CONSOLE_SAFE;
|
||||
|
||||
return cmdRunConsole(ctl, dom, name, flags);
|
||||
return cmdRunConsole(ctl, dom, name, resume, flags);
|
||||
}
|
||||
#endif /* WIN32 */
|
||||
|
||||
@ -4136,7 +4142,7 @@ cmdStart(vshControl *ctl, const vshCmd *cmd)
|
||||
vshPrintExtra(ctl, _("Domain '%1$s' started\n"),
|
||||
virDomainGetName(dom));
|
||||
#ifndef WIN32
|
||||
if (console && !cmdRunConsole(ctl, dom, NULL, 0))
|
||||
if (console && !cmdRunConsole(ctl, dom, NULL, false, 0))
|
||||
return false;
|
||||
#endif
|
||||
|
||||
@ -8232,7 +8238,7 @@ cmdCreate(vshControl *ctl, const vshCmd *cmd)
|
||||
virDomainGetName(dom), from);
|
||||
#ifndef WIN32
|
||||
if (console)
|
||||
cmdRunConsole(ctl, dom, NULL, 0);
|
||||
cmdRunConsole(ctl, dom, NULL, false, 0);
|
||||
#endif
|
||||
return true;
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user