diff --git a/src/libxl/libxl_conf.c b/src/libxl/libxl_conf.c index ea8b5c7e3b49272fc467738f8442e965b42b8390..acba69c52f3c38495a7903599160e8c40a82adeb 100644 --- a/src/libxl/libxl_conf.c +++ b/src/libxl/libxl_conf.c @@ -102,6 +102,62 @@ libxlDriverConfigDispose(void *obj) VIR_FREE(cfg->autoDumpDir); } + +static libxl_action_on_shutdown +libxlActionFromVirLifecycle(virDomainLifecycleAction action) +{ + switch (action) { + case VIR_DOMAIN_LIFECYCLE_DESTROY: + return LIBXL_ACTION_ON_SHUTDOWN_DESTROY; + + case VIR_DOMAIN_LIFECYCLE_RESTART: + return LIBXL_ACTION_ON_SHUTDOWN_RESTART; + + case VIR_DOMAIN_LIFECYCLE_RESTART_RENAME: + return LIBXL_ACTION_ON_SHUTDOWN_RESTART_RENAME; + + case VIR_DOMAIN_LIFECYCLE_PRESERVE: + return LIBXL_ACTION_ON_SHUTDOWN_PRESERVE; + + case VIR_DOMAIN_LIFECYCLE_LAST: + break; + } + + return 0; +} + + +static libxl_action_on_shutdown +libxlActionFromVirLifecycleCrash(virDomainLifecycleCrashAction action) +{ + + switch (action) { + case VIR_DOMAIN_LIFECYCLE_CRASH_DESTROY: + return LIBXL_ACTION_ON_SHUTDOWN_DESTROY; + + case VIR_DOMAIN_LIFECYCLE_CRASH_RESTART: + return LIBXL_ACTION_ON_SHUTDOWN_RESTART; + + case VIR_DOMAIN_LIFECYCLE_CRASH_RESTART_RENAME: + return LIBXL_ACTION_ON_SHUTDOWN_RESTART_RENAME; + + case VIR_DOMAIN_LIFECYCLE_CRASH_PRESERVE: + return LIBXL_ACTION_ON_SHUTDOWN_PRESERVE; + + case VIR_DOMAIN_LIFECYCLE_CRASH_COREDUMP_DESTROY: + return LIBXL_ACTION_ON_SHUTDOWN_COREDUMP_DESTROY; + + case VIR_DOMAIN_LIFECYCLE_CRASH_COREDUMP_RESTART: + return LIBXL_ACTION_ON_SHUTDOWN_COREDUMP_RESTART; + + case VIR_DOMAIN_LIFECYCLE_CRASH_LAST: + break; + } + + return 0; +} + + static int libxlCapsInitHost(libxl_ctx *ctx, virCapsPtr caps) { @@ -1432,9 +1488,9 @@ libxlBuildDomainConfig(virPortAllocatorPtr graphicsports, if (libxlMakePCIList(def, d_config) < 0) return -1; - d_config->on_reboot = def->onReboot; - d_config->on_poweroff = def->onPoweroff; - d_config->on_crash = def->onCrash; + d_config->on_reboot = libxlActionFromVirLifecycle(def->onReboot); + d_config->on_poweroff = libxlActionFromVirLifecycle(def->onPoweroff); + d_config->on_crash = libxlActionFromVirLifecycleCrash(def->onCrash); return 0; }