]> git.ipfire.org Git - thirdparty/libvirt.git/commitdiff
Add QEMU monitor callbacks for basic lifecycle events
authorDaniel P. Berrange <berrange@redhat.com>
Thu, 26 Nov 2009 13:05:24 +0000 (13:05 +0000)
committerDaniel P. Berrange <berrange@redhat.com>
Tue, 8 Dec 2009 13:46:55 +0000 (13:46 +0000)
* src/qemu/qemu_monitor.c, src/qemu/qemu_monitor.h: Add callbacks
  for reset, shutdown, poweroff and stop events. Add convenience
  methods for emiting those events

src/qemu/qemu_monitor.c
src/qemu/qemu_monitor.h

index b8e827160375bf69c13582072e49e3242eb6a6bd..abb763cfa26991b10cd9efc3268ab0fcdd04b50f 100644 (file)
@@ -703,6 +703,66 @@ int qemuMonitorGetDiskSecret(qemuMonitorPtr mon,
 }
 
 
+int qemuMonitorEmitShutdown(qemuMonitorPtr mon)
+{
+    int ret = -1;
+    VIR_DEBUG("mon=%p", mon);
+
+    qemuMonitorRef(mon);
+    qemuMonitorUnlock(mon);
+    if (mon->cb && mon->cb->domainShutdown)
+        ret = mon->cb->domainShutdown(mon, mon->vm);
+    qemuMonitorLock(mon);
+    qemuMonitorUnref(mon);
+    return ret;
+}
+
+
+int qemuMonitorEmitReset(qemuMonitorPtr mon)
+{
+    int ret = -1;
+    VIR_DEBUG("mon=%p", mon);
+
+    qemuMonitorRef(mon);
+    qemuMonitorUnlock(mon);
+    if (mon->cb && mon->cb->domainReset)
+        ret = mon->cb->domainReset(mon, mon->vm);
+    qemuMonitorLock(mon);
+    qemuMonitorUnref(mon);
+    return ret;
+}
+
+
+int qemuMonitorEmitPowerdown(qemuMonitorPtr mon)
+{
+    int ret = -1;
+    VIR_DEBUG("mon=%p", mon);
+
+    qemuMonitorRef(mon);
+    qemuMonitorUnlock(mon);
+    if (mon->cb && mon->cb->domainPowerdown)
+        ret = mon->cb->domainPowerdown(mon, mon->vm);
+    qemuMonitorLock(mon);
+    qemuMonitorUnref(mon);
+    return ret;
+}
+
+
+int qemuMonitorEmitStop(qemuMonitorPtr mon)
+{
+    int ret = -1;
+    VIR_DEBUG("mon=%p", mon);
+
+    qemuMonitorRef(mon);
+    qemuMonitorUnlock(mon);
+    if (mon->cb && mon->cb->domainStop)
+        ret = mon->cb->domainStop(mon, mon->vm);
+    qemuMonitorLock(mon);
+    qemuMonitorUnref(mon);
+    return ret;
+}
+
+
 int
 qemuMonitorStartCPUs(qemuMonitorPtr mon,
                      virConnectPtr conn)
index 7aa6ee58c0ba6c9a1624793139efdffd090dc1fa..8b1e3a3872d492e170b378a178111f0f964d974c 100644 (file)
@@ -76,6 +76,15 @@ struct _qemuMonitorCallbacks {
                             const char *path,
                             char **secret,
                             size_t *secretLen);
+
+    int (*domainShutdown)(qemuMonitorPtr mon,
+                          virDomainObjPtr vm);
+    int (*domainReset)(qemuMonitorPtr mon,
+                       virDomainObjPtr vm);
+    int (*domainPowerdown)(qemuMonitorPtr mon,
+                           virDomainObjPtr vm);
+    int (*domainStop)(qemuMonitorPtr mon,
+                      virDomainObjPtr vm);
 };
 
 
@@ -106,6 +115,10 @@ int qemuMonitorGetDiskSecret(qemuMonitorPtr mon,
                              char **secret,
                              size_t *secretLen);
 
+int qemuMonitorEmitShutdown(qemuMonitorPtr mon);
+int qemuMonitorEmitReset(qemuMonitorPtr mon);
+int qemuMonitorEmitPowerdown(qemuMonitorPtr mon);
+int qemuMonitorEmitStop(qemuMonitorPtr mon);
 
 int qemuMonitorStartCPUs(qemuMonitorPtr mon,
                          virConnectPtr conn);