After an evaluation, GNOME has moved from Bugzilla to GitLab. Learn more about GitLab.
No new issues can be reported in GNOME Bugzilla anymore.
To report an issue in a GNOME project, go to GNOME GitLab.
Do not go to GNOME Gitlab for: Bluefish, Doxygen, GnuCash, GStreamer, java-gnome, LDTP, NetworkManager, Tomboy.
Bug 690757 - Support VM creation out of ready-made/installed disk images
Support VM creation out of ready-made/installed disk images
Status: RESOLVED FIXED
Product: gnome-boxes
Classification: Applications
Component: installer
unspecified
Other Linux
: Normal enhancement
: --
Assigned To: GNOME Boxes maintainer(s)
GNOME Boxes maintainer(s)
Depends on:
Blocks:
 
 
Reported: 2012-12-27 00:33 UTC by William Jon McCann
Modified: 2016-03-31 13:59 UTC
See Also:
GNOME target: ---
GNOME version: ---


Attachments
vm-configurator: Add a sanity check (902 bytes, patch)
2013-06-07 00:33 UTC, Zeeshan Ali
committed Details | Review
wizard: Set max-width on summary labels (1009 bytes, patch)
2013-06-07 00:33 UTC, Zeeshan Ali
committed Details | Review
os-database: Bump default memory allocation to 1G (1.01 KB, patch)
2013-06-07 00:33 UTC, Zeeshan Ali
committed Details | Review
installer-media: Exclude extensions from VM name (1.34 KB, patch)
2013-06-07 00:33 UTC, Zeeshan Ali
committed Details | Review
InstallerMedia now creates VMCreator instance (1.55 KB, patch)
2013-06-07 00:33 UTC, Zeeshan Ali
committed Details | Review
os-database: Make get_default_resources() public (792 bytes, patch)
2013-06-07 00:33 UTC, Zeeshan Ali
committed Details | Review
util: Add is_mime_type() (1.08 KB, patch)
2013-06-07 00:33 UTC, Zeeshan Ali
committed Details | Review
vm-configurator: Keep source media path in custom config (2.79 KB, patch)
2013-06-07 00:33 UTC, Zeeshan Ali
committed Details | Review
installer-media: Make label setup available to subclasses (2.76 KB, patch)
2013-06-07 00:33 UTC, Zeeshan Ali
committed Details | Review
Add InstalledMedia class (5.20 KB, patch)
2013-06-07 00:33 UTC, Zeeshan Ali
needs-work Details | Review
Add VMImporter class (7.31 KB, patch)
2013-06-07 00:33 UTC, Zeeshan Ali
needs-work Details | Review
Add support for importing ready-made VMs (5.15 KB, patch)
2013-06-07 00:33 UTC, Zeeshan Ali
needs-work Details | Review
Add support for importing gzip-compression images (4.08 KB, patch)
2013-06-07 00:33 UTC, Zeeshan Ali
needs-work Details | Review
vm-creator: Set thyself on LibvirtMachine soon after creation (1.70 KB, patch)
2013-06-07 00:34 UTC, Zeeshan Ali
committed Details | Review
libvirt-machine: Add 'importing' property (1001 bytes, patch)
2013-06-07 00:34 UTC, Zeeshan Ali
committed Details | Review
libvirt-machine-props,wizard: Hide storage volume when importing (1.89 KB, patch)
2013-06-07 00:34 UTC, Zeeshan Ali
committed Details | Review
collection-view: Don't let user launch under-import VMs (1.22 KB, patch)
2013-06-07 00:34 UTC, Zeeshan Ali
needs-work Details | Review
selectionbar: Don't let user delete under-construction VMs (1.67 KB, patch)
2013-06-07 00:34 UTC, Zeeshan Ali
needs-work Details | Review
installer-media: Add protected architecture property (2.23 KB, patch)
2013-06-12 02:39 UTC, Zeeshan Ali
committed Details | Review
Add InstalledMedia class (4.05 KB, patch)
2013-06-12 02:40 UTC, Zeeshan Ali
committed Details | Review
Add VMImporter class (7.49 KB, patch)
2013-06-12 02:41 UTC, Zeeshan Ali
committed Details | Review
Add support for importing ready-made VMs (5.15 KB, patch)
2013-06-12 02:41 UTC, Zeeshan Ali
committed Details | Review
Add support for importing gzip-compression images (4.32 KB, patch)
2013-06-12 02:41 UTC, Zeeshan Ali
committed Details | Review
collection-view: Don't let user launch under-import VMs (1022 bytes, patch)
2013-06-12 02:42 UTC, Zeeshan Ali
committed Details | Review
selectionbar: Don't let user delete under-construction VMs (3.18 KB, patch)
2013-06-12 02:43 UTC, Zeeshan Ali
needs-work Details | Review
selectionbar: Don't let user delete under-construction VMs (3.48 KB, patch)
2013-06-14 14:56 UTC, Zeeshan Ali
none Details | Review
selectionbar: Don't let user delete under-construction VMs (3.48 KB, patch)
2013-06-16 07:57 UTC, Zeeshan Ali
committed Details | Review

