[libvirt] [[PATCHv2 3/2]] virsh: add --graceful switch to destroy command
Michal Privoznik
mprivozn at redhat.com
Fri Feb 3 19:44:12 UTC 2012
On 03.02.2012 20:34, Laine Stump wrote:
> This allows virsh to use the new VIR_DOMAIN_DESTROY_GRACEUL flag for
> virDomainDestroyFlags.
> ---
> Okay, how about this one :-)
>
> tools/virsh.c | 9 ++++++++-
> tools/virsh.pod | 6 +++++-
> 2 files changed, 13 insertions(+), 2 deletions(-)
>
> diff --git a/tools/virsh.c b/tools/virsh.c
> index 42985a9..6a151e6 100644
> --- a/tools/virsh.c
> +++ b/tools/virsh.c
> @@ -4264,6 +4264,7 @@ static const vshCmdInfo info_destroy[] = {
>
> static const vshCmdOptDef opts_destroy[] = {
> {"domain", VSH_OT_DATA, VSH_OFLAG_REQ, N_("domain name, id or uuid")},
> + {"graceful", VSH_OT_BOOL, VSH_OFLAG_NONE, N_("needs rawio capability")},
> {NULL, 0, 0, NULL}
> };
>
> @@ -4273,6 +4274,7 @@ cmdDestroy(vshControl *ctl, const vshCmd *cmd)
> virDomainPtr dom;
> bool ret = true;
> const char *name;
> + int result;
I tend to define unsigned flags = 0; here, even when they'll be used
only for one flag right now, but it will simplify patches adding a new one.
>
> if (!vshConnectionUsability(ctl, ctl->conn))
> return false;
> @@ -4280,7 +4282,12 @@ cmdDestroy(vshControl *ctl, const vshCmd *cmd)
> if (!(dom = vshCommandOptDomain(ctl, cmd, &name)))
> return false;
>
> - if (virDomainDestroy(dom) == 0) {
> + if (vshCommandOptBool(cmd, "graceful"))
> + result = virDomainDestroyFlags(dom, VIR_DOMAIN_DESTROY_GRACEFUL);
> + else
> + result = virDomainDestroy(dom);
> +
> + if (result == 0) {
So this chunk will look like:
if (vshCommandOptBool(cmd, "graceful"))
flags |= VIR_DOMAIN_DESTROY_GRACEFUL;
if (flags)
result = virDomainDestroyFlags(dom, flags);
else
result = virDomainDestroy(dom);
if (result == 0) {
But this is not a show stopper for me.
> vshPrint(ctl, _("Domain %s destroyed\n"), name);
> } else {
> vshError(ctl, _("Failed to destroy domain %s"), name);
> diff --git a/tools/virsh.pod b/tools/virsh.pod
> index 10b51ff..a85da13 100644
> --- a/tools/virsh.pod
> +++ b/tools/virsh.pod
> @@ -458,7 +458,7 @@ Flag I<--title> selects operation on the title field instead of description.
> If neither of I<--edit> and I<--new_desc> are specified the note or description
> is displayed instead of being modified.
>
> -=item B<destroy> I<domain-id>
> +=item B<destroy> I<domain-id> [I<--graceful>]
>
> Immediately terminate the domain domain-id. This doesn't give the domain
> OS any chance to react, and it's the equivalent of ripping the power
> @@ -472,6 +472,10 @@ be lost once the guest stops running, but the snapshot contents still
> exist, and a new domain with the same name and UUID can restore the
> snapshot metadata with B<snapshot-create>.
>
> +If I<--graceful> is specified, don't resort to extreme measures
> +(e.g. SIGKILL) when the guest doesn't stop after a reasonable timeout;
> +return an error instead.
> +
> =item B<domblkstat> I<domain> I<block-device> [I<--human>]
>
> Get device block stats for a running domain. A I<block-device> corresponds
Nice, you haven't forgot the documentation.
Overall, ACK, regardless you'll change that nit or not.
Michal
More information about the libvir-list
mailing list