case VIR_DOMAIN_EVENT_SHUTDOWN:
ret = "Shutdown";
break;
+ case VIR_DOMAIN_EVENT_PMSUSPENDED:
+ ret = "PMSuspended";
+ break;
}
return ret;
}
break;
}
break;
+ case VIR_DOMAIN_EVENT_PMSUSPENDED:
+ switch ((virDomainEventPMSuspendedDetailType) detail) {
+ case VIR_DOMAIN_EVENT_PMSUSPENDED_MEMORY:
+ ret = "Memory";
+ break;
+ }
+ break;
}
return ret;
}
"Suspended",
"Resumed",
"Stopped",
- "Shutdown" );
+ "Shutdown",
+ "PMSuspended" );
return eventStrings[event];
def detailToString(event, detail):
( "Unpaused", "Migrated", "Snapshot" ),
( "Shutdown", "Destroyed", "Crashed", "Migrated", "Saved", "Failed", "Snapshot"),
( "Finished" )
+ ( "Memory", )
)
return eventStrings[event][detail]
VIR_DOMAIN_EVENT_RESUMED = 4,
VIR_DOMAIN_EVENT_STOPPED = 5,
VIR_DOMAIN_EVENT_SHUTDOWN = 6,
+ VIR_DOMAIN_EVENT_PMSUSPENDED = 7,
#ifdef VIR_ENUM_SENTINELS
VIR_DOMAIN_EVENT_LAST
#endif
} virDomainEventShutdownDetailType;
+/**
+ * virDomainEventPMSuspendedDetailType:
+ *
+ * Details about the 'pmsuspended' lifecycle event
+ */
+typedef enum {
+ VIR_DOMAIN_EVENT_PMSUSPENDED_MEMORY = 0, /* Guest was PM suspended to memory */
+
+#ifdef VIR_ENUM_SENTINELS
+ VIR_DOMAIN_EVENT_PMSUSPENDED_LAST
+#endif
+} virDomainEventPMSuspendedDetailType;
+
/**
* virConnectDomainEventCallback:
* @conn: virConnect connection
{
struct qemud_driver *driver = qemu_driver;
virDomainEventPtr event = NULL;
+ virDomainEventPtr lifecycleEvent = NULL;
virDomainObjLock(vm);
event = virDomainEventPMSuspendNewFromObj(vm);
virDomainObjSetState(vm, VIR_DOMAIN_PMSUSPENDED,
VIR_DOMAIN_PMSUSPENDED_UNKNOWN);
+ lifecycleEvent =
+ virDomainEventNewFromObj(vm,
+ VIR_DOMAIN_EVENT_PMSUSPENDED,
+ VIR_DOMAIN_EVENT_PMSUSPENDED_MEMORY);
if (virDomainSaveStatus(driver->caps, driver->stateDir, vm) < 0) {
VIR_WARN("Unable to save status on vm %s after suspend event",
virDomainObjUnlock(vm);
- if (event) {
+ if (event || lifecycleEvent) {
qemuDriverLock(driver);
- qemuDomainEventQueue(driver, event);
+ if (event)
+ qemuDomainEventQueue(driver, event);
+ if (lifecycleEvent)
+ qemuDomainEventQueue(driver, lifecycleEvent);
qemuDriverUnlock(driver);
}