diff options
author | Zeeshan Ali (Khattak) <zeeshanak@gnome.org> | 2012-07-11 11:49:25 +0300 |
---|---|---|
committer | Zeeshan Ali (Khattak) <zeeshanak@gnome.org> | 2012-07-11 20:00:04 +0300 |
commit | d57cdbb5346897a3ed25754eadfb77c9062e0080 (patch) | |
tree | 8335cba64aaad413a4316c134ece75016b15eb24 | |
parent | 76263713d876656a1d54e0d66540be1b440825b8 (diff) |
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
-rw-r--r-- | src/installer-media.vala | 18 | ||||
-rw-r--r-- | src/unattended-installer.vala | 37 | ||||
-rw-r--r-- | src/vm-configurator.vala | 32 | ||||
-rw-r--r-- | 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; |