Only close connection on specific remote errors Fix weird border in manager

UI (bz 583728) Fix broken icons Cancel post-install reboot if VM is
    forced off Fix traceback if customizing a livecd install (bz 583712)
    Add pool refresh button Properly autodetect VNC keymap (bz 586201) Fix
    traceback when reconnecting to remote VNC console (bz 588254) Fix
    remote VNC connection with zsh as default shell
This commit is contained in:
Cole Robinson 2010-05-27 19:53:49 +00:00
parent dd64e5a8b3
commit 4b536f00b9
10 changed files with 511 additions and 1 deletions

View File

@ -0,0 +1,20 @@
# HG changeset patch
# User Cole Robinson <crobinso@redhat.com>
# Date 1271858884 14400
# Node ID 33ec21628630a9b468150b1eba635b1a83fc8a36
# Parent 41182500ddeff72cb9b875f3884042b922ed8c15
Only close connection on error from 'remote' error domain.
diff -r 41182500ddef -r 33ec21628630 src/virtManager/engine.py
--- a/src/virtManager/engine.py Sun Apr 18 00:15:36 2010 -0500
+++ b/src/virtManager/engine.py Wed Apr 21 10:08:04 2010 -0400
@@ -428,7 +428,8 @@
except KeyboardInterrupt:
raise
except libvirt.libvirtError, e:
- if e.get_error_code() == libvirt.VIR_ERR_SYSTEM_ERROR:
+ if (e.get_error_domain() == libvirt.VIR_FROM_REMOTE and
+ 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.")

View File

@ -0,0 +1,28 @@
# HG changeset patch
# User Cole Robinson <crobinso@redhat.com>
# Date 1273508425 14400
# Node ID b2a12e3e2691e1dc7f485de58899b232cbc1a880
# Parent f2d3931243fe7576701dec6deddf19cfc0145409
manager: Remove borders from VM list
diff -r f2d3931243fe -r b2a12e3e2691 src/vmm-manager.glade
--- a/src/vmm-manager.glade Thu May 06 13:54:16 2010 -0400
+++ b/src/vmm-manager.glade Mon May 10 12:20:25 2010 -0400
@@ -345,13 +345,16 @@
<widget class="GtkNotebook" id="vm-notebook">
<property name="visible">True</property>
<property name="can_focus">True</property>
+ <property name="show_border">False</property>
+ <property name="tab_border">0</property>
+ <property name="tab_hborder">0</property>
+ <property name="tab_vborder">0</property>
<child>
<widget class="GtkScrolledWindow" id="scrolledwindow1">
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="hscrollbar_policy">automatic</property>
<property name="vscrollbar_policy">automatic</property>
- <property name="shadow_type">in</property>
<child>
<widget class="GtkTreeView" id="vm-list">
<property name="visible">True</property>

View File

@ -0,0 +1,93 @@
# HG changeset patch
# User Cole Robinson <crobinso@redhat.com>
# Date 1270757920 14400
# Node ID 5e11e6b33fec05dc5cd155ee9931464c2e10ef2b
# Parent 4c80ef09e3f03acdc7e6ec10e70812a263ef8d45
Fix custom icon installation.
diff -r 4c80ef09e3f0 -r 5e11e6b33fec pixmaps/hicolor/16x16/actions/Makefile.am
--- a/pixmaps/hicolor/16x16/actions/Makefile.am Thu Apr 08 10:26:41 2010 +0000
+++ b/pixmaps/hicolor/16x16/actions/Makefile.am Thu Apr 08 16:18:40 2010 -0400
@@ -1,5 +1,5 @@
-pixmapdir = $(pkgdatadir)/pixmaps/hicolor/16x16/action
+pixmapdir = $(pkgdatadir)/pixmaps/hicolor/16x16/actions
pixmap_DATA = $(wildcard *.png)
EXTRA_DIST = $(pixmap_DATA)
diff -r 4c80ef09e3f0 -r 5e11e6b33fec pixmaps/hicolor/22x22/actions/Makefile.am
--- a/pixmaps/hicolor/22x22/actions/Makefile.am Thu Apr 08 10:26:41 2010 +0000
+++ b/pixmaps/hicolor/22x22/actions/Makefile.am Thu Apr 08 16:18:40 2010 -0400
@@ -1,5 +1,5 @@
-pixmapdir = $(pkgdatadir)/pixmaps/hicolor/22x22/action
+pixmapdir = $(pkgdatadir)/pixmaps/hicolor/22x22/actions
pixmap_DATA = $(wildcard *.png)
EXTRA_DIST = $(pixmap_DATA)
diff -r 4c80ef09e3f0 -r 5e11e6b33fec pixmaps/hicolor/24x24/actions/Makefile.am
--- a/pixmaps/hicolor/24x24/actions/Makefile.am Thu Apr 08 10:26:41 2010 +0000
+++ b/pixmaps/hicolor/24x24/actions/Makefile.am Thu Apr 08 16:18:40 2010 -0400
@@ -1,4 +1,4 @@
-pixmapdir = $(pkgdatadir)/pixmaps/hicolor/24x24/action
+pixmapdir = $(pkgdatadir)/pixmaps/hicolor/24x24/actions
pixmap_DATA = $(wildcard *.png)
EXTRA_DIST = $(pixmap_DATA)
diff -r 4c80ef09e3f0 -r 5e11e6b33fec pixmaps/hicolor/32x32/actions/Makefile.am
--- a/pixmaps/hicolor/32x32/actions/Makefile.am Thu Apr 08 10:26:41 2010 +0000
+++ b/pixmaps/hicolor/32x32/actions/Makefile.am Thu Apr 08 16:18:40 2010 -0400
@@ -1,4 +1,4 @@
-pixmapdir = $(pkgdatadir)/pixmaps/hicolor/32x32/action
+pixmapdir = $(pkgdatadir)/pixmaps/hicolor/32x32/actions
pixmap_DATA = $(wildcard *.png)
EXTRA_DIST = $(pixmap_DATA)
diff -rup virt-manager-0.8.4/pixmaps/hicolor/16x16/actions/Makefile.in new/pixmaps/hicolor/16x16/actions/Makefile.in
--- virt-manager-0.8.4/pixmaps/hicolor/16x16/actions/Makefile.in 2010-03-24 11:55:07.000000000 -0400
+++ new/pixmaps/hicolor/16x16/actions/Makefile.in 2010-05-13 14:59:44.281882000 -0400
@@ -184,7 +184,7 @@ target_alias = @target_alias@
top_build_prefix = @top_build_prefix@
top_builddir = @top_builddir@
top_srcdir = @top_srcdir@
-pixmapdir = $(pkgdatadir)/pixmaps/hicolor/16x16/action
+pixmapdir = $(pkgdatadir)/pixmaps/hicolor/16x16/actions
pixmap_DATA = $(wildcard *.png)
EXTRA_DIST = $(pixmap_DATA)
all: all-am
diff -rup virt-manager-0.8.4/pixmaps/hicolor/22x22/actions/Makefile.in new/pixmaps/hicolor/22x22/actions/Makefile.in
--- virt-manager-0.8.4/pixmaps/hicolor/22x22/actions/Makefile.in 2010-03-24 11:55:07.000000000 -0400
+++ new/pixmaps/hicolor/22x22/actions/Makefile.in 2010-05-13 14:59:44.416882000 -0400
@@ -184,7 +184,7 @@ target_alias = @target_alias@
top_build_prefix = @top_build_prefix@
top_builddir = @top_builddir@
top_srcdir = @top_srcdir@
-pixmapdir = $(pkgdatadir)/pixmaps/hicolor/22x22/action
+pixmapdir = $(pkgdatadir)/pixmaps/hicolor/22x22/actions
pixmap_DATA = $(wildcard *.png)
EXTRA_DIST = $(pixmap_DATA)
all: all-am
diff -rup virt-manager-0.8.4/pixmaps/hicolor/24x24/actions/Makefile.in new/pixmaps/hicolor/24x24/actions/Makefile.in
--- virt-manager-0.8.4/pixmaps/hicolor/24x24/actions/Makefile.in 2010-03-24 11:55:07.000000000 -0400
+++ new/pixmaps/hicolor/24x24/actions/Makefile.in 2010-05-13 14:59:44.547881000 -0400
@@ -184,7 +184,7 @@ target_alias = @target_alias@
top_build_prefix = @top_build_prefix@
top_builddir = @top_builddir@
top_srcdir = @top_srcdir@
-pixmapdir = $(pkgdatadir)/pixmaps/hicolor/24x24/action
+pixmapdir = $(pkgdatadir)/pixmaps/hicolor/24x24/actions
pixmap_DATA = $(wildcard *.png)
EXTRA_DIST = $(pixmap_DATA)
all: all-am
diff -rup virt-manager-0.8.4/pixmaps/hicolor/32x32/actions/Makefile.in new/pixmaps/hicolor/32x32/actions/Makefile.in
--- virt-manager-0.8.4/pixmaps/hicolor/32x32/actions/Makefile.in 2010-03-24 11:55:07.000000000 -0400
+++ new/pixmaps/hicolor/32x32/actions/Makefile.in 2010-05-13 14:59:44.676885000 -0400
@@ -184,7 +184,7 @@ target_alias = @target_alias@
top_build_prefix = @top_build_prefix@
top_builddir = @top_builddir@
top_srcdir = @top_srcdir@
-pixmapdir = $(pkgdatadir)/pixmaps/hicolor/32x32/action
+pixmapdir = $(pkgdatadir)/pixmaps/hicolor/32x32/actions
pixmap_DATA = $(wildcard *.png)
EXTRA_DIST = $(pixmap_DATA)
all: all-am

View File

@ -0,0 +1,75 @@
diff -rup virt-manager-0.8.4/src/virtManager/create.py new/src/virtManager/create.py
--- virt-manager-0.8.4/src/virtManager/create.py 2010-05-27 15:46:28.064880000 -0400
+++ new/src/virtManager/create.py 2010-05-27 15:47:11.751259000 -0400
@@ -1603,10 +1603,16 @@ class vmmCreate(gobject.GObject):
# out handler, removing the virtinst_guest which
# will force one final restart.
virtinst_guest.continue_install()
+
util.connect_opt_out(vm, "status-changed",
self.check_install_status, None)
return True
+ if vm.get_install_abort():
+ logging.debug("User manually shutdown VM, not restarting "
+ "guest after install.")
+ return True
+
logging.debug("Install should be completed, starting VM.")
vm.startup()
except Exception, e:
diff -rup virt-manager-0.8.4/src/virtManager/domain.py new/src/virtManager/domain.py
--- virt-manager-0.8.4/src/virtManager/domain.py 2010-05-27 15:46:28.008912000 -0400
+++ new/src/virtManager/domain.py 2010-05-27 15:47:48.539183000 -0400
@@ -75,6 +75,7 @@ class vmmDomainBase(vmmLibvirtObject):
self._backend = backend
self.uuid = uuid
+ self._install_abort = False
self._startup_vcpus = None
self._network_traffic = None
@@ -120,6 +121,13 @@ class vmmDomainBase(vmmLibvirtObject):
def get_autostart(self):
raise NotImplementedError()
+ # If manual shutdown or destroy specified, make sure we don't continue
+ # install process
+ def set_install_abort(self, val):
+ self._install_abort = bool(val)
+ def get_install_abort(self):
+ return bool(self._install_abort)
+
# Device/XML altering API
def set_autostart(self, val):
raise NotImplementedError()
@@ -1274,11 +1282,13 @@ class vmmDomain(vmmDomainBase):
reboot_listener, self)
def shutdown(self):
+ self.set_install_abort(True)
self._unregister_reboot_listener()
self._backend.shutdown()
self._update_status()
def reboot(self):
+ self.set_install_abort(True)
self._backend.reboot(0)
self._update_status()
@@ -1298,6 +1308,7 @@ class vmmDomain(vmmDomainBase):
self._update_status()
def save(self, filename, background=True):
+ self.set_install_abort(True)
if background:
conn = util.dup_conn(self.config, self.connection)
vm = conn.lookupByID(self.get_id())
@@ -1308,6 +1319,7 @@ class vmmDomain(vmmDomainBase):
self._update_status()
def destroy(self):
+ self.set_install_abort(True)
self._unregister_reboot_listener()
self._backend.destroy()
self._update_status()

