mirror of
https://gitlab.com/libvirt/libvirt.git
synced 2025-01-27 15:05:17 +00:00
virsh-domain: Remove unused vshCompleteXMLFromDomain
The function is marked as unused and breaks compilation on RHEL4. Remove it from the tree until a new use case can be found.
This commit is contained in:
parent
406dc47757
commit
38cc07b7bc
@ -9374,134 +9374,6 @@ cleanup:
|
|||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* vshCompleteXMLFromDomain:
|
|
||||||
* @ctl vshControl for error messages printing
|
|
||||||
* @dom domain
|
|
||||||
* @oldXML device XML before
|
|
||||||
* @newXML and after completion
|
|
||||||
*
|
|
||||||
* For given domain and (probably incomplete) device XML specification try to
|
|
||||||
* find such device in domain and complete missing parts. This is however
|
|
||||||
* possible only when given device XML is sufficiently precise so it addresses
|
|
||||||
* only one device.
|
|
||||||
*
|
|
||||||
* Returns -2 when no such device exists in domain, -3 when given XML selects many
|
|
||||||
* (is too ambiguous), 0 in case of success. Otherwise returns -1. @newXML
|
|
||||||
* is touched only in case of success.
|
|
||||||
*/
|
|
||||||
ATTRIBUTE_UNUSED
|
|
||||||
static int
|
|
||||||
vshCompleteXMLFromDomain(vshControl *ctl, virDomainPtr dom, char *oldXML,
|
|
||||||
char **newXML)
|
|
||||||
{
|
|
||||||
int funcRet = -1;
|
|
||||||
char *domXML = NULL;
|
|
||||||
xmlDocPtr domDoc = NULL, devDoc = NULL;
|
|
||||||
xmlNodePtr node = NULL;
|
|
||||||
xmlXPathContextPtr domCtxt = NULL, devCtxt = NULL;
|
|
||||||
xmlNodePtr *devices = NULL;
|
|
||||||
xmlSaveCtxtPtr sctxt = NULL;
|
|
||||||
int devices_size;
|
|
||||||
char *xpath = NULL;
|
|
||||||
xmlBufferPtr buf = NULL;
|
|
||||||
int i = 0;
|
|
||||||
int indx = -1;
|
|
||||||
|
|
||||||
if (!(domXML = virDomainGetXMLDesc(dom, 0))) {
|
|
||||||
vshError(ctl, _("couldn't get XML description of domain %s"),
|
|
||||||
virDomainGetName(dom));
|
|
||||||
goto cleanup;
|
|
||||||
}
|
|
||||||
|
|
||||||
domDoc = virXMLParseStringCtxt(domXML, _("(domain_definition)"), &domCtxt);
|
|
||||||
if (!domDoc) {
|
|
||||||
vshError(ctl, _("Failed to parse domain definition xml"));
|
|
||||||
goto cleanup;
|
|
||||||
}
|
|
||||||
|
|
||||||
devDoc = virXMLParseStringCtxt(oldXML, _("(device_definition)"), &devCtxt);
|
|
||||||
if (!devDoc) {
|
|
||||||
vshError(ctl, _("Failed to parse device definition xml"));
|
|
||||||
goto cleanup;
|
|
||||||
}
|
|
||||||
|
|
||||||
node = xmlDocGetRootElement(devDoc);
|
|
||||||
|
|
||||||
buf = xmlBufferCreate();
|
|
||||||
if (!buf) {
|
|
||||||
vshError(ctl, "%s", _("out of memory"));
|
|
||||||
goto cleanup;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Get all possible devices */
|
|
||||||
if (virAsprintf(&xpath, "/domain/devices/%s", node->name) < 0) {
|
|
||||||
virReportOOMError();
|
|
||||||
goto cleanup;
|
|
||||||
}
|
|
||||||
devices_size = virXPathNodeSet(xpath, domCtxt, &devices);
|
|
||||||
|
|
||||||
if (devices_size < 0) {
|
|
||||||
/* error */
|
|
||||||
vshError(ctl, "%s", _("error when selecting nodes"));
|
|
||||||
goto cleanup;
|
|
||||||
} else if (devices_size == 0) {
|
|
||||||
/* no such device */
|
|
||||||
funcRet = -2;
|
|
||||||
goto cleanup;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* and refine */
|
|
||||||
for (i = 0; i < devices_size; i++) {
|
|
||||||
if (vshNodeIsSuperset(devices[i], node)) {
|
|
||||||
if (indx >= 0) {
|
|
||||||
funcRet = -3; /* ambiguous */
|
|
||||||
goto cleanup;
|
|
||||||
}
|
|
||||||
indx = i;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if (indx < 0) {
|
|
||||||
funcRet = -2; /* no such device */
|
|
||||||
goto cleanup;
|
|
||||||
}
|
|
||||||
|
|
||||||
vshDebug(ctl, VSH_ERR_DEBUG, "Found device at pos %d\n", indx);
|
|
||||||
|
|
||||||
if (newXML) {
|
|
||||||
sctxt = xmlSaveToBuffer(buf, NULL, 0);
|
|
||||||
if (!sctxt) {
|
|
||||||
vshError(ctl, "%s", _("failed to create document saving context"));
|
|
||||||
goto cleanup;
|
|
||||||
}
|
|
||||||
|
|
||||||
xmlSaveTree(sctxt, devices[indx]);
|
|
||||||
xmlSaveClose(sctxt);
|
|
||||||
*newXML = (char *) xmlBufferContent(buf);
|
|
||||||
if (!*newXML) {
|
|
||||||
virReportOOMError();
|
|
||||||
goto cleanup;
|
|
||||||
}
|
|
||||||
buf->content = NULL;
|
|
||||||
}
|
|
||||||
|
|
||||||
vshDebug(ctl, VSH_ERR_DEBUG, "Old xml:\n%s\nNew xml:\n%s\n", oldXML,
|
|
||||||
newXML ? NULLSTR(*newXML) : "(null)");
|
|
||||||
|
|
||||||
funcRet = 0;
|
|
||||||
|
|
||||||
cleanup:
|
|
||||||
xmlBufferFree(buf);
|
|
||||||
VIR_FREE(devices);
|
|
||||||
xmlXPathFreeContext(devCtxt);
|
|
||||||
xmlXPathFreeContext(domCtxt);
|
|
||||||
xmlFreeDoc(devDoc);
|
|
||||||
xmlFreeDoc(domDoc);
|
|
||||||
VIR_FREE(domXML);
|
|
||||||
VIR_FREE(xpath);
|
|
||||||
return funcRet;
|
|
||||||
}
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* "detach-device" command
|
* "detach-device" command
|
||||||
|
Loading…
x
Reference in New Issue
Block a user