From 0ec9a8c2f2c6c140d62a86a6ba5b3527685d5abd Mon Sep 17 00:00:00 2001 From: Xu He Jie Date: Thu, 29 Sep 2011 16:57:12 +0800 Subject: [PATCH] virsh: Add 'reset' command for virsh Signed-off-by: Xu He Jie --- tools/virsh.c | 39 +++++++++++++++++++++++++++++++++++++++ tools/virsh.pod | 8 ++++++++ 2 files changed, 47 insertions(+) diff --git a/tools/virsh.c b/tools/virsh.c index 807324b71c..1909dce20e 100644 --- a/tools/virsh.c +++ b/tools/virsh.c @@ -3191,6 +3191,44 @@ cmdReboot(vshControl *ctl, const vshCmd *cmd) return ret; } +/* + * "reset" command + */ +static const vshCmdInfo info_reset[] = { + {"help", N_("reset a domain")}, + {"desc", N_("Reset the target domain as if by power button")}, + {NULL, NULL} +}; + +static const vshCmdOptDef opts_reset[] = { + {"domain", VSH_OT_DATA, VSH_OFLAG_REQ, N_("domain name, id or uuid")}, + {NULL, 0, 0, NULL} +}; + +static bool +cmdReset(vshControl *ctl, const vshCmd *cmd) +{ + virDomainPtr dom; + bool ret = true; + const char *name; + + if (!vshConnectionUsability(ctl, ctl->conn)) + return false; + + if (!(dom = vshCommandOptDomain(ctl, cmd, &name))) + return false; + + if (virDomainReset(dom, 0) == 0) { + vshPrint(ctl, _("Domain %s was reset\n"), name); + } else { + vshError(ctl, _("Failed to reset domain %s"), name); + ret = false; + } + + virDomainFree(dom); + return ret; +} + /* * "destroy" command */ @@ -13665,6 +13703,7 @@ static const vshCmdDef domManagementCmds[] = { {"migrate-getspeed", cmdMigrateGetMaxSpeed, opts_migrate_getspeed, info_migrate_getspeed, 0}, {"reboot", cmdReboot, opts_reboot, info_reboot, 0}, + {"reset", cmdReset, opts_reset, info_reset, 0}, {"restore", cmdRestore, opts_restore, info_restore, 0}, {"resume", cmdResume, opts_resume, info_resume, 0}, {"save", cmdSave, opts_save, info_save, 0}, diff --git a/tools/virsh.pod b/tools/virsh.pod index 614b5a3e86..be81afc470 100644 --- a/tools/virsh.pod +++ b/tools/virsh.pod @@ -790,6 +790,14 @@ domain actually reboots. The exact behavior of a domain when it reboots is set by the I parameter in the domain's XML definition. +=item B I + +Reset a domain immediately without any guest shutdown. B +emulates the power reset button on a machine, where all guest +hardware sees the RST line set and reinitializes internal state. + +B: Reset without any guest OS shutdown risks data loss. + =item B I [I<--bypass-cache>] [I<--xml> B] [{I<--running> | I<--paused>}]