summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCole Robinson <crobinso@redhat.com>2012-02-13 14:49:00 -0500
committerCole Robinson <crobinso@redhat.com>2012-02-13 14:49:00 -0500
commit56265735b9dcc45b3798e87e6e3b60285119d8d5 (patch)
tree8317bb0ec642174299b5dcc8b74b3dea81cabd8c
parent0c507ac98b1dec90e68f00c87a6a1529a96f7fb7 (diff)
downloadvirt-manager-56265735b9dcc45b3798e87e6e3b60285119d8d5.tar.gz
Add option to choose default disk image format
-rw-r--r--src/virt-manager.schemas.in13
-rw-r--r--src/virtManager/config.py12
-rw-r--r--src/virtManager/create.py7
-rw-r--r--src/virtManager/preferences.py23
-rw-r--r--src/vmm-preferences.ui52
5 files changed, 106 insertions, 1 deletions
diff --git a/src/virt-manager.schemas.in b/src/virt-manager.schemas.in
index 5c646186..dfcd7baf 100644
--- a/src/virt-manager.schemas.in
+++ b/src/virt-manager.schemas.in
@@ -209,6 +209,19 @@
</schema>
<schema>
+ <key>/schemas/apps/::PACKAGE::/new-vm/storage-format</key>
+ <applyto>/apps/::PACKAGE::/new-vm/storage-format</applyto>
+ <owner>::PACKAGE::</owner>
+ <type>string</type>
+ <default>default</default>
+
+ <locale name="C">
+ <short>Use selected format for new VM storage</short>
+ <long>Use selected format when creating new disk images in new VM wizard</long>
+ </locale>
+ </schema>
+
+ <schema>
<key>/schemas/apps/::PACKAGE::/system-tray</key>
<applyto>/apps/::PACKAGE::/system-tray</applyto>
<owner>::PACKAGE::</owner>
diff --git a/src/virtManager/config.py b/src/virtManager/config.py
index 342b0238..20c6a787 100644
--- a/src/virtManager/config.py
+++ b/src/virtManager/config.py
@@ -519,6 +519,18 @@ class vmmConfig(object):
return self.conf.notify_add(self.conf_dir + "/new-vm/graphics_type",
cb, data)
+ def get_storage_format(self):
+ ret = self.conf.get_string(self.conf_dir + "/new-vm/storage-format")
+ if ret not in ["default", "raw", "qcow2"]:
+ return "default"
+ return ret
+ def set_storage_format(self, typ):
+ self.conf.set_string(self.conf_dir + "/new-vm/storage-format",
+ typ.lower())
+ def on_storage_format_changed(self, cb, data=None):
+ return self.conf.notify_add(self.conf_dir + "/new-vm/storage-format",
+ cb, data)
+
# URL/Media path history
def _url_add_helper(self, gconf_path, url):
diff --git a/src/virtManager/create.py b/src/virtManager/create.py
index 31a97b3a..88c3bab7 100644
--- a/src/virtManager/create.py
+++ b/src/virtManager/create.py
@@ -1720,6 +1720,13 @@ class vmmCreate(vmmGObjectUI):
size=disksize,
sparse=sparse)
+ fmt = self.config.get_storage_format()
+ if (self.is_default_storage() and
+ disk.vol_install and
+ fmt in disk.vol_install.formats):
+ logging.debug("Setting disk format from prefs: %s", fmt)
+ disk.vol_install.format = fmt
+
except Exception, e:
return self.err.val_err(_("Storage parameter error."), e)
diff --git a/src/virtManager/preferences.py b/src/virtManager/preferences.py
index 0c431ed6..0eaf20bd 100644
--- a/src/virtManager/preferences.py
+++ b/src/virtManager/preferences.py
@@ -39,6 +39,7 @@ class vmmPreferences(vmmGObjectUI):
self.add_gconf_handle(self.config.on_sound_local_changed(self.refresh_sound_local))
self.add_gconf_handle(self.config.on_sound_remote_changed(self.refresh_sound_remote))
self.add_gconf_handle(self.config.on_graphics_type_changed(self.refresh_graphics_type))
+ self.add_gconf_handle(self.config.on_storage_format_changed(self.refresh_storage_format))
self.add_gconf_handle(self.config.on_stats_enable_disk_poll_changed(self.refresh_disk_poll))
self.add_gconf_handle(self.config.on_stats_enable_net_poll_changed(self.refresh_net_poll))
@@ -57,6 +58,7 @@ class vmmPreferences(vmmGObjectUI):
self.refresh_sound_local()
self.refresh_sound_remote()
self.refresh_graphics_type()
+ self.refresh_storage_format()
self.refresh_disk_poll()
self.refresh_net_poll()
self.refresh_grabkeys_combination()
@@ -88,6 +90,7 @@ class vmmPreferences(vmmGObjectUI):
"on_prefs_confirm_unapplied_toggled": self.change_confirm_unapplied,
"on_prefs_btn_keys_define_clicked": self.change_grab_keys,
"on_prefs_graphics_type_changed": self.change_graphics_type,
+ "on_prefs_storage_format_changed": self.change_storage_format,
})
self.bind_escape_key_close()
@@ -158,6 +161,20 @@ class vmmPreferences(vmmGObjectUI):
break
self.widget("prefs-graphics-type").set_active(active)
+ def refresh_storage_format(self, ignore1=None, ignore2=None, ignore=None,
+ ignore4=None):
+ combo = self.widget("prefs-storage-format")
+ model = combo.get_model()
+ gtype = self.config.get_storage_format()
+
+ # Default to row 0 == raw
+ active = 0
+ for rowidx in range(len(model)):
+ if model[rowidx][0].lower() == gtype:
+ active = rowidx
+ break
+
+ self.widget("prefs-storage-format").set_active(active)
def refresh_disk_poll(self, ignore1=None, ignore2=None, ignore3=None,
ignore4=None):
@@ -314,6 +331,12 @@ class vmmPreferences(vmmGObjectUI):
if idx >= 0:
gtype = src.get_model()[idx][0]
self.config.set_graphics_type(gtype.lower())
+ def change_storage_format(self, src):
+ typ = 'default'
+ idx = src.get_active()
+ if idx >= 0:
+ typ = src.get_model()[idx][0]
+ self.config.set_storage_format(typ.lower())
def show_help(self, src_ignore):
# From the Preferences window, show the help document from
diff --git a/src/vmm-preferences.ui b/src/vmm-preferences.ui
index c51fb5e9..11871f2d 100644
--- a/src/vmm-preferences.ui
+++ b/src/vmm-preferences.ui
@@ -42,6 +42,23 @@
</row>
</data>
</object>
+ <object class="GtkListStore" id="liststore3">
+ <columns>
+ <!-- column-name gchararray1 -->
+ <column type="gchararray"/>
+ </columns>
+ <data>
+ <row>
+ <col id="0">Default</col>
+ </row>
+ <row>
+ <col id="0">Raw</col>
+ </row>
+ <row>
+ <col id="0">QCOW2</col>
+ </row>
+ </data>
+ </object>
<object class="GtkWindow" id="vmm-preferences">
<property name="can_focus">False</property>
<property name="border_width">12</property>
@@ -542,7 +559,7 @@
<object class="GtkTable" id="table4">
<property name="visible">True</property>
<property name="can_focus">False</property>
- <property name="n_rows">2</property>
+ <property name="n_rows">6</property>
<property name="column_spacing">8</property>
<child>
<object class="GtkAlignment" id="alignment6">
@@ -637,6 +654,39 @@
<property name="x_padding">5</property>
</packing>
</child>
+ <child>
+ <object class="GtkLabel" id="label25">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="tooltip_text" translatable="yes">Default storage format for new disk images.</property>
+ <property name="xalign">0</property>
+ <property name="label" translatable="yes">Default storage format:</property>
+ </object>
+ <packing>
+ <property name="top_attach">4</property>
+ <property name="bottom_attach">5</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkComboBox" id="prefs-storage-format">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="tooltip_text" translatable="yes">Default storage format for new disk images.</property>
+ <property name="model">liststore3</property>
+ <signal name="changed" handler="on_prefs_storage_format_changed" swapped="no"/>
+ <child>
+ <object class="GtkCellRendererText" id="cellrenderertext3"/>
+ <attributes>
+ <attribute name="text">0</attribute>
+ </attributes>
+ </child>
+ </object>
+ <packing>
+ <property name="top_attach">5</property>
+ <property name="bottom_attach">6</property>
+ <property name="x_padding">5</property>
+ </packing>
+ </child>
</object>
</child>
</object>