View File

@ -0,0 +1,22 @@
# HG changeset patch
# User Cole Robinson <crobinso@redhat.com>
# Date 1273168456 14400
# Node ID f2d3931243fe7576701dec6deddf19cfc0145409
# Parent beb2272277eecd4bdc4015c905edf0b910bf9fa8
Fix livecd 'customize before install' traceback
diff -r beb2272277ee -r f2d3931243fe src/virtManager/domain.py
--- a/src/virtManager/domain.py Wed May 05 16:46:46 2010 -0400
+++ b/src/virtManager/domain.py Thu May 06 13:54:16 2010 -0400
@@ -1990,7 +1990,10 @@
return libvirt.VIR_DOMAIN_SHUTOFF
def get_xml(self):
- return self._backend.get_config_xml()
+ xml = self._backend.get_config_xml()
+ if not xml:
+ xml = self._backend.get_config_xml(install=False)
+ return xml
def _get_inactive_xml(self):
return self.get_xml()

View File

@ -0,0 +1,126 @@
# HG changeset patch
# User Cole Robinson <crobinso@redhat.com>
# Date 1271861766 14400
# Node ID 679b824e92dc7c8c1966b0a01a37eaaea61ea1ef
# Parent 33ec21628630a9b468150b1eba635b1a83fc8a36
host: storage: Add pool refresh button
diff -r 33ec21628630 -r 679b824e92dc src/virtManager/host.py
--- a/src/virtManager/host.py Wed Apr 21 10:08:04 2010 -0400
+++ b/src/virtManager/host.py Wed Apr 21 10:56:06 2010 -0400
@@ -128,6 +128,7 @@
"on_pool_stop_clicked": self.stop_pool,
"on_pool_start_clicked": self.start_pool,
"on_pool_delete_clicked": self.delete_pool,
+ "on_pool_refresh_clicked": self.pool_refresh,
"on_pool_autostart_toggled": self.pool_autostart_changed,
"on_vol_delete_clicked": self.delete_vol,
"on_vol_list_button_press_event": self.popup_vol_menu,
@@ -604,6 +605,19 @@
self.err.show_err(_("Error deleting pool: %s") % str(e),
"".join(traceback.format_exc()))
+ def pool_refresh(self, src):
+ pool = self.current_pool()
+ if pool is None:
+ return
+
+ try:
+ pool.refresh()
+ self.refresh_current_pool()
+ except Exception, e:
+ self.err.show_err(_("Error refreshing pool '%s': %s") % \
+ (pool.get_name(), str(e)),
+ "".join(traceback.format_exc()))
+
def delete_vol(self, src):
vol = self.current_vol()
if vol is None:
diff -r 33ec21628630 -r 679b824e92dc src/virtManager/storagepool.py
--- a/src/virtManager/storagepool.py Wed Apr 21 10:08:04 2010 -0400
+++ b/src/virtManager/storagepool.py Wed Apr 21 10:56:06 2010 -0400
@@ -25,7 +25,9 @@
from virtManager.storagevol import vmmStorageVolume
class vmmStoragePool(gobject.GObject):
- __gsignals__ = { }
+ __gsignals__ = {
+ "refreshed": (gobject.SIGNAL_RUN_FIRST, gobject.TYPE_NONE, []),
+ }
def __init__(self, config, connection, pool, uuid, active):
self.__gobject_init__()
@@ -40,8 +42,6 @@
self._xml = None # xml cache
self.refresh()
- self._update_xml()
- self.update_volumes()
def set_active(self, state):
self.active = state
@@ -120,9 +120,13 @@
return self._volumes[uuid]
def refresh(self):
- if self.active:
- self.pool.refresh(0)
- self._update_xml()
+ if not self.active:
+ return
+
+ self.pool.refresh(0)
+ self._update_xml()
+ self.update_volumes()
+ self.emit("refreshed")
def update_volumes(self):
if not self.is_active():
diff -r 33ec21628630 -r 679b824e92dc src/vmm-host.glade
--- a/src/vmm-host.glade Wed Apr 21 10:08:04 2010 -0400
+++ b/src/vmm-host.glade Wed Apr 21 10:56:06 2010 -0400
@@ -1229,11 +1229,40 @@
<property name="orientation">vertical</property>
<property name="spacing">3</property>
<child>
- <widget class="GtkLabel" id="label77">
+ <widget class="GtkHBox" id="hbox12">
<property name="visible">True</property>
- <property name="xalign">0</property>
- <property name="label" translatable="yes">&lt;b&gt;Volumes&lt;/b&gt;</property>
- <property name="use_markup">True</property>
+ <property name="spacing">6</property>
+ <child>
+ <widget class="GtkLabel" id="label77">
+ <property name="visible">True</property>
+ <property name="xalign">0</property>
+ <property name="label" translatable="yes">&lt;b&gt;Volumes&lt;/b&gt;</property>
+ <property name="use_markup">True</property>
+ </widget>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ <child>
+ <widget class="GtkButton" id="pool-refresh">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="receives_default">True</property>
+ <signal name="clicked" handler="on_pool_refresh_clicked"/>
+ <child>
+ <widget class="GtkImage" id="image8">
+ <property name="visible">True</property>
+ <property name="stock">gtk-refresh</property>
+ </widget>
+ </child>
+ </widget>
+ <packing>
+ <property name="expand">False</property>
+ <property name="position">1</property>
+ </packing>
+ </child>
</widget>
<packing>
<property name="expand">False</property>

