mirror of
https://gitlab.com/libvirt/libvirt.git
synced 2025-03-07 17:28:15 +00:00
conf: Extract guest XML formatting from virCapabilitiesFormatXML
Let's extract out the <guest> 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 <jferlan@redhat.com> ACKed-by: Michal Privoznik <mprivozn@redhat.com>
This commit is contained in:
parent
0d832b873c
commit
181acfe9a8
@ -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, "<guest>\n");
|
||||||
|
virBufferAdjustIndent(buf, 2);
|
||||||
|
virBufferAsprintf(buf, "<os_type>%s</os_type>\n",
|
||||||
|
virDomainOSTypeToString(caps->guests[i]->ostype));
|
||||||
|
if (caps->guests[i]->arch.id)
|
||||||
|
virBufferAsprintf(buf, "<arch name='%s'>\n",
|
||||||
|
virArchToString(caps->guests[i]->arch.id));
|
||||||
|
virBufferAdjustIndent(buf, 2);
|
||||||
|
virBufferAsprintf(buf, "<wordsize>%d</wordsize>\n",
|
||||||
|
caps->guests[i]->arch.wordsize);
|
||||||
|
if (caps->guests[i]->arch.defaultInfo.emulator)
|
||||||
|
virBufferAsprintf(buf, "<emulator>%s</emulator>\n",
|
||||||
|
caps->guests[i]->arch.defaultInfo.emulator);
|
||||||
|
if (caps->guests[i]->arch.defaultInfo.loader)
|
||||||
|
virBufferAsprintf(buf, "<loader>%s</loader>\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, "<machine");
|
||||||
|
if (machine->canonical)
|
||||||
|
virBufferAsprintf(buf, " canonical='%s'", machine->canonical);
|
||||||
|
if (machine->maxCpus > 0)
|
||||||
|
virBufferAsprintf(buf, " maxCpus='%d'", machine->maxCpus);
|
||||||
|
virBufferAsprintf(buf, ">%s</machine>\n", machine->name);
|
||||||
|
}
|
||||||
|
|
||||||
|
for (j = 0; j < caps->guests[i]->arch.ndomains; j++) {
|
||||||
|
virBufferAsprintf(buf, "<domain type='%s'",
|
||||||
|
virDomainVirtTypeToString(caps->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, "<emulator>%s</emulator>\n",
|
||||||
|
caps->guests[i]->arch.domains[j]->info.emulator);
|
||||||
|
if (caps->guests[i]->arch.domains[j]->info.loader)
|
||||||
|
virBufferAsprintf(buf, "<loader>%s</loader>\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, "<machine");
|
||||||
|
if (machine->canonical)
|
||||||
|
virBufferAsprintf(buf, " canonical='%s'", machine->canonical);
|
||||||
|
if (machine->maxCpus > 0)
|
||||||
|
virBufferAsprintf(buf, " maxCpus='%d'", machine->maxCpus);
|
||||||
|
virBufferAsprintf(buf, ">%s</machine>\n", machine->name);
|
||||||
|
}
|
||||||
|
virBufferAdjustIndent(buf, -2);
|
||||||
|
virBufferAddLit(buf, "</domain>\n");
|
||||||
|
}
|
||||||
|
|
||||||
|
virBufferAdjustIndent(buf, -2);
|
||||||
|
virBufferAddLit(buf, "</arch>\n");
|
||||||
|
|
||||||
|
if (caps->guests[i]->nfeatures) {
|
||||||
|
virBufferAddLit(buf, "<features>\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, "</features>\n");
|
||||||
|
}
|
||||||
|
virBufferAdjustIndent(buf, -2);
|
||||||
|
virBufferAddLit(buf, "</guest>\n\n");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* virCapabilitiesFormatXML:
|
* virCapabilitiesFormatXML:
|
||||||
* @caps: capabilities to format
|
* @caps: capabilities to format
|
||||||
@ -1190,7 +1287,6 @@ char *
|
|||||||
virCapabilitiesFormatXML(virCapsPtr caps)
|
virCapabilitiesFormatXML(virCapsPtr caps)
|
||||||
{
|
{
|
||||||
virBuffer buf = VIR_BUFFER_INITIALIZER;
|
virBuffer buf = VIR_BUFFER_INITIALIZER;
|
||||||
size_t i, j, k;
|
|
||||||
|
|
||||||
virBufferAddLit(&buf, "<capabilities>\n\n");
|
virBufferAddLit(&buf, "<capabilities>\n\n");
|
||||||
virBufferAdjustIndent(&buf, 2);
|
virBufferAdjustIndent(&buf, 2);
|
||||||
@ -1198,94 +1294,8 @@ virCapabilitiesFormatXML(virCapsPtr caps)
|
|||||||
if (virCapabilitiesFormatHostXML(&caps->host, &buf) < 0)
|
if (virCapabilitiesFormatHostXML(&caps->host, &buf) < 0)
|
||||||
goto error;
|
goto error;
|
||||||
|
|
||||||
for (i = 0; i < caps->nguests; i++) {
|
virCapabilitiesFormatGuestXML(caps, &buf);
|
||||||
virBufferAddLit(&buf, "<guest>\n");
|
|
||||||
virBufferAdjustIndent(&buf, 2);
|
|
||||||
virBufferAsprintf(&buf, "<os_type>%s</os_type>\n",
|
|
||||||
virDomainOSTypeToString(caps->guests[i]->ostype));
|
|
||||||
if (caps->guests[i]->arch.id)
|
|
||||||
virBufferAsprintf(&buf, "<arch name='%s'>\n",
|
|
||||||
virArchToString(caps->guests[i]->arch.id));
|
|
||||||
virBufferAdjustIndent(&buf, 2);
|
|
||||||
virBufferAsprintf(&buf, "<wordsize>%d</wordsize>\n",
|
|
||||||
caps->guests[i]->arch.wordsize);
|
|
||||||
if (caps->guests[i]->arch.defaultInfo.emulator)
|
|
||||||
virBufferAsprintf(&buf, "<emulator>%s</emulator>\n",
|
|
||||||
caps->guests[i]->arch.defaultInfo.emulator);
|
|
||||||
if (caps->guests[i]->arch.defaultInfo.loader)
|
|
||||||
virBufferAsprintf(&buf, "<loader>%s</loader>\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, "<machine");
|
|
||||||
if (machine->canonical)
|
|
||||||
virBufferAsprintf(&buf, " canonical='%s'", machine->canonical);
|
|
||||||
if (machine->maxCpus > 0)
|
|
||||||
virBufferAsprintf(&buf, " maxCpus='%d'", machine->maxCpus);
|
|
||||||
virBufferAsprintf(&buf, ">%s</machine>\n", machine->name);
|
|
||||||
}
|
|
||||||
|
|
||||||
for (j = 0; j < caps->guests[i]->arch.ndomains; j++) {
|
|
||||||
virBufferAsprintf(&buf, "<domain type='%s'",
|
|
||||||
virDomainVirtTypeToString(caps->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, "<emulator>%s</emulator>\n",
|
|
||||||
caps->guests[i]->arch.domains[j]->info.emulator);
|
|
||||||
if (caps->guests[i]->arch.domains[j]->info.loader)
|
|
||||||
virBufferAsprintf(&buf, "<loader>%s</loader>\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, "<machine");
|
|
||||||
if (machine->canonical)
|
|
||||||
virBufferAsprintf(&buf, " canonical='%s'", machine->canonical);
|
|
||||||
if (machine->maxCpus > 0)
|
|
||||||
virBufferAsprintf(&buf, " maxCpus='%d'", machine->maxCpus);
|
|
||||||
virBufferAsprintf(&buf, ">%s</machine>\n", machine->name);
|
|
||||||
}
|
|
||||||
virBufferAdjustIndent(&buf, -2);
|
|
||||||
virBufferAddLit(&buf, "</domain>\n");
|
|
||||||
}
|
|
||||||
|
|
||||||
virBufferAdjustIndent(&buf, -2);
|
|
||||||
virBufferAddLit(&buf, "</arch>\n");
|
|
||||||
|
|
||||||
if (caps->guests[i]->nfeatures) {
|
|
||||||
virBufferAddLit(&buf, "<features>\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, "</features>\n");
|
|
||||||
}
|
|
||||||
virBufferAdjustIndent(&buf, -2);
|
|
||||||
virBufferAddLit(&buf, "</guest>\n\n");
|
|
||||||
}
|
|
||||||
virBufferAdjustIndent(&buf, -2);
|
virBufferAdjustIndent(&buf, -2);
|
||||||
virBufferAddLit(&buf, "</capabilities>\n");
|
virBufferAddLit(&buf, "</capabilities>\n");
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user