[gnome-boxes] media-manager: Add create_installer_media_from_config



commit 57cbb09698b36404cded972b8175a1281ae42820
Author: Zeeshan Ali (Khattak) <zeeshanak gnome org>
Date:   Sat Nov 17 18:31:32 2012 +0200

    media-manager: Add create_installer_media_from_config
    
    Add a method for creation of InstallerMedia from domain config.
    
    https://bugzilla.gnome.org/show_bug.cgi?id=688770

 src/media-manager.vala |   34 ++++++++++++++++++++++++++++++++++
 1 files changed, 34 insertions(+), 0 deletions(-)
---
diff --git a/src/media-manager.vala b/src/media-manager.vala
index ea46a61..536d198 100644
--- a/src/media-manager.vala
+++ b/src/media-manager.vala
@@ -28,6 +28,40 @@ private class Boxes.MediaManager : Object {
         return create_installer_media_from_media (media);
     }
 
+    public async InstallerMedia create_installer_media_from_config (GVirConfig.Domain config) {
+        var path = VMConfigurator.get_source_media_path (config);
+        var label = config.title;
+
+        Os? os = null;
+        Media? os_media = null;
+
+        try {
+            var os_id = VMConfigurator.get_os_id (config);
+            if (os_id != null) {
+                os = yield os_db.get_os_by_id (os_id);
+
+                var media_id = VMConfigurator.get_os_media_id (config);
+                if (media_id != null)
+                    os_media = os_db.get_media_by_id (os, media_id);
+            }
+        } catch (OSDatabaseError error) {
+            warning ("%s", error.message);
+        }
+
+        var architecture = (os_media != null) ? os_media.architecture : null;
+        var resources = os_db.get_resources_for_os (os, architecture);
+
+        var media = new InstallerMedia.from_iso_info (path, label, os, os_media, resources);
+
+        try {
+            media = create_installer_media_from_media (media);
+        } catch (GLib.Error error) {
+            debug ("%s", error.message); // We just failed to create more specific media instance, no biggie!
+        }
+
+        return media;
+    }
+
     public async GLib.List<InstallerMedia> list_installer_medias () {
         var list = new GLib.List<InstallerMedia> ();
 



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