Re: [PATCH libvirt v1 1/3] virsh: add `console --resume` support

2023-10-24 Thread Michal Prívozník
On 9/28/23 17:37, Marc Hartmayer wrote:
> 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 
> Signed-off-by: Marc Hartmayer 
> ---
>  tools/virsh-console.c |  8 
>  tools/virsh-console.h |  1 +
>  tools/virsh-domain.c  | 14 ++
>  3 files changed, 19 insertions(+), 4 deletions(-)
> 
> diff --git a/tools/virsh-console.c b/tools/virsh-console.c
> index 6bfb44a190ec..e44a070e7045 100644
> --- a/tools/virsh-console.c
> +++ b/tools/virsh-console.c
> @@ -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,13 @@ virshRunConsole(vshControl *ctl,
>  goto cleanup;
>  }
>  
> +if (resume_domain) {
> +if (virDomainResume(dom) != 0) {
> +vshError(ctl, _("Failed to resume domain '%1$s'"), 
> virDomainGetName(dom));

Long line.

> +goto cleanup;
> +}
> +}
> +
>  while (!con->quit) {
>  if (virCondWait(&con->cond, &con->parent.lock) < 0) {
>  virReportError(VIR_ERR_INTERNAL_ERROR, "%s",
> diff --git a/tools/virsh-console.h b/tools/virsh-console.h
> index e89484d24bf4..2d00ed90cf4a 100644
> --- a/tools/virsh-console.h
> +++ b/tools/virsh-console.h
> @@ -27,6 +27,7 @@
>  int virshRunConsole(vshControl *ctl,
>  virDomainPtr dom,
>  const char *dev_name,
> +const bool resume_domain,
>  unsigned int flags);
>  
>  #endif /* !WIN32 */
> diff --git a/tools/virsh-domain.c b/tools/virsh-domain.c
> index 7abafe2ba30c..5c3c6d18aebf 100644
> --- a/tools/virsh-domain.c
> +++ b/tools/virsh-domain.c
> @@ -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")
> +},

New options must go hand in hand with manpage update.

Michal



Re: [PATCH libvirt v1 1/3] virsh: add `console --resume` support

2023-10-23 Thread Thomas Huth

On 28/09/2023 17.37, Marc Hartmayer wrote:

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 
Signed-off-by: Marc Hartmayer 
---
  tools/virsh-console.c |  8 
  tools/virsh-console.h |  1 +
  tools/virsh-domain.c  | 14 ++
  3 files changed, 19 insertions(+), 4 deletions(-)


Reviewed-by: Thomas Huth 



[PATCH libvirt v1 1/3] virsh: add `console --resume` support

2023-09-28 Thread Marc Hartmayer
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 
Signed-off-by: Marc Hartmayer 
---
 tools/virsh-console.c |  8 
 tools/virsh-console.h |  1 +
 tools/virsh-domain.c  | 14 ++
 3 files changed, 19 insertions(+), 4 deletions(-)

diff --git a/tools/virsh-console.c b/tools/virsh-console.c
index 6bfb44a190ec..e44a070e7045 100644
--- a/tools/virsh-console.c
+++ b/tools/virsh-console.c
@@ -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,13 @@ 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",
diff --git a/tools/virsh-console.h b/tools/virsh-console.h
index e89484d24bf4..2d00ed90cf4a 100644
--- a/tools/virsh-console.h
+++ b/tools/virsh-console.h
@@ -27,6 +27,7 @@
 int virshRunConsole(vshControl *ctl,
 virDomainPtr dom,
 const char *dev_name,
+const bool resume_domain,
 unsigned int flags);
 
 #endif /* !WIN32 */
diff --git a/tools/virsh-domain.c b/tools/virsh-domain.c
index 7abafe2ba30c..5c3c6d18aebf 100644
--- a/tools/virsh-domain.c
+++ b/tools/virsh-domain.c
@@ -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;
 }
-- 
2.34.1



[RFC PATCH libvirt v1 1/3] virsh: add `console --resume` support

2023-09-25 Thread Marc Hartmayer
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 
Signed-off-by: Marc Hartmayer 
---
 tools/virsh-console.c |  8 
 tools/virsh-console.h |  1 +
 tools/virsh-domain.c  | 14 ++
 3 files changed, 19 insertions(+), 4 deletions(-)

diff --git a/tools/virsh-console.c b/tools/virsh-console.c
index 6bfb44a190ec..e44a070e7045 100644
--- a/tools/virsh-console.c
+++ b/tools/virsh-console.c
@@ -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,13 @@ 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",
diff --git a/tools/virsh-console.h b/tools/virsh-console.h
index e89484d24bf4..2d00ed90cf4a 100644
--- a/tools/virsh-console.h
+++ b/tools/virsh-console.h
@@ -27,6 +27,7 @@
 int virshRunConsole(vshControl *ctl,
 virDomainPtr dom,
 const char *dev_name,
+const bool resume_domain,
 unsigned int flags);
 
 #endif /* !WIN32 */
diff --git a/tools/virsh-domain.c b/tools/virsh-domain.c
index 7abafe2ba30c..5c3c6d18aebf 100644
--- a/tools/virsh-domain.c
+++ b/tools/virsh-domain.c
@@ -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;
 }
-- 
2.34.1