Commit 1f09479a authored by Guido Günther's avatar Guido Günther

Merge commit 'upstream/0.7.0'

parents 90f0ac9d 7ec628a0
......@@ -51,6 +51,7 @@ Further patches have been submitted by:
James Ralston <ralston-at-pobox-dot-com>
Radek Hladik <radek-at-eadresa-dot-cz>
Michael Marineau (marineam-at-gentoo-dot-org)
Vitaly Mayatskikh <vmayatsk-at-redhat-dot-com>
<...send a patch & get your name here...>
......
2009-03-09 Cole Robinson <crobinso@redhat.com>
* po/bg.po, po/bn_IN.po, po/bs.po, po/ca.po, po/cs.po, po/da.po,
po/de.po, po/es.po, po/fi.po, po/fr.po, po/gu.po, po/hi.po,
po/hr.po, po/hu.po, po/is.po, po/it.po, po/ja.po, po/kn.po,
po/ko.po, po/ml.po, po/mr.po, po/ms.po, po/nb.po, po/nl.po,
po/or.po, po/pa.po, po/pl.po, po/pt.po, po/pt_BR.po, po/ro.po,
po/ru.po, po/sr.po, po/sr@latin.po, po/sv.po, po/ta.po, po/te.po,
po/tr.po, po/uk.po, po/virt-manager.pot, po/zh_CN.po, po/zh_TW.po:
Update translations.
[226884b6268f] [tip]
* src/vmm-about.glade:
Update authors info.
[07f756070ee9]
* pixmaps/virt-manager-icon.svg, src/virtManager/create.py, src/vmm-
create.glade:
Add new application icon (Mike Langlie, Jeremy Perry)
[ad1f6609ceb6]
* src/virtManager/manager.py:
Fix missing import.
[3a0aedb73b83]
* src/virtManager/manager.py:
Show a helpful error if we couldn't determine a default connection
(as when qemu, kvm, or xen isn't installed)
[14faec403617]
* src/virtManager/details.py, src/virtManager/engine.py,
src/virtManager/manager.py:
Fix conn uri lookup for domain migration.
[6126a50801de]
* src/virtManager/connection.py:
Attempt to use krb5-auth-dialog for libvirt auth (if applicable)
(Guido Gunther)
[3f37d0519b17]
* src/virtManager/connect.py, src/virtManager/connection.py:
Check if we can resolve avahi '.local' host names, and if not, strip
it.
[86abf1291328]
* src/virtManager/addhardware.py, src/virtManager/connection.py, src
/vmm-add-hardware.glade:
'Add Physical Host Device' wizard for existing guests.
[35a746e2af41]
* src/virtManager/addhardware.py, src/virtManager/create.py,
src/virtManager/storagebrowse.py, src/virtManager/util.py, src/vmm-
storage-browse.glade, tests/pylint-virt-manager.sh:
Add libvirt storage aware file browser.
Hook it up to the New VM and Add Hardware wizards, all storage
browsing.
[a393170ab947]
* src/virtManager/connection.py, src/virtManager/delete.py,
src/virtManager/manager.py, src/virtManager/storagevol.py, src/vmm-
delete.glade:
Storage aware 'Delete VM' dialog.
[f8ad3d826039]
* src/virtManager/connection.py, src/virtManager/create.py,
src/virtManager/engine.py, src/virtManager/manager.py, src/vmm-
create.glade, src/vmm-manager.glade:
New 'Create VM' wizard.
[a6db38fd9b8d]
* src/virtManager/connection.py:
Better logging with connection failures.
[ace671b20c14]
* src/virtManager/addhardware.py, src/virtManager/createpool.py,
src/virtManager/createvol.py, src/virtManager/domain.py,
src/virtManager/util.py:
Centralize connection duplication, and always use openAuth.
[5db5666451b7]
* src/vmm-details.glade:
Fix VNC password entry activate listener.
[a081b0f1c57f]
* src/virtManager/domain.py:
If altering a running domain, only change the inactive XML config.
[e7c4c4964340]
* src/virtManager/domain.py:
Don't poll disk + net stats if vm isn't active.
[2fbdf72db115]
2009-03-08 Cole Robinson <crobinso@redhat.com>
* src/vmm-host.glade:
Some host details UI cleanup.
[e5e0d9281185]
* src/virtManager/host.py:
Clean up pool and net listing in host details.
Break out pool functions, so they can be re-used by a storage
browser dialog.
[1056eaeccd36]
* src/virtManager/connection.py, src/virtManager/manager.py:
Clean up 'VM Restore' functionality.
Actually catch error messages. Don't check save file header magic
when libvirt already does it for us.
[a38b9c828186]
* src/virtManager/createvol.py:
Add option to set 'Create Volume' wizard as modal.
[76d342dc10eb]
* src/virtManager/addhardware.py, src/virtManager/choosecd.py,
src/virtManager/createpool.py, src/virtManager/details.py,
src/virtManager/engine.py, src/virtManager/manager.py,
src/virtManager/util.py:
Break all FileBrowser calls out into a util function.
[83cbf94197d8]
* src/virtManager/details.py:
Don't harmlessly traceback in try_login if VM is deleted.
[c523ecf75a3e]
* virt-manager.spec.in:
Adjust PolicyKit requires for F11
[c5e677581100]
2009-02-28 Cole Robinson <crobinso@redhat.com>
* src/virtManager/details.py, src/virtManager/domain.py:
Add domain api for invalidating and updating cached xml.
Use this be a bit more intelligent with Details hardware list: only
update list if domain xml has changed. Don't even check for new xml
if the details window isn't present.
[35f1db8a045d]
2009-02-28 Rob James <rssjames@googlemail.com>
* src/vmm-details.glade:
Make properties in the details dialog selectable
[b8b3bf2c628c]
2009-02-28 Cole Robinson <crobinso@redhat.com>
* src/virtManager/domain.py:
Fix overwriting VNC password when updating VM xml.
[0a6d9a11aa38]
* src/virtManager/details.py, src/vmm-details.glade:
Submit password if the entry box is activated.
[9c1ec080ccb0]
* src/virtManager/connection.py:
Fix hal device removal callback to not spew tons of errors.
[940528e6168c]
* src/virtManager/domain.py:
Actually pull 'shareable' info from disk xml.
[6a5ac19c84d0]
* src/virt-manager.py.in:
Update --debug output to print file and line numbers.
[51b0109649fc]
2009-02-23 Cole Robinson <crobinso@redhat.com>
* src/virtManager/details.py:
Fix VNC widget to screen if fullscreen, for large VM resolution
(Guido Gunther)
[8176c489cd55]
* virt-manager.spec.in:
Bump gtk-vnc dependency in specfile.
[89355e738db6]
* src/virt-manager.schemas.in, src/virtManager/config.py,
src/virtManager/details.py, src/virtManager/preferences.py, src/vmm-
preferences.glade:
Add global option for VNC scaling: vm details defaults to that.
[437d38f0be8f]
* src/virtManager/details.py, src/vmm-details.glade:
Change VNC scaling options to 'Always', 'Fullscreen only', or
'Never'
[50db2a43966f]
2009-02-09 Cole Robinson <crobinso@redhat.com>
* src/virtManager/opticalhelper.py:
opticalhelper: Select new cdrom media if inserted
[011b790dfb1a]
* src/virtManager/opticalhelper.py:
opticalhelper: Display same combo label for initial and add/remove
cdrom devs.
[dcfe50a2b1eb]
2009-02-12 Cole Robinson <crobinso@redhat.com>
* src/virtManager/config.py, src/virtManager/preferences.py:
Add gconf listeners for sound preferences.
[dfc19539a91c]
2009-02-16 Cole Robinson <crobinso@redhat.com>
* src/vmm-preferences.glade:
Fix regression for pre existing vm and stats preferences not keeping
new values.
[ae434ddf4b70]
* po/pl.po:
Updated pl translation.
[7238b8b438bc]
2009-02-15 Cole Robinson <crobinso@redhat.com>
* src/vmm-add-hardware.glade:
Use proper border and box spacing for 'Add Hardware' dialog.
[9d1aa6fcf426]
* src/vmm-details.glade:
Fix sending ctrl-alt-del and ctrl-alt-backspace. (Tomohiro
Takahashi)
[e0f0b017caa9]
* src/virtManager/addhardware.py, src/virtManager/create.py,
src/virtManager/error.py:
Don't use yes/no dialog for sparse size warning (Guido Gunther)
[60940c2af2db]
* src/virtManager/manager.py:
Select first list entry in the manager on app startup.
[28730e3a48b8]
* src/vmm-manager.glade:
Make manager vm list have input focus on startup.
[93bbe318eca7]
* src/virtManager/manager.py:
Select any connection added to the manager list.
[e2ba569c6609]
* virt-manager.spec.in:
Rpm spec fix for building on older RH distros.
[25c36ce9e4c1]
2009-02-09 Cole Robinson <crobinso@redhat.com>
* src/virtManager/details.py, src/vmm-details.glade:
Break out VM->Overview into two 'Details' list entries: Overview and
Performance.
[e03490a72a2e]
* src/virtManager/connect.py:
Don't drop .local for zeroconf (Guido Gunther)
[1144683a4413]
2009-02-06 Cole Robinson <crobinso@redhat.com>
* AUTHORS, src/virtManager/details.py, src/virtManager/manager.py, src
/vmm-details.glade, src/vmm-manager.glade:
Remove unnecessary hide_all calls (Vitaly Mayatskikh)
[f9c2636a8a32]
2009-01-26 Cole Robinson <crobinso@redhat.com>
* .hgtags:
Added tag RELEASE-0.6.1-1 for changeset ab1d270f4e94
[375f441f26e1]
* ChangeLog, NEWS, configure.ac, virt-manager.spec.in:
Update NEWS, changelog, bump release number.
[ab1d270f4e94] [RELEASE-0.6.1-1]
* src/vmm-add-hardware.glade:
Fix up storage model alignment in add hardware.
[9834c16b59fb]
* src/virtManager/addhardware.py, src/virtManager/domain.py:
Fix some device add/remove reorg fallout.
[799fc847e6e5]
* src/virtManager/details.py, src/virtManager/engine.py,
src/virtManager/manager.py, src/virtManager/util.py:
Wrap all tooltip calls so we don't fail on older gtk (i.e. RHEL5)
[a7b623a3c97e] [tip]
[a7b623a3c97e]
* AUTHORS, src/virtManager/connection.py:
Attempt a full R/W connection regardless of polkit: only try RO if
......
Virtual Machine Manager News
============================
Release 0.7.0 (March 9th, 2009)
-------------------------------
This release includes:
- Redesigned 'New Virtual Machine' wizard (Jeremy Perry, Tim Allen,
Cole Robinson)
- Option to remove storage when deleting a virtual machine.
- File browser for libvirt storage pools and volumes, for use when
attaching storage to a new or existing guest.
- Physical device assignment (PCI, USB) for existing virtual machines.
- Bug fixes and minor improvements.
Release 0.6.1 (January 26th, 2009)
----------------------------------
......
#! /bin/sh
# Guess values for system-dependent variables and create Makefiles.
# Generated by GNU Autoconf 2.61 for virt-manager 0.6.1.
# Generated by GNU Autoconf 2.61 for virt-manager 0.7.0.
#
# Copyright (C) 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001,
# 2002, 2003, 2004, 2005, 2006 Free Software Foundation, Inc.
......@@ -726,8 +726,8 @@ SHELL=${CONFIG_SHELL-/bin/sh}
# Identity of this package.
PACKAGE_NAME='virt-manager'
PACKAGE_TARNAME='virt-manager'
PACKAGE_VERSION='0.6.1'
PACKAGE_STRING='virt-manager 0.6.1'
PACKAGE_VERSION='0.7.0'
PACKAGE_STRING='virt-manager 0.7.0'
PACKAGE_BUGREPORT=''
ac_unique_file="src/virt-manager.py.in"
......@@ -1451,7 +1451,7 @@ if test "$ac_init_help" = "long"; then
# Omit some internal or obsolete options to make the list less imposing.
# This message is too long to be a string in the A/UX 3.1 sh.
cat <<_ACEOF
\`configure' configures virt-manager 0.6.1 to adapt to many kinds of systems.
\`configure' configures virt-manager 0.7.0 to adapt to many kinds of systems.
Usage: $0 [OPTION]... [VAR=VALUE]...
......@@ -1521,7 +1521,7 @@ fi
if test -n "$ac_init_help"; then
case $ac_init_help in
short | recursive ) echo "Configuration of virt-manager 0.6.1:";;
short | recursive ) echo "Configuration of virt-manager 0.7.0:";;
esac
cat <<\_ACEOF
......@@ -1639,7 +1639,7 @@ fi
test -n "$ac_init_help" && exit $ac_status
if $ac_init_version; then
cat <<\_ACEOF
virt-manager configure 0.6.1
virt-manager configure 0.7.0
generated by GNU Autoconf 2.61
Copyright (C) 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001,
......@@ -1653,7 +1653,7 @@ cat >config.log <<_ACEOF
This file contains any messages produced by compilers while
running configure, to aid debugging if configure makes a mistake.
It was created by virt-manager $as_me 0.6.1, which was
It was created by virt-manager $as_me 0.7.0, which was
generated by GNU Autoconf 2.61. Invocation command line was
$ $0 $@
......@@ -2345,7 +2345,7 @@ fi
# Define the identity of the package.
PACKAGE='virt-manager'
VERSION='0.6.1'
VERSION='0.7.0'
cat >>confdefs.h <<_ACEOF
......@@ -23813,7 +23813,7 @@ exec 6>&1
# report actual input values of CONFIG_FILES etc. instead of their
# values after options handling.
ac_log="
This file was extended by virt-manager $as_me 0.6.1, which was
This file was extended by virt-manager $as_me 0.7.0, which was
generated by GNU Autoconf 2.61. Invocation command line was
CONFIG_FILES = $CONFIG_FILES
......@@ -23860,7 +23860,7 @@ Report bugs to <bug-autoconf@gnu.org>."
_ACEOF
cat >>$CONFIG_STATUS <<_ACEOF
ac_cs_version="\\
virt-manager config.status 0.6.1
virt-manager config.status 0.7.0
configured by $0, generated by GNU Autoconf 2.61,
with options \\"`echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`\\"
......
AC_INIT(virt-manager, 0.6.1)
AC_INIT(virt-manager, 0.7.0)
AC_CONFIG_SRCDIR(src/virt-manager.py.in)
dnl Make automake keep quiet about wildcards & other GNUmake-isms
AM_INIT_AUTOMAKE([-Wno-portability])
......
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
......@@ -137,7 +137,7 @@ def setup_logging(debug_stdout):
if debug_stdout:
streamHandler = logging.StreamHandler(sys.stderr)
streamHandler.setLevel(logging.DEBUG)
streamHandler.setFormatter(logging.Formatter("%(asctime)s %(levelname)-8s %(message)s"))
streamHandler.setFormatter(logging.Formatter("%(asctime)s (%(module)s:%(lineno)d): %(message)s"))
rootLogger.addHandler(streamHandler)
......
......@@ -221,6 +221,19 @@
</locale>
</schema>
<schema>
<key>/schemas/apps/::PACKAGE::/console/scaling</key>
<applyto>/apps/::PACKAGE::/console/scaling</applyto>
<owner>::PACKAGE::</owner>
<type>int</type>
<default>1</default>
<locale name="C">
<short>When to scale the VM graphical console</short>
<long>When to scale the VM graphical console. 0 = never, 1 = only when in full screen mode, 2 = Always</long>
</locale>
</schema>
<schema>
<key>/schemas/apps/::PACKAGE::/details/show-toolbar</key>
<applyto>/apps/::PACKAGE::/details/show-toolbar</applyto>
......
This diff is collapsed.
......@@ -20,7 +20,10 @@
import gtk.glade
import gobject
import logging
import virtinst
from virtManager import util
from virtManager.opticalhelper import vmmOpticalDriveHelper
from virtManager.error import vmmErrorDialog
......@@ -141,28 +144,8 @@ class vmmChooseCD(gobject.GObject):
self.window.get_widget("physical-media").set_sensitive(False)
def _browse_file(self, dialog_name, folder=None, _type=None):
# user wants to browse for an ISO
fcdialog = gtk.FileChooserDialog(dialog_name,
self.window.get_widget("vmm-choose-cd"),
gtk.FILE_CHOOSER_ACTION_OPEN,
(gtk.STOCK_CANCEL, gtk.RESPONSE_CANCEL,
gtk.STOCK_OPEN, gtk.RESPONSE_ACCEPT),
None)
fcdialog.set_default_response(gtk.RESPONSE_ACCEPT)
if _type != None:
f = gtk.FileFilter()
f.add_pattern("*." + _type)
fcdialog.set_filter(f)
if folder != None:
fcdialog.set_current_folder(folder)
response = fcdialog.run()
fcdialog.hide()
if(response == gtk.RESPONSE_ACCEPT):
filename = fcdialog.get_filename()
fcdialog.destroy()
return filename
else:
fcdialog.destroy()
return None
return util.browse_local(self.window.get_widget("vmm-choose-cd"),
dialog_name, folder, _type)
gobject.type_register(vmmChooseCD)
......@@ -42,7 +42,13 @@ DEFAULT_VIRT_IMAGE_DIR = "/var/lib/libvirt/images"
DEFAULT_VIRT_SAVE_DIR = "/var/lib/libvirt"
class vmmConfig:
def __init__(self, appname, appversion, gconf_dir, glade_dir, icon_dir, data_dir):
CONSOLE_SCALE_NEVER = 0
CONSOLE_SCALE_FULLSCREEN = 1
CONSOLE_SCALE_ALWAYS = 2
def __init__(self, appname, appversion, gconf_dir, glade_dir, icon_dir,
data_dir):
self.appname = appname
self.appversion = appversion
self.conf_dir = gconf_dir
......@@ -226,31 +232,36 @@ class vmmConfig:
# VM Console preferences
def on_console_popup_changed(self, callback):
self.conf.notify_add(self.conf_dir + "/console/popup", callback)
def get_console_popup(self):
console_pref = self.conf.get_int(self.conf_dir + "/console/popup")
if console_pref == None:
console_pref = 0
return console_pref
def set_console_popup(self, pref):
self.conf.set_int(self.conf_dir + "/console/popup", pref)
def on_console_keygrab_changed(self, callback):
self.conf.notify_add(self.conf_dir + "/console/keygrab", callback)
def get_console_keygrab(self):
console_pref = self.conf.get_int(self.conf_dir + "/console/keygrab")
if console_pref == None:
console_pref = 0
return console_pref
def set_console_keygrab(self, pref):
self.conf.set_int(self.conf_dir + "/console/keygrab", pref)
def on_console_scaling_changed(self, callback):
self.conf.notify_add(self.conf_dir + "/console/scaling", callback)
def get_console_scaling(self):
console_pref = self.conf.get_int(self.conf_dir + "/console/scaling")
if console_pref == None:
console_pref = 0
return console_pref
def set_console_scaling(self, pref):
self.conf.set_int(self.conf_dir + "/console/scaling", pref)
def show_console_grab_notify(self):
return self.conf.get_bool(self.conf_dir + "/console/grab-notify")
def set_console_grab_notify(self, state):
self.conf.set_bool(self.conf_dir + "/console/grab-notify", state)
......@@ -275,6 +286,14 @@ class vmmConfig:
def set_remote_sound(self, state):
self.conf.set_bool(self.conf_dir + "/new-vm/remote-sound", state)
def on_sound_local_changed(self, cb, userdata=None):
self.conf.notify_add(self.conf_dir + "/new-vm/local-sound", cb,
userdata)
def on_sound_remote_changed(self, cb, userdata=None):
self.conf.notify_add(self.conf_dir + "/new-vm/remote-sound", cb,
userdata)
def get_secret_name(self, vm):
return "vm-console-" + vm.get_uuid()
......
......@@ -23,6 +23,7 @@ import gtk.glade
import virtinst
import logging
import dbus
import socket
HV_XEN = 0
HV_QEMU = 1
......@@ -56,13 +57,12 @@ class vmmConnect(gobject.GObject):
self.browser = None
self.can_browse = False
default = virtinst.util.default_connection()
if default is None:
self.window.get_widget("hypervisor").set_active(-1)
elif default[0:3] == "xen":
self.window.get_widget("hypervisor").set_active(0)
elif default[0:4] == "qemu":
self.window.get_widget("hypervisor").set_active(1)
# Set this if we can't resolve 'hostname.local': means avahi
# prob isn't configured correctly, and we should strip .local
self.can_resolve_local = None
# Plain hostname resolve failed, means we should just use IP addr
self.can_resolve_hostname = None
self.window.get_widget("connection").set_active(0)
self.window.get_widget("connect").grab_default()
......@@ -109,7 +109,7 @@ class vmmConnect(gobject.GObject):
self.reset_state()
def reset_state(self):
self.window.get_widget("hypervisor").set_active(0)
self.set_default_hypervisor()
self.window.get_widget("autoconnect").set_sensitive(True)
self.window.get_widget("autoconnect").set_active(True)
self.window.get_widget("conn-list").set_sensitive(False)
......@@ -117,6 +117,15 @@ class vmmConnect(gobject.GObject):
self.window.get_widget("hostname").set_text("")
self.stop_browse()
def set_default_hypervisor(self):
default = virtinst.util.default_connection()
if default is None:
self.window.get_widget("hypervisor").set_active(-1)
elif default.startswith("xen"):
self.window.get_widget("hypervisor").set_active(0)
elif default.startswith("qemu"):
self.window.get_widget("hypervisor").set_active(1)
def update_widget_states(self, src):
if src.get_active() > 0:
self.window.get_widget("hostname").set_sensitive(True)
......@@ -164,7 +173,9 @@ class vmmConnect(gobject.GObject):
model = self.window.get_widget("conn-list").get_model()
for row in model:
if row[2] == str(name):
# Already present in list
return
host = self.sanitize_hostname(str(host))
model.append([str(address), self.sanitize_hostname(str(host)),
str(name)])
except Exception, e:
......@@ -249,8 +260,6 @@ class vmmConnect(gobject.GObject):
self.emit("completed", uri, readOnly, auto)
def sanitize_hostname(self, host):
if host.endswith(".local"):
host = host[:-6]
if host == "linux" or host == "localhost":
host = ""
if host.startswith("linux-"):
......@@ -260,6 +269,47 @@ class vmmConnect(gobject.GObject):
host = ""
except ValueError:
pass
if host:
host = self.check_resolve_host(host)
return host
def check_resolve_host(self, host):
# Try to resolve hostname
# XXX: Avahi always uses 'hostname.local', but for some reason
# fedora out of the box can't resolve '.local' names
# Attempt to resolve the name. If it fails, remove .local
# if present, and try again
if host.endswith(".local"):
if self.can_resolve_local == False:
host = host[:-6]
elif self.can_resolve_local == None:
try:
socket.getaddrinfo(host, None)
except:
logging.debug("Couldn't resolve host '%s'. Stripping "
"'.local' and retrying." % host)
self.can_resolve_local = False
host = self.check_resolve_host(host[:-6])
else:
self.can_resolve_local = True
else:
if self.can_resolve_hostname == False:
host = ""
elif self.can_resolve_hostname == None:
try:
socket.getaddrinfo(host, None)
except:
logging.debug("Couldn't resolve host '%s'. Disabling "
"host name resolution, only using IP addr" %
host)
self.can_resolve_hostname = False
else:
self.can_resolve_hostname = True
return host
gobject.type_register(vmmConnect)