[gnome-boxes/gnome-3-4] Mark CD-ROM device as optional after installation



commit d635a9d563979fd6e293fa3512dc03541e1c3772
Author: Zeeshan Ali (Khattak) <zeeshanak gnome org>
Date:   Thu Apr 12 05:54:56 2012 +0300

    Mark CD-ROM device as optional after installation
    
    This is done to tell libvirt/qemu to not panic if ISO file/device is
    unavailable after OS installation.
    
    https://bugzilla.gnome.org/show_bug.cgi?id=673856

 configure.ac             |    2 +-
 src/vm-configurator.vala |   14 ++++++++++++++
 2 files changed, 15 insertions(+), 1 deletions(-)
---
diff --git a/configure.ac b/configure.ac
index 9edf67c..b1e4268 100644
--- a/configure.ac
+++ b/configure.ac
@@ -46,7 +46,7 @@ GOBJECT_INTROSPECTION_MIN_VERSION=0.9.6
 GTK_MIN_VERSION=3.3.5
 GTK_VNC_MIN_VERSION=0.4.4
 LIBVIRT_GLIB_MIN_VERSION=0.0.6
-LIBVIRT_GCONFIG_MIN_VERSION=0.0.7
+LIBVIRT_GCONFIG_MIN_VERSION=0.0.8
 LIBXML2_MIN_VERSION=2.7.8
 SPICE_GTK_MIN_VERSION=0.9
 GUDEV_MIN_VERSION=165
diff --git a/src/vm-configurator.vala b/src/vm-configurator.vala
index 2d300f0..5f290e4 100644
--- a/src/vm-configurator.vala
+++ b/src/vm-configurator.vala
@@ -85,6 +85,19 @@ private class Boxes.VMConfigurator {
         } catch (GLib.Error error) { assert_not_reached (); /* We are so screwed if this happens */ }
         set_os_config (domain);
         domain.set_lifecycle (DomainLifecycleEvent.ON_REBOOT, DomainLifecycleAction.RESTART);
+
+        // Make source (installer/live media) optional
+        var devices = domain.get_devices ();
+        foreach (var device in devices) {
+            if (!(device is DomainDisk))
+                continue;
+
+            var disk = device as DomainDisk;
+            if (disk.get_guest_device_type () == DomainDiskGuestDeviceType.CDROM)
+                disk.set_startup_policy (DomainDiskStartupPolicy.OPTIONAL);
+        }
+
+        domain.set_devices (devices);
     }
 
     public bool is_install_config (Domain domain) {
@@ -150,6 +163,7 @@ private class Boxes.VMConfigurator {
         disk.set_source (install_media.device_file);
         disk.set_target_dev ("hdc");
         disk.set_target_bus (DomainDiskBus.IDE);
+        disk.set_startup_policy (DomainDiskStartupPolicy.MANDATORY);
 
         if (install_media.from_image)
             disk.set_type (DomainDiskType.FILE);



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]