Description William Jon McCann 2012-12-27 00:33:20 UTC
I'm trying to create a box from a couple of "image" formats in files with extensions .img and .dsk. The select from file dialog doesn't even show them.
Comment 1 Zeeshan Ali 2012-12-27 13:59:12 UTC
(In reply to comment #0)
> I'm trying to create a box from a couple of "image" formats in files with
> extensions .img and .dsk. The select from file dialog doesn't even show them.

We'll need some way to detect which OS is installed on the image to be able to create a suitable VM for it and the only way to do that is to use libguesfs but that takes a looong time to extract information: guestfish.

I think it'd be more important to implement saving and loading of VMs first: bug#677691.
Comment 2 Zeeshan Ali 2013-01-07 01:27:55 UTC
(In reply to comment #1)
> (In reply to comment #0)
> > I'm trying to create a box from a couple of "image" formats in files with
> > extensions .img and .dsk. The select from file dialog doesn't even show them.
> 
> We'll need some way to detect which OS is installed on the image to be able to
> create a suitable VM for it and the only way to do that is to use libguesfs but
> that takes a looong time to extract information: guestfish.

On second thought, we can make some safe guesses at resource allocation and user can customize them if needed. I'll look into this next week.
Comment 3 Zeeshan Ali 2013-06-07 00:33:08 UTC
Created attachment 246205 [details] [review]
vm-configurator: Add a sanity check
Comment 4 Zeeshan Ali 2013-06-07 00:33:12 UTC
Created attachment 246206 [details] [review]
wizard: Set max-width on summary labels

We were setting the label to ellipsize but without setting max-width on
labels, this was useless.
Comment 5 Zeeshan Ali 2013-06-07 00:33:17 UTC
Created attachment 246207 [details] [review]
os-database: Bump default memory allocation to 1G

If recommended/min memory for an OS or OS itself is unknown, lets
allocate 1G rather than 500M. 500M is too little for most modern OSs.
Comment 6 Zeeshan Ali 2013-06-07 00:33:21 UTC
Created attachment 246208 [details] [review]
installer-media: Exclude extensions from VM name

When creating label/VM name from an unknown media, we simply use the
basename of the media filename. There is no point in taking the
extensions and it usually only makes the name longer and is unlikely to
be desired by users.
Comment 7 Zeeshan Ali 2013-06-07 00:33:25 UTC
Created attachment 246209 [details] [review]
InstallerMedia now creates VMCreator instance

Later we utilize this to create subclasses of InstallerMedia that uses a
a custom subclass of VMCreator rather than VMCreator itself.
Comment 8 Zeeshan Ali 2013-06-07 00:33:29 UTC
Created attachment 246210 [details] [review]
os-database: Make get_default_resources() public
Comment 9 Zeeshan Ali 2013-06-07 00:33:33 UTC
Created attachment 246211 [details] [review]
util: Add is_mime_type()

Add utility function to determine if given file is on given mimetype.
Comment 10 Zeeshan Ali 2013-06-07 00:33:38 UTC
Created attachment 246212 [details] [review]
vm-configurator: Keep source media path in custom config

This will be later useful in case where source media is not going to be
part of domain's own config.
Comment 11 Zeeshan Ali 2013-06-07 00:33:42 UTC
Created attachment 246213 [details] [review]
installer-media: Make label setup available to subclasses

Make setup_label() accessible to subclasses and rename it to
label_setup() to avoid conflict with UnattendedInstaller.setup_label.
Comment 12 Zeeshan Ali 2013-06-07 00:33:46 UTC
Created attachment 246214 [details] [review]
Add InstalledMedia class

A new subclass of InstallerMedia that represents ready-made/installed
media in the form of raw or qcow2 images. It also provides means to
convert raw image to our native (qcow2) format.

This patch adds direct (runtime only) dependency on qemu-img binary.
Comment 13 Zeeshan Ali 2013-06-07 00:33:50 UTC
Created attachment 246215 [details] [review]
Add VMImporter class

This subclass of VMCreator will be responsible for importing the VM
after its creation.
Comment 14 Zeeshan Ali 2013-06-07 00:33:54 UTC
Created attachment 246216 [details] [review]
Add support for importing ready-made VMs

Currently only qcow2 and raw images are supported.

TODO:

* Report progress of import
Comment 15 Zeeshan Ali 2013-06-07 00:33:59 UTC
Created attachment 246217 [details] [review]
Add support for importing gzip-compression images

To reduce download time, images are sometimes compressed by distributors
(e.g GNOME OSTree images).
Comment 16 Zeeshan Ali 2013-06-07 00:34:04 UTC
Created attachment 246218 [details] [review]
vm-creator: Set thyself on LibvirtMachine soon after creation

Set 'vm_creator' property of LibvirtMachine soon after creating it
because otherwise its not clear if machine is under construction during
the wizard/before launch.
Comment 17 Zeeshan Ali 2013-06-07 00:34:09 UTC
Created attachment 246219 [details] [review]
libvirt-machine: Add 'importing' property

Add a property to indicate if machine is currently being imported.
Comment 18 Zeeshan Ali 2013-06-07 00:34:14 UTC
Created attachment 246220 [details] [review]
libvirt-machine-props,wizard: Hide storage volume when importing

When machine is in the process of being imported, hide its storage
volume from UI because the actual storage capacity will only be
known after import is finished.

This actually make me wonder if we should import the media during
wizard's 'preparation' step instead, keeping in mind that that we intend
to do downloading of medias in there as well.
Comment 19 Zeeshan Ali 2013-06-07 00:34:19 UTC
Created attachment 246221 [details] [review]
collection-view: Don't let user launch under-import VMs

Launching of such VMs doesn't make any sense.
Comment 20 Zeeshan Ali 2013-06-07 00:34:24 UTC
Created attachment 246222 [details] [review]
selectionbar: Don't let user delete under-construction VMs

While the ideal solution is probably to make it possible for user to
delete under construciton VMs too, it would be pretty difficult to
implement with us launching external processes as part of such
construction. Keeping in mind also that this only affects imported (from
installed media) VMs and importing usually takes much less time than
installations, I think this is not bad at least as a temporary work
around.
Comment 21 Zeeshan Ali 2013-06-10 15:18:38 UTC
Review of attachment 246216 [details] [review]:

I'm looking into displaying spinner on top of under construction boxes. Since we are in a much better position to report actual progress of import (compared to installation), I was hoping to show a progressbar for importing case instead. Something like the first box here: https://github.com/gnome-design-team/gnome-mockups/raw/master/boxes/boxes-install6.png
Comment 22 Alexander Larsson 2013-06-11 08:24:09 UTC
Review of attachment 246205 [details] [review]:

ack
Comment 23 Alexander Larsson 2013-06-11 08:30:01 UTC
Review of attachment 246206 [details] [review]:

Why is this needed? setting a max-width just means we specify some minimal size.
Even without this we should be able to resize the window to see more of the strings, no?
Comment 24 Alexander Larsson 2013-06-11 08:30:21 UTC
Review of attachment 246207 [details] [review]:

ack
Comment 25 Alexander Larsson 2013-06-11 08:31:04 UTC
Review of attachment 246208 [details] [review]:

ack
Comment 26 Alexander Larsson 2013-06-11 08:31:55 UTC
Review of attachment 246209 [details] [review]:

ack
Comment 27 Alexander Larsson 2013-06-11 08:32:18 UTC
Review of attachment 246210 [details] [review]:

ack
Comment 28 Alexander Larsson 2013-06-11 08:34:50 UTC
Review of attachment 246211 [details] [review]:

ack
Comment 29 Alexander Larsson 2013-06-11 08:40:26 UTC
Review of attachment 246212 [details] [review]:

I think we never use get_source_media_path() outside the installation phase, which means we don't need the old code for fallback for old VMs without the new media node.
Is that right? If so, ack.
Comment 30 Alexander Larsson 2013-06-11 08:41:13 UTC
Review of attachment 246213 [details] [review]:

ack
Comment 31 Alexander Larsson 2013-06-11 08:49:54 UTC
Review of attachment 246214 [details] [review]:

::: src/installed-media.vala
@@ +24,3 @@
+                debug ("Failed to guess architecture for media '%s', assuming 'x86_64'", device_file);
+
+                return "x86_64";

Maybe we should assume the current host arch instead? Its kinda painful if it guesses wrong and there is no way to change what it guesses.
Like, say you're on i686 and it guesses x86-64 on your i686 VM, then you can't run it and there is no way to override this.
If you guess wrong based on the current arch at least you can *try* it, and get a runtime failure later.

@@ +32,3 @@
+
+    public InstalledMedia (string path) throws GLib.Error {
+        if (!path.has_suffix (".qcow2") && !path.has_suffix (".img"))

Can't qemu convert from other formats too?

@@ +44,3 @@
+    public async void convert_to_native_format () throws GLib.Error {
+        if (device_file.has_suffix (".qcow2"))
+            return;

Do we maybe want to copy the VM file into boxes? Not sure what semantics we want for this. Use the supplied one at runtime, or use it as a template.
Its kinda weird that we have different behaviour depending on the type though.
Comment 32 Alexander Larsson 2013-06-11 08:50:51 UTC
Review of attachment 246214 [details] [review]:

::: src/installed-media.vala
@@ +88,3 @@
+
+    public override VMCreator get_vm_creator () {
+        return new VMImporter (this);

This needs to come after the patch that introduces VMImporter
Comment 33 Alexander Larsson 2013-06-11 08:52:32 UTC
Review of attachment 246214 [details] [review]:

::: src/installed-media.vala
@@ +44,3 @@
+    public async void convert_to_native_format () throws GLib.Error {
+        if (device_file.has_suffix (".qcow2"))
+            return;

Ah, i see we copy in the other patch. But doesn't it make more sense to convert it to the right place instead?
Comment 34 Alexander Larsson 2013-06-11 08:54:33 UTC
Review of attachment 246215 [details] [review]:

::: src/vm-importer.vala
@@ +43,3 @@
+            var destination = File.new_for_path (destination_path);
+
+            yield source.copy_async (destination, FileCopyFlags.OVERWRITE, Priority.DEFAULT, null);

This copy is unnecessary if we already made a copy during conversion.
I think it makes more sense to pass the target destination to  source_media.convert_to_native_format() and have it do the copy if no conversion is needed.
Comment 35 Alexander Larsson 2013-06-11 08:59:42 UTC
Review of attachment 246216 [details] [review]:

::: src/media-manager.vala
@@ +26,3 @@
     public async InstallerMedia create_installer_media_for_path (string       path,
                                                                  Cancellable? cancellable = null) throws GLib.Error {
+        var media = is_mime_type (path, "application/x-cd-image") ?

Seems clearer to use a normal if() here.
Comment 36 Alexander Larsson 2013-06-11 09:02:56 UTC
Review of attachment 246217 [details] [review]:

::: src/installed-media.vala
@@ +121,3 @@
+        do {
+            length = yield input_stream.read_async (buffer);
+            output_stream.write (buffer[0:length]);

This can do a short write, which will lose data. You can use write_all() to avoid that. Or just use output_stream.splice().
Comment 37 Alexander Larsson 2013-06-11 09:03:40 UTC
Review of attachment 246218 [details] [review]:

ack
Comment 38 Alexander Larsson 2013-06-11 09:04:14 UTC
Review of attachment 246219 [details] [review]:

ack
Comment 39 Alexander Larsson 2013-06-11 09:04:52 UTC
Review of attachment 246220 [details] [review]:

ack
Comment 40 Alexander Larsson 2013-06-11 09:05:58 UTC
Review of attachment 246221 [details] [review]:

::: src/collection-view.vala
@@ +316,3 @@
+                // FIXME: Better error message!
+                var msg = _("Launching of a box that is being imported, is not possible.");
+                App.app.notificationbar.display_error (msg);

Can't we make them insensitive instead in some way? Allowing something to be done only to show an error is stupid.
Comment 41 Alexander Larsson 2013-06-11 09:08:10 UTC
Review of attachment 246222 [details] [review]:

::: src/selectionbar.vala
@@ +162,3 @@
+        var sensitive = true;
+        foreach (var item in App.app.selected_items) {
+            if (item is LibvirtMachine && (item as LibvirtMachine).vm_creator != null) {

This is kinda magic, we should have a machine.deletable property instead. And, we probably need notification on that so we can update the sensitive state when it changes.
Comment 42 Zeeshan Ali 2013-06-11 13:35:25 UTC
Review of attachment 246212 [details] [review]:

Not sure I quite understand the latter part of the question but yeah, get_source_media_path() is only used in the context of installation only.
Comment 43 Zeeshan Ali 2013-06-11 13:57:53 UTC
Review of attachment 246214 [details] [review]:

::: src/installed-media.vala
@@ +32,3 @@
+
+    public InstalledMedia (string path) throws GLib.Error {
+        if (!path.has_suffix (".qcow2") && !path.has_suffix (".img"))

actually it also supports virtual box and vmware formats amongst a few others and I was hoping to add support for those after wards. First I'd like to get these patches in.
Comment 44 Zeeshan Ali 2013-06-11 14:03:34 UTC
Review of attachment 246206 [details] [review]:

when string are too long, the review page looks really ugly, especially in cases like import where we don't have much details to show. Besides some names don't exactly fit even in fullscreen (as was the case with older (than 2 weeks) gnome ostree images).
Comment 45 Zeeshan Ali 2013-06-11 19:46:41 UTC
Review of attachment 246217 [details] [review]:

::: src/installed-media.vala
@@ +121,3 @@
+        do {
+            length = yield input_stream.read_async (buffer);
+            output_stream.write (buffer[0:length]);

write_all() doesn't seem to have an async variant and both splice and write_all will make it hard for me to later add progress reporting (that I was planning for) here. I'll correct this code to take into account the return value of write().
Comment 46 Zeeshan Ali 2013-06-11 19:50:06 UTC
Review of attachment 246221 [details] [review]:

::: src/collection-view.vala
@@ +316,3 @@
+                // FIXME: Better error message!
+                var msg = _("Launching of a box that is being imported, is not possible.");
+                App.app.notificationbar.display_error (msg);

I was thinking that with a black thumbnail that we show while importing, it won't be obvious to user that he/she can't click and they'll think its a bug. However, I intend to add indication on top of the thumbnails for box under construction/import so I can just make it insensitive.
Comment 47 Zeeshan Ali 2013-06-12 00:31:20 UTC
Review of attachment 246221 [details] [review]:

::: src/collection-view.vala
@@ +316,3 @@
+                // FIXME: Better error message!
+                var msg = _("Launching of a box that is being imported, is not possible.");
+                App.app.notificationbar.display_error (msg);

Hmm.. the only way I see is this very code w/o the error message.
Comment 48 Zeeshan Ali 2013-06-12 02:39:18 UTC
Created attachment 246578 [details] [review]
installer-media: Add protected architecture property

We keep this new property overridable as later we add subclass of
InstallerMedia that can't get the architecture info from Libosinfo.

This patch comes just before 'Add InstalledMedia class'.
Comment 49 Zeeshan Ali 2013-06-12 02:40:58 UTC
Created attachment 246579 [details] [review]
Add InstalledMedia class

* Acted on review
* Now also converts even if source media is already in 'qcow2' format, in which case the conversion is simply a copying
  operation.
Comment 50 Zeeshan Ali 2013-06-12 02:41:18 UTC
Created attachment 246580 [details] [review]
Add VMImporter class

This subclass of VMCreator will be responsible for importing the VM
after its creation.
Comment 51 Zeeshan Ali 2013-06-12 02:41:35 UTC
Created attachment 246581 [details] [review]
Add support for importing ready-made VMs

Currently only qcow2 and raw images are supported.

TODO:

* Report progress of import
Comment 52 Zeeshan Ali 2013-06-12 02:41:58 UTC
Created attachment 246582 [details] [review]
Add support for importing gzip-compression images

To reduce download time, images are sometimes compressed by distributors
(e.g GNOME OSTree images).
Comment 53 Zeeshan Ali 2013-06-12 02:42:46 UTC
Created attachment 246583 [details] [review]
collection-view: Don't let user launch under-import VMs

Launching of such VMs doesn't make any sense.
Comment 54 Zeeshan Ali 2013-06-12 02:43:05 UTC
Created attachment 246584 [details] [review]
selectionbar: Don't let user delete under-construction VMs

While the ideal solution is probably to make it possible for user to
delete under construciton VMs too, it would be pretty difficult to
implement with us launching external processes as part of such
construction. Keeping in mind also that this only affects imported (from
installed media) VMs and importing usually takes much less time than
installations, I think this is not bad at least as a temporary work
around.
Comment 55 Alexander Larsson 2013-06-13 14:33:36 UTC
Review of attachment 246212 [details] [review]:

ack then
Comment 56 Alexander Larsson 2013-06-13 14:37:11 UTC
Review of attachment 246206 [details] [review]:

Ah, i see what you mean. It still ellipsized before, but only when the window was wery small.
You want it ellipsized in order to not look bad.
Comment 57 Alexander Larsson 2013-06-13 14:40:30 UTC
Review of attachment 246578 [details] [review]:

ack
Comment 58 Alexander Larsson 2013-06-13 14:45:17 UTC
Review of attachment 246579 [details] [review]:

ack
Comment 59 Alexander Larsson 2013-06-13 15:08:29 UTC
Review of attachment 246580 [details] [review]:

ack
Comment 60 Alexander Larsson 2013-06-13 15:10:06 UTC
Review of attachment 246581 [details] [review]:

ack
Comment 61 Alexander Larsson 2013-06-13 15:12:31 UTC
Review of attachment 246582 [details] [review]:

ack
Comment 62 Alexander Larsson 2013-06-13 15:13:01 UTC
Review of attachment 246583 [details] [review]:

ack
Comment 63 Alexander Larsson 2013-06-13 15:16:05 UTC
Review of attachment 246584 [details] [review]:

::: src/selectionbar.vala
@@ +167,3 @@
+                ulong can_delete_id = 0;
+                can_delete_id = item.notify["can-delete"].connect (() => {
+                    item.disconnect (can_delete_id);

This is a bit iffy. You will create this callback any time the selection changes and one item is not deletable, which will hand around until its finished installing...
Comment 64 Zeeshan Ali 2013-06-13 21:23:56 UTC
Review of attachment 246584 [details] [review]:

::: src/selectionbar.vala
@@ +167,3 @@
+                ulong can_delete_id = 0;
+                can_delete_id = item.notify["can-delete"].connect (() => {
+                    item.disconnect (can_delete_id);

yes?
Comment 65 Alexander Larsson 2013-06-14 06:58:23 UTC
Review of attachment 246584 [details] [review]:

::: src/selectionbar.vala
@@ +167,3 @@
+                ulong can_delete_id = 0;
+                can_delete_id = item.notify["can-delete"].connect (() => {
+                    item.disconnect (can_delete_id);

So, you can queue up arbitrarily many outstanding signal handlers which seems a bit unnecessary. Also it doesn't handle a machine going from can_delete to !can_delete (which can't happen today, but may later).

I think we should add this in a bit more generic way so that we can track any kind state changes in all selected items in a robust way.
Comment 66 Zeeshan Ali 2013-06-14 14:56:22 UTC
Created attachment 246819 [details] [review]
selectionbar: Don't let user delete under-construction VMs

Is this better?
Comment 67 Zeeshan Ali 2013-06-16 07:57:55 UTC
Created attachment 246926 [details] [review]
selectionbar: Don't let user delete under-construction VMs

Yikes, last version of this patch disabled deletion for boxes under install as well.
Comment 68 Alexander Larsson 2013-06-17 09:16:51 UTC
Review of attachment 246926 [details] [review]:

ack
Comment 69 Zeeshan Ali 2013-06-17 09:22:49 UTC
Attachment 246205 [details] pushed as f18da82 - vm-configurator: Add a sanity check
Attachment 246206 [details] pushed as d96fd40 - wizard: Set max-width on summary labels
Attachment 246207 [details] pushed as 7e44932 - os-database: Bump default memory allocation to 1G
Attachment 246208 [details] pushed as d3e133e - installer-media: Exclude extensions from VM name
Attachment 246209 [details] pushed as df95e88 - InstallerMedia now creates VMCreator instance
Attachment 246210 [details] pushed as f80e3ac - os-database: Make get_default_resources() public
Attachment 246211 [details] pushed as a9e6af5 - util: Add is_mime_type()
Attachment 246212 [details] pushed as 33b3a9d - vm-configurator: Keep source media path in custom config
Attachment 246213 [details] pushed as 3dfab92 - installer-media: Make label setup available to subclasses
Attachment 246218 [details] pushed as 686df6e - vm-creator: Set thyself on LibvirtMachine soon after creation
Attachment 246219 [details] pushed as 39cea35 - libvirt-machine: Add 'importing' property
Attachment 246220 [details] pushed as 148428b - libvirt-machine-props,wizard: Hide storage volume when importing
Attachment 246578 [details] pushed as 0b9da1b - installer-media: Add protected architecture property
Attachment 246579 [details] pushed as 8886b47 - Add InstalledMedia class
Attachment 246580 [details] pushed as 93308b3 - Add VMImporter class
Attachment 246581 [details] pushed as d231c27 - Add support for importing ready-made VMs
Attachment 246582 [details] pushed as 2435284 - Add support for importing gzip-compression images
Attachment 246583 [details] pushed as 5e27d33 - collection-view: Don't let user launch under-import VMs
Attachment 246926 [details] pushed as 99db5ac - selectionbar: Don't let user delete under-construction VMs