[gnome-boxes] Move installer disks setup to InstallerMedia



commit d57cdbb5346897a3ed25754eadfb77c9062e0080
Author: Zeeshan Ali (Khattak) <zeeshanak gnome org>
Date:   Wed Jul 11 11:49:25 2012 +0300

    Move installer disks setup to InstallerMedia
    
    Let InstallerMedia and its subclasses handle setup of source and
    unattended disk configuration in the domain config.
    
    https://bugzilla.gnome.org/show_bug.cgi?id=679706

 src/installer-media.vala      |   18 ++++++++++++++++++
 src/unattended-installer.vala |   37 +++++++++++++++++++++++++------------
 src/vm-configurator.vala      |   32 +-------------------------------
 src/windows-installer.vala    |    2 +-
 4 files changed, 45 insertions(+), 44 deletions(-)
---
diff --git a/src/installer-media.vala b/src/installer-media.vala
index b65448c..5b1a4bf 100644
--- a/src/installer-media.vala
+++ b/src/installer-media.vala
@@ -61,6 +61,24 @@ private class Boxes.InstallerMedia : GLib.Object {
     public virtual void set_direct_boot_params (DomainOs os) {}
     public virtual async void prepare_for_installation (string vm_name, Cancellable? cancellable) throws GLib.Error {}
 
+    public virtual void setup_domain_config (Domain domain) {
+        var disk = new DomainDisk ();
+        disk.set_guest_device_type (DomainDiskGuestDeviceType.CDROM);
+        disk.set_driver_name ("qemu");
+        disk.set_driver_type ("raw");
+        disk.set_source (device_file);
+        disk.set_target_dev ("hdc");
+        disk.set_target_bus (DomainDiskBus.IDE);
+        disk.set_startup_policy (DomainDiskStartupPolicy.MANDATORY);
+
+        if (from_image)
+            disk.set_type (DomainDiskType.FILE);
+        else
+            disk.set_type (DomainDiskType.BLOCK);
+
+        domain.add_device (disk);
+    }
+
     public bool is_architecture_compatible (string architecture) {
         return os_media == null || // Unknown media
                os_media.architecture == architecture ||
diff --git a/src/unattended-installer.vala b/src/unattended-installer.vala
index de94877..1bfdb2b 100644
--- a/src/unattended-installer.vala
+++ b/src/unattended-installer.vala
@@ -140,22 +140,18 @@ private abstract class Boxes.UnattendedInstaller: InstallerMedia {
         setup_vbox.pack_start (setup_hbox, false, false);
     }
 
+    public override void setup_domain_config (Domain domain) {
+        base.setup_domain_config (domain);
 
-    public virtual DomainDisk? get_unattended_disk_config () {
-        if (!express_toggle.active)
-            return null;
+        var disk = get_unattended_disk_config ();
+        if (disk == null)
+            return;
+
+        domain.add_device (disk);
+    }
 
-        return_val_if_fail (disk_file != null, null);
 
-        var disk = new DomainDisk ();
-        disk.set_type (DomainDiskType.FILE);
-        disk.set_guest_device_type (DomainDiskGuestDeviceType.DISK);
-        disk.set_driver_name ("qemu");
-        disk.set_driver_type ("raw");
-        disk.set_source (disk_file.get_path ());
-        disk.set_target_dev ("sdb");
 
-        return disk;
     }
 
     // Ensure needed information was provided by user
@@ -274,6 +270,23 @@ private abstract class Boxes.UnattendedInstaller: InstallerMedia {
 
     protected virtual async void prepare_direct_boot (Cancellable? cancellable) throws GLib.Error {}
 
+    protected virtual DomainDisk? get_unattended_disk_config () {
+        if (!express_toggle.active)
+            return null;
+
+        return_val_if_fail (disk_file != null, null);
+
+        var disk = new DomainDisk ();
+        disk.set_type (DomainDiskType.FILE);
+        disk.set_guest_device_type (DomainDiskGuestDeviceType.DISK);
+        disk.set_driver_name ("qemu");
+        disk.set_driver_type ("raw");
+        disk.set_source (disk_file.get_path ());
+        disk.set_target_dev ("sdb");
+
+        return disk;
+    }
+
     protected void add_unattended_file (UnattendedFile file) {
         unattended_files.append (file);
     }
diff --git a/src/vm-configurator.vala b/src/vm-configurator.vala
index 550983d..fb98b62 100644
--- a/src/vm-configurator.vala
+++ b/src/vm-configurator.vala
@@ -60,8 +60,7 @@ private class Boxes.VMConfigurator {
         domain.set_clock (clock);
 
         set_target_media_config (domain, target_path, install_media);
-        set_unattended_disk_config (domain, install_media);
-        set_source_media_config (domain, install_media);
+        install_media.setup_domain_config (domain);
 
         var graphics = new DomainGraphicsSpice ();
         graphics.set_autoport (true);
@@ -201,35 +200,6 @@ private class Boxes.VMConfigurator {
         domain.add_device (disk);
     }
 
-    private static void set_source_media_config (Domain domain, InstallerMedia install_media) {
-        var disk = new DomainDisk ();
-        disk.set_guest_device_type (DomainDiskGuestDeviceType.CDROM);
-        disk.set_driver_name ("qemu");
-        disk.set_driver_type ("raw");
-        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);
-        else
-            disk.set_type (DomainDiskType.BLOCK);
-
-        domain.add_device (disk);
-    }
-
-    private static void set_unattended_disk_config (Domain domain, InstallerMedia install_media) {
-        if (!(install_media is UnattendedInstaller))
-            return;
-
-        var disk = (install_media as UnattendedInstaller).get_unattended_disk_config ();
-        if (disk == null)
-            return;
-
-        domain.add_device (disk);
-    }
-
     private static void set_post_install_os_config (Domain domain) {
         var os = new DomainOs ();
         os.set_os_type (DomainOsType.HVM);
diff --git a/src/windows-installer.vala b/src/windows-installer.vala
index 012d5da..c35522c 100644
--- a/src/windows-installer.vala
+++ b/src/windows-installer.vala
@@ -4,7 +4,7 @@ using GVirConfig;
 
 // Automated installer media for Windows.
 private abstract class Boxes.WindowsInstaller: UnattendedInstaller {
-    public override DomainDisk? get_unattended_disk_config () {
+    protected override DomainDisk? get_unattended_disk_config () {
         var disk = base.get_unattended_disk_config ();
         if (disk == null)
             return null;



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