summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorZeeshan Ali (Khattak) <zeeshanak@gnome.org>2012-07-11 11:49:25 +0300
committerZeeshan Ali (Khattak) <zeeshanak@gnome.org>2012-07-11 20:00:04 +0300
commitd57cdbb5346897a3ed25754eadfb77c9062e0080 (patch)
tree8335cba64aaad413a4316c134ece75016b15eb24
parent76263713d876656a1d54e0d66540be1b440825b8 (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.vala18
-rw-r--r--src/unattended-installer.vala37
-rw-r--r--src/vm-configurator.vala32
-rw-r--r--src/windows-installer.vala2
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;