[libvirt] [PATCH 2/2] virsh: Pass the correct live/config xml to virshDomainDetachInterface.
Cole Robinson
crobinso at redhat.com
Wed May 4 15:41:56 UTC 2016
On 05/04/2016 10:26 AM, Nitesh Konkar wrote:
> cmdDetachInterface function checks for live config
> flags and then passes the live/config domain xml
> to virshDomainDetachInterface accordingly.
>
> Signed-off-by: Nitesh Konkar <nitkon12 at linux.vnet.ibm.com>
> ---
> tools/virsh-domain.c | 46 +++++++++++++++++++++++++---------------------
> 1 file changed, 25 insertions(+), 21 deletions(-)
>
> diff --git a/tools/virsh-domain.c b/tools/virsh-domain.c
> index 1b4e9f0..ff467df 100644
> --- a/tools/virsh-domain.c
> +++ b/tools/virsh-domain.c
> @@ -11292,10 +11292,10 @@ static bool
> cmdDetachInterface(vshControl *ctl, const vshCmd *cmd)
> {
> virDomainPtr dom = NULL;
> - char *doc = NULL;
> + char *doc_live = NULL, *doc_config = NULL;
> const char *mac = NULL, *type = NULL;
> - bool ret = false;
> - unsigned int flags = VIR_DOMAIN_AFFECT_CURRENT;
> + int flags = 0;
> + bool ret = false, affect_config, affect_live;
> bool current = vshCommandOptBool(cmd, "current");
> bool config = vshCommandOptBool(cmd, "config");
> bool live = vshCommandOptBool(cmd, "live");
> @@ -11312,27 +11312,31 @@ cmdDetachInterface(vshControl *ctl, const vshCmd *cmd)
> if (vshCommandOptStringReq(ctl, cmd, "mac", &mac) < 0)
> goto cleanup;
>
> - if (config || persistent)
> - flags |= VIR_DOMAIN_AFFECT_CONFIG;
> - if (live)
> - flags |= VIR_DOMAIN_AFFECT_LIVE;
> -
> if (!(dom = virshCommandOptDomain(ctl, cmd, NULL)))
> return false;
>
> - if (persistent &&
> - virDomainIsActive(dom) == 1)
> - flags |= VIR_DOMAIN_AFFECT_LIVE;
> + affect_config = (config || persistent);
>
> - if (flags & VIR_DOMAIN_AFFECT_CONFIG)
> - doc = virDomainGetXMLDesc(dom, VIR_DOMAIN_XML_INACTIVE);
> - else
> - doc = virDomainGetXMLDesc(dom, 0);
> + if (affect_config) {
> + if (!(doc_config = virDomainGetXMLDesc(dom, VIR_DOMAIN_XML_INACTIVE)))
> + goto cleanup;
> + if (!(ret = virshDomainDetachInterface(doc_config, flags | VIR_DOMAIN_AFFECT_CONFIG, dom, ctl, current, type, mac)))
> + goto cleanup;
> + }
>
> - if (!doc)
> - goto cleanup;
> - else
> - ret = virshDomainDetachInterface(doc, flags, dom, ctl, current, type, mac);
> + affect_live = (live || (persistent && virDomainIsActive(dom) == 1));
> +
> + if (affect_live || !affect_config) {
> + flags = 0;
> +
> + if (affect_live)
> + flags |= VIR_DOMAIN_AFFECT_LIVE;
> +
> + if (!(doc_live = virDomainGetXMLDesc(dom, 0)))
> + goto cleanup;
> +
> + ret = virshDomainDetachInterface(doc_live, flags, dom, ctl, current, type, mac);
> + }
>
I pushed with the above long lines split
Thanks,
Cole
> cleanup:
> if (!ret) {
> @@ -11340,8 +11344,8 @@ cmdDetachInterface(vshControl *ctl, const vshCmd *cmd)
> } else {
> vshPrint(ctl, "%s", _("Interface detached successfully\n"));
> }
> -
> - VIR_FREE(doc);
> + VIR_FREE(doc_live);
> + VIR_FREE(doc_config);
> virDomainFree(dom);
> return ret;
> }
>
More information about the libvir-list
mailing list