This patch adds support for the newly added api for the LXC and qemu
drivers.
---
src/lxc/lxc_driver.c | 69 ++++++++++++++++++++++++++++++++++++++++++++++++
src/qemu/qemu_driver.c | 69 ++++++++++++++++++++++++++++++++++++++++++++++++
2 files changed, 138 insertions(+), 0 deletions(-)
diff --git a/src/lxc/lxc_driver.c b/src/lxc/lxc_driver.c
index d26bfe9..1df7b45 100644
--- a/src/lxc/lxc_driver.c
+++ b/src/lxc/lxc_driver.c
@@ -3870,6 +3870,74 @@ no_memory:
goto cleanup;
}
+static char *
+lxcDomainGetDescription(virDomainPtr dom, unsigned int flags)
+{
+ lxc_driver_t *driver = dom->conn->privateData;
+ virDomainObjPtr vm;
+ virDomainDefPtr persistentDef;
+ char *ret = NULL;
+ char *field;
+
+ virCheckFlags(VIR_DOMAIN_AFFECT_LIVE |
+ VIR_DOMAIN_AFFECT_CONFIG |
+ VIR_DOMAIN_DESCRIPTION_TITLE, NULL);
+
+ bool title = (flags & VIR_DOMAIN_DESCRIPTION_TITLE) > 0;
+
+ lxcDriverLock(driver);
+ vm = virDomainFindByUUID(&driver->domains, dom->uuid);
+ lxcDriverUnlock(driver);
+
+ if (!vm) {
+ char uuidstr[VIR_UUID_STRING_BUFLEN];
+ virUUIDFormat(dom->uuid, uuidstr);
+ lxcError(VIR_ERR_NO_DOMAIN,
+ _("no domain with matching uuid '%s'"), uuidstr);
+ goto cleanup;
+ }
+
+ if (flags & VIR_DOMAIN_AFFECT_LIVE &&
+ flags & VIR_DOMAIN_AFFECT_CONFIG) {
+ lxcError(VIR_ERR_INVALID_ARG,
+ _("Can't specify both LIVE and CONFIG flags"));
+ goto cleanup;
+ }
+
+ if (virDomainLiveConfigHelperMethod(driver->caps, vm, &flags,
+ &persistentDef) < 0)
+ goto cleanup;
+
+ if (title) {
+ if (flags & VIR_DOMAIN_AFFECT_LIVE)
+ field = vm->def->title;
+ else
+ field = persistentDef->title;
+ } else {
+ /* description */
+ if (flags & VIR_DOMAIN_AFFECT_LIVE)
+ field = vm->def->description;
+ else
+ field = persistentDef->description;
+ }
+
+ if (!field) {
+ lxcError(VIR_ERR_OPERATION_FAILED,
+ _("No title or description found"));
+ goto cleanup;
+ }
+
+ if (!(ret = strdup(field))) {
+ virReportOOMError();
+ goto cleanup;
+ }
+
+cleanup:
+ if (vm)
+ virDomainObjUnlock(vm);
+ return ret;
+}
+
static int
lxcVMFilterRebuild(virConnectPtr conn ATTRIBUTE_UNUSED,
virHashIterator iter, void *data)
@@ -3961,6 +4029,7 @@ static virDriver lxcDriver = {
.isAlive = lxcIsAlive, /* 0.9.8 */
.nodeSuspendForDuration = nodeSuspendForDuration, /* 0.9.8 */
.domainSetDescription = lxcDomainSetDescription, /* 0.9.10 */
+ .domainGetDescription = lxcDomainGetDescription, /* 0.9.10 */
};
static virStateDriver lxcStateDriver = {
diff --git a/src/qemu/qemu_driver.c b/src/qemu/qemu_driver.c
index 10dd98d..e4082df 100644
--- a/src/qemu/qemu_driver.c
+++ b/src/qemu/qemu_driver.c
@@ -11926,6 +11926,74 @@ no_memory:
goto cleanup;
}
+static char *
+qemuDomainGetDescription(virDomainPtr dom, unsigned int flags)
+{
+ struct qemud_driver *driver = dom->conn->privateData;
+ virDomainObjPtr vm;
+ virDomainDefPtr persistentDef;
+ char *ret = NULL;
+ char *field=NULL;
+
+ virCheckFlags(VIR_DOMAIN_AFFECT_LIVE |
+ VIR_DOMAIN_AFFECT_CONFIG |
+ VIR_DOMAIN_DESCRIPTION_TITLE, NULL);
+
+ bool title = (flags & VIR_DOMAIN_DESCRIPTION_TITLE) > 0;
+
+ qemuDriverLock(driver);
+ vm = virDomainFindByUUID(&driver->domains, dom->uuid);
+ qemuDriverUnlock(driver);
+
+ if (!vm) {
+ char uuidstr[VIR_UUID_STRING_BUFLEN];
+ virUUIDFormat(dom->uuid, uuidstr);
+ qemuReportError(VIR_ERR_NO_DOMAIN,
+ _("no domain with matching uuid '%s'"),
uuidstr);
+ goto cleanup;
+ }
+
+ if (flags & VIR_DOMAIN_AFFECT_LIVE &&
+ flags & VIR_DOMAIN_AFFECT_CONFIG) {
+ qemuReportError(VIR_ERR_INVALID_ARG,
+ _("Can't specify both LIVE and CONFIG flags"));
+ goto cleanup;
+ }
+
+ if (virDomainLiveConfigHelperMethod(driver->caps, vm, &flags,
+ &persistentDef) < 0)
+ goto cleanup;
+
+ if (title) {
+ if (flags & VIR_DOMAIN_AFFECT_LIVE)
+ field = vm->def->title;
+ else
+ field = persistentDef->title;
+ } else {
+ /* description */
+ if (flags & VIR_DOMAIN_AFFECT_LIVE)
+ field = vm->def->description;
+ else
+ field = persistentDef->description;
+ }
+
+ if (!field) {
+ qemuReportError(VIR_ERR_OPERATION_FAILED,
+ _("No title or description found"));
+ goto cleanup;
+ }
+
+ if (!(ret = strdup(field))) {
+ virReportOOMError();
+ goto cleanup;
+ }
+
+cleanup:
+ if (vm)
+ virDomainObjUnlock(vm);
+ return ret;
+}
+
static virDriver qemuDriver = {
.no = VIR_DRV_QEMU,
.name = "QEMU",
@@ -12079,6 +12147,7 @@ static virDriver qemuDriver = {
.domainGetInterfaceParameters = qemuDomainGetInterfaceParameters, /* 0.9.9 */
.domainSetInterfaceParameters = qemuDomainSetInterfaceParameters, /* 0.9.9 */
.domainSetDescription = qemuDomainSetDescription, /* 0.9.10 */
+ .domainGetDescription = qemuDomainGetDescription, /* 0.9.10 */
};
--
1.7.3.4