From 181acfe9a88b84f82b812937a37b81625d12dcdc Mon Sep 17 00:00:00 2001 From: John Ferlan Date: Wed, 9 Jan 2019 12:00:28 -0500 Subject: [PATCH] conf: Extract guest XML formatting from virCapabilitiesFormatXML Let's extract out the code into it's own method/helper. NB: One minor change between the two is usage of "buf" instead of "&buf" in the new code since we pass the address of &buf to the helper. Signed-off-by: John Ferlan ACKed-by: Michal Privoznik --- src/conf/capabilities.c | 186 +++++++++++++++++++++------------------- 1 file changed, 98 insertions(+), 88 deletions(-) diff --git a/src/conf/capabilities.c b/src/conf/capabilities.c index 863cd06a8d..c320c0f72d 100644 --- a/src/conf/capabilities.c +++ b/src/conf/capabilities.c @@ -1178,6 +1178,103 @@ virCapabilitiesFormatHostXML(virCapsHostPtr host, } +static void +virCapabilitiesFormatGuestXML(virCapsPtr caps, + virBufferPtr buf) +{ + size_t i, j, k; + + for (i = 0; i < caps->nguests; i++) { + virBufferAddLit(buf, "\n"); + virBufferAdjustIndent(buf, 2); + virBufferAsprintf(buf, "%s\n", + virDomainOSTypeToString(caps->guests[i]->ostype)); + if (caps->guests[i]->arch.id) + virBufferAsprintf(buf, "\n", + virArchToString(caps->guests[i]->arch.id)); + virBufferAdjustIndent(buf, 2); + virBufferAsprintf(buf, "%d\n", + caps->guests[i]->arch.wordsize); + if (caps->guests[i]->arch.defaultInfo.emulator) + virBufferAsprintf(buf, "%s\n", + caps->guests[i]->arch.defaultInfo.emulator); + if (caps->guests[i]->arch.defaultInfo.loader) + virBufferAsprintf(buf, "%s\n", + caps->guests[i]->arch.defaultInfo.loader); + + for (j = 0; j < caps->guests[i]->arch.defaultInfo.nmachines; j++) { + virCapsGuestMachinePtr machine = caps->guests[i]->arch.defaultInfo.machines[j]; + virBufferAddLit(buf, "canonical) + virBufferAsprintf(buf, " canonical='%s'", machine->canonical); + if (machine->maxCpus > 0) + virBufferAsprintf(buf, " maxCpus='%d'", machine->maxCpus); + virBufferAsprintf(buf, ">%s\n", machine->name); + } + + for (j = 0; j < caps->guests[i]->arch.ndomains; j++) { + virBufferAsprintf(buf, "guests[i]->arch.domains[j]->type)); + if (!caps->guests[i]->arch.domains[j]->info.emulator && + !caps->guests[i]->arch.domains[j]->info.loader && + !caps->guests[i]->arch.domains[j]->info.nmachines) { + virBufferAddLit(buf, "/>\n"); + continue; + } + virBufferAddLit(buf, ">\n"); + virBufferAdjustIndent(buf, 2); + if (caps->guests[i]->arch.domains[j]->info.emulator) + virBufferAsprintf(buf, "%s\n", + caps->guests[i]->arch.domains[j]->info.emulator); + if (caps->guests[i]->arch.domains[j]->info.loader) + virBufferAsprintf(buf, "%s\n", + caps->guests[i]->arch.domains[j]->info.loader); + + for (k = 0; k < caps->guests[i]->arch.domains[j]->info.nmachines; k++) { + virCapsGuestMachinePtr machine = caps->guests[i]->arch.domains[j]->info.machines[k]; + virBufferAddLit(buf, "canonical) + virBufferAsprintf(buf, " canonical='%s'", machine->canonical); + if (machine->maxCpus > 0) + virBufferAsprintf(buf, " maxCpus='%d'", machine->maxCpus); + virBufferAsprintf(buf, ">%s\n", machine->name); + } + virBufferAdjustIndent(buf, -2); + virBufferAddLit(buf, "\n"); + } + + virBufferAdjustIndent(buf, -2); + virBufferAddLit(buf, "\n"); + + if (caps->guests[i]->nfeatures) { + virBufferAddLit(buf, "\n"); + virBufferAdjustIndent(buf, 2); + + for (j = 0; j < caps->guests[i]->nfeatures; j++) { + if (STREQ(caps->guests[i]->features[j]->name, "pae") || + STREQ(caps->guests[i]->features[j]->name, "nonpae") || + STREQ(caps->guests[i]->features[j]->name, "ia64_be") || + STREQ(caps->guests[i]->features[j]->name, "cpuselection") || + STREQ(caps->guests[i]->features[j]->name, "deviceboot")) { + virBufferAsprintf(buf, "<%s/>\n", + caps->guests[i]->features[j]->name); + } else { + virBufferAsprintf(buf, "<%s default='%s' toggle='%s'/>\n", + caps->guests[i]->features[j]->name, + caps->guests[i]->features[j]->defaultOn ? "on" : "off", + caps->guests[i]->features[j]->toggle ? "yes" : "no"); + } + } + + virBufferAdjustIndent(buf, -2); + virBufferAddLit(buf, "\n"); + } + virBufferAdjustIndent(buf, -2); + virBufferAddLit(buf, "\n\n"); + } +} + + /** * virCapabilitiesFormatXML: * @caps: capabilities to format @@ -1190,7 +1287,6 @@ char * virCapabilitiesFormatXML(virCapsPtr caps) { virBuffer buf = VIR_BUFFER_INITIALIZER; - size_t i, j, k; virBufferAddLit(&buf, "\n\n"); virBufferAdjustIndent(&buf, 2); @@ -1198,94 +1294,8 @@ virCapabilitiesFormatXML(virCapsPtr caps) if (virCapabilitiesFormatHostXML(&caps->host, &buf) < 0) goto error; - for (i = 0; i < caps->nguests; i++) { - virBufferAddLit(&buf, "\n"); - virBufferAdjustIndent(&buf, 2); - virBufferAsprintf(&buf, "%s\n", - virDomainOSTypeToString(caps->guests[i]->ostype)); - if (caps->guests[i]->arch.id) - virBufferAsprintf(&buf, "\n", - virArchToString(caps->guests[i]->arch.id)); - virBufferAdjustIndent(&buf, 2); - virBufferAsprintf(&buf, "%d\n", - caps->guests[i]->arch.wordsize); - if (caps->guests[i]->arch.defaultInfo.emulator) - virBufferAsprintf(&buf, "%s\n", - caps->guests[i]->arch.defaultInfo.emulator); - if (caps->guests[i]->arch.defaultInfo.loader) - virBufferAsprintf(&buf, "%s\n", - caps->guests[i]->arch.defaultInfo.loader); + virCapabilitiesFormatGuestXML(caps, &buf); - for (j = 0; j < caps->guests[i]->arch.defaultInfo.nmachines; j++) { - virCapsGuestMachinePtr machine = caps->guests[i]->arch.defaultInfo.machines[j]; - virBufferAddLit(&buf, "canonical) - virBufferAsprintf(&buf, " canonical='%s'", machine->canonical); - if (machine->maxCpus > 0) - virBufferAsprintf(&buf, " maxCpus='%d'", machine->maxCpus); - virBufferAsprintf(&buf, ">%s\n", machine->name); - } - - for (j = 0; j < caps->guests[i]->arch.ndomains; j++) { - virBufferAsprintf(&buf, "guests[i]->arch.domains[j]->type)); - if (!caps->guests[i]->arch.domains[j]->info.emulator && - !caps->guests[i]->arch.domains[j]->info.loader && - !caps->guests[i]->arch.domains[j]->info.nmachines) { - virBufferAddLit(&buf, "/>\n"); - continue; - } - virBufferAddLit(&buf, ">\n"); - virBufferAdjustIndent(&buf, 2); - if (caps->guests[i]->arch.domains[j]->info.emulator) - virBufferAsprintf(&buf, "%s\n", - caps->guests[i]->arch.domains[j]->info.emulator); - if (caps->guests[i]->arch.domains[j]->info.loader) - virBufferAsprintf(&buf, "%s\n", - caps->guests[i]->arch.domains[j]->info.loader); - - for (k = 0; k < caps->guests[i]->arch.domains[j]->info.nmachines; k++) { - virCapsGuestMachinePtr machine = caps->guests[i]->arch.domains[j]->info.machines[k]; - virBufferAddLit(&buf, "canonical) - virBufferAsprintf(&buf, " canonical='%s'", machine->canonical); - if (machine->maxCpus > 0) - virBufferAsprintf(&buf, " maxCpus='%d'", machine->maxCpus); - virBufferAsprintf(&buf, ">%s\n", machine->name); - } - virBufferAdjustIndent(&buf, -2); - virBufferAddLit(&buf, "\n"); - } - - virBufferAdjustIndent(&buf, -2); - virBufferAddLit(&buf, "\n"); - - if (caps->guests[i]->nfeatures) { - virBufferAddLit(&buf, "\n"); - virBufferAdjustIndent(&buf, 2); - - for (j = 0; j < caps->guests[i]->nfeatures; j++) { - if (STREQ(caps->guests[i]->features[j]->name, "pae") || - STREQ(caps->guests[i]->features[j]->name, "nonpae") || - STREQ(caps->guests[i]->features[j]->name, "ia64_be") || - STREQ(caps->guests[i]->features[j]->name, "cpuselection") || - STREQ(caps->guests[i]->features[j]->name, "deviceboot")) { - virBufferAsprintf(&buf, "<%s/>\n", - caps->guests[i]->features[j]->name); - } else { - virBufferAsprintf(&buf, "<%s default='%s' toggle='%s'/>\n", - caps->guests[i]->features[j]->name, - caps->guests[i]->features[j]->defaultOn ? "on" : "off", - caps->guests[i]->features[j]->toggle ? "yes" : "no"); - } - } - - virBufferAdjustIndent(&buf, -2); - virBufferAddLit(&buf, "\n"); - } - virBufferAdjustIndent(&buf, -2); - virBufferAddLit(&buf, "\n\n"); - } virBufferAdjustIndent(&buf, -2); virBufferAddLit(&buf, "\n");