[libvirt] [PATCH] virsh-edit: Make force editing usable

Martin Kletzander mkletzan at redhat.com
Thu Feb 19 15:53:08 UTC 2015


On Thu, Feb 19, 2015 at 04:43:44PM +0100, Michal Privoznik wrote:
>On 19.02.2015 15:28, Martin Kletzander wrote:
>> When editing a domain with 'virsh edit' and failing validation, the
>> usual message pops up:
>>
>>   Failed. Try again? [y,n,f,?]:
>>
>> The option 'f' (force) is pretty unusable.  It tries to step into the
>> same puddle again and again when it can at least try to force the
>> definition.
>
>The idea behind force was, that imagine two virshes running. In both you
>start editing the same domain. In one you successfully save the changes
>and domain XML is regenerated. However, the other one notices this and
>ask you, that domain definition has changed meanwhile, if you want to
>continue. And by choosing 'force' you can use the force, Luke.
>

I had no idea this could be a use case, the only thing I could think
of is that if it fails, I am running bad daemon, so I run the right
one and force it, but that never worked (the disconnection breaks the
re-edit), so I thought it's pretty pointless.

I can add a new letter for toggling validation if you'd rather see that.

>>
>> This patch adds support for relaxing definition in virsh-edit and makes
>> 'virsh edit <domain>' more usable, mainly for testing.
>>
>> Signed-off-by: Martin Kletzander <mkletzan at redhat.com>
>> ---
>>  tools/virsh-domain.c | 5 +++++
>>  tools/virsh-edit.c   | 5 ++++-
>>  tools/virsh.c        | 4 ++--
>>  3 files changed, 11 insertions(+), 3 deletions(-)
>>
>> diff --git a/tools/virsh-domain.c b/tools/virsh-domain.c
>> index 2506b89..3dd676c 100644
>> --- a/tools/virsh-domain.c
>> +++ b/tools/virsh-domain.c
>> @@ -11265,6 +11265,11 @@ cmdEdit(vshControl *ctl, const vshCmd *cmd)
>>      } while (0)
>>  #define EDIT_DEFINE \
>>      (dom_edited = vshDomainDefine(ctl->conn, doc_edited, define_flags))
>> +#define EDIT_RELAX                                      \
>> +    do {                                                \
>> +        define_flags &= ~VIR_DOMAIN_DEFINE_VALIDATE;    \
>> +    } while (0);
>> +
>>  #include "virsh-edit.c"
>>
>>      vshPrint(ctl, _("Domain %s XML configuration edited.\n"),
>> diff --git a/tools/virsh-edit.c b/tools/virsh-edit.c
>> index 41a6d53..3186998 100644
>> --- a/tools/virsh-edit.c
>> +++ b/tools/virsh-edit.c
>> @@ -1,7 +1,7 @@
>>  /*
>>   * virsh-edit.c: Implementation of generic virsh *-edit intelligence
>>   *
>> - * Copyright (C) 2012 Red Hat, Inc.
>> + * Copyright (C) 2012, 2015 Red Hat, Inc.
>>   *
>>   * This library is free software; you can redistribute it and/or
>>   * modify it under the terms of the GNU Lesser General Public
>> @@ -119,6 +119,9 @@ do {
>>              break;
>>
>>          case 'f':
>> +#ifdef EDIT_RELAX
>
>What could happen to the EDIT_RELAX to be undefined? I mean, it'll be
>defined no matter what (since you're defining it here in this patch).
>

I define it only when editing a domain (although I forgot to undefine
it afterwards).

>> +            EDIT_RELAX;
>> +#endif
>>              goto redefine;
>>              break;
>>
>> diff --git a/tools/virsh.c b/tools/virsh.c
>> index aba34ce..5b154e1 100644
>> --- a/tools/virsh.c
>> +++ b/tools/virsh.c
>> @@ -1,7 +1,7 @@
>>  /*
>>   * virsh.c: a shell to exercise the libvirt API
>>   *
>> - * Copyright (C) 2005, 2007-2014 Red Hat, Inc.
>> + * Copyright (C) 2005, 2007-2015 Red Hat, Inc.
>>   *
>>   * This library is free software; you can redistribute it and/or
>>   * modify it under the terms of the GNU Lesser General Public
>> @@ -541,7 +541,7 @@ vshAskReedit(vshControl *ctl, const char *msg)
>>                          "",
>>                          _("y - yes, start editor again"),
>>                          _("n - no, throw away my changes"),
>> -                        _("f - force, try to redefine again"),
>> +                        _("f - force, try to redefine again (without validation)"),
>
>I'd s/(/(even /
>

unless new letter appears...

>>                          _("? - print this help"),
>>                          NULL);
>>              continue;
>>
>
>ACK though.
>

waiting for your opinion.  I'm also thinking about revriting it so we
don't have to include a .c file.

>Michal
>
>--
>libvir-list mailing list
>libvir-list at redhat.com
>https://www.redhat.com/mailman/listinfo/libvir-list
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 819 bytes
Desc: not available
URL: <http://listman.redhat.com/archives/libvir-list/attachments/20150219/5d355387/attachment-0001.sig>


More information about the libvir-list mailing list