[gnome-boxes] installer: Remove unattended disk from config after install



commit 1f320907d95644db68fb5b2346e045ecaabd8528
Author: Zeeshan Ali (Khattak) <zeeshanak gnome org>
Date:   Thu Dec 20 03:53:52 2012 +0200

    installer: Remove unattended disk from config after install
    
    Remove unattended disk from domain configuration after installation is
    complete.
    
    https://bugzilla.gnome.org/show_bug.cgi?id=690536

 src/installer-media.vala      |    2 ++
 src/unattended-installer.vala |   19 +++++++++++++++++++
 src/vm-configurator.vala      |    6 +++---
 3 files changed, 24 insertions(+), 3 deletions(-)
---
diff --git a/src/installer-media.vala b/src/installer-media.vala
index 31395e8..f44e7ee 100644
--- a/src/installer-media.vala
+++ b/src/installer-media.vala
@@ -78,6 +78,8 @@ private class Boxes.InstallerMedia : GLib.Object {
         add_cd_config (domain, from_image? DomainDiskType.FILE : DomainDiskType.BLOCK, device_file, "hdc", true);
     }
 
+    public virtual void setup_post_install_domain_config (Domain domain) {}
+
     public virtual void populate_setup_vbox (Gtk.VBox setup_vbox) {}
 
     public virtual GLib.List<Pair<string,string>> get_vm_properties () {
diff --git a/src/unattended-installer.vala b/src/unattended-installer.vala
index 0f441f9..5fe9111 100644
--- a/src/unattended-installer.vala
+++ b/src/unattended-installer.vala
@@ -224,6 +224,25 @@ private class Boxes.UnattendedInstaller: InstallerMedia {
         config.set_pre_install_drivers_disk (config.get_script_disk ());
     }
 
+    public override void setup_post_install_domain_config (Domain domain) {
+        base.setup_post_install_domain_config (domain);
+
+        var devices = domain.get_devices ();
+        foreach (var device in devices) {
+            if (!(device is DomainDisk))
+                continue;
+
+            var disk = device as DomainDisk;
+            if (disk.get_source () == disk_file.get_path ()) {
+                devices.remove (device);
+
+                break;
+            }
+        }
+
+        domain.set_devices (devices);
+    }
+
     public override void populate_setup_vbox (Gtk.VBox setup_vbox) {
         foreach (var child in setup_vbox.get_children ())
             setup_vbox.remove (child);
diff --git a/src/vm-configurator.vala b/src/vm-configurator.vala
index 093c7f5..44e5c67 100644
--- a/src/vm-configurator.vala
+++ b/src/vm-configurator.vala
@@ -115,16 +115,16 @@ private class Boxes.VMConfigurator {
             if (!(device is DomainDisk))
                 continue;
 
-            // The ideal solution would be to automatically remove the floppy after installation but thats not as
-            // trivial as it sounds since some OSs need express install data after (e.g during first-boot setup).
             var disk = device as DomainDisk;
             var disk_type = disk.get_guest_device_type ();
-            if (disk_type == DomainDiskGuestDeviceType.CDROM || disk_type == DomainDiskGuestDeviceType.FLOPPY)
+            if (disk_type == DomainDiskGuestDeviceType.CDROM)
                 disk.set_startup_policy (DomainDiskStartupPolicy.OPTIONAL);
         }
 
         domain.set_devices (devices);
 
+        install_media.setup_post_install_domain_config (domain);
+
         mark_as_installed (domain, install_media);
     }
 



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