View File

@ -0,0 +1,45 @@
# HG changeset patch
# User Cole Robinson <crobinso@redhat.com>
# Date 1273090006 14400
# Node ID 7b09131ffffcb9a49fbd2a9dae60530786d4d753
# Parent 99cf13a133f304abf4597194070aec5d397234c7
Specify connection when building all virtinst devices
diff -r 99cf13a133f3 -r 7b09131ffffc src/virtManager/addhardware.py
--- a/src/virtManager/addhardware.py Wed May 05 15:57:00 2010 -0400
+++ b/src/virtManager/addhardware.py Wed May 05 16:06:46 2010 -0400
@@ -1222,7 +1222,8 @@
def validate_page_sound(self):
smodel = self.get_config_sound_model()
try:
- self._dev = virtinst.VirtualAudio(model=smodel)
+ self._dev = virtinst.VirtualAudio(conn=self.conn.vmm,
+ model=smodel)
except Exception, e:
return self.err.val_err(_("Sound device parameter error"), str(e))
diff -r 99cf13a133f3 -r 7b09131ffffc src/virtManager/create.py
--- a/src/virtManager/create.py Wed May 05 15:57:00 2010 -0400
+++ b/src/virtManager/create.py Wed May 05 16:06:46 2010 -0400
@@ -1123,7 +1123,7 @@
guest.sound_devs = []
try:
if self.get_config_sound():
- guest.sound_devs.append(virtinst.VirtualAudio())
+ guest.sound_devs.append(virtinst.VirtualAudio(conn=guest.conn))
except Exception, e:
self.err.show_err(_("Error setting up sound device:") + str(e),
"".join(traceback.format_exc()))
diff -r 99cf13a133f3 -r 7b09131ffffc src/virtManager/uihelpers.py
--- a/src/virtManager/uihelpers.py Wed May 05 15:57:00 2010 -0400
+++ b/src/virtManager/uihelpers.py Wed May 05 16:06:46 2010 -0400
@@ -431,7 +431,8 @@
elif nettype == VirtualNetworkInterface.TYPE_USER:
pass
- net = VirtualNetworkInterface(type = nettype,
+ net = VirtualNetworkInterface(conn = conn.vmm,
+ type = nettype,
bridge = bridge,
network = netname,
macaddr = macaddr,

View File

@ -0,0 +1,25 @@
# HG changeset patch
# User Cole Robinson <crobinso@redhat.com>
# Date 1271108805 14400
# Node ID c206b12a8c7aa6946bfdca39cc429dd7fd258f2a
# Parent f09702cfdb03a8902c2dac88d26fec342759f35f
console: Don't through traceback if we can't read error fd.
This is racy and best effort, so don't log errors if we fail.
diff -r f09702cfdb03 -r c206b12a8c7a src/virtManager/console.py
--- a/src/virtManager/console.py Mon Apr 12 17:45:54 2010 -0400
+++ b/src/virtManager/console.py Mon Apr 12 17:46:45 2010 -0400
@@ -573,7 +573,11 @@
errfd = self.vncTunnel[1]
errout = ""
while True:
- new = errfd.recv(1024)
+ try:
+ new = errfd.recv(1024)
+ except:
+ break
+
if not new:
break

View File

@ -0,0 +1,38 @@
# HG changeset patch
# User Cole Robinson <crobinso@redhat.com>
# Date 1271108754 14400
# Node ID f09702cfdb03a8902c2dac88d26fec342759f35f
# Parent 82cef5edeb6e4b660cacc603d00df0d0b6f90d66
console: Fix VNC over ssh when using zsh on remote machine
diff -r 82cef5edeb6e -r f09702cfdb03 src/virtManager/console.py
--- a/src/virtManager/console.py Mon Apr 12 17:43:55 2010 -0400
+++ b/src/virtManager/console.py Mon Apr 12 17:45:54 2010 -0400
@@ -521,7 +521,7 @@
"else"
" CMD='nc %(nc_params)s';"
"fi;"
- "$CMD;" % {'nc_params': nc_params}
+ "sh -c $CMD;" % {'nc_params': nc_params}
]
argv += nc_cmd
# HG changeset patch
# User Cole Robinson <crobinso@redhat.com>
# Date 1271109105 14400
# Node ID 907ee61e5558dbf8f0b7194d4882a19e66ee6437
# Parent c206b12a8c7aa6946bfdca39cc429dd7fd258f2a
console: Actually fix SSH with zsh
diff -r c206b12a8c7a -r 907ee61e5558 src/virtManager/console.py
--- a/src/virtManager/console.py Mon Apr 12 17:46:45 2010 -0400
+++ b/src/virtManager/console.py Mon Apr 12 17:51:45 2010 -0400
@@ -521,7 +521,7 @@
"else"
" CMD='nc %(nc_params)s';"
"fi;"
- "sh -c $CMD;" % {'nc_params': nc_params}
+ "sh -c \"$CMD\";" % {'nc_params': nc_params}
]
argv += nc_cmd

