summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/launch-libvirt.c17
1 files changed, 17 insertions, 0 deletions
diff --git a/src/launch-libvirt.c b/src/launch-libvirt.c
index 649c809b..268efa5a 100644
--- a/src/launch-libvirt.c
+++ b/src/launch-libvirt.c
@@ -393,6 +393,7 @@ static int construct_libvirt_xml_name (guestfs_h *g, xmlTextWriterPtr xo);
static int construct_libvirt_xml_cpu (guestfs_h *g, xmlTextWriterPtr xo);
static int construct_libvirt_xml_boot (guestfs_h *g, xmlTextWriterPtr xo, const char *kernel, const char *initrd, size_t appliance_index);
static int construct_libvirt_xml_seclabel (guestfs_h *g, xmlTextWriterPtr xo);
+static int construct_libvirt_xml_lifecycle (guestfs_h *g, xmlTextWriterPtr xo);
static int construct_libvirt_xml_devices (guestfs_h *g, xmlTextWriterPtr xo, const char *appliance, size_t appliance_index, const char *guestfsd_sock, const char *console_sock);
static int construct_libvirt_xml_qemu_cmdline (guestfs_h *g, xmlTextWriterPtr xo);
static int construct_libvirt_xml_disk (guestfs_h *g, xmlTextWriterPtr xo, struct drive *drv, size_t drv_index);
@@ -457,6 +458,8 @@ construct_libvirt_xml (guestfs_h *g, const char *capabilities_xml,
goto err;
if (construct_libvirt_xml_seclabel (g, xo) == -1)
goto err;
+ if (construct_libvirt_xml_lifecycle (g, xo) == -1)
+ goto err;
if (construct_libvirt_xml_devices (g, xo, appliance, appliance_index,
guestfsd_sock, console_sock) == -1)
goto err;
@@ -643,6 +646,20 @@ construct_libvirt_xml_seclabel (guestfs_h *g, xmlTextWriterPtr xo)
return -1;
}
+/* qemu -no-reboot */
+static int
+construct_libvirt_xml_lifecycle (guestfs_h *g, xmlTextWriterPtr xo)
+{
+ XMLERROR (-1, xmlTextWriterStartElement (xo, BAD_CAST "on_reboot"));
+ XMLERROR (-1, xmlTextWriterWriteString (xo, BAD_CAST "destroy"));
+ XMLERROR (-1, xmlTextWriterEndElement (xo));
+
+ return 0;
+
+ err:
+ return -1;
+}
+
/* Devices. */
static int
construct_libvirt_xml_devices (guestfs_h *g, xmlTextWriterPtr xo,