[libvirt] [PATCH 5/9] qemu: implement qemuDomainGetStateParams

Bjoern Walk bwalk at linux.ibm.com
Wed Jul 11 10:49:18 UTC 2018


Implement the API function virDomainGetStateParams for the QEMU
hypervisor driver.

Reviewed-by: Marc Hartmayer <mhartmay at linux.ibm.com>
Reviewed-by: Stefan Zimmermann <stzi at linux.ibm.com>
Reviewed-by: Boris Fiuczynski <fiuczy at linux.ibm.com>
Signed-off-by: Bjoern Walk <bwalk at linux.ibm.com>
---
 src/qemu/qemu_driver.c | 50 ++++++++++++++++++++++++++++++++++++++++++
 1 file changed, 50 insertions(+)

diff --git a/src/qemu/qemu_driver.c b/src/qemu/qemu_driver.c
index 5de9aaef..871f2dde 100644
--- a/src/qemu/qemu_driver.c
+++ b/src/qemu/qemu_driver.c
@@ -2671,6 +2671,55 @@ qemuDomainGetState(virDomainPtr dom,
     return ret;
 }
 
+static int
+qemuDomainGetStateParams(virDomainPtr dom,
+                         virTypedParameterPtr *params,
+                         int *nparams,
+                         unsigned int flags)
+{
+    int ret = -1;
+    virDomainObjPtr vm;
+    virTypedParameterPtr par = NULL;
+    int npar, maxparams = 0;
+
+    virCheckFlags(0, -1);
+
+    if (!(vm = qemuDomObjFromDomain(dom)))
+        goto cleanup;
+
+    if (virDomainGetStateParamsEnsureACL(dom->conn, vm->def) < 0)
+        goto cleanup;
+
+    if (virTypedParamsAddInt(&par, &npar,
+                             &maxparams,
+                             VIR_DOMAIN_STATE_PARAMS_STATE,
+                             vm->state.state) < 0) {
+        goto cleanup;
+    }
+    if (virTypedParamsAddInt(&par, &npar,
+                             &maxparams,
+                             VIR_DOMAIN_STATE_PARAMS_REASON,
+                             vm->state.reason) < 0) {
+        goto cleanup;
+    }
+    if (virTypedParamsAddString(&par, &npar,
+                                &maxparams,
+                                VIR_DOMAIN_STATE_PARAMS_INFO,
+                                vm->state.info) < 0) {
+        goto cleanup;
+    }
+
+    VIR_STEAL_PTR(*params, par);
+    *nparams = npar;
+    npar = 0;
+    ret = 0;
+
+ cleanup:
+    virTypedParamsFree(par, npar);
+    virDomainObjEndAPI(&vm);
+    return ret;
+}
+
 static int
 qemuDomainGetControlInfo(virDomainPtr dom,
                           virDomainControlInfoPtr info,
@@ -21664,6 +21713,7 @@ static virHypervisorDriver qemuHypervisorDriver = {
     .domainGetBlkioParameters = qemuDomainGetBlkioParameters, /* 0.9.0 */
     .domainGetInfo = qemuDomainGetInfo, /* 0.2.0 */
     .domainGetState = qemuDomainGetState, /* 0.9.2 */
+    .domainGetStateParams = qemuDomainGetStateParams, /* 4.6.0 */
     .domainGetControlInfo = qemuDomainGetControlInfo, /* 0.9.3 */
     .domainSave = qemuDomainSave, /* 0.2.0 */
     .domainSaveFlags = qemuDomainSaveFlags, /* 0.9.4 */
-- 
2.17.0




More information about the libvir-list mailing list