testParseNodeInfo: Rewrite to virXPathU(Int|LongLong)

Use the function for appropriate types and simplify the error logic.

Signed-off-by: Peter Krempa <pkrempa@redhat.com>
Reviewed-by: Ján Tomko <jtomko@redhat.com>
This commit is contained in:
Peter Krempa 2022-10-05 13:51:45 +02:00
parent 3e3c52f10f
commit 4899c55e99

View File

@ -874,41 +874,30 @@ testParseXMLDocFromFile(xmlNodePtr node,
static int static int
testParseNodeInfo(virNodeInfoPtr nodeInfo, xmlXPathContextPtr ctxt) testParseNodeInfo(virNodeInfoPtr nodeInfo, xmlXPathContextPtr ctxt)
{ {
long l;
int ret;
g_autofree char *str = NULL; g_autofree char *str = NULL;
unsigned int activeCpus;
unsigned long long memory = 0;
int rc;
ret = virXPathLong("string(/node/cpu/nodes[1])", ctxt, &l); if (virXPathUInt("string(/node/cpu/nodes[1])", ctxt, &nodeInfo->nodes) == -2) {
if (ret == 0) {
nodeInfo->nodes = l;
} else if (ret == -2) {
virReportError(VIR_ERR_XML_ERROR, "%s", virReportError(VIR_ERR_XML_ERROR, "%s",
_("invalid node cpu nodes value")); _("invalid node cpu nodes value"));
return -1; return -1;
} }
ret = virXPathLong("string(/node/cpu/sockets[1])", ctxt, &l); if (virXPathUInt("string(/node/cpu/sockets[1])", ctxt, &nodeInfo->sockets) == -2) {
if (ret == 0) {
nodeInfo->sockets = l;
} else if (ret == -2) {
virReportError(VIR_ERR_XML_ERROR, "%s", virReportError(VIR_ERR_XML_ERROR, "%s",
_("invalid node cpu sockets value")); _("invalid node cpu sockets value"));
return -1; return -1;
} }
ret = virXPathLong("string(/node/cpu/cores[1])", ctxt, &l); if (virXPathUInt("string(/node/cpu/cores[1])", ctxt, &nodeInfo->cores) == -2) {
if (ret == 0) {
nodeInfo->cores = l;
} else if (ret == -2) {
virReportError(VIR_ERR_XML_ERROR, "%s", virReportError(VIR_ERR_XML_ERROR, "%s",
_("invalid node cpu cores value")); _("invalid node cpu cores value"));
return -1; return -1;
} }
ret = virXPathLong("string(/node/cpu/threads[1])", ctxt, &l); if (virXPathUInt("string(/node/cpu/threads[1])", ctxt, &nodeInfo->threads) == -2) {
if (ret == 0) {
nodeInfo->threads = l;
} else if (ret == -2) {
virReportError(VIR_ERR_XML_ERROR, "%s", virReportError(VIR_ERR_XML_ERROR, "%s",
_("invalid node cpu threads value")); _("invalid node cpu threads value"));
return -1; return -1;
@ -916,19 +905,19 @@ testParseNodeInfo(virNodeInfoPtr nodeInfo, xmlXPathContextPtr ctxt)
nodeInfo->cpus = (nodeInfo->cores * nodeInfo->threads * nodeInfo->cpus = (nodeInfo->cores * nodeInfo->threads *
nodeInfo->sockets * nodeInfo->nodes); nodeInfo->sockets * nodeInfo->nodes);
ret = virXPathLong("string(/node/cpu/active[1])", ctxt, &l);
if (ret == 0) { if ((rc = virXPathUInt("string(/node/cpu/active[1])", ctxt, &activeCpus)) == -2) {
if (l < nodeInfo->cpus)
nodeInfo->cpus = l;
} else if (ret == -2) {
virReportError(VIR_ERR_XML_ERROR, "%s", virReportError(VIR_ERR_XML_ERROR, "%s",
_("invalid node cpu active value")); _("invalid node cpu active value"));
return -1; return -1;
} }
ret = virXPathLong("string(/node/cpu/mhz[1])", ctxt, &l);
if (ret == 0) { if (rc == 0) {
nodeInfo->mhz = l; if (activeCpus < nodeInfo->cpus)
} else if (ret == -2) { nodeInfo->cpus = activeCpus;
}
if (virXPathUInt("string(/node/cpu/mhz[1])", ctxt, &nodeInfo->mhz) == -2) {
virReportError(VIR_ERR_XML_ERROR, "%s", virReportError(VIR_ERR_XML_ERROR, "%s",
_("invalid node cpu mhz value")); _("invalid node cpu mhz value"));
return -1; return -1;
@ -943,15 +932,15 @@ testParseNodeInfo(virNodeInfoPtr nodeInfo, xmlXPathContextPtr ctxt)
} }
} }
ret = virXPathLong("string(/node/memory[1])", ctxt, &l); if ((rc = virXPathULongLong("string(/node/memory[1])", ctxt, &memory)) == -2) {
if (ret == 0) {
nodeInfo->memory = l;
} else if (ret == -2) {
virReportError(VIR_ERR_XML_ERROR, "%s", virReportError(VIR_ERR_XML_ERROR, "%s",
_("invalid node memory value")); _("invalid node memory value"));
return -1; return -1;
} }
if (rc == 0)
nodeInfo->memory = memory;
return 0; return 0;
} }