mirror of
https://github.com/libvirt/libvirt.git
synced 2025-02-25 18:55:26 -06: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;
|
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 {
|
struct _qemuSharedDeviceEntry {
|
||||||
size_t ref;
|
size_t ref;
|
||||||
char **domains; /* array of domain names */
|
char **domains; /* array of domain names */
|
||||||
|
@ -315,6 +315,13 @@ virCapsPtr virQEMUDriverCreateCapabilities(virQEMUDriverPtr driver);
|
|||||||
virCapsPtr virQEMUDriverGetCapabilities(virQEMUDriverPtr driver,
|
virCapsPtr virQEMUDriverGetCapabilities(virQEMUDriverPtr driver,
|
||||||
bool refresh);
|
bool refresh);
|
||||||
|
|
||||||
|
virDomainCapsPtr
|
||||||
|
virQEMUDriverGetDomainCapabilities(virQEMUDriverPtr driver,
|
||||||
|
virQEMUCapsPtr qemuCaps,
|
||||||
|
const char *machine,
|
||||||
|
virArch arch,
|
||||||
|
virDomainVirtType virttype);
|
||||||
|
|
||||||
typedef struct _qemuSharedDeviceEntry qemuSharedDeviceEntry;
|
typedef struct _qemuSharedDeviceEntry qemuSharedDeviceEntry;
|
||||||
typedef qemuSharedDeviceEntry *qemuSharedDeviceEntryPtr;
|
typedef qemuSharedDeviceEntry *qemuSharedDeviceEntryPtr;
|
||||||
|
|
||||||
|
@ -20606,19 +20606,12 @@ qemuConnectGetDomainCapabilities(virConnectPtr conn,
|
|||||||
virArch arch;
|
virArch arch;
|
||||||
virDomainVirtType virttype;
|
virDomainVirtType virttype;
|
||||||
virDomainCapsPtr domCaps = NULL;
|
virDomainCapsPtr domCaps = NULL;
|
||||||
virQEMUDriverConfigPtr cfg = NULL;
|
|
||||||
virCapsPtr caps = NULL;
|
|
||||||
|
|
||||||
virCheckFlags(0, ret);
|
virCheckFlags(0, ret);
|
||||||
|
|
||||||
if (virConnectGetDomainCapabilitiesEnsureACL(conn) < 0)
|
if (virConnectGetDomainCapabilitiesEnsureACL(conn) < 0)
|
||||||
return ret;
|
return ret;
|
||||||
|
|
||||||
cfg = virQEMUDriverGetConfig(driver);
|
|
||||||
|
|
||||||
if (!(caps = virQEMUDriverGetCapabilities(driver, false)))
|
|
||||||
goto cleanup;
|
|
||||||
|
|
||||||
qemuCaps = virQEMUCapsCacheLookupDefault(driver->qemuCapsCache,
|
qemuCaps = virQEMUCapsCacheLookupDefault(driver->qemuCapsCache,
|
||||||
emulatorbin,
|
emulatorbin,
|
||||||
arch_str,
|
arch_str,
|
||||||
@ -20628,19 +20621,13 @@ qemuConnectGetDomainCapabilities(virConnectPtr conn,
|
|||||||
if (!qemuCaps)
|
if (!qemuCaps)
|
||||||
goto cleanup;
|
goto cleanup;
|
||||||
|
|
||||||
if (!(domCaps = virDomainCapsNew(virQEMUCapsGetBinary(qemuCaps), machine,
|
if (!(domCaps = virQEMUDriverGetDomainCapabilities(driver,
|
||||||
arch, virttype)))
|
qemuCaps, machine,
|
||||||
goto cleanup;
|
arch, virttype)))
|
||||||
|
|
||||||
if (virQEMUCapsFillDomainCaps(caps, domCaps, qemuCaps,
|
|
||||||
driver->privileged,
|
|
||||||
cfg->firmwares, cfg->nfirmwares) < 0)
|
|
||||||
goto cleanup;
|
goto cleanup;
|
||||||
|
|
||||||
ret = virDomainCapsFormat(domCaps);
|
ret = virDomainCapsFormat(domCaps);
|
||||||
cleanup:
|
cleanup:
|
||||||
virObjectUnref(cfg);
|
|
||||||
virObjectUnref(caps);
|
|
||||||
virObjectUnref(domCaps);
|
virObjectUnref(domCaps);
|
||||||
virObjectUnref(qemuCaps);
|
virObjectUnref(qemuCaps);
|
||||||
return ret;
|
return ret;
|
||||||
|
Loading…
Reference in New Issue
Block a user