View File

@ -8,7 +8,7 @@
Name: virt-manager
Version: 0.8.4
Release: 1%{_extra_release}
Release: 2%{_extra_release}
Summary: Virtual Machine Manager
Group: Applications/Emulators
@ -21,6 +21,24 @@ BuildArch: noarch
Patch1: %{name}-%{version}-perms-qemu-user.patch
# Fix using a manual 'default' pool (bz 557020)
Patch2: %{name}-%{version}-packagekit-packages.patch
# Only close connection on specific remote errors
Patch3: %{name}-%{version}-close-remote-error.patch
# Fix weird border in manager UI (bz 583728)
Patch4: %{name}-%{version}-fix-border.patch
# Fix broken icons
Patch5: %{name}-%{version}-fix-icon-install.patch
# Cancel post-install reboot if VM is forced off
Patch6: %{name}-%{version}-install-force-off.patch
# Fix traceback if customizing a livecd install (bz 583712)
Patch7: %{name}-%{version}-livecd-customize.patch
# Add pool refresh button
Patch8: %{name}-%{version}-pool-refresh-button.patch
# Properly autodetect VNC keymap (bz 586201)
Patch9: %{name}-%{version}-vnc-auto-keymap.patch
# Fix traceback when reconnecting to remote VNC console (bz 588254)
Patch10: %{name}-%{version}-vnc-reconnect-traceback.patch
# Fix remote VNC connection with zsh as default shell
Patch11: %{name}-%{version}-vnc-zsh.patch
# These two are just the oldest version tested
Requires: pygtk2 >= 1.99.12-6
@ -81,6 +99,15 @@ management API.
%setup -q
%patch1 -p1
%patch2 -p1
%patch3 -p1
%patch4 -p1
%patch5 -p1
%patch6 -p1
%patch7 -p1
%patch8 -p1
%patch9 -p1
%patch10 -p1
%patch11 -p1
%build
%configure
@ -159,6 +186,17 @@ fi
%{_datadir}/dbus-1/services/%{name}.service
%changelog
* Thu May 27 2010 Cole Robinson <crobinso@redhat.com> - 0.8.4-2.fc14
- Only close connection on specific remote errors
- Fix weird border in manager UI (bz 583728)
- Fix broken icons
- Cancel post-install reboot if VM is forced off
- Fix traceback if customizing a livecd install (bz 583712)
- Add pool refresh button
- Properly autodetect VNC keymap (bz 586201)
- Fix traceback when reconnecting to remote VNC console (bz 588254)
- Fix remote VNC connection with zsh as default shell
* Wed Mar 24 2010 Cole Robinson <crobinso@redhat.com> - 0.8.4-1.fc14
- Update to version 0.8.4
- 'Import' install option, to create a VM around an existing OS image