OBS User unknown 2009-05-04 16:36:17 +00:00 committed by Git OBS Bridge
parent 977f1454a2
commit 74845c3584
24 changed files with 471 additions and 724 deletions

View File

@ -1,3 +0,0 @@
version https://git-lfs.github.com/spec/v1
oid sha256:6ad1afc9b6fcf69d1d19d02091d59524974dcb77636857f339a17f9e108b2f9e
size 1844922

View File

@ -0,0 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:e4cf8368b70017717cafe1b751f4206ea0820c3f1245c53572dd13bc881a152e
size 2010911

View File

@ -1,3 +1,18 @@
-------------------------------------------------------------------
Thu Apr 30 09:46:58 MDT 2009 - dpmerrill@novell.com
- Add dbus-1-x11 dependency for minimal installations
-------------------------------------------------------------------
Tue Apr 21 15:00:49 MDT 2009 - dpmerrill@novell.com
- Update to virt-manager-0.7.0 and virtinst-0.400.3
Improved KVM support
Added support for libvirt storage/network pools
Details and Console windows are combined
Added scaling for VM console window
Simple VM migration support
-------------------------------------------------------------------
Mon Mar 2 01:54:40 CET 2009 - ro@suse.de

View File

@ -1,5 +1,5 @@
#
# spec file for package virt-manager (Version 0.5.3)
# spec file for package virt-manager (Version 0.7.0)
#
# Copyright (c) 2009 SUSE LINUX Products GmbH, Nuernberg, Germany.
#
@ -22,11 +22,11 @@ Name: virt-manager
%define gsysconfdir /etc
%define gconftool /usr/bin/gconftool-2
%define virtinst_maj 0
%define virtinst_min 300
%define virtinst_rel 2
%define virtinst_min 400
%define virtinst_rel 3
%define virtinst_name virtinst-%{virtinst_maj}.%{virtinst_min}.%{virtinst_rel}
Version: 0.5.3
Release: 67
Version: 0.7.0
Release: 1
Summary: Virtual Machine Manager
Group: System/Monitoring
License: LGPL v2.1 or later
@ -36,18 +36,15 @@ ExclusiveArch: %{ix86} x86_64
Source0: virt-manager-%{version}.tar.gz
Source1: %{virtinst_name}.tar.gz
Patch0: virtman-desktop.diff
Patch1: virtman-dbus-query.diff
Patch2: virtman-xen-uri.diff
Patch1: virtman-vminstall.diff
Patch2: virtman-netcat.diff
Patch3: virtman-pointer.diff
Patch4: virtman-detect.diff
Patch5: virtman-timewatch.diff
Patch6: virtman-vminstall.diff
Patch7: virtman-vif.diff
Patch8: virtman-hardware.diff
Patch9: virtman-netcat.diff
Patch50: virtinst-vif.diff
Patch100: virtman-misc.diff
# These two are just the oldest version tested
Patch4: virtman-cdrom.diff
Patch5: virtman-kvm.diff
Patch6: virtman-bridge.diff
Patch7: virtman-manager.diff
Patch8: virtman-help.diff
Patch51: virtinst-cdrom.diff
# Requires: pygtk2 >= 1.99.12-6
Requires: python-gtk
# Requires: gnome-python2-gconf >= 1.99.11-7
@ -58,7 +55,7 @@ Requires: vm-install
# Definitely does not work with earlier due to python API changes
# Requires: dbus-python >= 0.61
Requires: dbus-1-python
# Might work with earlier, but this is what we've tested
Requires: dbus-1-x11
#Requires: gnome-keyring >= 0.4.9
Requires: gnome-keyring
# Minimum we've tested with
@ -67,7 +64,6 @@ Requires: gnome-keyring
# disabled
# Requires: gnome-python2-gnomekeyring >= 2.15.4
# Requires: gnome-python2-gnomevfs >= 2.15.4
# Minimum we've tested with
Requires: libxml2-python >= 2.6.23
# Required to install Xen & QEMU guests
# Requires: python-virtinst >= 0.300.2
@ -82,20 +78,22 @@ Requires: scrollkeeper
# For console widget
# Requires: gtk-vnc-python
Requires: python-gtk-vnc
# Requires: librsvg added to avoid problems with minimal template
Requires: librsvg
Requires: netcat
# Add requires for non Xen installations
Requires: python-urlgrabber
BuildRequires: python
Requires: vm-install
#rpmlint BuildRequires: python
BuildRequires: gtk2-devel
BuildRequires: python-devel
BuildRequires: gettext
BuildRequires: scrollkeeper
BuildRequires: intltool
BuildRequires: python-gtk
#rpmlint BuildRequires: python-gtk
BuildRequires: python-gtk-devel
BuildRequires: python-gobject2-devel
BuildRequires: gconf2
BuildRequires: gconf2-devel
BuildRequires: desktop-file-utils
BuildRequires: update-desktop-files
# virtinst BuildRequires
@ -128,13 +126,11 @@ Authors:
%patch6 -p1
%patch7 -p1
%patch8 -p1
%patch9 -p1
%patch100 -p1
pushd $RPM_BUILD_DIR/%{virtinst_name}
%patch50 -p1
%patch51 -p1
popd
sed -i -e "s@sr\@Latn@sr\@latin@" configure
mv po/sr@Latn.po po/sr@latin.po
# sed -i -e "s@sr\@Latn@sr\@latin@" configure
# mv po/sr@Latn.po po/sr@latin.po
%build
# autoreconf -i
@ -148,17 +144,24 @@ popd
make install DESTDIR=$RPM_BUILD_ROOT
pushd $RPM_BUILD_DIR/%{virtinst_name}
python setup.py install --prefix=%{_prefix} --root=$RPM_BUILD_ROOT --install-lib=%{_datadir}/virt-manager
# remove unsued files
rm -f $RPM_BUILD_ROOT/usr/bin/virt-clone
rm -f $RPM_BUILD_ROOT/usr/bin/virt-image
rm -f $RPM_BUILD_ROOT/usr/bin/virt-install
rm -f $RPM_BUILD_ROOT/usr/bin/virt-convert
rm -f $RPM_BUILD_ROOT/usr/share/locale/ja/LC_MESSAGES/virtinst.mo
rm -f $RPM_BUILD_ROOT/usr/share/locale/pl/LC_MESSAGES/virtinst.mo
rm -f $RPM_BUILD_ROOT/usr/share/locale/fr/LC_MESSAGES/virtinst.mo
rm -f $RPM_BUILD_ROOT/usr/share/locale/it/LC_MESSAGES/virtinst.mo
rm -f $RPM_BUILD_ROOT/usr/share/locale/sr/LC_MESSAGES/virtinst.mo
rm -f $RPM_BUILD_ROOT/usr/share/locale/pt_BR/LC_MESSAGES/virtinst.mo
rm -f $RPM_BUILD_ROOT/usr/share/locale/sr@latin/LC_MESSAGES/virtinst.mo
rm -f $RPM_BUILD_ROOT/usr/share/locale/zh_CN/LC_MESSAGES/virtinst.mo
rm -f $RPM_BUILD_ROOT/usr/share/man/man1/virt-clone.1
rm -f $RPM_BUILD_ROOT/usr/share/man/man1/virt-image.1
rm -f $RPM_BUILD_ROOT/usr/share/man/man1/virt-install.1
rm -f $RPM_BUILD_ROOT/usr/share/man/man1/virt-convert.1
rm -f $RPM_BUILD_ROOT/usr/share/man/man5/virt-image.5
rm -f $RPM_BUILD_ROOT/usr/share/virt-manager/virtinst-0.300.2-py2.?.egg-info
# rm -f $RPM_BUILD_ROOT/usr/share/virt-manager/virtinst-0.400.3-py2.?.egg-info
popd
rm -f $RPM_BUILD_ROOT%{_libdir}/%{name}/sparkline.a
rm -f $RPM_BUILD_ROOT%{_libdir}/%{name}/sparkline.la
@ -171,9 +174,9 @@ sed -i '\^/usr/share/gnome/help/^d' %{name}.lst
%suse_update_desktop_file %{name} X-SuSE-YaST-Virtualization
sed -i -e 's/Categories=.*/Categories=Qt;X-SuSE-YaST;X-SuSE-YaST-Virtualization;/' $RPM_BUILD_ROOT/%{_datadir}/applications/YaST2/%{name}.desktop
# Nuking these because old version didnt have any
rm -rf $RPM_BUILD_ROOT/usr/share/gnome
# rm -rf $RPM_BUILD_ROOT/usr/share/gnome
# Also fixing the %{name}.lang file forcibly.
sed -i '\^/usr/share/gnome/help/^d' %{name}.lang
# sed -i '\^/usr/share/gnome/help/^d' %{name}.lang
%clean
# rm -rf $RPM_BUILD_ROOT
@ -188,10 +191,10 @@ sed -i '\^/usr/share/gnome/help/^d' %{name}.lang
%doc COPYING AUTHORS ChangeLog
# %dir %attr(775,root,root) /etc/gconf
# %dir %attr(775,root,root) /etc/gconf/schemas
%{gsysconfdir}/gconf/schemas/%{name}.schemas
%config %{gsysconfdir}/gconf/schemas/%{name}.schemas
%{_bindir}/%{name}
%{_libexecdir}/%{name}-launch
%{_libdir}/%{name}
%{_libdir}/%{name}/*
%dir %{_datadir}/%{name}
%{_datadir}/%{name}/*.glade
%dir %{_datadir}/%{name}/pixmaps
@ -207,20 +210,41 @@ sed -i '\^/usr/share/gnome/help/^d' %{name}.lang
# %dir %attr(775,root,root) %{_datadir}/locale/or/LC_MESSAGES
# %{_datadir}/locale/or/LC_MESSAGES/*
%{_datadir}/omf/%{name}
# %dir %attr(775,root,root) %{_datadir}/gnome
# %{_datadir}/gnome/help
%dir %attr(775,root,root) %{_datadir}/gnome
%{_datadir}/gnome/help
%{_datadir}/applications/YaST2/%{name}.desktop
%{_datadir}/dbus-1/services/%{name}.service
%{_datadir}/man/man1/%{name}.1*
# new files for virt-manager-0.7.0
%dir %{_datadir}/%{name}/virtconv
%{_datadir}/%{name}/virtconv/*.py
%{_datadir}/%{name}/virtconv/*.pyc
%dir %{_datadir}/%{name}/virtconv/parsers
%{_datadir}/%{name}/virtconv/parsers/*.py
%{_datadir}/%{name}/virtconv/parsers/*.pyc
%{_datadir}/%{name}/virtinst-0.400.3-py2.6.egg-info
%dir %{_libdir}/%{name}
%{_libdir}/%{name}/*
%doc %{_datadir}/gnome/help/%{name}/C/figures/*.png
%doc %{_datadir}/gnome/help/%{name}/C/*.xml
# FIXME: autobuild complains that these are unowned (not true...)
%dir %{_datadir}/dbus-1
%dir %{_datadir}/dbus-1/services
%dir %{_datadir}/applications/YaST2
%changelog
* Mon Mar 02 2009 ro@suse.de
* Thu Apr 30 2009 dpmerrill@novell.com
- Add dbus-1-x11 dependency for minimal installations
* Tue Apr 21 2009 dpmerrill@novell.com
- Update to virt-manager-0.7.0 and virtinst-0.400.3
Improved KVM support
Added support for libvirt storage/network pools
Details and Console windows are combined
Added scaling for VM console window
Simple VM migration support
* Sun Mar 01 2009 ro@suse.de
- move sr@Latn to sr@latin
* Thu Dec 04 2008 dpmerrill@suse.de
* Wed Dec 03 2008 dpmerrill@suse.de
- Remove ia64 from build architectures (bnc#455989)
* Tue Nov 11 2008 dpmerrill@novell.com
- Add Requires python-urlgrabber for non Xen installations
@ -234,7 +258,7 @@ sed -i '\^/usr/share/gnome/help/^d' %{name}.lang
* Fri May 16 2008 ro@suse.de
- move python install to install section in specfile
- fix build without root privileges
* Wed Apr 30 2008 dpmerrill@novell.com
* Tue Apr 29 2008 dpmerrill@novell.com
- Corrected gconf calls in spec file to fix build errors
* Tue Apr 29 2008 dpmerrill@novell.com
- Added needsrootforbuild to spec file to fix build errors
@ -254,7 +278,7 @@ sed -i '\^/usr/share/gnome/help/^d' %{name}.lang
- Changed vnc settings to prevent screen-saver lockup (bnc#253264)
- Added read-only option in Details->Hardware for adding cdroms
to prevent libvirt exceptions. (bnc#368204) (bnc#361990)
* Sat Apr 05 2008 dpmerrill@novell.com
* Fri Apr 04 2008 dpmerrill@novell.com
- Removed Virtual Network tab from host details page (bnc#364514)
* Wed Apr 02 2008 dpmerrill@novell.com
- Fixed adding a virtual network to a vm (bnc#302663)
@ -265,11 +289,11 @@ sed -i '\^/usr/share/gnome/help/^d' %{name}.lang
- Added virtman-timewatch to minimize window after
- inactivity to work around memory leaks in GTK and DBus
- bnc#287366 (L3)
* Fri Feb 15 2008 dpmerrill@novell.com
* Thu Feb 14 2008 dpmerrill@novell.com
- Changed virtman-xen-uri to correct the case where no
- connection param is passed in and uri is None
- bnc#362013
* Wed Feb 13 2008 dpmerrill@novell.com
* Tue Feb 12 2008 dpmerrill@novell.com
- Changed virtman-desktop and virtman-xen-uri to correct invalid
- parms being passed in from YaST - now sends "-c xen:///"
- bnc#361334
@ -280,7 +304,7 @@ sed -i '\^/usr/share/gnome/help/^d' %{name}.lang
* Mon Feb 11 2008 dpmerrill@novell.com
- Added virtman-pointer to set vnc to show only one pointer
- bnc#359799
* Mon Feb 04 2008 dpmerrill@novell.com
* Sun Feb 03 2008 dpmerrill@novell.com
- Added virtman-vminstall for connecting to vm-install
- and changed virtman-xen-uri.diff to force "xen:///"
- bnc#358400
@ -343,12 +367,12 @@ sed -i '\^/usr/share/gnome/help/^d' %{name}.lang
* Mon Mar 12 2007 ccoffing@novell.com
- Update virt-manager to match changes in vm-install's disk class,
due to bug #247849.
* Sat Mar 10 2007 ccoffing@novell.com
* Fri Mar 09 2007 ccoffing@novell.com
- Make Ctrl+Alt release the mouse cursor (#252998).
* Thu Mar 08 2007 ccoffing@novell.com
- Add release to "Requires: xen-tools", to prevent mixing with
pre-beta 5. (#238986, #252495)
* Sat Mar 03 2007 ccoffing@novell.com
* Fri Mar 02 2007 ccoffing@novell.com
- Disable gtk-menu-bar-accel when VM has focus, to allow VM to get
F10 key. (#240001)
* Tue Feb 27 2007 ccoffing@novell.com
@ -374,12 +398,12 @@ sed -i '\^/usr/share/gnome/help/^d' %{name}.lang
* Mon Jan 22 2007 ccoffing@novell.com
- Fix desktop file, so icon shows in YaST. (#237046)
- Clean up macros in spec file.
* Sat Jan 20 2007 ccoffing@novell.com
* Fri Jan 19 2007 ccoffing@novell.com
- Use temporary icon until real ones arrive.
- Update to changeset 371 to fix VNC issues.
* Wed Jan 17 2007 ccoffing@novell.com
- Fix BuildRequires and paths to work with both SLES10 and STABLE.
* Sat Jan 13 2007 ccoffing@novell.com
* Fri Jan 12 2007 ccoffing@novell.com
- Fix sysconfdir path.
- Add desktop file.
* Thu Jan 11 2007 ccoffing@novell.com

View File

@ -1,3 +0,0 @@
version https://git-lfs.github.com/spec/v1
oid sha256:b78f73136ae94a9b616c7fa3988bd3d6266a4fff11904036b8ec330f69c6231b
size 124659

3
virtinst-0.400.3.tar.gz Normal file
View File

@ -0,0 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:3848fc1d35abce89d9b3b20750ff518115193cf7fc367907adb76f4e56702fa8
size 350660

27
virtinst-cdrom.diff Normal file
View File

@ -0,0 +1,27 @@
diff -Nuar virtinst-0.400.3.orig//virtinst/VirtualDisk.py virtinst-0.400.3//virtinst/VirtualDisk.py
--- virtinst-0.400.3.orig//virtinst/VirtualDisk.py 2009-03-09 21:32:15.000000000 -0600
+++ virtinst-0.400.3//virtinst/VirtualDisk.py 2009-04-21 10:58:25.000000000 -0600
@@ -846,14 +846,18 @@
return self.target
raise ValueError(_("IDE CDROM must use 'hdc', but target in use."))
- # Regular scanning
+ # Start cdrom at 'c' and skip 'c' for non-cdrom
for i in range(maxnode):
gen_t = "%s%c" % (prefix, ord('a') + i)
- if gen_t in except_targets:
- continue
if gen_t not in skip_targets:
- self.target = gen_t
- return self.target
+ if self.device != self.DEVICE_CDROM:
+ if i != ord('c') - ord('a'):
+ self.target = gen_t
+ return self.target
+ else:
+ if i >= ord('c') - ord('a'):
+ self.target = gen_t
+ return self.target
# Check except_targets for any options
for t in except_targets:

View File

@ -1,45 +0,0 @@
diff -Nuar virtinst-0.300.2.orig/virtinst/Guest.py virtinst-0.300.2/virtinst/Guest.py
--- virtinst-0.300.2.orig/virtinst/Guest.py 2008-01-10 18:33:32.000000000 -0700
+++ virtinst-0.300.2/virtinst/Guest.py 2008-04-01 16:51:11.000000000 -0600
@@ -257,6 +257,10 @@
self.type = type
self.bridge = bridge
self.network = network
+
+ if self.type == "ethernet":
+ self.type = "bridge"
+
if self.type == "network":
if network is None:
raise ValueError, _("A network name was not provided")
@@ -309,16 +313,23 @@
print >> sys.stderr, msg
logging.warning(msg)
- if not self.bridge and self.type == "bridge":
- self.bridge = util.default_bridge()
+ # if not self.bridge and self.type == "bridge":
+ # self.bridge = util.default_bridge()
def get_xml_config(self):
if self.type == "bridge":
- return (" <interface type='bridge'>\n" + \
- " <source bridge='%(bridge)s'/>\n" + \
- " <mac address='%(mac)s'/>\n" + \
- " </interface>\n") % \
- { "bridge": self.bridge, "mac": self.macaddr }
+ if self.bridge != None:
+ return (" <interface type='bridge'>\n" + \
+ " <source bridge='%(bridge)s'/>\n" + \
+ " <mac address='%(mac)s'/>\n" + \
+ " </interface>\n") % \
+ { "bridge": self.bridge, "mac": self.macaddr }
+ else:
+ return (" <interface type='bridge'>\n" + \
+ " <mac address='%(mac)s'/>\n" + \
+ " </interface>\n") % \
+ { "mac": self.macaddr }
+
elif self.type == "network":
return (" <interface type='network'>\n" + \
" <source network='%(network)s'/>\n" + \

15
virtman-bridge.diff Normal file
View File

@ -0,0 +1,15 @@
diff -Nuar virt-manager-0.7.0.orig//src/virtManager/addhardware.py virt-manager-0.7.0//src/virtManager/addhardware.py
--- virt-manager-0.7.0.orig//src/virtManager/addhardware.py 2009-04-21 14:53:08.000000000 -0600
+++ virt-manager-0.7.0//src/virtManager/addhardware.py 2009-04-21 14:56:20.000000000 -0600
@@ -481,7 +481,10 @@
net = self.get_config_network()
if net[0] == "bridge":
self.window.get_widget("summary-net-type").set_text(_("Shared physical device"))
- self.window.get_widget("summary-net-target").set_text(net[1])
+ if net[1] != None:
+ self.window.get_widget("summary-net-target").set_text(net[1])
+ else:
+ self.window.get_widget("summary-net-target").set_text(_("Default"))
elif net[0] == "network":
self.window.get_widget("summary-net-type").set_text(_("Virtual network"))
self.window.get_widget("summary-net-target").set_text(net[1])

12
virtman-cdrom.diff Normal file
View File

@ -0,0 +1,12 @@
diff -Nuar virt-manager-0.7.0.orig//src/virtManager/addhardware.py virt-manager-0.7.0//src/virtManager/addhardware.py
--- virt-manager-0.7.0.orig//src/virtManager/addhardware.py 2009-03-09 21:38:37.000000000 -0600
+++ virt-manager-0.7.0//src/virtManager/addhardware.py 2009-04-21 10:07:18.000000000 -0600
@@ -1021,6 +1021,8 @@
model.append(["virtio", virtinst.VirtualDisk.DEVICE_DISK,
gtk.STOCK_HARDDISK, "Virtio Disk"])
if self.vm.get_connection().get_type().lower() == "xen":
+ model.append(["xen", virtinst.VirtualDisk.DEVICE_CDROM,
+ gtk.STOCK_CDROM, "Virtual disk (read only)"])
model.append(["xen", virtinst.VirtualDisk.DEVICE_DISK,
gtk.STOCK_HARDDISK, "Virtual disk"])

View File

@ -1,116 +0,0 @@
diff -Nuar virt-manager-0.5.3.orig/src/virtManager/connection.py virt-manager-0.5.3/src/virtManager/connection.py
--- virt-manager-0.5.3.orig/src/virtManager/connection.py 2008-03-31 14:32:40.000000000 -0600
+++ virt-manager-0.5.3/src/virtManager/connection.py 2008-03-31 15:23:14.000000000 -0600
@@ -136,6 +136,19 @@
self.detect_network_devices()
+ # A bug in hal/dbus prevents us from calling QueryCapability on devices
+ # this is a temporary workaround that can be removed when we get
+ # a newer hald/hald_dbus.c
+ def _query_capability(self, device_interface, str_capability):
+ if device_interface == None:
+ return False
+ if not device_interface.PropertyExists('info.capabilities'):
+ return False
+ cap_set = set(device_interface.GetProperty('info.capabilities'))
+ if str_capability in cap_set:
+ return True
+ return False
+
def detect_network_devices(self):
try:
# Get a connection to the SYSTEM bus
@@ -165,9 +178,11 @@
def _device_added(self, path):
obj = self.bus.get_object("org.freedesktop.Hal", path)
- if obj.QueryCapability("net"):
- name = obj.GetPropertyString("net.interface")
- mac = obj.GetPropertyString("net.address")
+ iface = dbus.Interface(obj,"org.freedesktop.Hal.Device")
+ iface.PropertyExists('info.capabilities')
+ if self._query_capability(iface,"net"):
+ name = iface.GetPropertyString("net.interface")
+ mac = iface.GetPropertyString("net.address")
# Now magic to determine if the device is part of a bridge
shared = False
@@ -175,7 +190,7 @@
try:
# XXX Linux specific - needs porting for other OS - patches
# welcomed...
- sysfspath = obj.GetPropertyString("linux.sysfs_path")
+ sysfspath = iface.GetPropertyString("linux.sysfs_path")
# If running a device in bridged mode, there's a reasonable
# chance that the actual ethernet device has been renamed to
diff -Nuar virt-manager-0.5.3.orig/src/virtManager/opticalhelper.py virt-manager-0.5.3/src/virtManager/opticalhelper.py
--- virt-manager-0.5.3.orig/src/virtManager/opticalhelper.py 2008-01-10 18:17:51.000000000 -0700
+++ virt-manager-0.5.3/src/virtManager/opticalhelper.py 2008-03-31 15:24:16.000000000 -0600
@@ -41,6 +41,19 @@
self.hal_iface = None
raise
+ # A bug in hal prevents us from calling QueryCapability on devices
+ # this is a temporary workaround that can be removed when we get
+ # a newer hald/hald_dbus.c
+ def _query_capability(self, device_interface, str_capability):
+ if device_interface == None:
+ return False
+ if not device_interface.PropertyExists('info.capabilities'):
+ return False
+ cap_set = set(device_interface.GetProperty('info.capabilities'))
+ if str_capability in cap_set:
+ return True
+ return False
+
def populate_opt_media(self):
# get a list of optical devices with data discs in, for FV installs
vollabel = {}
@@ -52,10 +65,11 @@
# Find info about all current present media
for d in self.hal_iface.FindDeviceByCapability("volume"):
vol = self.bus.get_object("org.freedesktop.Hal", d)
- if vol.GetPropertyBoolean("volume.is_disc") and \
- vol.GetPropertyBoolean("volume.disc.has_data"):
- devnode = vol.GetProperty("block.device")
- label = vol.GetProperty("volume.label")
+ iface = dbus.Interface(vol,"org.freedesktop.Hal.Device")
+ if iface.GetPropertyBoolean("volume.is_disc") and \
+ iface.GetPropertyBoolean("volume.disc.has_data"):
+ devnode = iface.GetProperty("block.device")
+ label = iface.GetProperty("volume.label")
if label == None or len(label) == 0:
label = devnode
vollabel[devnode] = label
@@ -63,7 +77,9 @@
for d in self.hal_iface.FindDeviceByCapability("storage.cdrom"):
dev = self.bus.get_object("org.freedesktop.Hal", d)
- devnode = dev.GetProperty("block.device")
+ iface = dbus.Interface(dev,"org.freedesktop.Hal.Device")
+ iface.PropertyExists('info.capabilities')
+ devnode = iface.GetProperty("block.device")
if vollabel.has_key(devnode):
self.model.append([devnode, vollabel[devnode], True, volpath[devnode]])
else:
@@ -71,11 +87,13 @@
def _device_added(self, path):
vol = self.bus.get_object("org.freedesktop.Hal", path)
- if vol.QueryCapability("volume"):
- if vol.GetPropertyBoolean("volume.is_disc") and \
- vol.GetPropertyBoolean("volume.disc.has_data"):
- devnode = vol.GetProperty("block.device")
- label = vol.GetProperty("volume.label")
+ iface = dbus.Interface(vol,"org.freedesktop.Hal.Device")
+ iface.PropertyExists('info.capabilities')
+ if self._query_capability(iface,"volume"):
+ if iface.GetPropertyBoolean("volume.is_disc") and \
+ iface.GetPropertyBoolean("volume.disc.has_data"):
+ devnode = iface.GetProperty("block.device")
+ label = iface.GetProperty("volume.label")
if label == None or len(label) == 0:
label = devnode

View File

@ -1,37 +1,37 @@
diff -Nuar virt-manager-0.5.3.orig/src/Makefile.am virt-manager-0.5.3/src/Makefile.am
--- virt-manager-0.5.3.orig/src/Makefile.am 2008-01-10 18:17:51.000000000 -0700
+++ virt-manager-0.5.3/src/Makefile.am 2008-04-29 11:07:08.000000000 -0600
diff -Nuar virt-manager-0.7.0.orig//src/Makefile.am virt-manager-0.7.0//src/Makefile.am
--- virt-manager-0.7.0.orig//src/Makefile.am 2009-03-09 21:38:37.000000000 -0600
+++ virt-manager-0.7.0//src/Makefile.am 2009-04-16 16:31:18.000000000 -0600
@@ -14,7 +14,7 @@
gladedir = $(pkgdatadir)
glade_DATA = $(wildcard $(srcdir)/*.glade)
-desktopdir = $(datadir)/applications
+desktopdir = $(datadir)/applications/YaST2/
desktop_SOURCES = $(PACKAGE).desktop.in.in
desktop_DATA_IN = $(PACKAGE).desktop.in.in
desktop_DATA = $(PACKAGE).desktop
diff -Nuar virt-manager-0.5.3.orig/src/Makefile.in virt-manager-0.5.3/src/Makefile.in
--- virt-manager-0.5.3.orig/src/Makefile.in 2008-01-10 18:18:06.000000000 -0700
+++ virt-manager-0.5.3/src/Makefile.in 2008-04-29 11:12:12.000000000 -0600
@@ -246,7 +246,7 @@
diff -Nuar virt-manager-0.7.0.orig//src/Makefile.in virt-manager-0.7.0//src/Makefile.in
--- virt-manager-0.7.0.orig//src/Makefile.in 2009-03-09 21:39:01.000000000 -0600
+++ virt-manager-0.7.0//src/Makefile.in 2009-04-16 16:31:47.000000000 -0600
@@ -248,7 +248,7 @@
libexec_SCRIPTS = $(PACKAGE)-launch
gladedir = $(pkgdatadir)
glade_DATA = $(wildcard $(srcdir)/*.glade)
-desktopdir = $(datadir)/applications
+desktopdir = $(datadir)/applications/YaST2/
desktop_SOURCES = $(PACKAGE).desktop.in.in
desktop_DATA_IN = $(PACKAGE).desktop.in.in
desktop_DATA = $(PACKAGE).desktop
dbusdir = $(datadir)/dbus-1/services
diff -Nuar virt-manager-0.5.3.orig/src/virt-manager.desktop.in.in virt-manager-0.5.3/src/virt-manager.desktop.in.in
--- virt-manager-0.5.3.orig/src/virt-manager.desktop.in.in 2008-01-10 18:17:51.000000000 -0700
+++ virt-manager-0.5.3/src/virt-manager.desktop.in.in 2008-04-29 11:11:24.000000000 -0600
diff -Nuar virt-manager-0.7.0.orig//src/virt-manager.desktop.in.in virt-manager-0.7.0//src/virt-manager.desktop.in.in
--- virt-manager-0.7.0.orig//src/virt-manager.desktop.in.in 2009-03-09 21:38:37.000000000 -0600
+++ virt-manager-0.7.0//src/virt-manager.desktop.in.in 2009-04-16 16:35:46.000000000 -0600
@@ -1,9 +1,16 @@
[Desktop Entry]
+Version=1.0
_Name=Virtual Machine Manager
_Comment=Manage virtual machines
-Icon=::ICONDIR::/::PACKAGE::-icon.svg
-Exec=::PACKAGE::
+Version=1.0
+Icon=yast-vm-management
+Exec=/usr/bin/virt-manager -c xen:///
Type=Application

View File

@ -1,24 +0,0 @@
diff -Nuar virt-manager-0.5.3.orig/src/virtManager/connection.py virt-manager-0.5.3/src/virtManager/connection.py
--- virt-manager-0.5.3.orig/src/virtManager/connection.py 2008-02-12 11:32:25.000000000 -0700
+++ virt-manager-0.5.3/src/virtManager/connection.py 2008-02-12 11:36:04.000000000 -0700
@@ -158,13 +158,17 @@
hal_object = self.bus.get_object('org.freedesktop.Hal', '/org/freedesktop/Hal/Manager')
self.hal_iface = dbus.Interface(hal_object, 'org.freedesktop.Hal.Manager')
+ # Find info about all current present media
+ for path in self.hal_iface.FindDeviceByCapability("net"):
+ self._device_added(path)
+
+ # Connect to signals AFTER FindDeviceByCapability. This leaves a small hole
+ # where we could miss a device add, but FindDeviceByCapability takes
+ # several seconds to execute if the signals are connected in advance...
# Track device add/removes so we can detect newly inserted CD media
self.hal_iface.connect_to_signal("DeviceAdded", self._device_added)
self.hal_iface.connect_to_signal("DeviceRemoved", self._device_removed)
- # Find info about all current present media
- for path in self.hal_iface.FindDeviceByCapability("net"):
- self._device_added(path)
except:
(type, value, stacktrace) = sys.exc_info ()
logging.error("Unable to connect to HAL to list network devices: '%s'" + \

View File

@ -1,12 +0,0 @@
diff -Nuar virt-manager-0.5.3.orig/src/virtManager/addhardware.py virt-manager-0.5.3/src/virtManager/addhardware.py
--- virt-manager-0.5.3.orig/src/virtManager/addhardware.py 2008-04-09 11:04:13.000000000 -0600
+++ virt-manager-0.5.3/src/virtManager/addhardware.py 2008-04-09 11:06:27.000000000 -0600
@@ -840,6 +840,8 @@
model.append(["xvd", 26, virtinst.VirtualDisk.DEVICE_DISK, gtk.STOCK_HARDDISK, "Virtual disk"])
#model.append(["usb", virtinst.VirtualDisk.DEVICE_DISK, gtk.STOCK_HARDDISK, "USB disk"])
else:
+ # add read-only option to prevent libvirt exceptions when adding a cdrom as read/write
+ model.append(["xvd", 26, virtinst.VirtualDisk.DEVICE_CDROM, gtk.STOCK_CDROM, "Virtual disk (read-only)"])
model.append(["xvd", 26, virtinst.VirtualDisk.DEVICE_DISK, gtk.STOCK_HARDDISK, "Virtual disk"])
def populate_input_model(self, model):

224
virtman-help.diff Normal file
View File

@ -0,0 +1,224 @@
diff -Nuar virt-manager-0.7.0.orig//help/virt-manager/C/virt-manager.xml virt-manager-0.7.0//help/virt-manager/C/virt-manager.xml
--- virt-manager-0.7.0.orig//help/virt-manager/C/virt-manager.xml 2009-03-09 21:38:36.000000000 -0600
+++ virt-manager-0.7.0//help/virt-manager/C/virt-manager.xml 2009-04-24 17:02:36.000000000 -0600
@@ -821,218 +821,9 @@
<title>The Create Wizard</title>
<para>The Create Wizard helps you gather the information necessary to create
new virtual machines. All the information in each screen is retained and can
- be backed-up-to and modified until you click <guibutton>Finish</guibutton>
+ be backed-up-to and modified until you click <guibutton>OK</guibutton>
on the last screen.</para>
- <sect2 id="virt-manager-system-name">
- <title>The System Name screen</title>
- <para>Choose a name for your virtual system. The name must be non-blank,
- alphanumeric (plus underscores), contain at least one letter, and be less
- than 50 characters.</para>
- </sect2>
-
- <sect2 id="virt-manager-virt-method">
- <title>The Virtualization Method screen</title>
- <para>Choose a virtualization method for your new system. The choices
- are:</para>
- <variablelist>
- <varlistentry><term>Paravirtualized</term> <listitem><para>A
- paravirtualized system typically performs better than a fully virtualized
- system because certain operations &mdash; disk and network access, for
- example &mdash; have direct access to the hardware. However a
- paravirtualized VM requires a specially modified kernel. If you
- choose paravirtualized, you must make sure this specially modified kernel
- is available for the operating system you wish to install.</para>
- </listitem>
- </varlistentry>
- <varlistentry><term>Fully Virtualized</term>
- <listitem>
- <para>A fully virtualized system simulates all the hardware for the VM,
- permitting no direct access. It allows for a greater range of operating
- systems, but generally will not perform as well as a paravirtualized
- system. Note that for some hypervisor types, full virtualization requires
- hardware support. In addition if your hardware allows it, you can
- enable hardware acceleration for your fully virtualized guest (this
- item will be grayed out unless your hardware is acceleration-capable).</para>
- </listitem>
- </varlistentry>
- </variablelist>
- </sect2>
-
- <sect2 id="virt-manager-installation-media">
- <title>The Installation Media screens</title>
- <para>The Installation Media screens let you specify where the physical or
- virtual install media for your VM are located, so that the installer can
- find them. There are two screens, one for each type of virtual
- machine.</para>
- <sect3 id="virt-manager-installation-media-paravirt">
- <title>Paravirtualized installation media</title>
- <figure id="virt-manager-FIG-paravirt-media">
- <title>Choose Install Media for Paravirtualized VMs</title>
- <screenshot>
- <mediaobject>
- <imageobject>
- <imagedata fileref="figures/vm-paravirt-media.png" format="PNG"/>
- </imageobject>
- <textobject> <phrase>Shows the paravirtualized VM media choice window.</phrase>
- </textobject>
- </mediaobject>
- </screenshot>
- </figure>
- <para>A paravirtualized VM requires an install tree that follows the
- pattern of the Fedora install tree (e.g. <ulink type="http"
- url="http://download.fedora.redhat.com/pub/fedora/linux/core/6/i386/os/">
- this tree</ulink>). The <guilabel>Install Media URL</guilabel> box lets
- you enter a URL for a tree like this. When you then go to install the
- guest, the installer will check to see if the URL you entered is
- readable, and if so download the paravirtualized install kernel and
- initrd that it will need to start the install. You can use the following
- URL types:</para>
- <variablelist>
- <varlistentry><term>http:</term>
- <listitem><para>e.g. <userinput>http://download.fedora.redhat.com/pub/fedora/linux/core/6/i386/os/</userinput></para>
- </listitem>
- </varlistentry>
- <varlistentry><term>ftp:</term>
- <listitem><para>e.g. <userinput>ftp://download.fedora.redhat.com/pub/fedora/linux/core/6/i386/os/</userinput></para>
- </listitem>
- </varlistentry>
- <varlistentry><term>nfs:</term>
- <listitem><para>e.g. <userinput>nfs:myfileserver:/images/linux/core/6/i386/os/</userinput></para>
- </listitem>
- </varlistentry>
- <varlistentry><term>local file:</term>
- <listitem><para>e.g. <userinput>/tmp/paravirttrees/fedora/os</userinput>
- </para>
- </listitem>
- </varlistentry>
- </variablelist>
- <para>You can specify a kickstart URL for your paravirtualized VM in
- exactly the same way as the install tree described
- above. <application>&app;</application> will remember the last 5 URLs you
- enter in these windows, so if you are installing multiple VMs you will
- not have to type the URLs more than once.
- </para>
- </sect3>
- <sect3 id="virt-manager-installation-media-full-virt">
- <title>Fully Virtualized Installation Media</title>
- <figure id="virt-manager-FIG-full-virt-media">
- <title>Choose Install Media for Fully Virtualized VMs</title>
- <screenshot>
- <mediaobject>
- <imageobject>
- <imagedata fileref="figures/vm-full-virt-media.png" format="PNG"/>
- </imageobject>
- <textobject> <phrase>Shows the fully virtualized VM media choice window.</phrase>
- </textobject>
- </mediaobject>
- </screenshot>
- </figure>
- <para>A fully virtualized VM requires the standard installation media that
- the same non-virtualized OS would require: either an actual CD or DVD, or
- a corresponding ISO image. On the Installation Media screen for a fully
- virtualized VM, you can therefore choose the path to your CD or DVD from
- the pull-down list, or you can enter or browse to the path of the ISO
- image you have saved in your local filesystem.</para>
- <para>For fully virtualized VMs, <application>&app;</application> also
- asks for the operating system type and variant you are installing. The
- installer uses this to set the <parameter>acpi</parameter> and
- <parameter>apic</parameter> flags according to the OS type (other
- parameters may be added to this list in the future).</para>
- </sect3>
- </sect2>
-
- <sect2 id="virt-manager-storage-space">
- <title>Assigning Storage Space</title>
- <figure id="virt-manager-FIG-assign-storage">
- <title>Assign Storage</title>
- <screenshot>
- <mediaobject>
- <imageobject>
- <imagedata fileref="figures/vm-assign-storage.png" format="PNG"/>
- </imageobject>
- <textobject> <phrase>Shows the Assigning Storage window.</phrase>
- </textobject>
- </mediaobject>
- </screenshot>
- </figure>
-
- <para>Designate the primary storage device for your VM. You may choose an
- existing physical or LVM partition in the <guilabel>Partition</guilabel>
- box; or, you may choose to use a file on the local filesystem. If you
- choose to use a file that does not already exist, you may specify the size
- of the file in megabytes. If you choose an existing file, that file's size
- will not change. If you use a file for your primary storage device, you
- may also choose whether to allocate the entire file
- at creation time, or whether to allow it to grow to its maximum over
- time.</para>
- <warning>
- <title>Sparse files can be dangerous</title>
- <para>You may be tempted not to allocate your entire file when your VM is
- created; filling a 5- to 10-GB file with 0s can take quite a while, and
- you will avoid this wait by not allocating the entire file and instead using a
- "sparse" file. However, be aware that this will slow down your VM's disk
- performance significantly, as the underlying OS must keep allocating more
- storage space as your VM runs. In addition, if the disk your sparse file
- is on runs out of space, your VM may crash and lose data. You may
- therefore only want to use a sparse file when testing, where guest
- creation speed could be at a premium.</para>
- </warning>
- </sect2>
-
- <sect2 id="virt-manager-memory-and-cpu">
- <title>Allocate Memory And CPU</title>
- <figure id="virt-manager-FIG-mem-cpu">
- <title>Set Memory and CPU</title>
- <screenshot>
- <mediaobject>
- <imageobject>
- <imagedata fileref="figures/vm-create-mem-cpu.png" format="PNG"/>
- </imageobject>
- <textobject> <phrase>Shows the VM Memory and CPU choice window.</phrase>
- </textobject>
- </mediaobject>
- </screenshot>
- </figure>
- <para>The <guilabel>Memory</guilabel> section of this screen lets you set
- two parameters, <guilabel>VM Max Memory</guilabel> and <guilabel>VM
- Startup Memory</guilabel>. These settings work as follows:</para>
- <variablelist>
- <varlistentry><term>VM Max Memory</term> <listitem><para><guilabel>VM Max
- Memory</guilabel> sets the maximum memory your VM can have unless you
- reboot it with a higher setting. For paravirtualized VMs, the maximum
- memory is a boot-time kernel setting; for fully virtualized VMs, the
- maximum memory appears to the VM to be the amount of physical memory
- available.</para>
- </listitem>
- </varlistentry>
- <varlistentry><term>VM Startup Memory</term>
- <listitem><para>For paravirtualized VMs, <guilabel>VM Startup
- Memory</guilabel> sets the amount of memory to start the VM with. The
- VM's available memory can then be changed from <application>&app;</application>
- while the VM is running. For fully virtualized guests, this setting has
- no effect.</para>
- </listitem>
- </varlistentry>
- </variablelist>
- <para>The virtual CPU section of this screen lets you set the number of
- vCPUs your VM starts up with. For paravirtualized guests, this number can
- be changed while the guest is running (although never to more than the VM
- started with). For fully virtualized guests, this number can only be
- changed while the guest is not running.</para>
- </sect2>
-
- <sect2 id="virt-manager-validation">
- <title>Validation</title>
- <para>The Validation screen lets you verify the setup for your new
- system. If you need to, you can back up and
- make changes. Clicking &quot;Finish&quot; will begin creating your virtual
- machine. If you have the <application>&app;</application> preferences set
- to automatically open consoles, a <link
- linkend="virt-manager-console-window">Console window</link> will pop up
- as soon as the installer has downloaded the necessary images and booted
- the VM's installer.
- </para>
- </sect2>
+ <para>For further details, see documentation for &quot;vm-install&quot;.</para>
</sect1>
</article>

13
virtman-kvm.diff Normal file
View File

@ -0,0 +1,13 @@
diff -Nuar virt-manager-0.7.0.orig//src/virt-manager.py.in virt-manager-0.7.0//src/virt-manager.py.in
--- virt-manager-0.7.0.orig//src/virt-manager.py.in 2009-03-09 21:38:37.000000000 -0600
+++ virt-manager-0.7.0//src/virt-manager.py.in 2009-04-21 14:24:51.000000000 -0600
@@ -192,7 +192,8 @@
tryuri = "xen:///"
elif (os.path.exists("/usr/bin/qemu") or
os.path.exists("/usr/bin/qemu-kvm") or
- os.path.exists("/usr/bin/kvm")):
+ os.path.exists("/usr/bin/kvm") or
+ os.path.exists("/dev/kvm") ):
tryuri = "qemu:///system"
return tryuri

35
virtman-manager.diff Normal file
View File

@ -0,0 +1,35 @@
diff -Nuar virt-manager-0.7.0.orig//src/virtManager/manager.py virt-manager-0.7.0//src/virtManager/manager.py
--- virt-manager-0.7.0.orig//src/virtManager/manager.py 2009-03-09 21:38:37.000000000 -0600
+++ virt-manager-0.7.0//src/virtManager/manager.py 2009-04-24 15:14:21.000000000 -0600
@@ -656,6 +656,15 @@
vmlist = self.window.get_widget("vm-list")
selection = vmlist.get_selection()
active = selection.get_selected()
+ if active[1] == None and active[0] != None:
+ # in some cases on vhost, the connection is not being selected at startup.
+ # when creating new vms, if current_connection() returns None, several
+ # functions will fail, so if the user hasn't selected a connection, default
+ # to the first connection in the list.
+ first = active[0].get_iter_first()
+ if first != None:
+ selection.select_iter( first )
+ active = selection.get_selected()
if active[1] != None:
parent = active[0].iter_parent(active[1])
# return the connection of the currently selected vm, or the
@@ -810,7 +819,14 @@
return False
def new_vm(self, ignore=None):
- self.emit("action-show-create", self.current_connection_uri())
+ conn = self.current_connection()
+ if conn.get_state() == vmmConnection.STATE_ACTIVE:
+ self.emit("action-show-create", self.current_connection_uri())
+ else:
+ message_box = gtk.MessageDialog( None, gtk.DIALOG_MODAL, gtk.MESSAGE_WARNING, gtk.BUTTONS_OK,
+ _("Must select an active connection before creating a Virtual Machine") )
+ message_box.run()
+ message_box.destroy()
def delete_vm(self, ignore=None):
conn = self.current_connection()

View File

@ -1,90 +0,0 @@
diff -Nuar virt-manager-0.5.3.orig/src/virtManager/addhardware.py virt-manager-0.5.3/src/virtManager/addhardware.py
--- virt-manager-0.5.3.orig/src/virtManager/addhardware.py 2008-04-25 16:13:35.000000000 -0600
+++ virt-manager-0.5.3/src/virtManager/addhardware.py 2008-04-25 16:14:10.000000000 -0600
@@ -704,7 +704,7 @@
device=device)
if self._disk.type == virtinst.VirtualDisk.TYPE_FILE and \
not self.vm.is_hvm() and virtinst.util.is_blktap_capable():
- disk.driver_name = virtinst.VirtualDisk.DRIVER_TAP
+ self._disk.driver_name = virtinst.VirtualDisk.DRIVER_TAP
except ValueError, e:
self._validation_error_box(_("Invalid Storage Parameters"), \
str(e))
diff -Nuar virt-manager-0.5.3.orig/src/virtManager/console.py virt-manager-0.5.3/src/virtManager/console.py
--- virt-manager-0.5.3.orig/src/virtManager/console.py 2008-04-25 16:13:35.000000000 -0600
+++ virt-manager-0.5.3/src/virtManager/console.py 2008-04-25 16:14:54.000000000 -0600
@@ -91,6 +91,7 @@
self.vncViewer.show()
self.vncViewerRetriesScheduled = 0
+ self.vncViewerMaxRetries = 10
self.vncViewerRetryDelay = 125
self.vncViewer.connect("size-request", self._force_resize)
self.connected = 0
@@ -204,7 +205,7 @@
def send_key(self, src):
keys = None
if src.get_name() == "menu-send-cad":
- keys = ["Control_L", "Alt_L", "Del"]
+ keys = ["Control_L", "Alt_L", "Delete"]
elif src.get_name() == "menu-send-cab":
keys = ["Control_L", "Alt_L", "BackSpace"]
elif src.get_name() == "menu-send-caf1":
@@ -224,7 +225,7 @@
elif src.get_name() == "menu-send-caf8":
keys = ["Control_L", "Alt_L", "F8"]
elif src.get_name() == "menu-send-printscreen":
- keys = ["PrintScreen"]
+ keys = ["Print"]
if keys != None:
self.vncViewer.send_keys(keys)
@@ -374,7 +375,7 @@
def schedule_retry(self):
self.vncViewerRetriesScheduled = self.vncViewerRetriesScheduled + 1
- if self.vncViewerRetriesScheduled >= 10:
+ if self.vncViewerRetriesScheduled >= self.vncViewerMaxRetries:
logging.error("Too many connection failures, not retrying again")
return
logging.warn("Retrying connection in %d ms", self.vncViewerRetryDelay)
@@ -387,9 +388,15 @@
return
gtk.gdk.threads_enter()
try:
- logging.debug("Got timed retry")
- self.try_login()
- return
+ try:
+ logging.debug("Got timed retry")
+ self.try_login()
+ return
+ except libvirt.libvirtError, e:
+ # libvirtError is expected when vm is inactive during a reboot
+ # only show exception if it is going to cause a viewer failure
+ if self.vncViewerRetriesScheduled >= self.vncViewerMaxRetries - 1:
+ logging.error("Login error: %s" % str(e))
finally:
gtk.gdk.threads_leave()
@@ -484,7 +491,7 @@
self.vncViewer.set_credential(credList[i], "libvirt-vnc")
else:
# Force it to stop re-trying
- self.vncViewerRetriesScheduled = 10
+ self.vncViewerRetriesScheduled = self.vncViewerMaxRetries
self.vncViewer.close()
self.activate_unavailable_page(_("Unsupported console authentication type"))
diff -Nuar virt-manager-0.5.3.orig/src/virtManager/details.py virt-manager-0.5.3/src/virtManager/details.py
--- virt-manager-0.5.3.orig/src/virtManager/details.py 2008-01-10 18:17:51.000000000 -0700
+++ virt-manager-0.5.3/src/virtManager/details.py 2008-04-25 16:14:26.000000000 -0600
@@ -553,7 +553,7 @@
else:
vnic = virtinst.VirtualNetworkInterface(type=netinfo[0], macaddr=netinfo[3])
except ValueError, e:
- self.err_dialog(_("Error Removing Network: %s" % str(e)),
+ self._err_dialog(_("Error Removing Network: %s" % str(e)),
"".join(traceback.format_exc()))
return

View File

@ -1,12 +1,12 @@
diff -Nuar virt-manager-0.5.3.orig/src/virtManager/console.py virt-manager-0.5.3/src/virtManager/console.py
--- virt-manager-0.5.3.orig/src/virtManager/console.py 2008-11-11 16:06:50.000000000 -0700
+++ virt-manager-0.5.3/src/virtManager/console.py 2008-11-11 16:07:14.000000000 -0700
@@ -407,7 +407,7 @@
os.close(1)
os.dup(fds[1].fileno())
os.dup(fds[1].fileno())
- os.execlp("ssh", "ssh", "-p", "22", "-l", "root", server, "nc", vncaddr, str(vncport))
+ os.execlp("ssh", "ssh", "-p", "22", "-l", "root", server, "netcat", vncaddr, str(vncport))
diff -Nuar virt-manager-0.7.0.orig//src/virtManager/details.py virt-manager-0.7.0//src/virtManager/details.py
--- virt-manager-0.7.0.orig//src/virtManager/details.py 2009-03-09 21:38:37.000000000 -0600
+++ virt-manager-0.7.0//src/virtManager/details.py 2009-04-20 10:13:49.000000000 -0600
@@ -1233,7 +1233,7 @@
argv = ["ssh", "ssh", "-p", sshport]
if username:
argv += ['-l', username]
- argv += [ server, "nc", vncaddr, str(vncport) ]
+ argv += [ server, "netcat", vncaddr, str(vncport) ]
os.execlp(*argv)
os._exit(1)
else:
fds[1].close()

View File

@ -1,24 +1,18 @@
diff -Nuar virt-manager-0.5.3.orig/src/virtManager/console.py virt-manager-0.5.3/src/virtManager/console.py
--- virt-manager-0.5.3.orig/src/virtManager/console.py 2008-01-10 18:17:51.000000000 -0700
+++ virt-manager-0.5.3/src/virtManager/console.py 2008-04-09 11:02:33.000000000 -0600
@@ -78,13 +78,13 @@
self.window.get_widget("console-vnc-align").add(self.vncViewer)
diff -Nuar virt-manager-0.7.0.orig//src/virtManager/details.py virt-manager-0.7.0//src/virtManager/details.py
--- virt-manager-0.7.0.orig//src/virtManager/details.py 2009-04-20 10:21:46.000000000 -0600
+++ virt-manager-0.7.0//src/virtManager/details.py 2009-04-20 10:27:37.000000000 -0600
@@ -218,10 +218,10 @@
self.window.get_widget("console-vnc-viewport").add(self.vncViewer)
self.vncViewer.realize()
self.vncTunnel = None
- if self.config.get_console_keygrab() == 2:
- self.vncViewer.set_keyboard_grab(True)
- self.vncViewer.set_pointer_grab(True)
- else:
- self.vncViewer.set_keyboard_grab(False)
- self.vncViewer.set_pointer_grab(False)
- self.vncViewer.set_pointer_local(True)
+ # change to always set grab flags as False
+ # setting them to true raises the error of Dom0 screen-saver losing the pointer
+ # if the pointer is over DomU when screen saver activates
+ # Always set grab flags to False. Setting them to True introduces a bug where Dom0 ScreenSaver
+ # loses the pointer if the pointer is over Dom0 when the ScreenSaver activates.
+ # This patch can be removed when testing shows the bug (Gtk?) is fixed.
+ self.vncViewer.set_keyboard_grab(False)
+ self.vncViewer.set_pointer_grab(False)
+ # comment set_pointer_local to prevent 2 pointers in vnc viewer
+ # self.vncViewer.set_pointer_local(True)
self.vncViewer.set_pointer_grab(True)
self.vncViewer.connect("vnc-pointer-grab", self.notify_grabbed)
self.vncViewer.connect("vnc-pointer-ungrab", self.notify_ungrabbed)
self.scale_type = self.config.get_console_scaling()

View File

@ -1,224 +0,0 @@
diff -Nuar virt-manager-0.5.3.orig/src/virtManager/config.py virt-manager-0.5.3/src/virtManager/config.py
--- virt-manager-0.5.3.orig/src/virtManager/config.py 2008-02-20 10:23:45.000000000 -0700
+++ virt-manager-0.5.3/src/virtManager/config.py 2008-02-20 10:58:37.000000000 -0700
@@ -172,6 +172,8 @@
return 10
return history
+ def get_stats_minimize_minutes(self):
+ return self.conf.get_int(self.conf_dir + "/stats/minimize-minutes")
def set_stats_update_interval(self, interval):
self.conf.set_int(self.conf_dir + "/stats/update-interval", interval)
@@ -179,6 +181,8 @@
def set_stats_history_length(self, length):
self.conf.set_int(self.conf_dir + "/stats/history-length", length)
+ def set_stats_minimize_minutes(self, minutes):
+ self.conf.set_int(self.conf_dir + "/stats/minimize-minutes", minutes)
def on_stats_update_interval_changed(self, callback):
self.conf.notify_add(self.conf_dir + "/stats/update-interval", callback)
@@ -186,6 +190,9 @@
def on_stats_history_length_changed(self, callback):
self.conf.notify_add(self.conf_dir + "/stats/history-length", callback)
+ def on_stats_minimize_minutes_changed(self, callback):
+ self.conf.notify_add(self.conf_dir + "/stats/minimize-minutes", callback)
+
def on_console_popup_changed(self, callback):
self.conf.notify_add(self.conf_dir + "/console/popup", callback)
diff -Nuar virt-manager-0.5.3.orig/src/virtManager/connection.py virt-manager-0.5.3/src/virtManager/connection.py
--- virt-manager-0.5.3.orig/src/virtManager/connection.py 2008-02-20 10:23:45.000000000 -0700
+++ virt-manager-0.5.3/src/virtManager/connection.py 2008-02-20 11:53:08.000000000 -0700
@@ -469,7 +469,7 @@
os.remove(frm)
return status
- def tick(self, noStatsUpdate=False):
+ def tick(self, noStatsUpdate=False, sleeping=False):
if self.state != self.STATE_ACTIVE:
return
@@ -490,11 +490,12 @@
logging.warn("Unable to list inactive networks")
# check of net devices
- newPaths = []
- if self.hal_iface:
- newPaths = self.hal_iface.FindDeviceByCapability("net")
- for newPath in newPaths:
- self._device_added(newPath)
+ if sleeping == False:
+ newPaths = []
+ if self.hal_iface:
+ newPaths = self.hal_iface.FindDeviceByCapability("net")
+ for newPath in newPaths:
+ self._device_added(newPath)
for name in newActiveNetNames:
net = self.vmm.networkLookupByName(name)
diff -Nuar virt-manager-0.5.3.orig/src/virtManager/engine.py virt-manager-0.5.3/src/virtManager/engine.py
--- virt-manager-0.5.3.orig/src/virtManager/engine.py 2008-02-20 10:23:45.000000000 -0700
+++ virt-manager-0.5.3/src/virtManager/engine.py 2008-02-20 11:51:52.000000000 -0700
@@ -149,7 +149,11 @@
def _tick(self):
for uri in self.connections.keys():
try:
- self.connections[uri]["connection"].tick()
+ if self.windowManager != None:
+ sleeping= self.windowManager.timewatch.process_clock(self.windowManager.window.get_widget("vmm-manager"))
+ else:
+ sleeping= False
+ self.connections[uri]["connection"].tick(sleeping = sleeping)
except KeyboardInterrupt:
raise KeyboardInterrupt
except:
diff -Nuar virt-manager-0.5.3.orig/src/virtManager/manager.py virt-manager-0.5.3/src/virtManager/manager.py
--- virt-manager-0.5.3.orig/src/virtManager/manager.py 2008-02-20 10:23:45.000000000 -0700
+++ virt-manager-0.5.3/src/virtManager/manager.py 2008-02-20 12:11:22.000000000 -0700
@@ -33,6 +33,8 @@
from virtManager.asyncjob import vmmAsyncJob
from virtManager.error import vmmErrorDialog
+import timex
+
VMLIST_SORT_ID = 1
VMLIST_SORT_NAME = 2
VMLIST_SORT_CPU_USAGE = 3
@@ -101,6 +103,14 @@
self.connections = {}
self.prepare_vmlist()
+ self.timewatch= timex.timex()
+ if self.config.get_stats_minimize_minutes() == -1:
+ logging.debug("minimize_minutes value unset - defaulting to 120")
+ self.config.set_stats_minimize_minutes(120)
+ self.timewatch.set_timeout_minutes(self.config.get_stats_minimize_minutes())
+ self.config.on_stats_minimize_minutes_changed(self.reschedule_minimize)
+ logging.debug("minimize_minutes set to %s" % str(self.config.get_stats_minimize_minutes()))
+
self.config.on_vmlist_domain_id_visible_changed(self.toggle_domain_id_visible_widget)
self.config.on_vmlist_status_visible_changed(self.toggle_status_visible_widget)
self.config.on_vmlist_cpu_usage_visible_changed(self.toggle_cpu_usage_visible_widget)
@@ -232,6 +242,15 @@
"on_menu_help_activate": self.show_help,
})
+ self.window.get_widget("vmm-manager" ).connect("window_state_event",self.timewatch.handle_window_state_event)
+ self.window.get_widget("vm-list" ).connect("button_press_event",self.timewatch.handle_reset_clock_event )
+ widget= self.window.get_widget("vmm-manager")
+ self.window.get_widget("vm-new" ).connect("clicked" ,self.timewatch.handle_reset_clock_event, widget )
+ self.window.get_widget("vm-open" ).connect("clicked" ,self.timewatch.handle_reset_clock_event, widget )
+ self.window.get_widget("vm-details" ).connect("clicked" ,self.timewatch.handle_reset_clock_event, widget )
+ self.window.get_widget("vm-delete" ).connect("clicked" ,self.timewatch.handle_reset_clock_event, widget )
+ self.window.get_widget("menu_edit_details" ).connect("activate" ,self.timewatch.handle_reset_clock_event, widget )
+
self.vm_selected(None)
self.window.get_widget("vm-list").get_selection().connect("changed", self.vm_selected)
@@ -481,6 +500,9 @@
def vm_resources_sampled(self, vm):
+ if self.timewatch.process_clock(self.window.get_widget("vmm-manager")):
+ return
+
vmlist = self.window.get_widget("vm-list")
model = vmlist.get_model()
@@ -519,6 +541,9 @@
def conn_refresh_resources(self, conn):
+ if self.timewatch.process_clock(self.window.get_widget("vmm-manager")):
+ return
+
vmlist = self.window.get_widget("vm-list")
model = vmlist.get_model()
row = self.rows[conn.get_uri()]
@@ -1039,6 +1064,10 @@
dg.hide()
dg.destroy()
+ def reschedule_minimize(self,ignore1,ignore2,ignore3,ignore4):
+ self.timewatch.set_timeout_minutes(self.config.get_stats_minimize_minutes())
+ logging.debug("minimize_minutes rescheduled to %s" % str(self.config.get_stats_minimize_minutes()))
+
def _err_dialog(self, summary, details):
dg = vmmErrorDialog(None, 0, gtk.MESSAGE_ERROR,
gtk.BUTTONS_CLOSE, summary, details)
diff -Nuar virt-manager-0.5.3.orig/src/virtManager/timex.py virt-manager-0.5.3/src/virtManager/timex.py
--- virt-manager-0.5.3.orig/src/virtManager/timex.py 1969-12-31 17:00:00.000000000 -0700
+++ virt-manager-0.5.3/src/virtManager/timex.py 2008-02-20 10:24:05.000000000 -0700
@@ -0,0 +1,44 @@
+import gtk
+import time
+
+class timex:
+
+ def __init__(self):
+ self.iconify_adjust_minutes= 0
+ self.iconify_time= 0
+ self.iconified= False
+ self.widgets = {}
+
+ # call with minutes= 0 to stop timer
+ def set_timeout_minutes(self,minutes):
+ self.iconify_adjust_minutes= minutes
+ if self.iconify_adjust_minutes == 0:
+ self.iconify_time= 0
+
+ def reset_clock(self):
+ if self.iconify_adjust_minutes:
+ self.iconify_time= time.time() + (self.iconify_adjust_minutes*60)
+
+ def handle_reset_clock_event(self,widget,event):
+ self.reset_clock()
+
+ def handle_window_state_event(self,widget,event):
+ new_state = event.new_window_state
+ if new_state & gtk.gdk.WINDOW_STATE_ICONIFIED:
+ self.widgets[widget.get_name()]= True
+ else:
+ self.widgets[widget.get_name()] = False
+ self.reset_clock()
+
+ # return True if caller should skip processing
+ def process_clock(self,widget):
+ if self.widgets.has_key(widget.get_name()):
+ if self.widgets[widget.get_name()] == True:
+ return True
+ if self.iconify_time == 0:
+ return False
+ if time.time() <= self.iconify_time:
+ return False
+ widget.iconify()
+ return True
+
diff -Nuar virt-manager-0.5.3.orig/src/virt-manager.schemas.in virt-manager-0.5.3/src/virt-manager.schemas.in
--- virt-manager-0.5.3.orig/src/virt-manager.schemas.in 2008-02-20 10:23:45.000000000 -0700
+++ virt-manager-0.5.3/src/virt-manager.schemas.in 2008-02-20 12:16:20.000000000 -0700
@@ -118,6 +118,21 @@
</schema>
<schema>
+ <key>/schemas/apps/::PACKAGE::/stats/minimize-minutes</key>
+ <applyto>/apps/::PACKAGE::/stats/minimize-minutes</applyto>
+ <owner>::PACKAGE::</owner>
+ <type>int</type>
+ <default>-1</default>
+
+ <locale name="C">
+ <short>Minimize main window minutes</short>
+ <long>The number of minutes to wait before minimizing main window due to
+ inactivity. Setting to 0 will disable the minimizing feature, but
+ while window is un-minimized, GTK and DBus will leak memory.</long>
+ </locale>
+ </schema>
+
+ <schema>
<key>/schemas/apps/::PACKAGE::/urls/url-list-length</key>
<applyto>/apps/::PACKAGE::/urls/url-list-length</applyto>
<owner>::PACKAGE::</owner>

View File

@ -1,63 +0,0 @@
diff -Nuar virt-manager-0.5.3.orig/src/virtManager/addhardware.py virt-manager-0.5.3/src/virtManager/addhardware.py
--- virt-manager-0.5.3.orig/src/virtManager/addhardware.py 2008-04-04 15:52:00.000000000 -0600
+++ virt-manager-0.5.3/src/virtManager/addhardware.py 2008-04-04 15:53:17.000000000 -0600
@@ -122,7 +122,7 @@
network_list.add_attribute(text, 'text', 1)
device_list = self.window.get_widget("net-device")
- device_model = gtk.ListStore(str, bool)
+ device_model = gtk.ListStore(str, bool, str)
device_list.set_model(device_model)
text = gtk.CellRendererText()
device_list.pack_start(text, True)
@@ -313,7 +313,7 @@
else:
dev = self.window.get_widget("net-device")
model = dev.get_model()
- return ["bridge", model.get_value(dev.get_active_iter(), 0)]
+ return ["bridge", model.get_value(dev.get_active_iter(), 2)]
def get_config_macaddr(self):
macaddr = None
@@ -348,7 +348,10 @@
net = self.get_config_network()
if net[0] == "bridge":
self.window.get_widget("summary-net-type").set_text(_("Shared physical device"))
- self.window.get_widget("summary-net-target").set_text(net[1])
+ if net[1] != None:
+ self.window.get_widget("summary-net-target").set_text(net[1])
+ else:
+ self.window.get_widget("summary-net-target").set_text(_("Default"))
elif net[0] == "network":
self.window.get_widget("summary-net-type").set_text(_("Virtual network"))
self.window.get_widget("summary-net-target").set_text(net[1])
@@ -816,13 +819,14 @@
def populate_device_model(self, model):
model.clear()
hasShared = False
+ model.append([_("(Default)"), True, None])
for name in self.vm.get_connection().list_net_device_paths():
net = self.vm.get_connection().get_net_device(name)
if net.is_shared():
hasShared = True
- model.append(["%s (%s %s)" % (net.get_name(), _("Bridge"), net.get_bridge()), True])
+ model.append(["%s (%s %s)" % (net.get_name(), _("Bridge"), net.get_bridge()), True, net.get_bridge()])
else:
- model.append(["%s (%s)" % (net.get_name(), _("Not bridged")), False])
+ model.append(["%s (%s)" % (net.get_name(), _("Not bridged")), False, net.get_name()])
return hasShared
def populate_target_device_model(self, model):
diff -Nuar virt-manager-0.5.3.orig/src/virtManager/host.py virt-manager-0.5.3/src/virtManager/host.py
--- virt-manager-0.5.3.orig/src/virtManager/host.py 2008-01-10 18:17:51.000000000 -0700
+++ virt-manager-0.5.3/src/virtManager/host.py 2008-04-04 15:54:26.000000000 -0600
@@ -75,6 +75,9 @@
self.window.get_widget("performance-table").attach(self.memory_usage_graph, 1, 2, 1, 2)
self.add = None
+ # turn off "Virtual Networks" tab, until it is implemented...
+ self.window.get_widget("details-tabs").get_nth_page(1).hide()
+
self.window.get_widget("details-tabs").get_nth_page(2).hide()
self.conn.connect("net-added", self.repopulate_networks)

View File

@ -1,45 +1,41 @@
diff -Nuar virt-manager-0.5.3.orig/src/virtManager/engine.py virt-manager-0.5.3/src/virtManager/engine.py
--- virt-manager-0.5.3.orig/src/virtManager/engine.py 2008-03-12 15:21:57.000000000 -0600
+++ virt-manager-0.5.3/src/virtManager/engine.py 2008-03-12 17:43:02.000000000 -0600
@@ -34,7 +34,7 @@
diff -Nuar virt-manager-0.7.0.orig//src/virtManager/engine.py virt-manager-0.7.0//src/virtManager/engine.py
--- virt-manager-0.7.0.orig//src/virtManager/engine.py 2009-03-09 21:38:37.000000000 -0600
+++ virt-manager-0.7.0//src/virtManager/engine.py 2009-04-17 11:48:12.000000000 -0600
@@ -33,7 +33,8 @@
from virtManager.manager import vmmManager
from virtManager.details import vmmDetails
from virtManager.console import vmmConsole
from virtManager.asyncjob import vmmAsyncJob
-from virtManager.create import vmmCreate
+#from virtManager.create import vmmCreate
+from vminstall.gtk.interface import VMCreate as vmmCreate
from virtManager.serialcon import vmmSerialConsole
from virtManager.host import vmmHost
from virtManager.error import vmmErrorDialog
@@ -311,16 +311,25 @@
def show_manager(self):
self.get_manager().show()
import virtManager.util as util
@@ -341,13 +342,24 @@
return False
return True
- def show_create(self, uri):
- con = self.get_connection(uri)
+ def _vmmcreate_closing(self,signal,key):
+ self.windowCreate= None;
- if self.connections[uri]["windowCreate"] == None:
- create = vmmCreate(self.get_config(), con)
+ def show_create(self, uri):
+ if self.windowCreate == None:
+ self.windowCreate = None
+
def show_create(self, uri):
if self.windowCreate == None:
- create = vmmCreate(self.get_config(), self)
+ create = vmmCreate(virtman=True,key=0)
create.connect("action-show-console", self._do_show_console)
create.connect("action-show-terminal", self._do_show_terminal)
- create.connect("action-show-help", self._do_show_help)
- self.connections[uri]["windowCreate"] = create
- self.connections[uri]["windowCreate"].show()
+ create.connect("vmmcreate-closing", self._vmmcreate_closing)
+ self.windowCreate = create
self.windowCreate = create
- self.windowCreate.show(uri)
+ self.windowCreate.show()
+ else:
+ message_box = gtk.MessageDialog(None,
+ gtk.DIALOG_MODAL,
+ gtk.MESSAGE_WARNING,
+ gtk.BUTTONS_OK,
+ _("A new installation is already in progress.\n\nUse the YaST \"Create Virtual Machines\" utility for concurrent installations."))
+ gtk.DIALOG_MODAL,
+ gtk.MESSAGE_WARNING,
+ gtk.BUTTONS_OK,
+ _("A new installation is already in progress.\n\nUse the YaST \"Create Virtual Machines\" utility for concurrent installations."))
+ message_box.run()
+ message_box.destroy()
def add_connection(self, uri, readOnly=None):
def add_connection(self, uri, readOnly=None, autoconnect=False):
conn = vmmConnection(self.get_config(), uri, readOnly)

View File

@ -1,34 +0,0 @@
diff -Nuar virt-manager-0.5.3.orig/src/virtManager/connect.py virt-manager-0.5.3/src/virtManager/connect.py
--- virt-manager-0.5.3.orig/src/virtManager/connect.py 2008-02-12 16:34:35.000000000 -0700
+++ virt-manager-0.5.3/src/virtManager/connect.py 2008-02-12 16:35:05.000000000 -0700
@@ -95,7 +95,7 @@
pass
elif hv == HV_XEN:
if conn == CONN_LOCAL:
- uri = "xen"
+ uri = "xen:///"
if os.getuid() != 0:
readOnly = True
elif conn == CONN_TLS:
diff -Nuar virt-manager-0.5.3.orig/src/virt-manager.py.in virt-manager-0.5.3/src/virt-manager.py.in
--- virt-manager-0.5.3.orig/src/virt-manager.py.in 2008-02-12 16:34:35.000000000 -0700
+++ virt-manager-0.5.3/src/virt-manager.py.in 2008-02-12 16:38:48.000000000 -0700
@@ -172,7 +172,7 @@
if engine.config.get_connections() is None or len(engine.config.get_connections()) == 0:
tryuri = None
if os.path.exists("/var/lib/xend") and os.path.exists("/proc/xen"):
- tryuri = "xen"
+ tryuri = "xen:///"
elif os.path.exists("/usr/bin/qemu"):
if os.getuid() == 0:
tryuri = "qemu:///system"
@@ -248,6 +248,9 @@
gtk.window_set_default_icon_from_file(icon_dir + "/" + appname + "-icon.svg")
+ if options.uri != None and (options.uri.upper() == "XEN" or options.uri.upper().startswith("XEN:")):
+ options.uri = "xen:///"
+
if options.show and options.uri==None:
raise OptionValueError("can't use --show-* options without --connect")