]> git.ipfire.org Git - thirdparty/libvirt.git/commitdiff
virsh-domain-monitor: Use the virsh wrappers for getting XML to simplify code
authorPeter Krempa <pkrempa@redhat.com>
Tue, 11 Apr 2017 15:33:53 +0000 (17:33 +0200)
committerPeter Krempa <pkrempa@redhat.com>
Wed, 12 Apr 2017 12:14:17 +0000 (14:14 +0200)
Reuse virshDomainGetXML and virshDomainGetXMLFromDom.

tools/virsh-domain-monitor.c

index 92995ad7da7a5768b7e01a4f76e9961475b47f28..3db4795d289650881315d288a472d9537af03698 100644 (file)
@@ -63,7 +63,6 @@ virshGetDomainDescription(vshControl *ctl, virDomainPtr dom, bool title,
                           unsigned int flags)
 {
     char *desc = NULL;
-    char *domxml = NULL;
     virErrorPtr err = NULL;
     xmlDocPtr doc = NULL;
     xmlXPathContextPtr ctxt = NULL;
@@ -90,16 +89,9 @@ virshGetDomainDescription(vshControl *ctl, virDomainPtr dom, bool title,
     }
 
     /* fall back to xml */
-    /* get domain's xml description and extract the title/description */
-    if (!(domxml = virDomainGetXMLDesc(dom, flags))) {
-        vshError(ctl, "%s", _("Failed to retrieve domain XML"));
+    if (virshDomainGetXMLFromDom(ctl, dom, flags, &doc, &ctxt) < 0)
         goto cleanup;
-    }
-    doc = virXMLParseStringCtxt(domxml, _("(domain_definition)"), &ctxt);
-    if (!doc) {
-        vshError(ctl, "%s", _("Couldn't parse domain XML"));
-        goto cleanup;
-    }
+
     if (title)
         desc = virXPathString("string(./title[1])", ctxt);
     else
@@ -109,7 +101,6 @@ virshGetDomainDescription(vshControl *ctl, virDomainPtr dom, bool title,
         desc = vshStrdup(ctl, "");
 
  cleanup:
-    VIR_FREE(domxml);
     xmlXPathFreeContext(ctxt);
     xmlFreeDoc(doc);
 
@@ -465,10 +456,8 @@ static const vshCmdOptDef opts_domblklist[] = {
 static bool
 cmdDomblklist(vshControl *ctl, const vshCmd *cmd)
 {
-    virDomainPtr dom;
     bool ret = false;
     unsigned int flags = 0;
-    char *xml = NULL;
     xmlDocPtr xmldoc = NULL;
     xmlXPathContextPtr ctxt = NULL;
     int ndisks;
@@ -485,15 +474,7 @@ cmdDomblklist(vshControl *ctl, const vshCmd *cmd)
 
     details = vshCommandOptBool(cmd, "details");
 
-    if (!(dom = virshCommandOptDomain(ctl, cmd, NULL)))
-        return false;
-
-    xml = virDomainGetXMLDesc(dom, flags);
-    if (!xml)
-        goto cleanup;
-
-    xmldoc = virXMLParseStringCtxt(xml, _("(domain_definition)"), &ctxt);
-    if (!xmldoc)
+    if (virshDomainGetXML(ctl, cmd, flags, &xmldoc, &ctxt) < 0)
         goto cleanup;
 
     ndisks = virXPathNodeSet("./devices/disk", ctxt, &disks);
@@ -553,8 +534,6 @@ cmdDomblklist(vshControl *ctl, const vshCmd *cmd)
     VIR_FREE(disks);
     xmlXPathFreeContext(ctxt);
     xmlFreeDoc(xmldoc);
-    VIR_FREE(xml);
-    virshDomainFree(dom);
     return ret;
 }
 
@@ -579,10 +558,8 @@ static const vshCmdOptDef opts_domiflist[] = {
 static bool
 cmdDomiflist(vshControl *ctl, const vshCmd *cmd)
 {
-    virDomainPtr dom;
     bool ret = false;
     unsigned int flags = 0;
-    char *xml = NULL;
     xmlDocPtr xmldoc = NULL;
     xmlXPathContextPtr ctxt = NULL;
     int ninterfaces;
@@ -592,15 +569,7 @@ cmdDomiflist(vshControl *ctl, const vshCmd *cmd)
     if (vshCommandOptBool(cmd, "inactive"))
         flags |= VIR_DOMAIN_XML_INACTIVE;
 
-    if (!(dom = virshCommandOptDomain(ctl, cmd, NULL)))
-        return false;
-
-    xml = virDomainGetXMLDesc(dom, flags);
-    if (!xml)
-        goto cleanup;
-
-    xmldoc = virXMLParseStringCtxt(xml, _("(domain_definition)"), &ctxt);
-    if (!xmldoc)
+    if (virshDomainGetXML(ctl, cmd, flags, &xmldoc, &ctxt) < 0)
         goto cleanup;
 
     ninterfaces = virXPathNodeSet("./devices/interface", ctxt, &interfaces);
@@ -648,8 +617,6 @@ cmdDomiflist(vshControl *ctl, const vshCmd *cmd)
 
  cleanup:
     VIR_FREE(interfaces);
-    virshDomainFree(dom);
-    VIR_FREE(xml);
     xmlFreeDoc(xmldoc);
     xmlXPathFreeContext(ctxt);
     return ret;
@@ -686,13 +653,11 @@ static const vshCmdOptDef opts_domif_getlink[] = {
 static bool
 cmdDomIfGetLink(vshControl *ctl, const vshCmd *cmd)
 {
-    virDomainPtr dom;
     const char *iface = NULL;
     char *state = NULL;
     char *xpath = NULL;
     virMacAddr macaddr;
     char macstr[VIR_MAC_STRING_BUFLEN] = "";
-    char *desc = NULL;
     xmlDocPtr xml = NULL;
     xmlXPathContextPtr ctxt = NULL;
     xmlNodePtr *interfaces = NULL;
@@ -703,21 +668,11 @@ cmdDomIfGetLink(vshControl *ctl, const vshCmd *cmd)
     if (vshCommandOptStringReq(ctl, cmd, "interface", &iface) < 0)
         return false;
 
-    if (!(dom = virshCommandOptDomain(ctl, cmd, NULL)))
-        return false;
-
     if (vshCommandOptBool(cmd, "config"))
         flags = VIR_DOMAIN_XML_INACTIVE;
 
-    if (!(desc = virDomainGetXMLDesc(dom, flags))) {
-        vshError(ctl, _("Failed to get domain description xml"));
+    if (virshDomainGetXML(ctl, cmd, flags, &xml, &ctxt) < 0)
         goto cleanup;
-    }
-
-    if (!(xml = virXMLParseStringCtxt(desc, _("(domain_definition)"), &ctxt))) {
-        vshError(ctl, _("Failed to parse domain description xml"));
-        goto cleanup;
-    }
 
     /* normalize the mac addr */
     if (virMacAddrParse(iface, &macaddr) == 0)
@@ -752,13 +707,11 @@ cmdDomIfGetLink(vshControl *ctl, const vshCmd *cmd)
     ret = true;
 
  cleanup:
-    VIR_FREE(desc);
     VIR_FREE(state);
     VIR_FREE(interfaces);
     VIR_FREE(xpath);
     xmlXPathFreeContext(ctxt);
     xmlFreeDoc(xml);
-    virshDomainFree(dom);
 
     return ret;
 }