提交 d05bdff7 编写于 作者: C Cole Robinson

qemu: conf: add virQEMUDriverGetDomainCapabilities

For now it's just a helper for building a qemu virDomainCapsPtr,
used in qemuConnectGetDomainCapabilities
Reviewed-by: NReviewed-by: Daniel Henrique Barboza <danielhb413@gmail.com>
Reviewed-by: NMichal Privoznik <mprivozn@redhat.com>
Signed-off-by: NCole Robinson <crobinso@redhat.com>
上级 928508f6
...@@ -1363,6 +1363,45 @@ virCapsPtr virQEMUDriverGetCapabilities(virQEMUDriverPtr driver, ...@@ -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); ...@@ -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, ...@@ -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, ...@@ -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;
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册