conf: Sync caps data even when SKIP_OSTYPE_CHECKS

We should still make an effort to fill in data, just not raise
an error if say an ostype/virttype combo disappeared from caps.

Acked-by: Michal Privoznik <mprivozn@redhat.com>
Signed-off-by: Cole Robinson <crobinso@redhat.com>
This commit is contained in:
Cole Robinson 2018-07-24 16:54:51 -04:00
parent b251d6ad24
commit cd9d439a71
3 changed files with 12 additions and 8 deletions

View File

@ -19178,19 +19178,20 @@ virDomainDefParseCaps(virDomainDefPtr def,
goto cleanup;
}
if (!(flags & VIR_DOMAIN_DEF_PARSE_SKIP_OSTYPE_CHECKS)) {
if (!(capsdata = virCapabilitiesDomainDataLookup(caps,
def->os.type, def->os.arch, def->virtType,
NULL, NULL)))
if (!(capsdata = virCapabilitiesDomainDataLookup(caps, def->os.type,
def->os.arch,
def->virtType,
NULL, NULL))) {
if (!(flags & VIR_DOMAIN_DEF_PARSE_SKIP_OSTYPE_CHECKS))
goto cleanup;
virResetLastError();
} else {
if (!def->os.arch)
def->os.arch = capsdata->arch;
if ((!def->os.machine &&
VIR_STRDUP(def->os.machine, capsdata->machinetype) < 0)) {
VIR_STRDUP(def->os.machine, capsdata->machinetype) < 0))
goto cleanup;
}
}
ret = 0;
cleanup:

View File

@ -6,7 +6,7 @@
<currentMemory unit='KiB'>219100</currentMemory>
<vcpu placement='static' cpuset='1'>1</vcpu>
<os>
<type arch='i686'>hvm</type>
<type arch='alpha'>hvm</type>
<boot dev='hd'/>
</os>
<clock offset='utc'/>

View File

@ -2773,6 +2773,9 @@ mymain(void)
QEMU_CAPS_OBJECT_GPEX,
QEMU_CAPS_NEC_USB_XHCI);
/* VM XML has invalid arch/ostype/virttype combo, but the SKIP flag
* will avoid the error. Still, we expect qemu driver to complain about
* missing machine error, and not crash */
DO_TEST_PARSE_FLAGS_ERROR("missing-machine",
VIR_DOMAIN_DEF_PARSE_SKIP_OSTYPE_CHECKS,
NONE);