- Update to release 0.8.1
- VM Migration wizard, exposing various migration options - Enumerate CDROM and bridge devices on remote connections - Support storage pool source enumeration for LVM, NFS, and SCSI
This commit is contained in:
parent
3b71f3d7ab
commit
2a9a33433c
@ -1 +1 @@
|
||||
virt-manager-0.8.0.tar.gz
|
||||
virt-manager-0.8.1.tar.gz
|
||||
|
2
sources
2
sources
@ -1 +1 @@
|
||||
0b6cb9144e3933f2c9af07e2d409842d virt-manager-0.8.0.tar.gz
|
||||
6e461e91d679dc87d9fc506f34832d90 virt-manager-0.8.1.tar.gz
|
||||
|
BIN
state_paused.png
BIN
state_paused.png
Binary file not shown.
Before Width: | Height: | Size: 921 B |
Binary file not shown.
Before Width: | Height: | Size: 1.1 KiB |
Binary file not shown.
Before Width: | Height: | Size: 828 B |
@ -1,44 +0,0 @@
|
||||
# HG changeset patch
|
||||
# User Paul W. Frields <stickster@gmail.com>
|
||||
# Date 1251729959 14400
|
||||
# Node ID d34def55dbd78e2ad5f099d6a38c1f358c798555
|
||||
# Parent b70858b9f8c6f9fea21f6e66a10e7b9498f11e5e
|
||||
addhardware: Fix error message syntax typo
|
||||
|
||||
diff -r b70858b9f8c6 -r d34def55dbd7 AUTHORS
|
||||
--- a/AUTHORS Mon Aug 31 10:19:49 2009 -0400
|
||||
+++ b/AUTHORS Mon Aug 31 10:45:59 2009 -0400
|
||||
@@ -59,6 +59,7 @@
|
||||
Emmanuel Lacour <elacour-at-home-dn-dot-net>
|
||||
Laurent Léonard <laurent-at-open-minds-dot-org>
|
||||
Michal Novotny <minovotn-at-redhat-dot-com>
|
||||
+ Paul W. Frields <stickster-at-gmail-dot-com>
|
||||
|
||||
<...send a patch & get your name here...>
|
||||
|
||||
diff -r b70858b9f8c6 -r d34def55dbd7 src/virtManager/addhardware.py
|
||||
--- a/src/virtManager/addhardware.py Mon Aug 31 10:19:49 2009 -0400
|
||||
+++ b/src/virtManager/addhardware.py Mon Aug 31 10:45:59 2009 -0400
|
||||
@@ -1186,8 +1186,8 @@
|
||||
conn = self.vm.get_connection().vmm,
|
||||
name = nodedev_name)
|
||||
except Exception, e:
|
||||
- return self.err.val_err(_("Host device parameter error",
|
||||
- str(e)))
|
||||
+ return self.err.val_err(_("Host device parameter error"),
|
||||
+ str(e))
|
||||
|
||||
elif page_num == PAGE_CHAR:
|
||||
chartype = self.get_char_type()
|
||||
diff -r b70858b9f8c6 -r d34def55dbd7 src/vmm-manager.glade
|
||||
--- a/src/vmm-manager.glade Mon Aug 31 10:19:49 2009 -0400
|
||||
+++ b/src/vmm-manager.glade Mon Aug 31 10:45:59 2009 -0400
|
||||
@@ -118,7 +118,7 @@
|
||||
<child>
|
||||
<widget class="GtkImageMenuItem" id="menu_edit_delete">
|
||||
<property name="visible">True</property>
|
||||
- <property name="label" translatable="yes">Delete Virtual Machine</property>
|
||||
+ <property name="label" translatable="yes">Delete</property>
|
||||
<property name="use_underline">True</property>
|
||||
<signal name="activate" handler="on_menu_edit_delete_activate"/>
|
||||
<child internal-child="image">
|
@ -1,70 +0,0 @@
|
||||
# HG changeset patch
|
||||
# User Cole Robinson <crobinso@redhat.com>
|
||||
# Date 1251727555 14400
|
||||
# Node ID c0de24094ca26b8da900d29746adba056f4114f7
|
||||
# Parent 37a986ce54ceac389573d763c78f633a10ec1ab7
|
||||
Don't mangle QEMU driver name on cdrom connect (bz 516116)
|
||||
|
||||
diff -r 37a986ce54ce -r c0de24094ca2 src/virtManager/domain.py
|
||||
--- a/src/virtManager/domain.py Thu Aug 27 11:07:35 2009 -0400
|
||||
+++ b/src/virtManager/domain.py Mon Aug 31 10:05:55 2009 -0400
|
||||
@@ -1291,19 +1291,28 @@
|
||||
xml = self.get_device_xml("disk", dev_id_info)
|
||||
|
||||
def cdrom_xml_connect(doc, ctx):
|
||||
- disk_fragment = ctx.xpathEval("/disk")
|
||||
+ disk_fragment = ctx.xpathEval("/disk")[0]
|
||||
driver_fragment = ctx.xpathEval("/disk/driver")
|
||||
- disk_fragment[0].setProp("type", _type)
|
||||
- elem = disk_fragment[0].newChild(None, "source", None)
|
||||
+ disk_fragment.setProp("type", _type)
|
||||
+ elem = disk_fragment.newChild(None, "source", None)
|
||||
+
|
||||
if _type == "file":
|
||||
elem.setProp("file", source)
|
||||
- if driver_fragment:
|
||||
- driver_fragment[0].setProp("name", _type)
|
||||
+ driver_name = _type
|
||||
else:
|
||||
elem.setProp("dev", source)
|
||||
- if driver_fragment:
|
||||
- driver_fragment[0].setProp("name", "phy")
|
||||
- return disk_fragment[0].serialize()
|
||||
+ driver_name = "phy"
|
||||
+
|
||||
+ if driver_fragment:
|
||||
+ driver_fragment = driver_fragment[0]
|
||||
+ orig_name = driver_fragment.prop("name")
|
||||
+
|
||||
+ # For Xen, the driver name is dependent on the storage type
|
||||
+ # (file or phys).
|
||||
+ if orig_name and orig_name in [ "file", "phy" ]:
|
||||
+ driver_fragment.setProp("name", driver_name)
|
||||
+
|
||||
+ return disk_fragment.serialize()
|
||||
|
||||
result = util.xml_parse_wrapper(xml, cdrom_xml_connect)
|
||||
logging.debug("connect_cdrom produced: %s" % result)
|
||||
@@ -1313,17 +1322,19 @@
|
||||
xml = self.get_device_xml("disk", dev_id_info)
|
||||
|
||||
def cdrom_xml_disconnect(doc, ctx):
|
||||
- disk_fragment = ctx.xpathEval("/disk")
|
||||
+ disk_fragment = ctx.xpathEval("/disk")[0]
|
||||
sourcenode = None
|
||||
- for child in disk_fragment[0].children:
|
||||
+
|
||||
+ for child in disk_fragment.children:
|
||||
if child.name == "source":
|
||||
sourcenode = child
|
||||
break
|
||||
else:
|
||||
continue
|
||||
+
|
||||
sourcenode.unlinkNode()
|
||||
sourcenode.freeNode()
|
||||
- return disk_fragment[0].serialize()
|
||||
+ return disk_fragment.serialize()
|
||||
|
||||
result = util.xml_parse_wrapper(xml, cdrom_xml_disconnect)
|
||||
logging.debug("eject_cdrom produced: %s" % result)
|
@ -1,49 +0,0 @@
|
||||
# HG changeset patch
|
||||
# User Cole Robinson <crobinso@redhat.com>
|
||||
# Date 1253131339 14400
|
||||
# Node ID 1c886d1863f72e7ddd5fb99050362296be6a9deb
|
||||
# Parent 9242a7fe76b16c6505bdd3d3d328ae8f0c56da10
|
||||
Don't close connection on all libvirt errors: only if libvirtd goes away.
|
||||
|
||||
diff -r 9242a7fe76b1 -r 1c886d1863f7 src/virtManager/connection.py
|
||||
--- a/src/virtManager/connection.py Wed Sep 16 16:01:54 2009 -0400
|
||||
+++ b/src/virtManager/connection.py Wed Sep 16 16:02:19 2009 -0400
|
||||
@@ -941,7 +941,15 @@
|
||||
updateVMs = newVMs
|
||||
|
||||
for uuid in updateVMs:
|
||||
- self.vms[uuid].tick(now)
|
||||
+ vm = self.vms[uuid]
|
||||
+ try:
|
||||
+ vm.tick(now)
|
||||
+ except libvirt.libvirtError, e:
|
||||
+ if e.get_error_code() == libvirt.VIR_ERR_SYSTEM_ERROR:
|
||||
+ raise
|
||||
+ logging.exception("Tick for VM '%s' failed" % vm.get_name())
|
||||
+ except Exception, e:
|
||||
+ logging.exception("Tick for VM '%s' failed" % vm.get_name())
|
||||
|
||||
if not noStatsUpdate:
|
||||
self._recalculate_stats(now)
|
||||
diff -r 9242a7fe76b1 -r 1c886d1863f7 src/virtManager/engine.py
|
||||
--- a/src/virtManager/engine.py Wed Sep 16 16:01:54 2009 -0400
|
||||
+++ b/src/virtManager/engine.py Wed Sep 16 16:02:19 2009 -0400
|
||||
@@ -199,10 +199,14 @@
|
||||
self.connections[uri]["connection"].tick()
|
||||
except KeyboardInterrupt:
|
||||
raise
|
||||
- except:
|
||||
- logging.exception("Could not refresh connection %s." % uri)
|
||||
- logging.debug("Closing connection since refresh failed.")
|
||||
- self.connections[uri]["connection"].close()
|
||||
+ except libvirt.libvirtError, e:
|
||||
+ if e.get_error_code() == libvirt.VIR_ERR_SYSTEM_ERROR:
|
||||
+ logging.exception("Could not refresh connection %s." % uri)
|
||||
+ logging.debug("Closing connection since libvirtd "
|
||||
+ "appears to have stopped.")
|
||||
+ self.connections[uri]["connection"].close()
|
||||
+ else:
|
||||
+ raise
|
||||
return 1
|
||||
|
||||
def change_timer_interval(self,ignore1,ignore2,ignore3,ignore4):
|
@ -1,73 +0,0 @@
|
||||
# HG changeset patch
|
||||
# User Cole Robinson <crobinso@redhat.com>
|
||||
# Date 1254757810 14400
|
||||
# Node ID 97c40c4fb29f7b1b1aadcebd42781f0d471d4697
|
||||
# Parent c0cffb13680c120ceff22386754104f66bb01d25
|
||||
create-vol: Don't allow allocation to be higher than capacity.
|
||||
|
||||
Also tweak the spin button climb rates to be more useful.
|
||||
|
||||
diff -r c0cffb13680c -r 97c40c4fb29f src/virtManager/createvol.py
|
||||
--- a/src/virtManager/createvol.py Mon Oct 05 11:34:39 2009 -0400
|
||||
+++ b/src/virtManager/createvol.py Mon Oct 05 11:50:10 2009 -0400
|
||||
@@ -63,6 +63,8 @@
|
||||
"on_vol_cancel_clicked" : self.close,
|
||||
"on_vol_create_clicked" : self.finish,
|
||||
"on_vol_name_changed" : self.vol_name_changed,
|
||||
+ "on_vol_allocation_value_changed" : self.vol_allocation_changed,
|
||||
+ "on_vol_capacity_value_changed" : self.vol_capacity_changed,
|
||||
})
|
||||
|
||||
format_list = self.window.get_widget("vol-format")
|
||||
@@ -144,6 +146,24 @@
|
||||
text = src.get_text()
|
||||
self.window.get_widget("vol-create").set_sensitive(bool(text))
|
||||
|
||||
+ def vol_allocation_changed(self, src):
|
||||
+ cap_widget = self.window.get_widget("vol-capacity")
|
||||
+
|
||||
+ alloc = src.get_value()
|
||||
+ cap = cap_widget.get_value()
|
||||
+
|
||||
+ if alloc > cap:
|
||||
+ cap_widget.set_value(alloc)
|
||||
+
|
||||
+ def vol_capacity_changed(self, src):
|
||||
+ alloc_widget = self.window.get_widget("vol-allocation")
|
||||
+
|
||||
+ cap = src.get_value()
|
||||
+ alloc = self.window.get_widget("vol-allocation").get_value()
|
||||
+
|
||||
+ if cap < alloc:
|
||||
+ alloc_widget.set_value(cap)
|
||||
+
|
||||
def finish(self, src):
|
||||
# validate input
|
||||
try:
|
||||
diff -rup old/src/vmm-create-vol.glade virt-manager-0.8.0/src/vmm-create-vol.glade
|
||||
--- old/src/vmm-create-vol.glade 2009-10-05 13:18:10.212062000 -0400
|
||||
+++ virt-manager-0.8.0/src/vmm-create-vol.glade 2009-10-05 13:19:57.343395000 -0400
|
||||
@@ -237,8 +237,9 @@
|
||||
<widget class="GtkSpinButton" id="vol-capacity">
|
||||
<property name="visible">True</property>
|
||||
<property name="can_focus">True</property>
|
||||
- <property name="adjustment">1 0 100000 1 10 0</property>
|
||||
- <property name="climb_rate">1</property>
|
||||
+ <property name="adjustment">1 0 100000 1 1000 0</property>
|
||||
+ <property name="climb_rate">10</property>
|
||||
+ <signal name="value_changed" handler="on_vol_capacity_value_changed"/>
|
||||
</widget>
|
||||
<packing>
|
||||
<property name="left_attach">1</property>
|
||||
@@ -251,8 +252,9 @@
|
||||
<widget class="GtkSpinButton" id="vol-allocation">
|
||||
<property name="visible">True</property>
|
||||
<property name="can_focus">True</property>
|
||||
- <property name="adjustment">1 0 100000 1 10 0</property>
|
||||
- <property name="climb_rate">1</property>
|
||||
+ <property name="adjustment">1 0 100000 1 1000 0</property>
|
||||
+ <property name="climb_rate">10</property>
|
||||
+ <signal name="value_changed" handler="on_vol_allocation_value_changed"/>
|
||||
</widget>
|
||||
<packing>
|
||||
<property name="left_attach">1</property>
|
@ -1,48 +0,0 @@
|
||||
# HG changeset patch
|
||||
# User Cole Robinson <crobinso@redhat.com>
|
||||
# Date 1254756879 14400
|
||||
# Node ID c0cffb13680c120ceff22386754104f66bb01d25
|
||||
# Parent 67d5721a535f204db27f532e59f491f562c8ff18
|
||||
create-vol: Don't allow creating vol without a name entered
|
||||
|
||||
diff -r 67d5721a535f -r c0cffb13680c src/virtManager/createvol.py
|
||||
--- a/src/virtManager/createvol.py Mon Oct 05 10:06:29 2009 -0400
|
||||
+++ b/src/virtManager/createvol.py Mon Oct 05 11:34:39 2009 -0400
|
||||
@@ -62,6 +62,7 @@
|
||||
"on_vmm_create_vol_delete_event" : self.close,
|
||||
"on_vol_cancel_clicked" : self.close,
|
||||
"on_vol_create_clicked" : self.finish,
|
||||
+ "on_vol_name_changed" : self.vol_name_changed,
|
||||
})
|
||||
|
||||
format_list = self.window.get_widget("vol-format")
|
||||
@@ -99,6 +100,7 @@
|
||||
|
||||
def reset_state(self):
|
||||
self.window.get_widget("vol-name").set_text("")
|
||||
+ self.window.get_widget("vol-create").set_sensitive(False)
|
||||
self.populate_vol_format()
|
||||
self.populate_vol_suffix()
|
||||
|
||||
@@ -138,6 +140,10 @@
|
||||
suffix = ".img"
|
||||
self.window.get_widget("vol-name-suffix").set_text(suffix)
|
||||
|
||||
+ def vol_name_changed(self, src):
|
||||
+ text = src.get_text()
|
||||
+ self.window.get_widget("vol-create").set_sensitive(bool(text))
|
||||
+
|
||||
def finish(self, src):
|
||||
# validate input
|
||||
try:
|
||||
diff -rup new/src/vmm-create-vol.glade virt-manager-0.8.0/src/vmm-create-vol.glade
|
||||
--- new/src/vmm-create-vol.glade 2009-10-05 13:15:48.335564000 -0400
|
||||
+++ virt-manager-0.8.0/src/vmm-create-vol.glade 2009-10-05 13:16:48.288704000 -0400
|
||||
@@ -96,6 +96,7 @@
|
||||
<widget class="GtkEntry" id="vol-name">
|
||||
<property name="visible">True</property>
|
||||
<property name="can_focus">True</property>
|
||||
+ <signal name="changed" handler="on_vol_name_changed"/>
|
||||
</widget>
|
||||
</child>
|
||||
<child>
|
@ -1,349 +0,0 @@
|
||||
# HG changeset patch
|
||||
# User Cole Robinson <crobinso@redhat.com>
|
||||
# Date 1253738576 14400
|
||||
# Node ID e7ee75a8f1353f2c42df93b5090b05fbdf89720a
|
||||
# Parent 292a065aad7e4e5e5d50a71337efab2361378313
|
||||
Add dialog-with-checkbox helper functions.
|
||||
|
||||
Useful for things like "Don't show this again'.
|
||||
|
||||
diff -r 292a065aad7e -r e7ee75a8f135 src/virtManager/error.py
|
||||
--- a/src/virtManager/error.py Wed Sep 23 11:49:35 2009 -0400
|
||||
+++ b/src/virtManager/error.py Wed Sep 23 16:42:56 2009 -0400
|
||||
@@ -131,3 +131,61 @@
|
||||
def ok_cancel(self, text1, text2=None):
|
||||
return self._show_warning(gtk.BUTTONS_OK_CANCEL, text1, text2)
|
||||
|
||||
+ def warn_chkbox(self, text1, text2=None, chktext=None):
|
||||
+ chkbox = vmmCheckDialog(self.parent, gtk.MESSAGE_WARNING)
|
||||
+ return chkbox.show_chkbox(text1, text2, chktext)
|
||||
+
|
||||
+ def err_chkbox(self, text1, text2=None, chktext=None):
|
||||
+ chkbox = vmmCheckDialog(self.parent, gtk.MESSAGE_ERROR)
|
||||
+ return chkbox.show_chkbox(text1, text2, chktext)
|
||||
+
|
||||
+class vmmCheckDialog (gtk.MessageDialog):
|
||||
+ def __init__ (self, parent=None, typ=gtk.MESSAGE_INFO):
|
||||
+ if typ == gtk.MESSAGE_WARNING:
|
||||
+ buttons = gtk.BUTTONS_OK_CANCEL
|
||||
+ else:
|
||||
+ buttons = gtk.BUTTONS_OK
|
||||
+
|
||||
+ gtk.MessageDialog.__init__ (self, parent, 0, typ, buttons)
|
||||
+
|
||||
+ self.connect("response", self.response_cb)
|
||||
+ self.connect("delete-event", self.hide_on_delete)
|
||||
+ self.set_title("")
|
||||
+
|
||||
+ self.chk_vbox = gtk.VBox(False, False)
|
||||
+ self.chk_vbox.set_spacing(0)
|
||||
+
|
||||
+ self.chk_align = gtk.Alignment()
|
||||
+ self.chk_align.set_padding(0, 0, 62, 0)
|
||||
+ self.chk_align.add(self.chk_vbox)
|
||||
+
|
||||
+ self.chk_align.show_all()
|
||||
+ self.vbox.pack_start(self.chk_align)
|
||||
+
|
||||
+ def response_cb(self, src, ignore):
|
||||
+ src.hide()
|
||||
+
|
||||
+ def show_chkbox(self, text1, text2=None, chktext=None):
|
||||
+ chkbox = None
|
||||
+ res = None
|
||||
+ chkres = None
|
||||
+
|
||||
+ self.hide()
|
||||
+ for c in self.chk_vbox.get_children():
|
||||
+ self.chk_vbox.remove(c)
|
||||
+
|
||||
+ self.set_property("text", text1)
|
||||
+
|
||||
+ if text2:
|
||||
+ self.format_secondary_text(text2)
|
||||
+
|
||||
+ if chktext:
|
||||
+ chkbox = gtk.CheckButton(chktext)
|
||||
+ self.chk_vbox.add(chkbox)
|
||||
+ chkbox.show()
|
||||
+
|
||||
+ res = self.run() in [ gtk.RESPONSE_YES, gtk.RESPONSE_OK ]
|
||||
+ if chktext:
|
||||
+ res = [res, chkbox.get_active()]
|
||||
+
|
||||
+ return res
|
||||
# HG changeset patch
|
||||
# User Cole Robinson <crobinso@redhat.com>
|
||||
# Date 1253738620 14400
|
||||
# Node ID f5f3ff4f8942d631234f8e008d806bd502c58bc3
|
||||
# Parent e7ee75a8f1353f2c42df93b5090b05fbdf89720a
|
||||
connection: Add is_qemu_system helper.
|
||||
|
||||
diff -r e7ee75a8f135 -r f5f3ff4f8942 src/virtManager/connection.py
|
||||
--- a/src/virtManager/connection.py Wed Sep 23 16:42:56 2009 -0400
|
||||
+++ b/src/virtManager/connection.py Wed Sep 23 16:43:40 2009 -0400
|
||||
@@ -201,6 +201,13 @@
|
||||
def is_nodedev_capable(self):
|
||||
return virtinst.NodeDeviceParser.is_nodedev_capable(self.vmm)
|
||||
|
||||
+ def is_qemu_system(self):
|
||||
+ (scheme, ignore, ignore,
|
||||
+ path, ignore, ignore) = virtinst.util.uri_split(self.uri)
|
||||
+ if path == "/system" and scheme.startswith("qemu"):
|
||||
+ return True
|
||||
+ return False
|
||||
+
|
||||
def is_qemu_session(self):
|
||||
(scheme, ignore, ignore,
|
||||
path, ignore, ignore) = virtinst.util.uri_split(self.uri)
|
||||
# HG changeset patch
|
||||
# User Cole Robinson <crobinso@redhat.com>
|
||||
# Date 1253806909 14400
|
||||
# Node ID cfcd19d057ddc973a129e7816cd4ea39f0d4365a
|
||||
# Parent f5f3ff4f8942d631234f8e008d806bd502c58bc3
|
||||
create: Don't prompt with same dialog multiple times.
|
||||
|
||||
diff -r f5f3ff4f8942 -r cfcd19d057dd src/virtManager/create.py
|
||||
--- a/src/virtManager/create.py Wed Sep 23 16:43:40 2009 -0400
|
||||
+++ b/src/virtManager/create.py Thu Sep 24 11:41:49 2009 -0400
|
||||
@@ -1122,7 +1122,7 @@
|
||||
if pagenum == PAGE_NAME:
|
||||
return self.validate_name_page()
|
||||
elif pagenum == PAGE_INSTALL:
|
||||
- return self.validate_install_page()
|
||||
+ return self.validate_install_page(revalidate=False)
|
||||
elif pagenum == PAGE_MEM:
|
||||
return self.validate_mem_page()
|
||||
elif pagenum == PAGE_STORAGE:
|
||||
@@ -1135,7 +1135,7 @@
|
||||
return False
|
||||
elif not self.validate_mem_page():
|
||||
return False
|
||||
- return self.validate_storage_page()
|
||||
+ return self.validate_storage_page(revalidate=False)
|
||||
|
||||
elif pagenum == PAGE_FINISH:
|
||||
# Since we allow the user to change to change HV type + arch
|
||||
@@ -1169,7 +1169,7 @@
|
||||
|
||||
return True
|
||||
|
||||
- def validate_install_page(self):
|
||||
+ def validate_install_page(self, revalidate=True):
|
||||
instmethod = self.get_config_install_page()
|
||||
installer = None
|
||||
location = None
|
||||
@@ -1270,7 +1270,7 @@
|
||||
|
||||
return True
|
||||
|
||||
- def validate_storage_page(self):
|
||||
+ def validate_storage_page(self, revalidate=True):
|
||||
use_storage = self.window.get_widget("enable-storage").get_active()
|
||||
|
||||
self.guest.disks = []
|
||||
@@ -1296,19 +1296,21 @@
|
||||
return self.verr(_("Storage parameter error."), str(e))
|
||||
|
||||
isfatal, errmsg = disk.is_size_conflict()
|
||||
- if not isfatal and errmsg:
|
||||
+ if not revalidate and not isfatal and errmsg:
|
||||
# Fatal errors are reported when setting 'size'
|
||||
res = self.err.ok_cancel(_("Not Enough Free Space"), errmsg)
|
||||
if not res:
|
||||
return False
|
||||
|
||||
# Disk collision
|
||||
- if disk.is_conflict_disk(self.guest.conn):
|
||||
- return self.err.yes_no(_('Disk "%s" is already in use by another '
|
||||
- 'guest!' % disk.path),
|
||||
- _("Do you really want to use the disk?"))
|
||||
- else:
|
||||
- return True
|
||||
+ if not revalidate and disk.is_conflict_disk(self.guest.conn):
|
||||
+ res = self.err.yes_no(_('Disk "%s" is already in use by another '
|
||||
+ 'guest!' % disk.path),
|
||||
+ _("Do you really want to use the disk?"))
|
||||
+ if not res:
|
||||
+ return False
|
||||
+
|
||||
+ return True
|
||||
|
||||
def validate_final_page(self):
|
||||
nettype, devname, macaddr = self.get_config_network_info()
|
||||
diff -r 343b42ebee5b src/virtManager/addhardware.py
|
||||
--- a/src/virtManager/addhardware.py Thu Sep 24 11:41:49 2009 -0400
|
||||
+++ b/src/virtManager/addhardware.py Thu Sep 24 11:44:49 2009 -0400
|
||||
@@ -31,6 +31,7 @@
|
||||
import virtinst
|
||||
from virtinst import VirtualCharDevice, VirtualDevice, VirtualVideoDevice
|
||||
|
||||
+import virtManager.create
|
||||
import virtManager.util as vmmutil
|
||||
from virtManager.asyncjob import vmmAsyncJob
|
||||
from virtManager.error import vmmErrorDialog
|
||||
@@ -1054,6 +1055,7 @@
|
||||
return self.err.val_err(_("Hardware Type Required"), \
|
||||
_("You must specify what type of hardware to add."))
|
||||
self._dev = None
|
||||
+
|
||||
elif page_num == PAGE_DISK:
|
||||
path = self.get_config_disk_image()
|
||||
if path == None or len(path) == 0:
|
||||
@@ -1102,6 +1104,11 @@
|
||||
_("Do you really want to use the disk?"))
|
||||
return res
|
||||
|
||||
+ # Make sure qemu can access path
|
||||
+ virtManager.create.check_path_search_for_qemu(self,
|
||||
+ self.vm.connection,
|
||||
+ self._dev.path)
|
||||
+
|
||||
elif page_num == PAGE_NETWORK:
|
||||
net = self.get_config_network()
|
||||
if self.window.get_widget("net-type-network").get_active():
|
||||
diff -r 343b42ebee5b src/virtManager/choosecd.py
|
||||
--- a/src/virtManager/choosecd.py Thu Sep 24 11:41:49 2009 -0400
|
||||
+++ b/src/virtManager/choosecd.py Thu Sep 24 11:44:49 2009 -0400
|
||||
@@ -24,6 +24,7 @@
|
||||
import virtinst
|
||||
|
||||
import virtManager.opticalhelper
|
||||
+import virtManager.create
|
||||
from virtManager.storagebrowse import vmmStorageBrowser
|
||||
from virtManager.error import vmmErrorDialog
|
||||
|
||||
@@ -108,6 +109,10 @@
|
||||
except Exception, e:
|
||||
return self.err.val_err(_("Invalid Media Path"), str(e))
|
||||
|
||||
+ # Make sure qemu can access the path
|
||||
+ virtManager.create.check_path_search_for_qemu(self, self.conn,
|
||||
+ disk.path)
|
||||
+
|
||||
self.emit("cdrom-chosen", disk.type, disk.path, self.dev_id_info)
|
||||
self.cancel()
|
||||
|
||||
diff -r 343b42ebee5b src/virtManager/config.py
|
||||
--- a/src/virtManager/config.py Thu Sep 24 11:41:49 2009 -0400
|
||||
+++ b/src/virtManager/config.py Thu Sep 24 11:44:49 2009 -0400
|
||||
@@ -558,3 +558,15 @@
|
||||
else:
|
||||
return os.getcwd()
|
||||
|
||||
+ def add_perms_fix_ignore(self, pathlist):
|
||||
+ current_list = self.get_perms_fix_ignore() or []
|
||||
+ for path in pathlist:
|
||||
+ if path in current_list:
|
||||
+ continue
|
||||
+ current_list.append(path)
|
||||
+ self.conf.set_list(self.conf_dir + "/paths/perms_fix_ignore",
|
||||
+ gconf.VALUE_STRING,
|
||||
+ current_list)
|
||||
+ def get_perms_fix_ignore(self):
|
||||
+ return self.conf.get_list(self.conf_dir + "/paths/perms_fix_ignore",
|
||||
+ gconf.VALUE_STRING)
|
||||
diff -r 343b42ebee5b src/virtManager/create.py
|
||||
--- a/src/virtManager/create.py Thu Sep 24 11:41:49 2009 -0400
|
||||
+++ b/src/virtManager/create.py Thu Sep 24 11:44:49 2009 -0400
|
||||
@@ -30,6 +30,7 @@
|
||||
|
||||
import virtinst
|
||||
from virtinst import VirtualNetworkInterface
|
||||
+from virtinst import VirtualDisk
|
||||
|
||||
import virtManager.opticalhelper
|
||||
from virtManager import util
|
||||
@@ -53,6 +54,54 @@
|
||||
INSTALL_PAGE_URL = 1
|
||||
INSTALL_PAGE_PXE = 2
|
||||
|
||||
+def check_path_search_for_qemu(vmm_obj, conn, path):
|
||||
+ if conn.is_remote() or not conn.is_qemu_system():
|
||||
+ return
|
||||
+
|
||||
+ user = "qemu"
|
||||
+
|
||||
+ skip_paths = vmm_obj.config.get_perms_fix_ignore()
|
||||
+ broken_paths = VirtualDisk.check_path_search_for_user(conn.vmm, path, user)
|
||||
+ for p in broken_paths:
|
||||
+ if p in skip_paths:
|
||||
+ broken_paths.remove(p)
|
||||
+
|
||||
+ if not broken_paths:
|
||||
+ return
|
||||
+
|
||||
+ logging.debug("No search access for dirs: %s" % broken_paths)
|
||||
+ resp, chkres = vmm_obj.err.warn_chkbox(
|
||||
+ _("The emulator may not have search permissions "
|
||||
+ "for the path '%s'.") % path,
|
||||
+ _("Do you want to correct this now?"),
|
||||
+ _("Don't ask about these directories again."))
|
||||
+
|
||||
+ if chkres:
|
||||
+ vmm_obj.config.add_perms_fix_ignore(broken_paths)
|
||||
+ if not resp:
|
||||
+ return
|
||||
+
|
||||
+ logging.debug("Attempting to correct permission issues.")
|
||||
+ errors = VirtualDisk.fix_path_search_for_user(conn.vmm, path, user)
|
||||
+ if not errors:
|
||||
+ return
|
||||
+
|
||||
+ errmsg = _("Errors were encountered changing permissions for the "
|
||||
+ "following directories:")
|
||||
+ details = ""
|
||||
+ for path, error in errors.items():
|
||||
+ if path not in broken_paths:
|
||||
+ continue
|
||||
+ details += "%s : %s\n" % (path, error)
|
||||
+
|
||||
+ logging.debug("Permission errors:\n%s" % details)
|
||||
+
|
||||
+ ignore, chkres = vmm_obj.err.err_chkbox(errmsg, details,
|
||||
+ _("Don't ask about these directories again."))
|
||||
+
|
||||
+ if chkres:
|
||||
+ vmm_obj.config.add_perms_fix_ignore(errors.keys())
|
||||
+
|
||||
class vmmCreate(gobject.GObject):
|
||||
__gsignals__ = {
|
||||
"action-show-console": (gobject.SIGNAL_RUN_FIRST,
|
||||
@@ -1245,6 +1294,11 @@
|
||||
return self.err.val_err(_("Error setting OS information."),
|
||||
str(e))
|
||||
|
||||
+ if instmethod == INSTALL_PAGE_ISO and not revalidate:
|
||||
+ # Check if 'qemu' user can access disk
|
||||
+ check_path_search_for_qemu(self, self.conn,
|
||||
+ self.guest.installer.location)
|
||||
+
|
||||
# Validation passed, store the install path (if there is one) in
|
||||
# gconf
|
||||
self.get_config_local_media(store_media=True)
|
||||
@@ -1286,10 +1340,10 @@
|
||||
if not diskpath:
|
||||
return self.verr(_("A storage path must be specified."))
|
||||
|
||||
- disk = virtinst.VirtualDisk(conn = self.conn.vmm,
|
||||
- path = diskpath,
|
||||
- size = disksize,
|
||||
- sparse = sparse)
|
||||
+ disk = VirtualDisk(conn = self.conn.vmm,
|
||||
+ path = diskpath,
|
||||
+ size = disksize,
|
||||
+ sparse = sparse)
|
||||
|
||||
self.guest.disks.append(disk)
|
||||
except Exception, e:
|
||||
@@ -1310,6 +1364,10 @@
|
||||
if not res:
|
||||
return False
|
||||
|
||||
+ if not revalidate:
|
||||
+ # Check if 'qemu' user can access disk
|
||||
+ check_path_search_for_qemu(self, self.conn, disk.path)
|
||||
+
|
||||
return True
|
||||
|
||||
def validate_final_page(self):
|
@ -1,19 +0,0 @@
|
||||
# HG changeset patch
|
||||
# User Cole Robinson <crobinso@redhat.com>
|
||||
# Date 1253823268 14400
|
||||
# Node ID d78b7e7131439dc9f22c8e7391e82c5f29888fe8
|
||||
# Parent cfcd19d057ddc973a129e7816cd4ea39f0d4365a
|
||||
Fix vcpu hotplug.
|
||||
|
||||
diff -r cfcd19d057dd -r d78b7e713143 src/virtManager/domain.py
|
||||
--- a/src/virtManager/domain.py Thu Sep 24 11:41:49 2009 -0400
|
||||
+++ b/src/virtManager/domain.py Thu Sep 24 16:14:28 2009 -0400
|
||||
@@ -1355,7 +1355,7 @@
|
||||
self._change_cdrom(result, dev_id_info)
|
||||
|
||||
def hotplug_vcpu(self, vcpus):
|
||||
- self.vm.setVcpus()
|
||||
+ self.vm.setVcpus(int(vcpus))
|
||||
|
||||
def hotplug_vcpus(self, vcpus):
|
||||
vcpus = int(vcpus)
|
@ -1,152 +0,0 @@
|
||||
# HG changeset patch
|
||||
# User Cole Robinson <crobinso@redhat.com>
|
||||
# Date 1254248737 14400
|
||||
# Node ID 65951459abe9efb9fc5f58a243ddcfd49deba0a5
|
||||
# Parent 59f3d7a2ec289145c41437b7f12bcd730e17f340
|
||||
Hide access to help docs: they are out of date to the point of uselessness.
|
||||
|
||||
diff -r 59f3d7a2ec28 -r 65951459abe9 src/virtManager/addhardware.py
|
||||
--- a/src/virtManager/addhardware.py Tue Sep 29 14:02:28 2009 -0400
|
||||
+++ b/src/virtManager/addhardware.py Tue Sep 29 14:25:37 2009 -0400
|
||||
@@ -115,6 +115,9 @@
|
||||
"char_telnet_focus_in": (self.update_doc, "protocol"),
|
||||
})
|
||||
|
||||
+ # XXX: Help docs useless/out of date
|
||||
+ self.window.get_widget("create-help").hide()
|
||||
+
|
||||
self.set_initial_state()
|
||||
|
||||
def update_doc(self, ignore1, ignore2, param):
|
||||
diff -r 59f3d7a2ec28 -r 65951459abe9 src/virtManager/clone.py
|
||||
--- a/src/virtManager/clone.py Tue Sep 29 14:02:28 2009 -0400
|
||||
+++ b/src/virtManager/clone.py Tue Sep 29 14:25:37 2009 -0400
|
||||
@@ -129,6 +129,9 @@
|
||||
"on_clone_help_clicked" : self.show_help,
|
||||
})
|
||||
|
||||
+ # XXX: Help docs useless/out of date
|
||||
+ self.window.get_widget("clone-help").hide()
|
||||
+
|
||||
self.set_initial_state()
|
||||
|
||||
def show(self):
|
||||
diff -r 59f3d7a2ec28 -r 65951459abe9 src/virtManager/createnet.py
|
||||
--- a/src/virtManager/createnet.py Tue Sep 29 14:02:28 2009 -0400
|
||||
+++ b/src/virtManager/createnet.py Tue Sep 29 14:25:37 2009 -0400
|
||||
@@ -68,6 +68,9 @@
|
||||
"on_create_help_clicked": self.show_help,
|
||||
})
|
||||
|
||||
+ # XXX: Help docs useless/out of date
|
||||
+ self.window.get_widget("create-help").hide()
|
||||
+
|
||||
self.set_initial_state()
|
||||
|
||||
def show(self):
|
||||
diff -r 59f3d7a2ec28 -r 65951459abe9 src/virtManager/createpool.py
|
||||
--- a/src/virtManager/createpool.py Tue Sep 29 14:02:28 2009 -0400
|
||||
+++ b/src/virtManager/createpool.py Tue Sep 29 14:25:37 2009 -0400
|
||||
@@ -88,6 +88,9 @@
|
||||
"on_pool_build_focus_in_event": (self.update_build_doc)
|
||||
})
|
||||
|
||||
+ # XXX: Help docs useless/out of date
|
||||
+ self.window.get_widget("pool-help").hide()
|
||||
+
|
||||
self.set_initial_state()
|
||||
|
||||
def show(self):
|
||||
diff -r 59f3d7a2ec28 -r 65951459abe9 src/virtManager/createvol.py
|
||||
--- a/src/virtManager/createvol.py Tue Sep 29 14:02:28 2009 -0400
|
||||
+++ b/src/virtManager/createvol.py Tue Sep 29 14:25:37 2009 -0400
|
||||
@@ -72,6 +72,10 @@
|
||||
format_list.add_attribute(text2, 'text', 1)
|
||||
self.window.get_widget("vol-info-view").modify_bg(gtk.STATE_NORMAL,
|
||||
gtk.gdk.color_parse("grey"))
|
||||
+
|
||||
+ # XXX: Help docs useless/out of date
|
||||
+ self.window.get_widget("pool-help").hide()
|
||||
+
|
||||
self.reset_state()
|
||||
|
||||
|
||||
diff -r 59f3d7a2ec28 -r 65951459abe9 src/virtManager/details.py
|
||||
--- a/src/virtManager/details.py Tue Sep 29 14:02:28 2009 -0400
|
||||
+++ b/src/virtManager/details.py Tue Sep 29 14:25:37 2009 -0400
|
||||
@@ -313,6 +313,9 @@
|
||||
"on_security_model_changed": self.security_model_changed,
|
||||
})
|
||||
|
||||
+ # XXX: Help docs useless/out of date
|
||||
+ self.window.get_widget("help1").hide()
|
||||
+
|
||||
self.vm.connect("status-changed", self.update_widget_states)
|
||||
self.vm.connect("resources-sampled", self.refresh_resources)
|
||||
self.vm.connect("config-changed", self.refresh_vm_info)
|
||||
@@ -575,7 +578,7 @@
|
||||
if self.is_visible():
|
||||
self.topwin.present()
|
||||
return
|
||||
- self.topwin.show_all()
|
||||
+ self.topwin.show()
|
||||
self.topwin.present()
|
||||
|
||||
self.engine.increment_window_counter()
|
||||
diff -r 59f3d7a2ec28 -r 65951459abe9 src/virtManager/host.py
|
||||
--- a/src/virtManager/host.py Tue Sep 29 14:02:28 2009 -0400
|
||||
+++ b/src/virtManager/host.py Tue Sep 29 14:25:37 2009 -0400
|
||||
@@ -169,6 +169,9 @@
|
||||
"on_config_autoconnect_toggled": self.toggle_autoconnect,
|
||||
})
|
||||
|
||||
+ # XXX: Help docs useless/out of date
|
||||
+ self.window.get_widget("help1").hide()
|
||||
+
|
||||
self.conn.connect("resources-sampled", self.refresh_resources)
|
||||
self.reset_state()
|
||||
|
||||
diff -r 59f3d7a2ec28 -r 65951459abe9 src/virtManager/manager.py
|
||||
--- a/src/virtManager/manager.py Tue Sep 29 14:02:28 2009 -0400
|
||||
+++ b/src/virtManager/manager.py Tue Sep 29 14:25:37 2009 -0400
|
||||
@@ -188,6 +188,7 @@
|
||||
filename = self.config.get_icon_dir() + "/%s" % iconfile
|
||||
pixbuf = gtk.gdk.pixbuf_new_from_file_at_size(filename, l, w)
|
||||
image = gtk.image_new_from_pixbuf(pixbuf)
|
||||
+ image.show_all()
|
||||
self.window.get_widget(widget).set_icon_widget(image)
|
||||
|
||||
set_toolbar_image("vm-new", "vm_new_wizard.png", 28, 28)
|
||||
@@ -356,6 +357,9 @@
|
||||
"on_menu_help_activate": self.show_help,
|
||||
})
|
||||
|
||||
+ # XXX: Help docs useless/out of date
|
||||
+ self.window.get_widget("menu_help").hide()
|
||||
+
|
||||
self.vm_selected(None)
|
||||
self.window.get_widget("vm-list").get_selection().connect("changed", self.vm_selected)
|
||||
|
||||
@@ -391,7 +395,8 @@
|
||||
if self.is_visible():
|
||||
win.present()
|
||||
return
|
||||
- win.show_all()
|
||||
+ win.show()
|
||||
+ win.present()
|
||||
self.engine.increment_window_counter()
|
||||
|
||||
if self.startup_error:
|
||||
diff -r 59f3d7a2ec28 -r 65951459abe9 src/virtManager/preferences.py
|
||||
--- a/src/virtManager/preferences.py Tue Sep 29 14:02:28 2009 -0400
|
||||
+++ b/src/virtManager/preferences.py Tue Sep 29 14:25:37 2009 -0400
|
||||
@@ -75,6 +75,9 @@
|
||||
"on_prefs_stats_enable_net_toggled": self.change_net_poll,
|
||||
})
|
||||
|
||||
+ # XXX: Help docs useless/out of date
|
||||
+ self.window.get_widget("prefs-help").hide()
|
||||
+
|
||||
def close(self, ignore1=None, ignore2=None):
|
||||
self.topwin.hide()
|
||||
return 1
|
@ -1,249 +0,0 @@
|
||||
# HG changeset patch
|
||||
# User Cole Robinson <crobinso@redhat.com>
|
||||
# Date 1253201058 14400
|
||||
# Node ID a6f055361d165bea5fbb3c62ec54a820987a7dde
|
||||
# Parent 1c886d1863f72e7ddd5fb99050362296be6a9deb
|
||||
Update new VM status icons.
|
||||
|
||||
Previous round didn't convey state very well, and looked too much like
|
||||
buttons.
|
||||
|
||||
diff -r 1c886d1863f7 -r a6f055361d16 pixmaps/state_paused.png
|
||||
Binary file pixmaps/state_paused.png has changed
|
||||
diff -r 1c886d1863f7 -r a6f055361d16 pixmaps/state_running.png
|
||||
Binary file pixmaps/state_running.png has changed
|
||||
diff -r 1c886d1863f7 -r a6f055361d16 pixmaps/state_shutoff.png
|
||||
Binary file pixmaps/state_shutoff.png has changed
|
||||
diff -r 1c886d1863f7 -r a6f055361d16 src/virtManager/config.py
|
||||
--- a/src/virtManager/config.py Wed Sep 16 16:02:19 2009 -0400
|
||||
+++ b/src/virtManager/config.py Thu Sep 17 11:24:18 2009 -0400
|
||||
@@ -90,7 +90,16 @@
|
||||
libvirt.VIR_DOMAIN_SHUTOFF: gtk.gdk.pixbuf_new_from_file_at_size(self.get_icon_dir() + "/state_shutoff.png", 18, 18),
|
||||
libvirt.VIR_DOMAIN_NOSTATE: gtk.gdk.pixbuf_new_from_file_at_size(self.get_icon_dir() + "/state_running.png", 18, 18),
|
||||
}
|
||||
- #initialize the help stuff
|
||||
+ self.status_icons_large = {
|
||||
+ libvirt.VIR_DOMAIN_BLOCKED: gtk.gdk.pixbuf_new_from_file_at_size(self.get_icon_dir() + "/state_running.png", 32, 32),
|
||||
+ libvirt.VIR_DOMAIN_CRASHED: gtk.gdk.pixbuf_new_from_file_at_size(self.get_icon_dir() + "/state_crashed.png", 32, 32),
|
||||
+ libvirt.VIR_DOMAIN_PAUSED: gtk.gdk.pixbuf_new_from_file_at_size(self.get_icon_dir() + "/state_paused.png", 32, 32),
|
||||
+ libvirt.VIR_DOMAIN_RUNNING: gtk.gdk.pixbuf_new_from_file_at_size(self.get_icon_dir() + "/state_running.png", 32, 32),
|
||||
+ libvirt.VIR_DOMAIN_SHUTDOWN: gtk.gdk.pixbuf_new_from_file_at_size(self.get_icon_dir() + "/state_shutoff.png", 32, 32),
|
||||
+ libvirt.VIR_DOMAIN_SHUTOFF: gtk.gdk.pixbuf_new_from_file_at_size(self.get_icon_dir() + "/state_shutoff.png", 32, 32),
|
||||
+ libvirt.VIR_DOMAIN_NOSTATE: gtk.gdk.pixbuf_new_from_file_at_size(self.get_icon_dir() + "/state_running.png", 32, 32),
|
||||
+ }
|
||||
+
|
||||
props = { gnome.PARAM_APP_DATADIR : self.get_data_dir()}
|
||||
gnome.program_init(self.get_appname(), self.get_appversion(), \
|
||||
properties=props)
|
||||
@@ -100,6 +109,9 @@
|
||||
def get_vm_status_icon(self, state):
|
||||
return self.status_icons[state]
|
||||
|
||||
+ def get_vm_status_icon_large(self, state):
|
||||
+ return self.status_icons_large[state]
|
||||
+
|
||||
def get_shutdown_icon_name(self):
|
||||
theme = gtk.icon_theme_get_default()
|
||||
if theme.has_icon("system-shutdown"):
|
||||
diff -r 1c886d1863f7 -r a6f055361d16 src/virtManager/domain.py
|
||||
--- a/src/virtManager/domain.py Wed Sep 16 16:02:19 2009 -0400
|
||||
+++ b/src/virtManager/domain.py Thu Sep 17 11:24:18 2009 -0400
|
||||
@@ -728,6 +728,8 @@
|
||||
|
||||
def run_status_icon(self):
|
||||
return self.config.get_vm_status_icon(self.status())
|
||||
+ def run_status_icon_large(self):
|
||||
+ return self.config.get_vm_status_icon_large(self.status())
|
||||
|
||||
def _is_serial_console_tty_accessible(self, path):
|
||||
# pty serial scheme doesn't work over remote
|
||||
diff -r 1c886d1863f7 -r a6f055361d16 src/virtManager/manager.py
|
||||
--- a/src/virtManager/manager.py Wed Sep 16 16:02:19 2009 -0400
|
||||
+++ b/src/virtManager/manager.py Thu Sep 17 11:24:18 2009 -0400
|
||||
@@ -493,7 +493,7 @@
|
||||
row.insert(ROW_NAME, vm.get_name())
|
||||
row.insert(ROW_MARKUP, row[ROW_NAME])
|
||||
row.insert(ROW_STATUS, vm.run_status())
|
||||
- row.insert(ROW_STATUS_ICON, vm.run_status_icon())
|
||||
+ row.insert(ROW_STATUS_ICON, vm.run_status_icon_large())
|
||||
row.insert(ROW_KEY, vm.get_uuid())
|
||||
row.insert(ROW_HINT, None)
|
||||
row.insert(ROW_IS_CONN, False)
|
||||
@@ -575,7 +575,7 @@
|
||||
|
||||
row = self.rows[self.vm_row_key(vm)]
|
||||
row[ROW_STATUS] = vm.run_status()
|
||||
- row[ROW_STATUS_ICON] = vm.run_status_icon()
|
||||
+ row[ROW_STATUS_ICON] = vm.run_status_icon_large()
|
||||
row[ROW_IS_VM_RUNNING] = vm.is_active()
|
||||
model.row_changed(row.path, row.iter)
|
||||
|
||||
@@ -850,7 +850,6 @@
|
||||
statusCol.add_attribute(status_icon, 'cell-background', ROW_COLOR)
|
||||
statusCol.add_attribute(status_icon, 'pixbuf', ROW_STATUS_ICON)
|
||||
statusCol.add_attribute(status_icon, 'visible', ROW_IS_VM)
|
||||
- statusCol.add_attribute(status_icon, 'sensitive', ROW_IS_VM_RUNNING)
|
||||
|
||||
name_txt = gtk.CellRendererText()
|
||||
nameCol.pack_start(name_txt, True)
|
||||
# HG changeset patch
|
||||
# User Cole Robinson <crobinso@redhat.com>
|
||||
# Date 1253205341 14400
|
||||
# Node ID cdbe1da3ce75a5ad06b8e07e891ac35d1b246685
|
||||
# Parent a6f055361d165bea5fbb3c62ec54a820987a7dde
|
||||
Change VM name text arrangement in manager view.
|
||||
|
||||
Shrink text size, add a second row that shows the VM status. Fills the
|
||||
display up a bit so it doesn't look so sparse.
|
||||
|
||||
diff -r a6f055361d16 -r cdbe1da3ce75 src/virtManager/manager.py
|
||||
--- a/src/virtManager/manager.py Thu Sep 17 11:24:18 2009 -0400
|
||||
+++ b/src/virtManager/manager.py Thu Sep 17 12:35:41 2009 -0400
|
||||
@@ -486,12 +486,26 @@
|
||||
else:
|
||||
self.emit("action-refresh-console", uri, vmuuid)
|
||||
|
||||
+ def _build_conn_markup(self, conn, row):
|
||||
+ if conn.state == conn.STATE_DISCONNECTED:
|
||||
+ markup = ("<span font='9' color='#5b5b5b'>%s - "
|
||||
+ "Not Connected</span>" % row[ROW_NAME])
|
||||
+ else:
|
||||
+ markup = ("<span font='9'>%s</span>" % row[ROW_NAME])
|
||||
+ return markup
|
||||
+
|
||||
+ def _build_vm_markup(self, vm, row):
|
||||
+ markup = ("<span font='10'>%s</span>\n"
|
||||
+ "<span font='9' color='#989898'>%s</span>" %
|
||||
+ (row[ROW_NAME], row[ROW_STATUS]))
|
||||
+ return markup
|
||||
+
|
||||
def _append_vm(self, model, vm, conn):
|
||||
parent = self.rows[conn.get_uri()].iter
|
||||
row = []
|
||||
row.insert(ROW_HANDLE, vm)
|
||||
row.insert(ROW_NAME, vm.get_name())
|
||||
- row.insert(ROW_MARKUP, row[ROW_NAME])
|
||||
+ row.insert(ROW_MARKUP, "")
|
||||
row.insert(ROW_STATUS, vm.run_status())
|
||||
row.insert(ROW_STATUS_ICON, vm.run_status_icon_large())
|
||||
row.insert(ROW_KEY, vm.get_uuid())
|
||||
@@ -502,6 +516,8 @@
|
||||
row.insert(ROW_IS_VM_RUNNING, vm.is_active())
|
||||
row.insert(ROW_COLOR, "white")
|
||||
|
||||
+ row[ROW_MARKUP] = self._build_vm_markup(vm, row)
|
||||
+
|
||||
_iter = model.append(parent, row)
|
||||
path = model.get_path(_iter)
|
||||
self.rows[self.vm_row_key(vm)] = model[path]
|
||||
@@ -512,12 +528,7 @@
|
||||
row = []
|
||||
row.insert(ROW_HANDLE, conn)
|
||||
row.insert(ROW_NAME, conn.get_pretty_desc_inactive(False))
|
||||
- if conn.state == conn.STATE_DISCONNECTED:
|
||||
- markup = ("<span font='9.5' color='#5b5b5b'>%s - "
|
||||
- "Not Connected</span>" % row[ROW_NAME])
|
||||
- else:
|
||||
- markup = ("<span font='9.5'>%s</span>" % row[ROW_NAME])
|
||||
- row.insert(ROW_MARKUP, markup)
|
||||
+ row.insert(ROW_MARKUP, self._build_conn_markup(conn, row))
|
||||
row.insert(ROW_STATUS, ("<span font='9'>%s</span>" %
|
||||
conn.get_state_text()))
|
||||
row.insert(ROW_STATUS_ICON, None)
|
||||
@@ -589,12 +600,7 @@
|
||||
model = vmlist.get_model()
|
||||
row = self.rows[conn.get_uri()]
|
||||
|
||||
- if conn.state == conn.STATE_DISCONNECTED:
|
||||
- markup = ("<span font='9.5' color='#5b5b5b'>%s - "
|
||||
- "Not Connected</span>" % row[ROW_NAME])
|
||||
- else:
|
||||
- markup = ("<span font='9.5'>%s</span>" % row[ROW_NAME])
|
||||
- row[ROW_MARKUP] = markup
|
||||
+ row[ROW_MARKUP] = self._build_conn_markup(conn, row)
|
||||
row[ROW_STATUS] = "<span font='9'>%s</span>" % conn.get_state_text()
|
||||
row[ROW_IS_CONN_CONNECTED] = conn.state != conn.STATE_DISCONNECTED
|
||||
|
||||
# HG changeset patch
|
||||
# User Cole Robinson <crobinso@redhat.com>
|
||||
# Date 1253201111 14400
|
||||
# Node ID 739a6876af4692d6f86d8813f6dd3aa046bf6a8b
|
||||
# Parent cdbe1da3ce75a5ad06b8e07e891ac35d1b246685
|
||||
Drop row coloring for managed connection rows.
|
||||
|
||||
Looks kind of funky with lots of dark colored rows for a user with multiple
|
||||
connections.
|
||||
|
||||
diff -r cdbe1da3ce75 -r 739a6876af46 src/virtManager/manager.py
|
||||
--- a/src/virtManager/manager.py Thu Sep 17 12:35:41 2009 -0400
|
||||
+++ b/src/virtManager/manager.py Thu Sep 17 11:25:11 2009 -0400
|
||||
@@ -49,8 +49,6 @@
|
||||
ROW_IS_CONN_CONNECTED = 8
|
||||
ROW_IS_VM = 9
|
||||
ROW_IS_VM_RUNNING = 10
|
||||
-ROW_COLOR = 11
|
||||
-ROW_HEIGHT = 12
|
||||
|
||||
# Columns in the tree view
|
||||
COL_NAME = 0
|
||||
@@ -514,7 +512,6 @@
|
||||
row.insert(ROW_IS_CONN_CONNECTED, True)
|
||||
row.insert(ROW_IS_VM, True)
|
||||
row.insert(ROW_IS_VM_RUNNING, vm.is_active())
|
||||
- row.insert(ROW_COLOR, "white")
|
||||
|
||||
row[ROW_MARKUP] = self._build_vm_markup(vm, row)
|
||||
|
||||
@@ -539,7 +536,6 @@
|
||||
conn.state != conn.STATE_DISCONNECTED)
|
||||
row.insert(ROW_IS_VM, False)
|
||||
row.insert(ROW_IS_VM_RUNNING, False)
|
||||
- row.insert(ROW_COLOR, "#d4d2d2")
|
||||
|
||||
_iter = model.append(None, row)
|
||||
path = model.get_path(_iter)
|
||||
@@ -823,9 +819,9 @@
|
||||
vmlist = self.window.get_widget("vm-list")
|
||||
|
||||
# Handle, name, markup, status, status icon, key/uuid, hint, is conn,
|
||||
- # is conn connected, is vm, is vm running, color
|
||||
+ # is conn connected, is vm, is vm running
|
||||
model = gtk.TreeStore(object, str, str, str, gtk.gdk.Pixbuf, str, str,
|
||||
- bool, bool, bool, bool, str)
|
||||
+ bool, bool, bool, bool)
|
||||
vmlist.set_model(model)
|
||||
util.tooltip_wrapper(vmlist, ROW_HINT, "set_tooltip_column")
|
||||
|
||||
@@ -834,7 +830,7 @@
|
||||
|
||||
nameCol = gtk.TreeViewColumn(_("Name"))
|
||||
nameCol.set_expand(True)
|
||||
- nameCol.set_spacing(12)
|
||||
+ nameCol.set_spacing(6)
|
||||
cpuUsageCol = gtk.TreeViewColumn(_("CPU usage"))
|
||||
cpuUsageCol.set_min_width(150)
|
||||
|
||||
@@ -853,13 +849,11 @@
|
||||
|
||||
status_icon = gtk.CellRendererPixbuf()
|
||||
statusCol.pack_start(status_icon, False)
|
||||
- statusCol.add_attribute(status_icon, 'cell-background', ROW_COLOR)
|
||||
statusCol.add_attribute(status_icon, 'pixbuf', ROW_STATUS_ICON)
|
||||
statusCol.add_attribute(status_icon, 'visible', ROW_IS_VM)
|
||||
|
||||
name_txt = gtk.CellRendererText()
|
||||
nameCol.pack_start(name_txt, True)
|
||||
- nameCol.add_attribute(name_txt, 'cell-background', ROW_COLOR)
|
||||
nameCol.add_attribute(name_txt, 'markup', ROW_MARKUP)
|
||||
nameCol.set_sort_column_id(VMLIST_SORT_NAME)
|
||||
|
||||
@@ -870,9 +864,7 @@
|
||||
cpuUsage_img.set_property("reversed", True)
|
||||
cpuUsageCol.pack_start(cpuUsage_img, True)
|
||||
cpuUsageCol.pack_start(cpuUsage_txt, False)
|
||||
- cpuUsageCol.add_attribute(cpuUsage_img, 'cell-background', ROW_COLOR)
|
||||
cpuUsageCol.add_attribute(cpuUsage_img, 'visible', ROW_IS_VM)
|
||||
- cpuUsageCol.add_attribute(cpuUsage_txt, 'cell-background', ROW_COLOR)
|
||||
cpuUsageCol.add_attribute(cpuUsage_txt, 'visible', ROW_IS_CONN)
|
||||
cpuUsageCol.set_sort_column_id(VMLIST_SORT_STATS)
|
||||
self.stats_sparkline = cpuUsage_img
|
File diff suppressed because it is too large
Load Diff
@ -1,72 +0,0 @@
|
||||
# HG changeset patch
|
||||
# User Cole Robinson <crobinso@redhat.com>
|
||||
# Date 1252939197 14400
|
||||
# Node ID 486cd6791c3926420786d30401a690884acdf653
|
||||
# Parent 043ca66e19aabcdb89b8bbe76ef5ded8b0c0fc54
|
||||
Fix populating text box with storage browser selection in 'New VM' (bz 517263)
|
||||
|
||||
We were only properly setting the 'finish' callback for the first time the
|
||||
storage browser was launched. All subsequent runs would not enter anything
|
||||
in the associated text box.
|
||||
|
||||
diff -r 043ca66e19aa -r 486cd6791c39 src/virtManager/addhardware.py
|
||||
--- a/src/virtManager/addhardware.py Mon Sep 14 10:14:41 2009 -0400
|
||||
+++ b/src/virtManager/addhardware.py Mon Sep 14 10:39:57 2009 -0400
|
||||
@@ -80,7 +80,6 @@
|
||||
_("An unexpected error occurred"))
|
||||
|
||||
self.storage_browser = None
|
||||
- self._browse_cb_id = None
|
||||
|
||||
self._dev = None
|
||||
|
||||
@@ -911,10 +910,8 @@
|
||||
conn = self.vm.get_connection()
|
||||
if self.storage_browser == None:
|
||||
self.storage_browser = vmmStorageBrowser(self.config, conn, False)
|
||||
- if self._browse_cb_id:
|
||||
- self.storage_browser.disconnect(self._browse_cb_id)
|
||||
|
||||
- self._browse_cb_id = self.storage_browser.connect("storage-browse-finish", set_storage_cb)
|
||||
+ self.storage_browser.set_finish_cb(set_storage_cb)
|
||||
self.storage_browser.local_args = { "dialog_name": dialog_name,
|
||||
"confirm_func": confirm_func,
|
||||
"browse_reason":
|
||||
diff -r 043ca66e19aa -r 486cd6791c39 src/virtManager/create.py
|
||||
--- a/src/virtManager/create.py Mon Sep 14 10:14:41 2009 -0400
|
||||
+++ b/src/virtManager/create.py Mon Sep 14 10:39:57 2009 -0400
|
||||
@@ -1644,8 +1644,9 @@
|
||||
if self.storage_browser == None:
|
||||
self.storage_browser = vmmStorageBrowser(self.config, self.conn,
|
||||
is_media)
|
||||
- self.storage_browser.connect("storage-browse-finish",
|
||||
- callback)
|
||||
+
|
||||
+ self.storage_browser.set_finish_cb(callback)
|
||||
+
|
||||
if is_media:
|
||||
reason = self.config.CONFIG_DIR_MEDIA
|
||||
else:
|
||||
diff -r 043ca66e19aa -r 486cd6791c39 src/virtManager/storagebrowse.py
|
||||
--- a/src/virtManager/storagebrowse.py Mon Sep 14 10:14:41 2009 -0400
|
||||
+++ b/src/virtManager/storagebrowse.py Mon Sep 14 10:39:57 2009 -0400
|
||||
@@ -47,6 +47,7 @@
|
||||
self.config = config
|
||||
self.conn = conn
|
||||
self.conn_signal_ids = []
|
||||
+ self.finish_cb_id = None
|
||||
|
||||
self.topwin = self.window.get_widget("vmm-storage-browse")
|
||||
self.err = vmmErrorDialog(self.topwin,
|
||||
@@ -89,6 +90,11 @@
|
||||
self.addvol.close()
|
||||
return 1
|
||||
|
||||
+ def set_finish_cb(self, callback):
|
||||
+ if self.finish_cb_id:
|
||||
+ self.disconnect(self.finish_cb_id)
|
||||
+ self.finish_cb_id = self.connect("storage-browse-finish", callback)
|
||||
+
|
||||
def set_initial_state(self):
|
||||
pool_list = self.window.get_widget("pool-list")
|
||||
virtManager.host.init_pool_list(pool_list, self.pool_selected)
|
@ -1,20 +0,0 @@
|
||||
# HG changeset patch
|
||||
# User Cole Robinson <crobinso@redhat.com>
|
||||
# Date 1251728389 14400
|
||||
# Node ID b70858b9f8c6f9fea21f6e66a10e7b9498f11e5e
|
||||
# Parent 0bdea2b6c30e3b9ac7ca7b35f957598e66fd8c36
|
||||
Don't allow deleting an active VM (bz 518536)
|
||||
|
||||
diff -r 0bdea2b6c30e -r b70858b9f8c6 src/virtManager/manager.py
|
||||
--- a/src/virtManager/manager.py Mon Aug 31 10:07:06 2009 -0400
|
||||
+++ b/src/virtManager/manager.py Mon Aug 31 10:19:49 2009 -0400
|
||||
@@ -684,7 +684,8 @@
|
||||
show_open = bool(vm)
|
||||
show_details = bool(vm)
|
||||
host_details = bool(vm or conn)
|
||||
- delete = bool((vm and vm.is_runable()) or conn)
|
||||
+ delete = bool((vm and vm.is_runable()) or
|
||||
+ (not vm and conn))
|
||||
show_run = bool(vm and vm.is_runable())
|
||||
is_paused = bool(vm and vm.is_paused())
|
||||
if is_paused:
|
@ -1,18 +0,0 @@
|
||||
# HG changeset patch
|
||||
# User Cole Robinson <crobinso@redhat.com>
|
||||
# Date 1252937681 14400
|
||||
# Node ID 043ca66e19aabcdb89b8bbe76ef5ded8b0c0fc54
|
||||
# Parent d34def55dbd78e2ad5f099d6a38c1f358c798555
|
||||
Try to avoid 'maximum recursion depth' errors from pylint script.
|
||||
|
||||
diff -r d34def55dbd7 -r 043ca66e19aa tests/pylint-virt-manager.sh
|
||||
--- a/tests/pylint-virt-manager.sh Mon Aug 31 10:45:59 2009 -0400
|
||||
+++ b/tests/pylint-virt-manager.sh Mon Sep 14 10:14:41 2009 -0400
|
||||
@@ -95,6 +95,7 @@
|
||||
-ve "$BUILTIN_TYPE" \
|
||||
-ve "$ERROR_VBOX" \
|
||||
-ve "$UNABLE_IMPORT" \
|
||||
+ -ve "$MAX_RECURSION" \
|
||||
-ve "$EXCEPTHOOK" | \
|
||||
$AWK '\
|
||||
# Strip out any "*** Module name" lines if we dont list any errors for them
|
@ -1,96 +0,0 @@
|
||||
# HG changeset patch
|
||||
# User Cole Robinson <crobinso@redhat.com>
|
||||
# Date 1253563791 14400
|
||||
# Node ID f75237b0a84e73552a55ef0121215633c4530879
|
||||
# Parent d3b377306a994f66cd1c03f3bcbef17c4b060720
|
||||
Use timer to refresh available disk space in 'New VM' wizard (bz 502777)
|
||||
|
||||
diff -r d3b377306a99 -r f75237b0a84e src/virtManager/create.py
|
||||
--- a/src/virtManager/create.py Thu Sep 17 13:45:53 2009 -0400
|
||||
+++ b/src/virtManager/create.py Mon Sep 21 16:09:51 2009 -0400
|
||||
@@ -93,6 +93,10 @@
|
||||
# 'Guest' class from the previous failed install
|
||||
self.failed_guest = None
|
||||
|
||||
+ # Host space polling
|
||||
+ self.host_storage_timer = None
|
||||
+ self.host_storage = None
|
||||
+
|
||||
self.window.signal_autoconnect({
|
||||
"on_vmm_newcreate_delete_event" : self.close,
|
||||
|
||||
@@ -136,8 +140,18 @@
|
||||
|
||||
def close(self, ignore1=None, ignore2=None):
|
||||
self.topwin.hide()
|
||||
+ self.remove_timers()
|
||||
+
|
||||
return 1
|
||||
|
||||
+ def remove_timers(self):
|
||||
+ try:
|
||||
+ if self.host_storage_timer:
|
||||
+ gobject.source_remote(self.host_storage_timer)
|
||||
+ self.host_storage_timer = None
|
||||
+ except:
|
||||
+ pass
|
||||
+
|
||||
def set_conn(self, newconn):
|
||||
if self.conn == newconn:
|
||||
return
|
||||
@@ -303,9 +317,11 @@
|
||||
self.window.get_widget("config-cpus").set_value(1)
|
||||
|
||||
# Storage
|
||||
+ if not self.host_storage_timer:
|
||||
+ self.host_storage_timer = gobject.timeout_add(3 * 1000,
|
||||
+ self.host_space_tick)
|
||||
self.window.get_widget("enable-storage").set_active(True)
|
||||
self.window.get_widget("config-storage-create").set_active(True)
|
||||
- # FIXME: Make sure this doesn't exceed host?
|
||||
self.window.get_widget("config-storage-size").set_value(8)
|
||||
self.window.get_widget("config-storage-entry").set_text("")
|
||||
self.window.get_widget("config-storage-nosparse").set_active(True)
|
||||
@@ -437,11 +453,6 @@
|
||||
# Storage
|
||||
have_storage = (is_local or is_storage_capable)
|
||||
storage_tooltip = None
|
||||
- max_storage = self.host_disk_space()
|
||||
- hd_label = "%s available on the host" % self.pretty_storage(max_storage)
|
||||
- hd_label = ("<span color='#484848'>%s</span>" % hd_label)
|
||||
- self.window.get_widget("phys-hd-label").set_markup(hd_label)
|
||||
- self.window.get_widget("config-storage-size").set_range(1, max_storage)
|
||||
|
||||
use_storage = self.window.get_widget("config-storage-select")
|
||||
storage_area = self.window.get_widget("config-storage-area")
|
||||
@@ -863,6 +874,7 @@
|
||||
# FIXME: use a conn specific function after we send pool-added
|
||||
pool = virtinst.util.lookup_pool_by_path(self.conn.vmm, path)
|
||||
if pool:
|
||||
+ pool.refresh(0)
|
||||
avail = int(virtinst.util.get_xml_path(pool.XMLDesc(0),
|
||||
"/pool/available"))
|
||||
|
||||
@@ -870,7 +882,21 @@
|
||||
vfs = os.statvfs(os.path.dirname(path))
|
||||
avail = vfs[statvfs.F_FRSIZE] * vfs[statvfs.F_BAVAIL]
|
||||
|
||||
- return int(avail / 1024.0 / 1024.0 / 1024.0)
|
||||
+ return float(avail / 1024.0 / 1024.0 / 1024.0)
|
||||
+
|
||||
+ def host_space_tick(self):
|
||||
+ max_storage = self.host_disk_space()
|
||||
+ if self.host_storage == max_storage:
|
||||
+ return 1
|
||||
+ self.host_storage = max_storage
|
||||
+
|
||||
+ hd_label = ("%s available in the default location" %
|
||||
+ self.pretty_storage(max_storage))
|
||||
+ hd_label = ("<span color='#484848'>%s</span>" % hd_label)
|
||||
+ self.window.get_widget("phys-hd-label").set_markup(hd_label)
|
||||
+ self.window.get_widget("config-storage-size").set_range(1, self.host_storage)
|
||||
+
|
||||
+ return 1
|
||||
|
||||
def get_config_network_info(self):
|
||||
netidx = self.window.get_widget("config-netdev").get_active()
|
@ -1,60 +0,0 @@
|
||||
# HG changeset patch
|
||||
# User Cole Robinson <crobinso@redhat.com>
|
||||
# Date 1253131314 14400
|
||||
# Node ID 9242a7fe76b16c6505bdd3d3d328ae8f0c56da10
|
||||
# Parent 6aa2dc9ada0c43e19680af5b922cd643e35602d0
|
||||
Better logging and error avoidance with net/disk stats routines.
|
||||
|
||||
diff -r 6aa2dc9ada0c -r 9242a7fe76b1 src/virtManager/domain.py
|
||||
--- a/src/virtManager/domain.py Wed Sep 16 16:00:47 2009 -0400
|
||||
+++ b/src/virtManager/domain.py Wed Sep 16 16:01:54 2009 -0400
|
||||
@@ -337,8 +337,12 @@
|
||||
return rx, tx
|
||||
|
||||
for netdev in self.get_network_devices(refresh_if_necc=False):
|
||||
+ dev = netdev[4]
|
||||
+ if not dev:
|
||||
+ continue
|
||||
+
|
||||
try:
|
||||
- io = self.vm.interfaceStats(netdev[4])
|
||||
+ io = self.vm.interfaceStats(dev)
|
||||
if io:
|
||||
rx += io[0]
|
||||
tx += io[4]
|
||||
@@ -347,7 +351,9 @@
|
||||
logging.debug("Net stats not supported: %s" % err)
|
||||
self._stats_net_supported = False
|
||||
else:
|
||||
- logging.error("Error reading net stats: %s" % err)
|
||||
+ logging.error("Error reading net stats for "
|
||||
+ "'%s' dev '%s': %s" %
|
||||
+ (self.get_name(), dev, err))
|
||||
return rx, tx
|
||||
|
||||
def _sample_disk_io_dummy(self):
|
||||
@@ -360,8 +366,12 @@
|
||||
return rd, wr
|
||||
|
||||
for disk in self.get_disk_devices(refresh_if_necc=False):
|
||||
+ dev = disk[2]
|
||||
+ if not dev:
|
||||
+ continue
|
||||
+
|
||||
try:
|
||||
- io = self.vm.blockStats(disk[2])
|
||||
+ io = self.vm.blockStats(dev)
|
||||
if io:
|
||||
rd += io[1]
|
||||
wr += io[3]
|
||||
@@ -370,7 +380,9 @@
|
||||
logging.debug("Disk stats not supported: %s" % err)
|
||||
self._stats_disk_supported = False
|
||||
else:
|
||||
- logging.error("Error reading disk stats: %s" % err)
|
||||
+ logging.error("Error reading disk stats for "
|
||||
+ "'%s' dev '%s': %s" %
|
||||
+ (self.get_name(), dev, err))
|
||||
return rd, wr
|
||||
|
||||
def _get_cur_rate(self, what):
|
@ -1,101 +0,0 @@
|
||||
# HG changeset patch
|
||||
# User Cole Robinson <crobinso@redhat.com>
|
||||
# Date 1254762221 14400
|
||||
# Node ID 7df46187c156c7697b9b93e46e3b391a19c4fbb2
|
||||
# Parent 97c40c4fb29f7b1b1aadcebd42781f0d471d4697
|
||||
Add tooltips for toolbar buttons in manager and details.
|
||||
|
||||
diff -r 97c40c4fb29f -r 7df46187c156 src/vmm-details.glade
|
||||
--- a/src/vmm-details.glade Mon Oct 05 11:50:10 2009 -0400
|
||||
+++ b/src/vmm-details.glade Mon Oct 05 13:03:41 2009 -0400
|
||||
@@ -430,6 +430,7 @@
|
||||
<child>
|
||||
<widget class="GtkRadioToolButton" id="control-vm-console">
|
||||
<property name="visible">True</property>
|
||||
+ <property name="tooltip" translatable="yes">Show the graphical console</property>
|
||||
<property name="label" translatable="yes">Console</property>
|
||||
<property name="icon_name">icon_console</property>
|
||||
<property name="active">True</property>
|
||||
@@ -443,6 +444,7 @@
|
||||
<child>
|
||||
<widget class="GtkRadioToolButton" id="control-vm-details">
|
||||
<property name="visible">True</property>
|
||||
+ <property name="tooltip" translatable="yes">Show virtual hardware details</property>
|
||||
<property name="label" translatable="yes">Details</property>
|
||||
<property name="stock_id">gtk-info</property>
|
||||
<property name="group">control-vm-console</property>
|
||||
@@ -465,6 +467,7 @@
|
||||
<child>
|
||||
<widget class="GtkToolButton" id="control-run">
|
||||
<property name="visible">True</property>
|
||||
+ <property name="tooltip" translatable="yes">Power on the virtual machine</property>
|
||||
<property name="is_important">True</property>
|
||||
<property name="label" translatable="yes">Run</property>
|
||||
<property name="use_underline">True</property>
|
||||
@@ -479,6 +482,7 @@
|
||||
<child>
|
||||
<widget class="GtkToggleToolButton" id="control-pause">
|
||||
<property name="visible">True</property>
|
||||
+ <property name="tooltip" translatable="yes">Pause the virtual machine</property>
|
||||
<property name="is_important">True</property>
|
||||
<property name="label" translatable="yes">Pause</property>
|
||||
<property name="use_underline">True</property>
|
||||
@@ -493,6 +497,7 @@
|
||||
<child>
|
||||
<widget class="GtkMenuToolButton" id="control-shutdown">
|
||||
<property name="visible">True</property>
|
||||
+ <property name="tooltip" translatable="yes">Shutdown the virtual machine</property>
|
||||
<property name="is_important">True</property>
|
||||
<property name="label" translatable="yes">Shut Down</property>
|
||||
<property name="use_underline">True</property>
|
||||
@@ -514,6 +519,7 @@
|
||||
<child>
|
||||
<widget class="GtkToggleToolButton" id="control-fullscreen">
|
||||
<property name="visible">True</property>
|
||||
+ <property name="tooltip" translatable="yes">Switch to fullscreen view</property>
|
||||
<property name="stock_id">gtk-fullscreen</property>
|
||||
<signal name="toggled" handler="on_control_fullscreen_toggled"/>
|
||||
</widget>
|
||||
diff -r 97c40c4fb29f -r 7df46187c156 src/vmm-manager.glade
|
||||
--- a/src/vmm-manager.glade Mon Oct 05 11:50:10 2009 -0400
|
||||
+++ b/src/vmm-manager.glade Mon Oct 05 13:03:41 2009 -0400
|
||||
@@ -229,6 +229,7 @@
|
||||
<child>
|
||||
<widget class="GtkToolButton" id="vm-new">
|
||||
<property name="visible">True</property>
|
||||
+ <property name="tooltip" translatable="yes">Create a new virtual machine</property>
|
||||
<property name="label" translatable="yes">_New</property>
|
||||
<property name="use_underline">True</property>
|
||||
<property name="icon_name">vm_new_large</property>
|
||||
@@ -251,6 +252,7 @@
|
||||
<child>
|
||||
<widget class="GtkToolButton" id="vm-open">
|
||||
<property name="visible">True</property>
|
||||
+ <property name="tooltip" translatable="yes">Show the virtual machine's details</property>
|
||||
<property name="label" translatable="yes">_Open</property>
|
||||
<property name="use_underline">True</property>
|
||||
<property name="icon_name">icon_console</property>
|
||||
@@ -264,6 +266,7 @@
|
||||
<child>
|
||||
<widget class="GtkToolButton" id="vm-run">
|
||||
<property name="visible">True</property>
|
||||
+ <property name="tooltip" translatable="yes">Power on the virtual machine</property>
|
||||
<property name="label" translatable="yes">_Run</property>
|
||||
<property name="use_underline">True</property>
|
||||
<property name="stock_id">gtk-media-play</property>
|
||||
@@ -277,6 +280,7 @@
|
||||
<child>
|
||||
<widget class="GtkToggleToolButton" id="vm-pause">
|
||||
<property name="visible">True</property>
|
||||
+ <property name="tooltip" translatable="yes">Pause the virtual machine</property>
|
||||
<property name="label" translatable="yes">_Pause</property>
|
||||
<property name="use_underline">True</property>
|
||||
<property name="stock_id">gtk-media-pause</property>
|
||||
@@ -290,6 +294,7 @@
|
||||
<child>
|
||||
<widget class="GtkMenuToolButton" id="vm-shutdown">
|
||||
<property name="visible">True</property>
|
||||
+ <property name="tooltip" translatable="yes">Shutdown the virtual machine</property>
|
||||
<property name="label" translatable="yes">_Shutdown</property>
|
||||
<property name="use_underline">True</property>
|
||||
<signal name="clicked" handler="on_vm_shutdown_clicked"/>
|
File diff suppressed because it is too large
Load Diff
@ -1,18 +0,0 @@
|
||||
# HG changeset patch
|
||||
# User Cole Robinson <crobinso@redhat.com>
|
||||
# Date 1254247348 14400
|
||||
# Node ID 59f3d7a2ec289145c41437b7f12bcd730e17f340
|
||||
# Parent 6d219a6db4fbcb343d41a959dac7a8623f3dcbb3
|
||||
manager: Actually update VM state text when state changes
|
||||
|
||||
diff -r 6d219a6db4fb -r 59f3d7a2ec28 src/virtManager/manager.py
|
||||
--- a/src/virtManager/manager.py Tue Sep 29 14:00:50 2009 -0400
|
||||
+++ b/src/virtManager/manager.py Tue Sep 29 14:02:28 2009 -0400
|
||||
@@ -584,6 +584,7 @@
|
||||
row[ROW_STATUS] = vm.run_status()
|
||||
row[ROW_STATUS_ICON] = vm.run_status_icon_large()
|
||||
row[ROW_IS_VM_RUNNING] = vm.is_active()
|
||||
+ row[ROW_MARKUP] = self._build_vm_markup(vm, row)
|
||||
model.row_changed(row.path, row.iter)
|
||||
|
||||
|
12
virt-manager-0.8.1-perms-qemu-user.patch
Normal file
12
virt-manager-0.8.1-perms-qemu-user.patch
Normal file
@ -0,0 +1,12 @@
|
||||
diff -rup virt-manager-0.8.1/src/virtManager/uihelpers.py new/src/virtManager/uihelpers.py
|
||||
--- virt-manager-0.8.1/src/virtManager/uihelpers.py 2009-12-03 16:15:01.000000000 -0500
|
||||
+++ new/src/virtManager/uihelpers.py 2009-12-03 17:15:09.101994000 -0500
|
||||
@@ -38,7 +38,7 @@ OPTICAL_MEDIA_KEY = 4
|
||||
# may use a nonroot user, so simply changing this will cause several UI
|
||||
# pieces to attempt to verify that permissions are correct. Eventually this
|
||||
# should be exposed via capabilities so we can determine this programmatically.
|
||||
-QEMU_SYSTEM_EMULATOR_USER = "root"
|
||||
+QEMU_SYSTEM_EMULATOR_USER = "qemu"
|
||||
|
||||
##############################################################
|
||||
# Initialize an error object to use for validation functions #
|
@ -7,55 +7,18 @@
|
||||
%define _extra_release %{?dist:%{dist}}%{!?dist:%{?extra_release:%{extra_release}}}
|
||||
|
||||
Name: virt-manager
|
||||
Version: 0.8.0
|
||||
Release: 8%{_extra_release}
|
||||
Version: 0.8.1
|
||||
Release: 1%{_extra_release}
|
||||
Summary: Virtual Machine Manager
|
||||
|
||||
Group: Applications/Emulators
|
||||
License: GPLv2+
|
||||
URL: http://virt-manager.org/
|
||||
Source0: http://virt-manager.org/download/sources/%{name}/%{name}-%{version}.tar.gz
|
||||
Source1: state_paused.png
|
||||
Source2: state_running.png
|
||||
Source3: state_shutoff.png
|
||||
BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n)
|
||||
BuildArch: noarch
|
||||
# Fix disk XML mangling via connect/eject cdrom (bz 516116)
|
||||
Patch1: %{name}-%{version}-cdrom-eject-driver.patch
|
||||
# Fix delete button sensitivity (bz 518536)
|
||||
Patch2: %{name}-%{version}-no-delete-active.patch
|
||||
# Fix populating text box from storage browser in 'New VM' (bz 517263)
|
||||
Patch3: %{name}-%{version}-newvm-storage-cb.patch
|
||||
# Fix a traceback in an 'Add Hardware' error path (bz 517286)
|
||||
Patch4: %{name}-%{version}-addhw-errmsg-typo.patch
|
||||
# Fixes for pylint script to return nicer results on F11/F12
|
||||
Patch5: %{name}-%{version}-pylint-tweak.patch
|
||||
# Don't close libvirt connection for non-fatal errors (bz 522168)
|
||||
Patch6: %{name}-%{version}-conn-close-exception.patch
|
||||
# Manager UI tweaks
|
||||
Patch7: %{name}-%{version}-manager-ui-tweaks.patch
|
||||
# Generate better errors is disk/net stats polling fails
|
||||
Patch8: %{name}-%{version}-stats-logging.patch
|
||||
# Refresh host disk space in create wizard (bz 502777)
|
||||
Patch9: %{name}-%{version}-refresh-disk-space.patch
|
||||
# Offer to fix disk permission issues (bz 517379)
|
||||
Patch10: %{name}-%{version}-fix-path-perms.patch
|
||||
# Fix VCPU hotplug
|
||||
Patch11: %{name}-%{version}-fix-vcpu-hotplug.patch
|
||||
# Remove access to outdated docs (bz 522823, bz 524805)
|
||||
Patch12: %{name}-%{version}-hide-help-docs.patch
|
||||
# Update VM state text in manager view (bz 526182)
|
||||
Patch13: %{name}-%{version}-update-vm-state.patch
|
||||
# Update translations (bz 493795)
|
||||
Patch14: %{name}-%{version}-update-translations.patch
|
||||
# More translations (bz 493795)
|
||||
Patch15: %{name}-%{version}-more-translations.patch
|
||||
# Don't allow creating a volume without a name (bz 526111)
|
||||
Patch16: %{name}-%{version}-createvol-name.patch
|
||||
# Don't allow volume allocation > capacity (bz 526077)
|
||||
Patch17: %{name}-%{version}-createvol-alloc.patch
|
||||
# Add tooltips for toolbar buttons (bz 524083)
|
||||
Patch18: %{name}-%{version}-toolbar-tooltips.patch
|
||||
# Check QEMU permissions against the qemu user
|
||||
Patch1: %{name}-%{version}-perms-qemu-user.patch
|
||||
|
||||
# These two are just the oldest version tested
|
||||
Requires: pygtk2 >= 1.99.12-6
|
||||
@ -72,12 +35,6 @@ Requires: gnome-keyring >= 0.4.9
|
||||
# will work just fine - keyring functionality will simply be
|
||||
# disabled
|
||||
Requires: gnome-python2-gnomekeyring >= 2.15.4
|
||||
Requires: gnome-python2-gnomevfs >= 2.15.4
|
||||
%if 0%{?fedora} <= 9
|
||||
Requires: gnome-python2
|
||||
%else
|
||||
Requires: gnome-python2-gnome
|
||||
%endif
|
||||
# Minimum we've tested with
|
||||
Requires: libxml2-python >= 2.6.23
|
||||
# Required to install Xen & QEMU guests
|
||||
@ -120,27 +77,7 @@ management API.
|
||||
|
||||
%prep
|
||||
%setup -q
|
||||
cp %{SOURCE1} pixmaps
|
||||
cp %{SOURCE2} pixmaps
|
||||
cp %{SOURCE3} pixmaps
|
||||
%patch1 -p1
|
||||
%patch2 -p1
|
||||
%patch3 -p1
|
||||
%patch4 -p1
|
||||
%patch5 -p1
|
||||
%patch6 -p1
|
||||
%patch7 -p1
|
||||
%patch8 -p1
|
||||
%patch9 -p1
|
||||
%patch10 -p1
|
||||
%patch11 -p1
|
||||
%patch12 -p1
|
||||
%patch13 -p1
|
||||
%patch14 -p1
|
||||
%patch15 -p1
|
||||
%patch16 -p1
|
||||
%patch17 -p1
|
||||
%patch18 -p1
|
||||
|
||||
%build
|
||||
%configure
|
||||
@ -214,6 +151,12 @@ fi
|
||||
%{_datadir}/dbus-1/services/%{name}.service
|
||||
|
||||
%changelog
|
||||
* Thu Dec 3 2009 Cole Robinson <crobinso@redhat.com> - 0.8.1-1.fc13
|
||||
- Update to release 0.8.1
|
||||
- VM Migration wizard, exposing various migration options
|
||||
- Enumerate CDROM and bridge devices on remote connections
|
||||
- Support storage pool source enumeration for LVM, NFS, and SCSI
|
||||
|
||||
* Mon Oct 05 2009 Cole Robinson <crobinso@redhat.com> - 0.8.0-8.fc13
|
||||
- Don't allow creating a volume without a name (bz 526111)
|
||||
- Don't allow volume allocation > capacity (bz 526077)
|
||||
|
Loading…
Reference in New Issue
Block a user