mirror of
https://gitlab.com/libvirt/libvirt.git
synced 2025-02-09 13:57:27 +03:00
qemu: conf: add virQEMUDriverGetDomainCapabilities
For now it's just a helper for building a qemu virDomainCapsPtr, used in qemuConnectGetDomainCapabilities Reviewed-by: Reviewed-by: Daniel Henrique Barboza <danielhb413@gmail.com> Reviewed-by: Michal Privoznik <mprivozn@redhat.com> Signed-off-by: Cole Robinson <crobinso@redhat.com>
This commit is contained in:
parent
928508f669
commit
d05bdff79b
@ -1363,6 +1363,45 @@ virCapsPtr virQEMUDriverGetCapabilities(virQEMUDriverPtr driver,
|
||||
return ret;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* virQEMUDriverGetDomainCapabilities:
|
||||
*
|
||||
* Build a virDomainCapsPtr instance for the passed data.
|
||||
*
|
||||
* Returns: a reference to a virDomainCapsPtr instance or NULL
|
||||
*/
|
||||
virDomainCapsPtr
|
||||
virQEMUDriverGetDomainCapabilities(virQEMUDriverPtr driver,
|
||||
virQEMUCapsPtr qemuCaps,
|
||||
const char *machine,
|
||||
virArch arch,
|
||||
virDomainVirtType virttype)
|
||||
{
|
||||
virDomainCapsPtr ret = NULL, domCaps = NULL;
|
||||
virCapsPtr caps = NULL;
|
||||
virQEMUDriverConfigPtr cfg = virQEMUDriverGetConfig(driver);
|
||||
|
||||
if (!(caps = virQEMUDriverGetCapabilities(driver, false)))
|
||||
goto cleanup;
|
||||
|
||||
if (!(domCaps = virDomainCapsNew(virQEMUCapsGetBinary(qemuCaps), machine,
|
||||
arch, virttype)))
|
||||
goto cleanup;
|
||||
|
||||
if (virQEMUCapsFillDomainCaps(caps, domCaps, qemuCaps, driver->privileged,
|
||||
cfg->firmwares, cfg->nfirmwares) < 0)
|
||||
goto cleanup;
|
||||
|
||||
VIR_STEAL_PTR(ret, domCaps);
|
||||
cleanup:
|
||||
virObjectUnref(domCaps);
|
||||
virObjectUnref(cfg);
|
||||
virObjectUnref(caps);
|
||||
return ret;
|
||||
}
|
||||
|
||||
|
||||
struct _qemuSharedDeviceEntry {
|
||||
size_t ref;
|
||||
char **domains; /* array of domain names */
|
||||
|
@ -315,6 +315,13 @@ virCapsPtr virQEMUDriverCreateCapabilities(virQEMUDriverPtr driver);
|
||||
virCapsPtr virQEMUDriverGetCapabilities(virQEMUDriverPtr driver,
|
||||
bool refresh);
|
||||
|
||||
virDomainCapsPtr
|
||||
virQEMUDriverGetDomainCapabilities(virQEMUDriverPtr driver,
|
||||
virQEMUCapsPtr qemuCaps,
|
||||
const char *machine,
|
||||
virArch arch,
|
||||
virDomainVirtType virttype);
|
||||
|
||||
typedef struct _qemuSharedDeviceEntry qemuSharedDeviceEntry;
|
||||
typedef qemuSharedDeviceEntry *qemuSharedDeviceEntryPtr;
|
||||
|
||||
|
@ -20606,19 +20606,12 @@ qemuConnectGetDomainCapabilities(virConnectPtr conn,
|
||||
virArch arch;
|
||||
virDomainVirtType virttype;
|
||||
virDomainCapsPtr domCaps = NULL;
|
||||
virQEMUDriverConfigPtr cfg = NULL;
|
||||
virCapsPtr caps = NULL;
|
||||
|
||||
virCheckFlags(0, ret);
|
||||
|
||||
if (virConnectGetDomainCapabilitiesEnsureACL(conn) < 0)
|
||||
return ret;
|
||||
|
||||
cfg = virQEMUDriverGetConfig(driver);
|
||||
|
||||
if (!(caps = virQEMUDriverGetCapabilities(driver, false)))
|
||||
goto cleanup;
|
||||
|
||||
qemuCaps = virQEMUCapsCacheLookupDefault(driver->qemuCapsCache,
|
||||
emulatorbin,
|
||||
arch_str,
|
||||
@ -20628,19 +20621,13 @@ qemuConnectGetDomainCapabilities(virConnectPtr conn,
|
||||
if (!qemuCaps)
|
||||
goto cleanup;
|
||||
|
||||
if (!(domCaps = virDomainCapsNew(virQEMUCapsGetBinary(qemuCaps), machine,
|
||||
arch, virttype)))
|
||||
goto cleanup;
|
||||
|
||||
if (virQEMUCapsFillDomainCaps(caps, domCaps, qemuCaps,
|
||||
driver->privileged,
|
||||
cfg->firmwares, cfg->nfirmwares) < 0)
|
||||
if (!(domCaps = virQEMUDriverGetDomainCapabilities(driver,
|
||||
qemuCaps, machine,
|
||||
arch, virttype)))
|
||||
goto cleanup;
|
||||
|
||||
ret = virDomainCapsFormat(domCaps);
|
||||
cleanup:
|
||||
virObjectUnref(cfg);
|
||||
virObjectUnref(caps);
|
||||
virObjectUnref(domCaps);
|
||||
virObjectUnref(qemuCaps);
|
||||
return ret;
|
||||
|
Loading…
x
Reference in New Issue
Block a user