On 02/03/2012 02:44 PM, Michal Privoznik wrote:
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.
Yeah, I agree, especially since we're likely to add another flag to
virDomainDestroyFlags soon. I switched it back to having a flags
variable, made sure it still worked, and pushed.
Thanks!