Accepting request 259885 from Virtualization

Automatic submission by obs-autosubmit

OBS-URL: https://build.opensuse.org/request/show/259885
OBS-URL: https://build.opensuse.org/package/show/openSUSE:Factory/virt-manager?expand=0&rev=113
This commit is contained in:
Stephan Kulow 2014-11-06 15:50:34 +00:00 committed by Git OBS Bridge
commit af0149f069
97 changed files with 442 additions and 2726 deletions

View File

@ -1,88 +0,0 @@
Subject: virt-manager: enable media detection for CD/ISO images
From: Giuseppe Scrivano gscrivan@redhat.com Tue Mar 25 14:31:08 2014 +0100
Date: Wed Mar 26 16:12:13 2014 +0100:
Git: 6b5171031e7e688fd9c1c44aeec599dcb1a9e6cd
Signed-off-by: Giuseppe Scrivano <gscrivan@redhat.com>
Index: virt-manager-1.0.1/virtManager/create.py
===================================================================
--- virt-manager-1.0.1.orig/virtManager/create.py
+++ virt-manager-1.0.1/virtManager/create.py
@@ -132,7 +132,7 @@ class vmmCreate(vmmGObjectUI):
"on_install_url_box_changed": self.url_box_changed,
"on_install_local_cdrom_toggled": self.toggle_local_cdrom,
"on_install_local_cdrom_combo_changed": self.detect_media_os,
- "on_install_local_box_changed": self.detect_media_os,
+ "on_install_local_box_changed": self.local_box_changed,
"on_install_local_browse_clicked": self.browse_iso,
"on_install_import_browse_clicked": self.browse_import,
"on_install_app_browse_clicked": self.browse_app,
@@ -543,6 +543,11 @@ class vmmCreate(vmmGObjectUI):
self.mediacombo = vmmMediaCombo(self.conn, self.builder, self.topwin,
MEDIA_CDROM)
+ def mediacombo_changed(src):
+ ignore = src
+ self.mediaDetected = False
+ self.detect_media_os()
+ self.mediacombo.combo.connect("changed", mediacombo_changed)
self.mediacombo.reset_state()
self.widget("install-local-cdrom-align").add(
self.mediacombo.top_box)
@@ -1109,16 +1114,22 @@ class vmmCreate(vmmGObjectUI):
self.change_caps(self.capsguest.os_type, arch)
- def url_box_changed(self, ignore):
+ def media_box_changed(self, widget):
self.mediaDetected = False
- # If the url_entry has focus, don't fire detect_media_os, it means
+ # If the widget has focus, don't fire detect_media_os, it means
# the user is probably typing
- if self.widget("install-url-box").get_child().has_focus():
+ if self.widget(widget).get_child().has_focus():
return
self.detect_media_os()
+ def url_box_changed(self, ignore):
+ self.media_box_changed("install-url-box")
+
+ def local_box_changed(self, ignore):
+ self.media_box_changed("install-local-box")
+
def should_detect_media(self):
return (self.is_detect_active() and not self.mediaDetected)
@@ -1182,6 +1193,7 @@ class vmmCreate(vmmGObjectUI):
is_active = src.get_active()
if is_active and self.mediacombo.get_path():
# Local CDROM was selected with media preset, detect distro
+ self.mediaDetected = False
self.detect_media_os()
self.widget("install-local-cdrom-align").set_sensitive(is_active)
@@ -1190,6 +1202,8 @@ class vmmCreate(vmmGObjectUI):
uselocal = src.get_active()
self.widget("install-local-box").set_sensitive(uselocal)
self.widget("install-local-browse").set_sensitive(uselocal)
+ self.mediaDetected = False
+ self.detect_media_os()
def detect_visibility_changed(self, src, ignore=None):
is_visible = src.get_visible()
@@ -1241,11 +1255,7 @@ class vmmCreate(vmmGObjectUI):
INSTALL_PAGE_CONTAINER_OS]
osbox.set_visible(iscontainer)
- # Detection only works/ is valid for URL,
- # FIXME: Also works for CDROM if running as root (since we need to
- # mount the iso/cdrom), but we should probably make this work for
- # more distros (like windows) before we enable it
- if (instpage == INSTALL_PAGE_URL):
+ if instpage in (INSTALL_PAGE_ISO, INSTALL_PAGE_URL):
detectbox.show()
else:
detectbox.hide()

View File

@ -1,61 +0,0 @@
Subject: virtManager: hide "Remove Hardware" for non-devices
From: Giuseppe Scrivano gscrivan@redhat.com Thu Mar 27 12:40:42 2014 +0100
Date: Thu Mar 27 13:50:06 2014 +0100:
Git: 37eecb215d137ffb6e98f36adfa37f96220d7287
The menu item "Remove Hardware" in the Overview window is valid only
when a hardware device is selected, hide it in any other case.
Closes: https://bugzilla.redhat.com/show_bug.cgi?id=1081373
Signed-off-by: Giuseppe Scrivano <gscrivan@redhat.com>
diff --git a/virtManager/details.py b/virtManager/details.py
index c1833ae..8c72efa 100644
--- a/virtManager/details.py
+++ b/virtManager/details.py
@@ -530,6 +530,7 @@ class vmmDetails(vmmGObjectUI):
self.oldhwkey = None
self.addhwmenu = None
+ self._addhwmenuitems = None
self.keycombo_menu = None
self.init_menus()
self.init_details()
@@ -706,6 +707,7 @@ class vmmDetails(vmmGObjectUI):
self.vm = None
self.conn = None
self.addhwmenu = None
+ self._addhwmenuitems = None
self.gfxdetails.cleanup()
self.gfxdetails = None
@@ -801,8 +803,9 @@ class vmmDetails(vmmGObjectUI):
rmHW.show()
rmHW.connect("activate", self.remove_xml_dev)
- self.addhwmenu.add(addHW)
- self.addhwmenu.add(rmHW)
+ self._addhwmenuitems = {"add" : addHW, "remove" : rmHW}
+ for i in self._addhwmenuitems.values():
+ self.addhwmenu.add(i)
# Don't allowing changing network/disks for Dom0
dom0 = self.vm.is_management_domain()
@@ -1075,6 +1078,16 @@ class vmmDetails(vmmGObjectUI):
if event.button != 3:
return
+ devobj = self.get_hw_selection(HW_LIST_COL_DEVICE)
+ if not devobj:
+ return
+
+ rmdev = self._addhwmenuitems["remove"]
+ if hasattr(devobj, "virtual_device_type"):
+ rmdev.show()
+ else:
+ rmdev.hide()
+
self.addhwmenu.popup(None, None, None, None, 0, event.time)
def control_fullscreen(self, src):

View File

@ -1,28 +0,0 @@
Subject: createinterface: set right ip address for ipv6
From: Chen Hanxiao chenhanxiao@cn.fujitsu.com Thu Mar 27 22:01:21 2014 +0800
Date: Thu Mar 27 22:01:21 2014 +0800:
Git: 58d8795b27b792bbbc89b93ac9333253df205943
We use v4_addr for building ipv6 addr.
This patch will use right ip address for ipv6.
Signed-off-by: Chen Hanxiao <chenhanxiao@cn.fujitsu.com>
diff --git a/virtManager/createinterface.py b/virtManager/createinterface.py
index 77fb6e1..11fc9b2 100644
--- a/virtManager/createinterface.py
+++ b/virtManager/createinterface.py
@@ -818,9 +818,10 @@ class vmmCreateInterface(vmmGObjectUI):
if not ipv6.dhcp:
if v6_gate:
ipv6.gateway = v6_gate
- addr, prefix = build_ip(v4_addr)
- if addr:
- ipv6.add_ip(addr, prefix)
+ for v6_addr in v6_addrlist:
+ addr, prefix = build_ip(v6_addr)
+ if addr:
+ ipv6.add_ip(addr, prefix)
return [is_manual, copy_name, ipv4, ipv6, proto_xml]

View File

@ -1,31 +0,0 @@
Subject: createinterface: raise value error when no ip addr set
From: Chen Hanxiao chenhanxiao@cn.fujitsu.com Sun Mar 30 07:47:22 2014 +0800
Date: Sun Mar 30 07:47:57 2014 +0800:
Git: 119025e1ef5e6b47d634c1e05d9143f0092da5c2
We could set blank ip address
IP setting->Configure->Mode (static), then press "OK".
And libvirt will throw an error not very helpful:
Error creating interface: 'Could not define interface:
XML error: could not get interface XML description:
XML invalid - Element protocol failed to validate attributes.
This patch will forbid setting an empty ip address.
Signed-off-by: Chen Hanxiao <chenhanxiao@cn.fujitsu.com>
diff --git a/virtManager/createinterface.py b/virtManager/createinterface.py
index 11fc9b2..4588bba 100644
--- a/virtManager/createinterface.py
+++ b/virtManager/createinterface.py
@@ -764,7 +764,7 @@ class vmmCreateInterface(vmmGObjectUI):
def build_ip_info(self):
def build_ip(addr_str):
if not addr_str:
- return None, None
+ raise ValueError(_("Please enter an IP address"))
ret = addr_str.rsplit("/", 1)
address = ret[0]
prefix = None

View File

@ -1,31 +0,0 @@
Subject: gfxdetails: Show port number for active autoport VM (bz 1081614)
From: Cole Robinson crobinso@redhat.com Sun Mar 30 17:34:26 2014 -0400
Date: Sun Mar 30 17:34:26 2014 -0400:
Git: 7f802e287c21a6395a0e9f5435c1eab78b2ce6b5
diff --git a/virtManager/gfxdetails.py b/virtManager/gfxdetails.py
index 0141f7e..d6865a8 100644
--- a/virtManager/gfxdetails.py
+++ b/virtManager/gfxdetails.py
@@ -154,15 +154,20 @@ class vmmGraphicsDetails(vmmGObjectUI):
auto = self.widget(basename + "-auto")
widget = self.widget(basename)
auto.set_inconsistent(False)
+ label = auto.get_label().split(" (")[0]
if val == -1 or gfx.autoport:
auto.set_active(True)
+ if val and val != -1:
+ label += " (%s %s)" % (_("Port"), val)
elif val is None:
auto.set_inconsistent(True)
else:
auto.set_active(False)
widget.set_value(val)
+ auto.set_label(label)
+
gtype = gfx.type
is_vnc = (gtype == "vnc")
is_sdl = (gtype == "sdl")

View File

@ -1,62 +0,0 @@
Subject: interface: check ip address format
From: Chen Hanxiao chenhanxiao@cn.fujitsu.com Mon Mar 31 22:25:36 2014 +0800
Date: Mon Mar 31 22:25:36 2014 +0800:
Git: 89c45af26deca41cba5dffcc4cae5e653fedc89a
Signed-off-by: Chen Hanxiao <chenhanxiao@cn.fujitsu.com>
Index: virt-manager-1.0.1/tests/xmlparse-xml/interface-test-bridge-ip-out.xml
===================================================================
--- virt-manager-1.0.1.orig/tests/xmlparse-xml/interface-test-bridge-ip-out.xml
+++ virt-manager-1.0.1/tests/xmlparse-xml/interface-test-bridge-ip-out.xml
@@ -15,7 +15,7 @@
</protocol>
<protocol family="ipv6">
<ip address="fe99::215:58ff:fe6e:5" prefix="32"/>
- <ip address="foobar" prefix="38"/>
+ <ip address="2002::" prefix="38"/>
<route gateway="1.2.3.4"/>
</protocol>
</interface>
Index: virt-manager-1.0.1/tests/xmlparse.py
===================================================================
--- virt-manager-1.0.1.orig/tests/xmlparse.py
+++ virt-manager-1.0.1/tests/xmlparse.py
@@ -958,7 +958,7 @@ class XMLParseTest(unittest.TestCase):
check("autoconf", True, False)
check = self._make_checker(iface.protocols[1].ips[1])
- check("address", "fe80::215:58ff:fe6e:5", "foobar")
+ check("address", "fe80::215:58ff:fe6e:5", "2002::")
check("prefix", 64, 38)
# Remove a child interface, verify it's data remains intact
Index: virt-manager-1.0.1/virtinst/interface.py
===================================================================
--- virt-manager-1.0.1.orig/virtinst/interface.py
+++ virt-manager-1.0.1/virtinst/interface.py
@@ -23,6 +23,7 @@ Classes for building and installing libv
import logging
import libvirt
+import ipaddr
from virtinst import util
from virtinst.xmlbuilder import XMLBuilder, XMLChildProperty, XMLProperty
@@ -32,7 +33,15 @@ class _IPAddress(XMLBuilder):
_XML_PROP_ORDER = ["address", "prefix"]
_XML_ROOT_NAME = "ip"
- address = XMLProperty("./@address")
+ ######################
+ # Validation helpers #
+ ######################
+
+ def _validate_ipaddr(self, addr):
+ ipaddr.IPAddress(addr)
+ return addr
+
+ address = XMLProperty("./@address", validate_cb=_validate_ipaddr)
prefix = XMLProperty("./@prefix", is_int=True)

View File

@ -1,108 +0,0 @@
Subject: connection: Hook into domain balloon event (bz 1081424)
From: Cole Robinson crobinso@redhat.com Mon Mar 31 12:43:49 2014 -0400
Date: Mon Mar 31 12:43:49 2014 -0400:
Git: adf3545671b155ca37c82bff0ab96d0c038ffee8
diff --git a/virtManager/connection.py b/virtManager/connection.py
index bc8a81f..27d5bd9 100644
--- a/virtManager/connection.py
+++ b/virtManager/connection.py
@@ -99,9 +99,9 @@ class vmmConnection(vmmGObject):
self._nodedev_capable = None
self.using_domain_events = False
- self._domain_cb_id = None
+ self._domain_cb_ids = []
self.using_network_events = False
- self._network_cb_id = None
+ self._network_cb_ids = []
self._xml_flags = {}
@@ -840,6 +840,16 @@ class vmmConnection(vmmGObject):
# event driven setup is hard, so we end up doing more polling than
# necessary on most events.
+ def _domain_xml_misc_event(self, conn, domain, *args):
+ # Just trigger a domain XML refresh for hotplug type events
+ ignore = conn
+ ignore = args
+
+ obj = self.vms.get(domain.UUIDString(), None)
+ if not obj:
+ return
+ self.idle_add(obj.refresh_xml, True)
+
def _domain_lifecycle_event(self, conn, domain, event, reason, userdata):
ignore = conn
ignore = reason
@@ -872,19 +882,41 @@ class vmmConnection(vmmGObject):
def _add_conn_events(self):
try:
- self._domain_cb_id = self.get_backend().domainEventRegisterAny(
+ self._domain_cb_ids.append(
+ self.get_backend().domainEventRegisterAny(
None, libvirt.VIR_DOMAIN_EVENT_ID_LIFECYCLE,
- self._domain_lifecycle_event, None)
+ self._domain_lifecycle_event, None))
self.using_domain_events = True
logging.debug("Using domain events")
except Exception, e:
self.using_domain_events = False
logging.debug("Error registering domain events: %s", e)
+ def _add_domain_xml_event(eventid, typestr):
+ if not self.using_domain_events:
+ return
+ try:
+ self._domain_cb_ids.append(
+ self.get_backend().domainEventRegisterAny(
+ None, eventid, self._domain_xml_misc_event, None))
+ except Exception, e:
+ logging.debug("Error registering domain %s event: %s",
+ typestr, e)
+
+ _add_domain_xml_event(
+ getattr(libvirt, "VIR_DOMAIN_EVENT_ID_BALLOON_CHANGE", 13),
+ "balloon")
+ _add_domain_xml_event(
+ getattr(libvirt, "VIR_DOMAIN_EVENT_ID_TRAY_CHANGE", 10), "tray")
+ _add_domain_xml_event(
+ getattr(libvirt, "VIR_DOMAIN_EVENT_ID_DEVICE_REMOVED", 15),
+ "device removed")
+
try:
eventid = getattr(libvirt, "VIR_NETWORK_EVENT_ID_LIFECYCLE", 0)
- self._network_cb_id = self.get_backend().networkEventRegisterAny(
- None, eventid, self._network_lifecycle_event, None)
+ self._network_cb_ids.append(
+ self.get_backend().networkEventRegisterAny(
+ None, eventid, self._network_lifecycle_event, None))
self.using_network_events = True
logging.debug("Using network events")
except Exception, e:
@@ -936,15 +968,13 @@ class vmmConnection(vmmGObject):
try:
if not self._backend.is_closed():
- if self._domain_cb_id is not None:
- self._backend.domainEventDeregisterAny(
- self._domain_cb_id)
- self._domain_cb_id = None
-
- if self._network_cb_id is not None:
- self._backend.networkEventDeregisterAny(
- self._network_cb_id)
- self._network_cb_id = None
+ for eid in self._domain_cb_ids:
+ self._backend.domainEventDeregisterAny(eid)
+ self._domain_cb_ids = []
+
+ for eid in self._network_cb_ids:
+ self._backend.networkEventDeregisterAny(eid)
+ self._network_cb_ids = []
except:
logging.debug("Failed to deregister events in conn cleanup",
exc_info=True)

View File

@ -1,37 +0,0 @@
Subject: details: Fix showing vcpus values in 'customize' dialog (bz 1083903)
From: Cole Robinson crobinso@redhat.com Thu Apr 3 10:30:37 2014 -0400
Date: Thu Apr 3 10:30:37 2014 -0400:
Git: ee6a541167b787a84cc5c7e553089cbd5ab9ada3
Index: virt-manager-1.0.1/virtManager/details.py
===================================================================
--- virt-manager-1.0.1.orig/virtManager/details.py
+++ virt-manager-1.0.1/virtManager/details.py
@@ -2546,6 +2546,12 @@ class vmmDetails(vmmGObjectUI):
self.vm.network_traffic_vector())
def refresh_config_cpu(self):
+ # This bit needs to come first, since CPU values can be affected
+ # by whether topology is enabled
+ cpu = self.vm.get_cpu_config()
+ show_top = bool(cpu.sockets or cpu.cores or cpu.threads)
+ self.widget("cpu-topology-enable").set_active(show_top)
+
conn = self.vm.conn
host_active_count = conn.host_active_processor_count()
maxvcpus = self.vm.vcpu_max_count()
@@ -2563,13 +2569,10 @@ class vmmDetails(vmmGObjectUI):
self.widget("config-vcpus-warn-box").set_visible(warn)
# CPU model config
- cpu = self.vm.get_cpu_config()
- show_top = bool(cpu.sockets or cpu.cores or cpu.threads)
sockets = cpu.sockets or 1
cores = cpu.cores or 1
threads = cpu.threads or 1
- self.widget("cpu-topology-enable").set_active(show_top)
self.widget("cpu-sockets").set_value(sockets)
self.widget("cpu-cores").set_value(cores)
self.widget("cpu-threads").set_value(threads)

View File

@ -1,293 +0,0 @@
Subject: details: Fix changing graphics type (bz 1083903)
From: Cole Robinson crobinso@redhat.com Thu Apr 3 10:53:54 2014 -0400
Date: Thu Apr 3 10:53:54 2014 -0400:
Git: 932e6e00bb08647800a62e59f61c8adee9c5de59
And clean up the API usage to avoid these types of issues in the future.
Index: virt-manager-1.0.1/virtManager/addhardware.py
===================================================================
--- virt-manager-1.0.1.orig/virtManager/addhardware.py
+++ virt-manager-1.0.1/virtManager/addhardware.py
@@ -905,12 +905,12 @@ class vmmAddHardware(vmmGObjectUI):
# Input getters
def get_config_input(self):
- row = uiutil.get_list_selection(self.widget("input-type"))
+ row = uiutil.get_list_selection(self.widget("input-type"), None)
return row[1], row[2]
# Network getters
def get_config_net_model(self):
- return uiutil.get_list_selection(self.widget("net-model"))[0]
+ return uiutil.get_list_selection(self.widget("net-model"), 0)
def get_config_macaddr(self):
macaddr = None
@@ -933,7 +933,7 @@ class vmmAddHardware(vmmGObjectUI):
return usb_info
def get_config_host_device_info(self):
- return uiutil.get_list_selection(self.widget("host-device"))
+ return uiutil.get_list_selection(self.widget("host-device"), None)
# Video Getters
def get_config_video_model(self):
@@ -1016,7 +1016,7 @@ class vmmAddHardware(vmmGObjectUI):
uiutil.set_list_selection(self.widget("hw-list"), page)
def get_hw_selection(self):
- return uiutil.get_list_selection(self.widget("hw-list"))
+ return uiutil.get_list_selection(self.widget("hw-list"), None)
def update_char_device_type_model(self):
stable_blacklist = ["pipe", "udp"]
Index: virt-manager-1.0.1/virtManager/create.py
===================================================================
--- virt-manager-1.0.1.orig/virtManager/create.py
+++ virt-manager-1.0.1/virtManager/create.py
@@ -940,8 +940,8 @@ class vmmCreate(vmmGObjectUI):
return self.widget("create-vm-name").get_text()
def get_config_machine(self):
- return uiutil.get_list_selection(self.widget("config-machine"),
- rowindex=0, check_visible=True)
+ return uiutil.get_list_selection(self.widget("config-machine"), 0,
+ check_visible=True)
def is_install_page(self):
notebook = self.widget("create-pages")
@@ -965,8 +965,10 @@ class vmmCreate(vmmGObjectUI):
return INSTALL_PAGE_CONTAINER_OS
def get_config_os_info(self):
- drow = uiutil.get_list_selection(self.widget("install-os-type"))
- vrow = uiutil.get_list_selection(self.widget("install-os-version"))
+ drow = uiutil.get_list_selection(
+ self.widget("install-os-type"), None)
+ vrow = uiutil.get_list_selection(
+ self.widget("install-os-version"), None)
distro = None
dlabel = None
variant = None
@@ -1153,7 +1155,8 @@ class vmmCreate(vmmGObjectUI):
self.detect_media_os()
def _selected_os_row(self):
- return uiutil.get_list_selection(self.widget("install-os-type"))
+ return uiutil.get_list_selection(
+ self.widget("install-os-type"), None)
def change_os_type(self, box):
ignore = box
Index: virt-manager-1.0.1/virtManager/createinterface.py
===================================================================
--- virt-manager-1.0.1.orig/virtManager/createinterface.py
+++ virt-manager-1.0.1/virtManager/createinterface.py
@@ -775,7 +775,7 @@ class vmmCreateInterface(vmmGObjectUI):
is_manual = self.widget("ip-do-manual").get_active()
copy_row = uiutil.get_list_selection(
- self.widget("ip-copy-interface-combo"))
+ self.widget("ip-copy-interface-combo"), None)
v4_mode = self.widget("ipv4-mode").get_active()
v4_addr = self.widget("ipv4-address").get_text()
Index: virt-manager-1.0.1/virtManager/details.py
===================================================================
--- virt-manager-1.0.1.orig/virtManager/details.py
+++ virt-manager-1.0.1/virtManager/details.py
@@ -1109,7 +1109,7 @@ class vmmDetails(vmmGObjectUI):
self.widget("toolbar-box").hide()
def get_boot_selection(self):
- return uiutil.get_list_selection(self.widget("config-boot-list"))
+ return uiutil.get_list_selection(self.widget("config-boot-list"), None)
def set_hw_selection(self, page, disable_apply=True):
if disable_apply:
@@ -1117,7 +1117,7 @@ class vmmDetails(vmmGObjectUI):
uiutil.set_list_selection(self.widget("hw-list"), page)
def get_hw_row(self):
- return uiutil.get_list_selection(self.widget("hw-list"))
+ return uiutil.get_list_selection(self.widget("hw-list"), None)
def get_hw_selection(self, field):
row = self.get_hw_row()
Index: virt-manager-1.0.1/virtManager/fsdetails.py
===================================================================
--- virt-manager-1.0.1.orig/virtManager/fsdetails.py
+++ virt-manager-1.0.1/virtManager/fsdetails.py
@@ -155,16 +155,16 @@ class vmmFSDetails(vmmGObjectUI):
return self._dev
def get_config_fs_mode(self):
- return uiutil.get_list_selection(self.widget("fs-mode-combo"),
- rowindex=0, check_visible=True)
+ return uiutil.get_list_selection(self.widget("fs-mode-combo"), 0,
+ check_visible=True)
def get_config_fs_wrpolicy(self):
- return uiutil.get_list_selection(self.widget("fs-wrpolicy-combo"),
- rowindex=0, check_visible=True)
+ return uiutil.get_list_selection(self.widget("fs-wrpolicy-combo"), 0,
+ check_visible=True)
def get_config_fs_type(self):
- return uiutil.get_list_selection(self.widget("fs-type-combo"),
- rowindex=0, check_visible=True)
+ return uiutil.get_list_selection(self.widget("fs-type-combo"), 0,
+ check_visible=True)
def get_config_fs_readonly(self):
if not self.widget("fs-readonly").is_visible():
@@ -172,12 +172,12 @@ class vmmFSDetails(vmmGObjectUI):
return self.widget("fs-readonly").get_active()
def get_config_fs_driver(self):
- return uiutil.get_list_selection(self.widget("fs-driver-combo"),
- rowindex=0, check_visible=True)
+ return uiutil.get_list_selection(self.widget("fs-driver-combo"), 0,
+ check_visible=True)
def get_config_fs_format(self):
- return uiutil.get_list_selection(self.widget("fs-format-combo"),
- rowindex=0, check_visible=True)
+ return uiutil.get_list_selection(self.widget("fs-format-combo"), 0,
+ check_visible=True)
# Setters
def set_dev(self, dev):
Index: virt-manager-1.0.1/virtManager/gfxdetails.py
===================================================================
--- virt-manager-1.0.1.orig/virtManager/gfxdetails.py
+++ virt-manager-1.0.1/virtManager/gfxdetails.py
@@ -134,9 +134,9 @@ class vmmGraphicsDetails(vmmGObjectUI):
self.widget("graphics-password-chk").set_active(False)
def get_values(self):
- gtype = uiutil.get_list_selection(self.widget("graphics-type"))
+ gtype = uiutil.get_list_selection(self.widget("graphics-type"), 0)
port, tlsport = self._get_config_graphics_ports()
- addr = uiutil.get_list_selection(self.widget("graphics-address"))
+ addr = uiutil.get_list_selection(self.widget("graphics-address"), 0)
keymap = uiutil.get_combo_entry(self.widget("graphics-keymap"))
if keymap == "auto":
keymap = None
Index: virt-manager-1.0.1/virtManager/manager.py
===================================================================
--- virt-manager-1.0.1.orig/virtManager/manager.py
+++ virt-manager-1.0.1/virtManager/manager.py
@@ -427,7 +427,7 @@ class vmmManager(vmmGObjectUI):
##################
def current_row(self):
- return uiutil.get_list_selection(self.widget("vm-list"))
+ return uiutil.get_list_selection(self.widget("vm-list"), None)
def current_vm(self):
row = self.current_row()
Index: virt-manager-1.0.1/virtManager/migrate.py
===================================================================
--- virt-manager-1.0.1.orig/virtManager/migrate.py
+++ virt-manager-1.0.1/virtManager/migrate.py
@@ -184,7 +184,7 @@ class vmmMigrateDialog(vmmGObjectUI):
self.reset_state()
def destconn_changed(self, src):
- row = uiutil.get_list_selection(src)
+ row = uiutil.get_list_selection(src, None)
tooltip = ""
if row:
tooltip = _("A valid destination connection must be selected.")
@@ -212,7 +212,7 @@ class vmmMigrateDialog(vmmGObjectUI):
self.widget("migrate-port").set_sensitive(enable)
def get_config_destconn(self):
- row = uiutil.get_list_selection(self.widget("migrate-dest"))
+ row = uiutil.get_list_selection(self.widget("migrate-dest"), None)
if not row or not row[2]:
return None
return row[1]
Index: virt-manager-1.0.1/virtManager/netlist.py
===================================================================
--- virt-manager-1.0.1.orig/virtManager/netlist.py
+++ virt-manager-1.0.1/virtManager/netlist.py
@@ -284,13 +284,11 @@ class vmmNetworkList(vmmGObjectUI):
###############
def get_network_row(self):
- return uiutil.get_list_selection(self.widget("net-source"))
+ return uiutil.get_list_selection(self.widget("net-source"), None)
def get_network_selection(self):
- net_list = self.widget("net-source")
bridge_entry = self.widget("net-bridge-name")
-
- row = uiutil.get_list_selection(net_list)
+ row = self.get_network_row()
if not row:
return None, None, None
@@ -472,9 +470,9 @@ class vmmNetworkList(vmmGObjectUI):
return
def _on_net_source_changed(self, src):
+ ignore = src
self._emit_changed()
-
- row = uiutil.get_list_selection(src)
+ row = self.get_network_row()
if not row:
return
Index: virt-manager-1.0.1/virtManager/storagebrowse.py
===================================================================
--- virt-manager-1.0.1.orig/virtManager/storagebrowse.py
+++ virt-manager-1.0.1/virtManager/storagebrowse.py
@@ -221,7 +221,7 @@ class vmmStorageBrowser(vmmGObjectUI):
return data["enable_create"]
def current_pool(self):
- row = uiutil.get_list_selection(self.widget("pool-list"))
+ row = uiutil.get_list_selection(self.widget("pool-list"), None)
if not row:
return
try:
@@ -232,7 +232,7 @@ class vmmStorageBrowser(vmmGObjectUI):
def current_vol_row(self):
if not self.current_pool():
return
- return uiutil.get_list_selection(self.widget("vol-list"))
+ return uiutil.get_list_selection(self.widget("vol-list"), None)
def current_vol(self):
pool = self.current_pool()
Index: virt-manager-1.0.1/virtManager/uiutil.py
===================================================================
--- virt-manager-1.0.1.orig/virtManager/uiutil.py
+++ virt-manager-1.0.1/virtManager/uiutil.py
@@ -58,9 +58,11 @@ def spin_get_helper(widget):
return adj.get_value()
-def get_list_selection(widget, rowindex=None, check_visible=False):
+def get_list_selection(widget, rowindex, check_visible=False):
"""
- Helper to simplify getting the selected row in a list/tree/combo
+ Helper to simplify getting the selected row and value in a list/tree/combo
+
+ If rowindex is None, return the whole row.
"""
if check_visible and not widget.get_visible():
return None
@@ -145,7 +147,7 @@ def get_combo_entry(combo, rowidx=0):
Helper to get the value specified in a combo box, with or
without and entry
"""
- row = get_list_selection(combo)
+ row = get_list_selection(combo, None)
if row:
return row[rowidx]
if not combo.get_has_entry():

View File

@ -1,44 +0,0 @@
Subject: createpool: Clarify iscsi IQN fields (bz 1084011)
From: Cole Robinson crobinso@redhat.com Thu Apr 3 11:19:03 2014 -0400
Date: Thu Apr 3 11:19:03 2014 -0400:
Git: 8fa2aad1d31f811bb09505595c6401bdf6b90d78
Index: virt-manager-1.0.1/ui/createpool.ui
===================================================================
--- virt-manager-1.0.1.orig/ui/createpool.ui
+++ virt-manager-1.0.1/ui/createpool.ui
@@ -315,7 +315,7 @@
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="xalign">1</property>
- <property name="label" translatable="yes">_Source Path:</property>
+ <property name="label" translatable="yes">sourcep:</property>
<property name="use_underline">True</property>
</object>
<packing>
@@ -330,7 +330,7 @@
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="xalign">1</property>
- <property name="label" translatable="yes">_IQN:</property>
+ <property name="label" translatable="yes">Initiator _IQN:</property>
<property name="use_underline">True</property>
<property name="mnemonic_widget">pool-iqn-chk</property>
</object>
Index: virt-manager-1.0.1/virtManager/createpool.py
===================================================================
--- virt-manager-1.0.1.orig/virtManager/createpool.py
+++ virt-manager-1.0.1/virtManager/createpool.py
@@ -277,6 +277,11 @@ class vmmCreatePool(vmmGObjectUI):
show_row("pool-iqn", iqn)
show_row("pool-source-name", src_name)
+ if iqn:
+ self.widget("pool-source-label").set_label(_("_Source IQN:"))
+ else:
+ self.widget("pool-source-label").set_label(_("_Source Path:"))
+
if tgt:
self.widget("pool-target-path").get_child().set_text(
self._pool.target_path)

View File

@ -1,24 +0,0 @@
Subject: addstorage: removing whitespace for storage path
From: Chen Hanxiao chenhanxiao@cn.fujitsu.com Wed Apr 9 23:33:00 2014 +0800
Date: Wed Apr 9 23:33:00 2014 +0800:
Git: e0215dec6104bd9899d7f59677a45af498c0fd65
virtinst util validate_name can't accept name
with whitespaces aroud it.
Remove it when getting text from UI.
Signed-off-by: Chen Hanxiao <chenhanxiao@cn.fujitsu.com>
Index: virt-manager-1.0.1/virtManager/addstorage.py
===================================================================
--- virt-manager-1.0.1.orig/virtManager/addstorage.py
+++ virt-manager-1.0.1/virtManager/addstorage.py
@@ -320,7 +320,7 @@ class vmmAddStorage(vmmGObjectUI):
if is_default:
path = self.get_default_path(vmname, collidelist)
else:
- path = self.widget("config-storage-entry").get_text()
+ path = self.widget("config-storage-entry").get_text().strip()
if is_default:
path = self._check_ideal_path(path, vmname, collidelist)

View File

@ -1,25 +0,0 @@
Subject: details: use uniformed expression of "Default"
From: Chen Hanxiao chenhanxiao@cn.fujitsu.com Mon Apr 14 20:08:00 2014 +0800
Date: Mon Apr 14 20:08:00 2014 +0800:
Git: 4ccb1d862b5499b7488a0587735a1941aa1f1a07
We use both "Default" and "default" for controllers
if no controller model needed.
They should be the same expression and "Default"
is a better choice.
Signed-off-by: Chen Hanxiao <chenhanxiao@cn.fujitsu.com>
Index: virt-manager-1.0.1/virtManager/details.py
===================================================================
--- virt-manager-1.0.1.orig/virtManager/details.py
+++ virt-manager-1.0.1/virtManager/details.py
@@ -3048,7 +3048,7 @@ class vmmDetails(vmmGObjectUI):
self.widget("config-remove").set_sensitive(True)
uiutil.set_combo_entry(self.widget("controller-model"),
- dev.model or "default")
+ dev.model or "Default")
def refresh_filesystem_page(self):
dev = self.get_hw_selection(HW_LIST_COL_DEVICE)

View File

@ -1,55 +0,0 @@
Subject: virtinst: early detect ftp connection errors
From: Giuseppe Scrivano gscrivan@redhat.com Mon Apr 14 14:49:21 2014 +0200
Date: Mon Apr 14 15:20:18 2014 +0200:
Git: 1d312a520e92e89da1b4d958b9de0270eecc6b4b
It fixes two problems:
i) "ftp://" was accepted as valid URL but then it causes this
exception:
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/usr/lib64/python2.7/ftplib.py", line 387, in login
resp = self.sendcmd('USER ' + user)
File "/usr/lib64/python2.7/ftplib.py", line 243, in sendcmd
self.putcmd(cmd)
File "/usr/lib64/python2.7/ftplib.py", line 178, in putcmd
self.putline(line)
File "/usr/lib64/python2.7/ftplib.py", line 173, in putline
self.sock.sendall(line)
AttributeError: 'NoneType' object has no attribute 'sendall'
ii) only a cryptic error message "Unable to complete install: '[Errno
-2] Name or service not known'" was showed to users when the DNS
lookup failed. The exception is now intercepted and decorated with
more information.
Closes: https://bugzilla.redhat.com/show_bug.cgi?id=1086554
Signed-off-by: Giuseppe Scrivano <gscrivan@redhat.com>
diff --git a/virtinst/urlfetcher.py b/virtinst/urlfetcher.py
index 7075929..3f2744b 100644
--- a/virtinst/urlfetcher.py
+++ b/virtinst/urlfetcher.py
@@ -151,9 +151,16 @@ class _FTPImageFetcher(_URIImageFetcher):
self.ftp = None
def prepareLocation(self):
- url = urlparse.urlparse(self._make_path(""))
- self.ftp = ftplib.FTP(url[1])
- self.ftp.login()
+ try:
+ url = urlparse.urlparse(self._make_path(""))
+ if not url[1]:
+ raise ValueError(_("Invalid install location"))
+ self.ftp = ftplib.FTP(url[1])
+ self.ftp.login()
+ except Exception, e:
+ raise ValueError(_("Opening URL %s failed: %s.") %
+ (self.location, str(e)))
+
def hasFile(self, filename):
path = self._make_path(filename)

View File

@ -1,24 +0,0 @@
Subject: details: hiding removebutton for USB controller
From: Chen Hanxiao chenhanxiao@cn.fujitsu.com Tue Apr 15 22:44:43 2014 +0800
Date: Tue Apr 15 22:44:43 2014 +0800:
Git: 86fc54be8e1ab40dd3fc7533dd23fe4787f8c5c8
commit 4c53debd8a8e4c193e211cfa5128c9e88392c0a1
break hiding "config-remove" for USB controller.
This patch will fix this issue.
Signed-off-by: Chen Hanxiao <chenhanxiao@cn.fujitsu.com>
Index: virt-manager-1.0.1/virtManager/details.py
===================================================================
--- virt-manager-1.0.1.orig/virtManager/details.py
+++ virt-manager-1.0.1/virtManager/details.py
@@ -3041,7 +3041,7 @@ class vmmDetails(vmmGObjectUI):
model.append(["ich9-ehci1", "USB 2"])
model.append(["nec-xhci", "USB 3"])
self.widget("config-remove").set_sensitive(False)
- if dev.type == virtinst.VirtualController.TYPE_SCSI:
+ elif dev.type == virtinst.VirtualController.TYPE_SCSI:
model.append(["default", "Default"])
model.append(["virtio-scsi", "VirtIO SCSI"])
else:

View File

@ -1,27 +0,0 @@
Subject: virtinst: display the domain for PCI devices
From: Giuseppe Scrivano gscrivan@redhat.com Tue Apr 15 16:22:33 2014 +0200
Date: Tue Apr 15 18:53:26 2014 +0200:
Git: e980d9c737284a5e098a35ea6d8a17155aaf5ce9
Closes: https://bugzilla.redhat.com/show_bug.cgi?id=1085499
Signed-off-by: Giuseppe Scrivano <gscrivan@redhat.com>
diff --git a/virtinst/nodedev.py b/virtinst/nodedev.py
index af6dbf7..17524dc 100644
--- a/virtinst/nodedev.py
+++ b/virtinst/nodedev.py
@@ -169,9 +169,10 @@ class PCIDevice(NodeDevice):
iommu_group = XMLProperty("./capability/iommuGroup/@number", is_int=True)
def pretty_name(self):
- devstr = "%.2X:%.2X:%X" % (int(self.bus),
- int(self.slot),
- int(self.function))
+ devstr = "%.4X:%.2X:%.2X:%X" % (int(self.domain),
+ int(self.bus),
+ int(self.slot),
+ int(self.function))
return "%s %s %s" % (devstr, self.vendor_name, self.product_name)

View File

@ -1,34 +0,0 @@
Subject: connection: Avoid some useless errors when connection closes
From: Cole Robinson crobinso@redhat.com Wed Apr 16 12:23:57 2014 -0400
Date: Wed Apr 16 12:29:24 2014 -0400:
Git: 873c22d19a23f1cc51845c82eb9dfe8b4d60b2d6
- Run the connection
- Restart libvirtd, connection is auto closed
- Re-run the connection
- Manually stop it, see errors in the logs about unknown event IDs
We need to unconditionally clear our event ID list
Index: virt-manager-1.0.1/virtManager/connection.py
===================================================================
--- virt-manager-1.0.1.orig/virtManager/connection.py
+++ virt-manager-1.0.1/virtManager/connection.py
@@ -970,14 +970,14 @@ class vmmConnection(vmmGObject):
if not self._backend.is_closed():
for eid in self._domain_cb_ids:
self._backend.domainEventDeregisterAny(eid)
- self._domain_cb_ids = []
-
for eid in self._network_cb_ids:
self._backend.networkEventDeregisterAny(eid)
- self._network_cb_ids = []
except:
logging.debug("Failed to deregister events in conn cleanup",
exc_info=True)
+ finally:
+ self._domain_cb_ids = []
+ self._network_cb_ids = []
self._backend.close()
self.record = []

View File

@ -1,23 +0,0 @@
Subject: virt-manager: display error on an empty installation URL
From: Giuseppe Scrivano gscrivan@redhat.com Thu Apr 17 12:00:09 2014 +0200
Date: Fri Apr 18 09:52:44 2014 +0200:
Git: b20462d86101c17bee5abf6ef55ec633622054c2
Closes: https://bugzilla.redhat.com/show_bug.cgi?id=1086529
Signed-off-by: Giuseppe Scrivano <gscrivan@redhat.com>
Index: virt-manager-1.0.1/virtManager/create.py
===================================================================
--- virt-manager-1.0.1.orig/virtManager/create.py
+++ virt-manager-1.0.1/virtManager/create.py
@@ -1308,7 +1308,8 @@ class vmmCreate(vmmGObjectUI):
if self.have_startup_error:
return
- if curpage == PAGE_INSTALL and self.should_detect_media():
+ if (curpage == PAGE_INSTALL and self.should_detect_media()
+ and self.get_config_detectable_media()):
# Make sure we have detected the OS before validating the page
self.detect_media_os(forward=True)
return

View File

@ -1,20 +0,0 @@
Subject: filesystem: Fix target validation when editing device (bz 1089422)
From: Cole Robinson crobinso@redhat.com Mon Apr 21 16:51:23 2014 -0400
Date: Mon Apr 21 16:51:57 2014 -0400:
Git: e6a67fc7099ac39257108080c8cbcfcdc6371e56
diff --git a/virtinst/devicefilesystem.py b/virtinst/devicefilesystem.py
index f516fed..28eda74 100644
--- a/virtinst/devicefilesystem.py
+++ b/virtinst/devicefilesystem.py
@@ -100,7 +100,8 @@ class VirtualFilesystem(VirtualDevice):
# actually a directory, it is merely a arbitrary string tag
# that is exported to the guest as a hint for where to mount
if (self.conn.is_qemu() and
- (self.type == self.TYPE_DEFAULT or
+ (self.type is None or
+ self.type == self.TYPE_DEFAULT or
self.type == self.TYPE_MOUNT)):
pass
elif not os.path.isabs(val):

View File

@ -1,25 +0,0 @@
Subject: serialcon: Hide scrollbar until there's something to scroll
From: Cole Robinson crobinso@redhat.com Fri Apr 25 19:13:44 2014 -0400
Date: Tue Apr 29 10:28:06 2014 -0400:
Git: 02f49be9e2f58032a7c124ea77d7983834dc80b6
Index: virt-manager-1.0.1/virtManager/serialcon.py
===================================================================
--- virt-manager-1.0.1.orig/virtManager/serialcon.py
+++ virt-manager-1.0.1/virtManager/serialcon.py
@@ -378,6 +378,14 @@ class vmmSerialConsole(vmmGObject):
self.box.append_page(self.error_label, Gtk.Label(""))
self.box.show_all()
+ scrollbar.hide()
+ scrollbar.get_adjustment().connect(
+ "changed", self._scrollbar_adjustment_changed, scrollbar)
+
+ def _scrollbar_adjustment_changed(self, adjustment, scrollbar):
+ scrollbar.set_visible(
+ adjustment.get_upper() > adjustment.get_page_size())
+
def _cleanup(self):
self.console.cleanup()
self.console = None

View File

@ -1,22 +0,0 @@
Subject: snapshots: Fix screenshot with qxl+spice (bz 1089780)
From: Cole Robinson crobinso@redhat.com Tue Apr 29 13:26:26 2014 -0400
Date: Tue Apr 29 13:26:26 2014 -0400:
Git: 2272166844f84943342fc097af927a09737ee57f
Index: virt-manager-1.0.1/virtManager/snapshots.py
===================================================================
--- virt-manager-1.0.1.orig/virtManager/snapshots.py
+++ virt-manager-1.0.1/virtManager/snapshots.py
@@ -379,6 +379,11 @@ class vmmSnapshotPage(vmmGObjectUI):
return
try:
+ # Perform two screenshots, because qemu + qxl has a bug where
+ # screenshot generally only shows the data from the previous
+ # screenshot request:
+ # https://bugs.launchpad.net/qemu/+bug/1314293
+ self._take_screenshot()
mime, sdata = self._take_screenshot()
except:
logging.exception("Error taking screenshot")

View File

@ -1,29 +0,0 @@
Subject: Fix using storage when the directory name contains whitespace (bz 1091384)
From: Cole Robinson crobinso@redhat.com Tue Apr 29 14:09:14 2014 -0400
Date: Tue Apr 29 14:09:14 2014 -0400:
Git: feadd98fed045ec40d5d5cf8250c7b05517eb9c9
diff --git a/virtinst/diskbackend.py b/virtinst/diskbackend.py
index 370996c..3d5aed8 100644
--- a/virtinst/diskbackend.py
+++ b/virtinst/diskbackend.py
@@ -137,13 +137,14 @@ def manage_path(conn, path):
return vol, pool, path_is_pool
dirname = os.path.dirname(path)
- poolname = StoragePool.find_free_name(
- conn, os.path.basename(dirname) or "pool")
+ poolname = os.path.basename(dirname).replace(" ", "_")
+ if not poolname:
+ poolname = "dirpool"
+ poolname = StoragePool.find_free_name(conn, poolname)
logging.debug("Attempting to build pool=%s target=%s", poolname, dirname)
poolxml = StoragePool(conn)
- poolxml.name = poolxml.find_free_name(
- conn, os.path.basename(dirname) or "dirpool")
+ poolxml.name = poolname
poolxml.type = poolxml.TYPE_DIR
poolxml.target_path = dirname
pool = poolxml.install(build=False, create=True, autostart=True)

View File

@ -1,41 +0,0 @@
Subject: packageutils: Fix install when one package is already installed (bz 1090181)
From: Cole Robinson crobinso@redhat.com Tue Apr 29 14:34:31 2014 -0400
Date: Tue Apr 29 14:34:31 2014 -0400:
Git: 15449eb12601ec1b88aa6d8ee52986ef5ab41ae2
Index: virt-manager-1.0.1/virtManager/packageutils.py
===================================================================
--- virt-manager-1.0.1.orig/virtManager/packageutils.py
+++ virt-manager-1.0.1/virtManager/packageutils.py
@@ -53,7 +53,12 @@ def check_packagekit(parent, errbox, pac
return
try:
- packagekit_install(parent, packages)
+ for package in packages[:]:
+ if packagekit_isinstalled(package):
+ packages.remove(package)
+
+ if packages:
+ packagekit_install(parent, packages)
except Exception, e:
# PackageKit frontend should report an error for us, so just log
# the actual error
@@ -63,6 +68,16 @@ def check_packagekit(parent, errbox, pac
return True
+def packagekit_isinstalled(package):
+ bus = Gio.bus_get_sync(Gio.BusType.SESSION, None)
+ pk_control = Gio.DBusProxy.new_sync(bus, 0, None,
+ "org.freedesktop.PackageKit",
+ "/org/freedesktop/PackageKit",
+ "org.freedesktop.PackageKit.Query", None)
+
+ return pk_control.IsInstalled("(ss)", package, "")
+
+
def packagekit_install(parent, package_list):
bus = Gio.bus_get_sync(Gio.BusType.SESSION, None)
pk_control = Gio.DBusProxy.new_sync(bus, 0, None,

View File

@ -1,29 +0,0 @@
Subject: create: Fix error when detecting OS in 'show all' list
From: Cole Robinson crobinso@redhat.com Wed Apr 30 15:46:06 2014 -0400
Date: Wed Apr 30 15:46:06 2014 -0400:
Git: 3d49bbe6494ac1fa9305c019df1db81371a89385
The will be free'd when the widget is repopulated, so don't access
stale data.
Index: virt-manager-1.0.1/virtManager/create.py
===================================================================
--- virt-manager-1.0.1.orig/virtManager/create.py
+++ virt-manager-1.0.1/virtManager/create.py
@@ -1181,6 +1181,7 @@ class vmmCreate(vmmGObjectUI):
type_row = self._selected_os_row()
if not type_row:
return
+ old_type = type_row[0]
self.show_all_os = True
self.populate_os_type_model()
@@ -1188,7 +1189,7 @@ class vmmCreate(vmmGObjectUI):
os_type_list = self.widget("install-os-type")
os_type_model = os_type_list.get_model()
for idx in range(len(os_type_model)):
- if os_type_model[idx][0] == type_row[0]:
+ if os_type_model[idx][0] == old_type:
os_type_list.set_active(idx)
break

View File

@ -1,23 +0,0 @@
Subject: engine: Show error if launching delete dialog fails
From: Cole Robinson crobinso@redhat.com Wed Apr 30 15:54:00 2014 -0400
Date: Wed Apr 30 15:54:00 2014 -0400:
Git: f35438a01bbf3ba54b4e448d14e7981110a74f08
Index: virt-manager-1.0.1/virtManager/engine.py
===================================================================
--- virt-manager-1.0.1.orig/virtManager/engine.py
+++ virt-manager-1.0.1/virtManager/engine.py
@@ -1176,6 +1176,9 @@ class vmmEngine(vmmGObject):
conn = self._lookup_conn(uri)
vm = conn.get_vm(uuid)
- if not self.delete_dialog:
- self.delete_dialog = vmmDeleteDialog()
- self.delete_dialog.show(vm, src.topwin)
+ try:
+ if not self.delete_dialog:
+ self.delete_dialog = vmmDeleteDialog()
+ self.delete_dialog.show(vm, src.topwin)
+ except Exception, e:
+ src.err.show_err(_("Error launching delete dialog: %s") % str(e))

View File

@ -1,24 +0,0 @@
Subject: connection: Call path_exists before getting storage volume (bz 1092739)
From: Cole Robinson crobinso@redhat.com Wed Apr 30 16:00:34 2014 -0400
Date: Wed Apr 30 16:00:34 2014 -0400:
Git: 5c28a00d3e28ba7446f323a31ac47a194eb200b1
path_exists will check to ensure the volume actually survives a pool
refresh, incase it was deleted behind libvirt's back. This makes the
delete dialog happier at least.
Index: virt-manager-1.0.1/virtManager/connection.py
===================================================================
--- virt-manager-1.0.1.orig/virtManager/connection.py
+++ virt-manager-1.0.1/virtManager/connection.py
@@ -751,6 +751,10 @@ class vmmConnection(vmmGObject):
return self.get_pool_by_name("default")
def get_vol_by_path(self, path):
+ # path_exists will handle stuff like refreshing a busted pool
+ if not virtinst.VirtualDisk.path_exists(self.get_backend(), path):
+ return None
+
for pool in self.pools.values():
for vol in pool.get_volumes().values():
if vol.get_target_path() == path:

View File

@ -1,121 +0,0 @@
Subject: details: Better handling for <input type=keyboard>
From: Cole Robinson crobinso@redhat.com Sun May 4 13:23:54 2014 -0400
Date: Sun May 4 13:23:54 2014 -0400:
Git: 9fd0ef5c8876ded12d9356cb38db29dace261084
Index: virt-manager-1.0.1/ui/details.ui
===================================================================
--- virt-manager-1.0.1.orig/ui/details.ui
+++ virt-manager-1.0.1/ui/details.ui
@@ -4208,14 +4208,12 @@
<property name="top_padding">3</property>
<property name="left_padding">12</property>
<child>
- <object class="GtkTable" id="table33">
+ <object class="GtkGrid" id="table33">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="border_width">3</property>
- <property name="n_rows">2</property>
- <property name="n_columns">2</property>
- <property name="column_spacing">8</property>
<property name="row_spacing">4</property>
+ <property name="column_spacing">8</property>
<child>
<object class="GtkLabel" id="label402">
<property name="visible">True</property>
@@ -4225,8 +4223,10 @@
<property name="use_underline">True</property>
</object>
<packing>
- <property name="x_options">GTK_FILL</property>
- <property name="y_options"/>
+ <property name="left_attach">0</property>
+ <property name="top_attach">0</property>
+ <property name="width">1</property>
+ <property name="height">1</property>
</packing>
</child>
<child>
@@ -4237,10 +4237,10 @@
<property name="label" translatable="yes">Mode:</property>
</object>
<packing>
+ <property name="left_attach">0</property>
<property name="top_attach">1</property>
- <property name="bottom_attach">2</property>
- <property name="x_options">GTK_FILL</property>
- <property name="y_options"/>
+ <property name="width">1</property>
+ <property name="height">1</property>
</packing>
</child>
<child>
@@ -4253,11 +4253,9 @@
</object>
<packing>
<property name="left_attach">1</property>
- <property name="right_attach">2</property>
<property name="top_attach">1</property>
- <property name="bottom_attach">2</property>
- <property name="x_options">GTK_FILL</property>
- <property name="y_options"/>
+ <property name="width">1</property>
+ <property name="height">1</property>
</packing>
</child>
<child>
@@ -4270,8 +4268,9 @@
</object>
<packing>
<property name="left_attach">1</property>
- <property name="right_attach">2</property>
- <property name="y_options"/>
+ <property name="top_attach">0</property>
+ <property name="width">1</property>
+ <property name="height">1</property>
</packing>
</child>
</object>
Index: virt-manager-1.0.1/virtManager/details.py
===================================================================
--- virt-manager-1.0.1.orig/virtManager/details.py
+++ virt-manager-1.0.1/virtManager/details.py
@@ -349,6 +349,8 @@ def _label_for_device(dev):
return _("Tablet")
elif dev.type == "mouse":
return _("Mouse")
+ elif dev.type == "keyboard":
+ return _("Keyboard")
return _("Input")
if devtype in ["serial", "parallel", "console"]:
@@ -2746,19 +2748,24 @@ class vmmDetails(vmmGObjectUI):
dev = _("Xen Mouse")
elif ident == "mouse:ps2":
dev = _("PS/2 Mouse")
+ elif ident == "keyboard:ps2":
+ dev = _("PS/2 Keyboard")
else:
dev = inp.bus + " " + inp.type
+ mode = None
if inp.type == "tablet":
mode = _("Absolute Movement")
- else:
+ elif inp.type == "mouse":
mode = _("Relative Movement")
self.widget("input-dev-type").set_text(dev)
- self.widget("input-dev-mode").set_text(mode)
+ self.widget("input-dev-mode").set_text(mode or "")
+ uiutil.set_grid_row_visible(self.widget("input-dev-mode"), bool(mode))
# Can't remove primary Xen or PS/2 mice
- if inp.type == "mouse" and inp.bus in ("xen", "ps2"):
+ if ((inp.type == "mouse" and inp.bus in ("xen", "ps2")) or
+ (inp.type == "keyboard" and inp.bus == "ps2")):
self.widget("config-remove").set_sensitive(False)
else:
self.widget("config-remove").set_sensitive(True)

View File

@ -1,25 +0,0 @@
From a56edc5b454f5ac428e5a9380665001889cb017c Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?C=C3=A9dric=20Bosdonnat?= <cbosdonnat@suse.com>
Date: Tue, 27 May 2014 10:52:35 +0200
Subject: [PATCH] Don't create a qemu disk image when creating containers
Make sure we don't create a default disk image if the option is checked
but not visible as this is the case for containers
---
virtManager/addstorage.py | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
Index: virt-manager-1.0.1/virtManager/addstorage.py
===================================================================
--- virt-manager-1.0.1.orig/virtManager/addstorage.py
+++ virt-manager-1.0.1/virtManager/addstorage.py
@@ -258,7 +258,8 @@ class vmmAddStorage(vmmGObjectUI):
return path
def is_default_storage(self):
- return self.widget("config-storage-create").get_active()
+ return self.widget("config-storage-create").is_visible() and \
+ self.widget("config-storage-create").get_active()
def _check_ideal_path(self, path, vmname, collidelist):
# See if the ideal disk path (/default/pool/vmname.img)

View File

@ -1,94 +0,0 @@
Subject: virt-install: add --events support
From: Chen Hanxiao chenhanxiao@cn.fujitsu.com Thu May 29 09:46:24 2014 +0800
Date: Thu May 29 09:46:24 2014 +0800:
Git: 3c45262526ccf9115713917a7d9b771bf36127a3
This patch will enable setting event configuration:
on_poweroff, on_reboot and on_crash.
Signed-off-by: Chen Hanxiao <chenhanxiao@cn.fujitsu.com>
Index: virt-manager-1.0.1/man/virt-install.pod
===================================================================
--- virt-manager-1.0.1.orig/man/virt-install.pod
+++ virt-manager-1.0.1/man/virt-install.pod
@@ -123,6 +123,12 @@ Specify metadata values for the guest. P
Use --metadata=? to see a list of all available sub options. Complete details at L<http://libvirt.org/formatdomain.html#elementsMetadata>
+=item --events OPT=VAL,[...]
+
+Specify events values for the guest. Possible options include on_poweroff, on_reboot, and on_crash.
+
+Use --events=? to see a list of all available sub options. Complete details at L<http://libvirt.org/formatdomain.html#elementsEvents>
+
=item --vcpus=VCPUS[,maxvcpus=MAX][,sockets=#][,cores=#][,threads=#][,cpuset=CPUSET]
Number of virtual cpus to configure for the guest. If 'maxvcpus' is specified,
Index: virt-manager-1.0.1/tests/cli-test-xml/compare/virt-xml-edit-simple-events.xml
===================================================================
--- /dev/null
+++ virt-manager-1.0.1/tests/cli-test-xml/compare/virt-xml-edit-simple-events.xml
@@ -0,0 +1,11 @@
+ </clock>
+ <on_poweroff>destroy</on_poweroff>
+ <on_reboot>restart</on_reboot>
+- <on_crash>restart</on_crash>
++ <on_crash>preserve</on_crash>
+ <pm>
+ <suspend-to-mem enabled="no"/>
+ </pm>
+
+Domain 'test-many-devices' defined successfully.
+Changes will take effect after the next domain shutdown.
\ No newline at end of file
Index: virt-manager-1.0.1/tests/clitest.py
===================================================================
--- virt-manager-1.0.1.orig/tests/clitest.py
+++ virt-manager-1.0.1/tests/clitest.py
@@ -805,6 +805,7 @@ c = vixml.add_category("simple edit diff
c.add_compare("""--metadata name=foo-my-new-name,uuid=12345678-12F4-1234-1234-123456789AFA,description="hey this is my
new
very,very=new desc\\\'",title="This is my,funky=new title" """, "edit-simple-metadata")
+c.add_compare("--events on_poweroff=destroy,on_reboot=restart,on_crash=preserve", "edit-simple-events")
c.add_compare("--memory 500,maxmemory=1000,hugepages=off", "edit-simple-memory")
c.add_compare("--vcpus 10,maxvcpus=20,cores=5,sockets=4,threads=1", "edit-simple-vcpus")
c.add_compare("--cpu model=pentium2,+x2apic,forbid=pbe", "edit-simple-cpu")
Index: virt-manager-1.0.1/virtinst/cli.py
===================================================================
--- virt-manager-1.0.1.orig/virtinst/cli.py
+++ virt-manager-1.0.1/virtinst/cli.py
@@ -797,6 +797,7 @@ def add_guest_xml_options(geng):
help=_("Set domain <clock> XML. Ex:\n"
"--clock offset=localtime,rtc_tickpolicy=catchup"))
geng.add_argument("--pm", help=_("Config power management features"))
+ geng.add_argument("--events", help=_("Config OS lifecycle operation management features"))
def add_boot_options(insg):
@@ -1225,6 +1226,17 @@ class ParserMetadata(VirtCLIParser):
######################
+# --events parsing #
+######################
+
+class ParserEvents(VirtCLIParser):
+ def _init_params(self):
+ self.set_param("on_poweroff", "on_poweroff")
+ self.set_param("on_reboot", "on_reboot")
+ self.set_param("on_crash", "on_crash")
+
+
+######################
# --numatune parsing #
######################
@@ -2210,6 +2222,7 @@ def build_parser_map(options, skip=None,
parsermap[parserobj.option_variable_name] = parserobj
register_parser("metadata", ParserMetadata)
+ register_parser("events", ParserEvents)
register_parser("memory", ParserMemory)
register_parser("memtune", ParserMemorytune)
register_parser("vcpus", ParserVCPU)

View File

@ -1,43 +0,0 @@
Subject: create: Raise error if populating summary page fails
From: Cole Robinson crobinso@redhat.com Sat May 31 13:31:08 2014 -0400
Date: Sat May 31 13:31:08 2014 -0400:
Git: 3654d56aa6a7f6749f74924a33a35ebdebdb8b8d
Index: virt-manager-1.0.1/virtManager/create.py
===================================================================
--- virt-manager-1.0.1.orig/virtManager/create.py
+++ virt-manager-1.0.1/virtManager/create.py
@@ -1340,20 +1340,24 @@ class vmmCreate(vmmGObjectUI):
self.widget("header-pagenum").set_markup(page_lbl)
def page_changed(self, ignore1, ignore2, pagenum):
- # Update page number
- self.set_page_num_text(pagenum)
-
- self.widget("create-back").set_sensitive(pagenum != PAGE_NAME)
- self.widget("create-forward").set_visible(pagenum != PAGE_FINISH)
- self.widget("create-finish").set_visible(pagenum == PAGE_FINISH)
-
if pagenum == PAGE_INSTALL:
self.detect_media_os()
self.widget("install-os-distro-box").set_visible(
not self.container_install())
elif pagenum == PAGE_FINISH:
+ try:
+ self.populate_summary()
+ except Exception, e:
+ self.err.show_err(_("Error populating summary page: %s") %
+ str(e))
+ return
+
self.widget("create-finish").grab_focus()
- self.populate_summary()
+
+ self.set_page_num_text(pagenum)
+ self.widget("create-back").set_sensitive(pagenum != PAGE_NAME)
+ self.widget("create-forward").set_visible(pagenum != PAGE_FINISH)
+ self.widget("create-finish").set_visible(pagenum == PAGE_FINISH)
for nr in range(self.widget("create-pages").get_n_pages()):
page = self.widget("create-pages").get_nth_page(nr)

View File

@ -1,19 +0,0 @@
Subject: virt-convert: Fix use of relative OVF file
From: Cole Robinson crobinso@redhat.com Sat May 31 16:05:29 2014 -0400
Date: Sat May 31 16:05:29 2014 -0400:
Git: 876c721d8e3045d35c942d96caac28abff1b8219
diff --git a/virtconv/formats.py b/virtconv/formats.py
index 0663190..2af6b6b 100644
--- a/virtconv/formats.py
+++ b/virtconv/formats.py
@@ -195,7 +195,7 @@ class VirtConverter(object):
(self._input_file,
self.parser,
self._force_clean) = _find_input(input_file, parser, self.print_cb)
- self._top_dir = os.path.dirname(self._input_file)
+ self._top_dir = os.path.dirname(os.path.abspath(self._input_file))
logging.debug("converter not input_file=%s parser=%s",
self._input_file, self.parser)

View File

@ -1,24 +0,0 @@
Subject: diskbackend: If pool not running, start it
From: Cole Robinson crobinso@redhat.com Sat May 31 16:29:29 2014 -0400
Date: Sat May 31 16:29:29 2014 -0400:
Git: d6f063d0b888cabdf8a348bbd86e2f5353b040fd
Nowadays we depend on the pool existing and running, so better to get
an error up front if pool startup will fail
diff --git a/virtinst/diskbackend.py b/virtinst/diskbackend.py
index 3d5aed8..118f649 100644
--- a/virtinst/diskbackend.py
+++ b/virtinst/diskbackend.py
@@ -86,9 +86,9 @@ def check_if_path_managed(conn, path):
if not vol:
pool = StoragePool.lookup_pool_by_path(conn, os.path.dirname(path))
- # Is pool running?
+ # Ensure pool is running
if pool and pool.info()[0] != libvirt.VIR_STORAGE_POOL_RUNNING:
- pool = None
+ pool.start()
# Attempt to lookup path as a storage volume
if pool and not vol:

View File

@ -1,19 +0,0 @@
Subject: console: vnc: Don't force keyboard grab before widget is realized
From: Cole Robinson crobinso@redhat.com Sat May 31 19:40:18 2014 -0400
Date: Sat May 31 19:40:18 2014 -0400:
Git: d17cf4a22352659bc22e012286380b6481faad89
Causes gtk warnings on the console, and the code was mistaken anyways
Index: virt-manager-1.0.1/virtManager/console.py
===================================================================
--- virt-manager-1.0.1.orig/virtManager/console.py
+++ virt-manager-1.0.1/virtManager/console.py
@@ -466,7 +466,6 @@ class VNCViewer(Viewer):
def set_grab_keyboard(self):
self.display.set_keyboard_grab(self.config.get_grab_keyboard())
- self.display.force_grab(self.config.get_grab_keyboard())
def _desktop_resize(self, src_ignore, w, h):
self.desktop_resolution = (w, h)

View File

@ -1,75 +0,0 @@
Subject: pollhelpers: Use correct dictionary keys for old pool/net polling (bz 1099827)
From: Cole Robinson crobinso@redhat.com Mon Jun 2 12:17:21 2014 -0400
Date: Mon Jun 2 12:18:59 2014 -0400:
Git: d3e9af832899088a17aeb44441e8316177f563ae
We were inadvertently using the object name rather than UUID when libvirt
didn't support new style polling APIs.
Index: virt-manager-1.0.1/virtinst/pollhelpers.py
===================================================================
--- virt-manager-1.0.1.orig/virtinst/pollhelpers.py
+++ virt-manager-1.0.1/virtinst/pollhelpers.py
@@ -52,7 +52,8 @@ def _new_poll_helper(origmap, typename,
def _old_poll_helper(origmap, typename,
active_list, inactive_list,
- lookup_func, build_func):
+ lookup_func, build_func,
+ key_is_uuid=False):
"""
Helper routine for old style split API libvirt polling.
@origmap: Pre-existing mapping of objects, with key->obj mapping.
@@ -64,6 +65,8 @@ def _old_poll_helper(origmap, typename,
@lookup_func: Function to get an object handle for the passed name
@build_func: Function that builds a new object class. It is passed
args of (raw libvirt object, key (usually UUID))
+ @key_is_uuid: If True, we use the object UUID as the returned dictionary
+ keys
"""
current = {}
new = {}
@@ -79,8 +82,10 @@ def _old_poll_helper(origmap, typename,
except Exception, e:
logging.debug("Unable to list inactive %ss: %s", typename, e)
- def check_obj(key):
- if key not in origmap:
+ def check_obj(name):
+ obj = None
+ key = name
+ if key not in origmap or key_is_uuid:
try:
obj = lookup_func(key)
except Exception, e:
@@ -88,6 +93,10 @@ def _old_poll_helper(origmap, typename,
typename, key, e)
return
+ if key_is_uuid:
+ key = obj.UUIDString()
+
+ if key not in origmap:
# Object is brand new this period
current[key] = build_func(obj, key)
new[key] = current[key]
@@ -120,7 +129,8 @@ def fetch_nets(backend, origmap, build_f
return _old_poll_helper(origmap, name,
active_list, inactive_list,
- lookup_func, build_func)
+ lookup_func, build_func,
+ key_is_uuid=True)
def fetch_pools(backend, origmap, build_func):
@@ -138,7 +148,8 @@ def fetch_pools(backend, origmap, build_
return _old_poll_helper(origmap, name,
active_list, inactive_list,
- lookup_func, build_func)
+ lookup_func, build_func,
+ key_is_uuid=True)
def fetch_volumes(backend, pool, origmap, build_func):

View File

@ -1,19 +0,0 @@
Subject: details: xen keyboard can't be removed either
From: Cole Robinson crobinso@redhat.com Mon Jun 2 18:54:28 2014 -0400
Date: Mon Jun 2 18:54:28 2014 -0400:
Git: 03670c38dc085ddf7b68edceda738ca6b506a2ba
Index: virt-manager-1.0.1/virtManager/details.py
===================================================================
--- virt-manager-1.0.1.orig/virtManager/details.py
+++ virt-manager-1.0.1/virtManager/details.py
@@ -2765,7 +2765,7 @@ class vmmDetails(vmmGObjectUI):
# Can't remove primary Xen or PS/2 mice
if ((inp.type == "mouse" and inp.bus in ("xen", "ps2")) or
- (inp.type == "keyboard" and inp.bus == "ps2")):
+ (inp.type == "keyboard" and inp.bus in ("xen", "ps2"))):
self.widget("config-remove").set_sensitive(False)
else:
self.widget("config-remove").set_sensitive(True)

View File

@ -1,19 +0,0 @@
Subject: diskbackend: Fix pool 'create' call (bz 1103442)
From: Cole Robinson crobinso@redhat.com Tue Jun 3 16:25:48 2014 -0400
Date: Tue Jun 3 16:26:28 2014 -0400:
Git: 809c5a81e5b92c335e586041af91618693724721
diff --git a/virtinst/diskbackend.py b/virtinst/diskbackend.py
index 118f649..5f72d00 100644
--- a/virtinst/diskbackend.py
+++ b/virtinst/diskbackend.py
@@ -88,7 +88,7 @@ def check_if_path_managed(conn, path):
# Ensure pool is running
if pool and pool.info()[0] != libvirt.VIR_STORAGE_POOL_RUNNING:
- pool.start()
+ pool.create(0)
# Attempt to lookup path as a storage volume
if pool and not vol:

View File

@ -1,22 +0,0 @@
Subject: man: fix an incorrect description in virt-install man page
From: Chen Hanxiao chenhanxiao@cn.fujitsu.com Wed Jun 4 16:38:29 2014 +0800
Date: Wed Jun 4 16:39:23 2014 +0800:
Git: 99df0057f50e55fccb42d50ca299399888e5f1f2
Actually --pm accepts suspend_to_mem rather than suspend_to_ram.
Signed-off-by: Chen Hanxiao <chenhanxiao@cn.fujitsu.com>
Index: virt-manager-1.0.1/man/virt-install.pod
===================================================================
--- virt-manager-1.0.1.orig/man/virt-install.pod
+++ virt-manager-1.0.1/man/virt-install.pod
@@ -270,7 +270,7 @@ Use --clock=? to see a list of all avail
=item --pm=PMOPTS
-Configure guest power management features. Example suboptions include suspend_to_ram=on|off and suspend_to_disk=on|off
+Configure guest power management features. Example suboptions include suspend_to_mem=on|off and suspend_to_disk=on|off
Use --pm=? to see a list of all available sub options. Complete details at L<http://libvirt.org/formatdomain.html#elementsPowerManagement>

View File

@ -1,34 +0,0 @@
Subject: createnet: enable specify /29 subnet
From: Chen Hanxiao chenhanxiao@cn.fujitsu.com Wed Jun 11 09:51:48 2014 +0800
Date: Wed Jun 11 09:52:07 2014 +0800:
Git: 17a11672b142028f6e15b80f3a30b3069792d37f
https://bugzilla.redhat.com/show_bug.cgi?id=1106913
Signed-off-by: Chen Hanxiao <chenhanxiao@cn.fujitsu.com>
Index: virt-manager-1.0.1/virtManager/createnet.py
===================================================================
--- virt-manager-1.0.1.orig/virtManager/createnet.py
+++ virt-manager-1.0.1/virtManager/createnet.py
@@ -268,9 +268,9 @@ class vmmCreateNetwork(vmmGObjectUI):
return self.err.val_err(_("Invalid Network Address"),
_("The network must be an IPv4 address"))
- if ip.numhosts < 16:
+ if ip.numhosts < 8:
return self.err.val_err(_("Invalid Network Address"),
- _("The network must address at least 16 addresses."))
+ _("The network must address at least 8 addresses."))
if not ip.is_private:
res = self.err.yes_no(_("Check Network Address"),
@@ -562,7 +562,7 @@ class vmmCreateNetwork(vmmGObjectUI):
src.modify_bg(Gtk.StateType.NORMAL, _red)
return
- valid_ip = (ip.numhosts >= 16 and ip.is_private)
+ valid_ip = (ip.numhosts >= 8 and ip.is_private)
gateway = (ip.prefixlen != 32 and str(ip.network + 1) or "")
info = (ip.is_private and _("Private") or _("Other/Public"))
start = int(ip.numhosts / 2)

View File

@ -1,32 +0,0 @@
Subject: createpool.py: fix creation of gluster pools
From: Giuseppe Scrivano gscrivan@redhat.com Wed Jun 11 13:30:15 2014 +0200
Date: Mon Jun 16 08:20:58 2014 +0200:
Git: 5c2459e6e472dce777a04d3a82406c9df7b9c754
It fixes this exception:
Traceback (most recent call last):
File "virt-manager/virtManager/createpool.py", line 454, in page_changed
self.set_page(page_number)
File "virt-manager/virtManager/createpool.py", line 451, in set_page
self.show_options_by_pool()
File "virt-manager/virtManager/createpool.py", line 292, in show_options_by_pool
self.widget("pool-source-name").get_child().set_text(
AttributeError: 'Entry' object has no attribute 'get_child'
Signed-off-by: Giuseppe Scrivano <gscrivan@redhat.com>
Index: virt-manager-1.0.1/virtManager/createpool.py
===================================================================
--- virt-manager-1.0.1.orig/virtManager/createpool.py
+++ virt-manager-1.0.1/virtManager/createpool.py
@@ -291,8 +291,7 @@ class vmmCreatePool(vmmGObjectUI):
self.widget("pool-build").set_active(builddef)
if src_name:
- self.widget("pool-source-name").get_child().set_text(
- self._pool.source_name)
+ self.widget("pool-source-name").set_text(self._pool.source_name)
self.widget("pool-format").set_active(-1)
if fmt:

View File

@ -1,56 +0,0 @@
Subject: virt-manager: split EDIT_VCPUS and EDIT_MAXVCPUS
From: Giuseppe Scrivano gscrivan@redhat.com Tue Jun 17 14:13:30 2014 +0200
Date: Tue Jun 17 17:27:47 2014 +0200:
Git: 4ac49a1d66b12ae6f7d50ec4f368ff3d770e6b42
Closes: https://bugzilla.redhat.com/show_bug.cgi?id=1098040
Signed-off-by: Giuseppe Scrivano <gscrivan@redhat.com>
Index: virt-manager-1.0.1/virtManager/details.py
===================================================================
--- virt-manager-1.0.1.orig/virtManager/details.py
+++ virt-manager-1.0.1/virtManager/details.py
@@ -54,6 +54,7 @@ EDIT_DESC,
EDIT_IDMAP,
EDIT_VCPUS,
+EDIT_MAXVCPUS,
EDIT_CPUSET,
EDIT_CPU,
EDIT_TOPOLOGY,
@@ -104,7 +105,7 @@ EDIT_FS,
EDIT_HOSTDEV_ROMBAR,
-) = range(1, 43)
+) = range(1, 44)
# Columns in hw list model
@@ -1712,7 +1713,11 @@ class vmmDetails(vmmGObjectUI):
def config_maxvcpus_changed(self, ignore):
if self.widget("config-maxvcpus").get_sensitive():
self.config_cpu_topology_changed()
- self.enable_apply(EDIT_VCPUS)
+
+ # As this callback can be triggered by other events, set EDIT_MAXVCPUS
+ # only when the value is changed.
+ if self.config_get_maxvcpus() != self.vm.vcpu_max_count():
+ self.enable_apply(EDIT_MAXVCPUS)
def on_cpu_copy_host_clicked(self, src):
uiutil.set_grid_row_visible(
@@ -2004,9 +2009,11 @@ class vmmDetails(vmmGObjectUI):
if self.edited(EDIT_VCPUS):
kwargs["vcpus"] = self.config_get_vcpus()
- kwargs["maxvcpus"] = self.config_get_maxvcpus()
hotplug_args["vcpus"] = kwargs["vcpus"]
+ if self.edited(EDIT_MAXVCPUS):
+ kwargs["maxvcpus"] = self.config_get_maxvcpus()
+
if self.edited(EDIT_CPUSET):
kwargs["cpuset"] = self.get_text("config-vcpupin")

View File

@ -1,24 +0,0 @@
Subject: details.py: fix typo
From: Giuseppe Scrivano gscrivan@redhat.com Tue Jun 24 13:59:12 2014 +0200
Date: Tue Jun 24 17:14:19 2014 +0200:
Git: eb5b2613110dfaa23626a16704d18df0dbba5086
s|removeable|removable|
Closes: https://bugzilla.redhat.com/show_bug.cgi?id=1112629
Signed-off-by: Giuseppe Scrivano <gscrivan@redhat.com>
Index: virt-manager-1.0.1/virtManager/details.py
===================================================================
--- virt-manager-1.0.1.orig/virtManager/details.py
+++ virt-manager-1.0.1/virtManager/details.py
@@ -2114,7 +2114,7 @@ class vmmDetails(vmmGObjectUI):
kwargs["shareable"] = self.widget("disk-shareable").get_active()
if self.edited(EDIT_DISK_REMOVABLE):
- kwargs["removeable"] = bool(
+ kwargs["removable"] = bool(
self.widget("disk-removable").get_active())
if self.edited(EDIT_DISK_CACHE):

View File

@ -1,24 +0,0 @@
Subject: createnet: validate last page before creating the network
From: Giuseppe Scrivano gscrivan@redhat.com Wed Jun 25 12:35:46 2014 +0200
Date: Thu Jun 26 15:26:37 2014 +0200:
Git: f109b1ed6fc93c1c74675d047affc0fe57ae7243
On the last page in the createnet wizard the Next button is changed to
Finish. Ensure the user input is validated also on this page.
Signed-off-by: Giuseppe Scrivano <gscrivan@redhat.com>
Index: virt-manager-1.0.1/virtManager/createnet.py
===================================================================
--- virt-manager-1.0.1.orig/virtManager/createnet.py
+++ virt-manager-1.0.1/virtManager/createnet.py
@@ -746,6 +746,9 @@ class vmmCreateNetwork(vmmGObjectUI):
net.install()
def finish(self, ignore):
+ if not self.validate(PAGE_MAX):
+ return
+
try:
net = self._build_xmlobj()
except Exception, e:

View File

@ -1,22 +0,0 @@
Subject: createnet: fix "show_err" typo
From: Giuseppe Scrivano gscrivan@redhat.com Wed Jun 25 12:28:54 2014 +0200
Date: Thu Jun 26 15:26:37 2014 +0200:
Git: 81bd6bbffb3a06e179c3cbb6c56a9aced1e9be48
s|show_erro|show_err|
Signed-off-by: Giuseppe Scrivano <gscrivan@redhat.com>
Index: virt-manager-1.0.1/virtManager/createnet.py
===================================================================
--- virt-manager-1.0.1.orig/virtManager/createnet.py
+++ virt-manager-1.0.1/virtManager/createnet.py
@@ -749,7 +749,7 @@ class vmmCreateNetwork(vmmGObjectUI):
try:
net = self._build_xmlobj()
except Exception, e:
- self.err.show_erro(_("Error generating network xml: %s" % str(e)))
+ self.err.show_err(_("Error generating network xml: %s" % str(e)))
return
self.topwin.set_sensitive(False)

View File

@ -1,25 +0,0 @@
Subject: createnet: fix a small pylint
From: Chen Hanxiao chenhanxiao@cn.fujitsu.com Fri Jun 27 11:10:54 2014 +0800
Date: Fri Jun 27 09:06:14 2014 +0200:
Git: 658c9500a96a3d2ab862811f9827409c17c2232f
commit f109b1ed6fc93c1c74675d047affc0fe57ae7243
used a undefined variable 'PAGE_MAX'.
It looks like it should be in a developing series,
but should be fixed in upstream.
Signed-off-by: Chen Hanxiao <chenhanxiao@cn.fujitsu.com>
Index: virt-manager-1.0.1/virtManager/createnet.py
===================================================================
--- virt-manager-1.0.1.orig/virtManager/createnet.py
+++ virt-manager-1.0.1/virtManager/createnet.py
@@ -39,6 +39,8 @@ PAGE_IPV4,
PAGE_IPV6,
PAGE_MISC) = range(4)
+PAGE_MAX = PAGE_MISC
+
_green = Gdk.Color.parse("#c0ffc0")[1]
_red = Gdk.Color.parse("#ffc0c0")[1]
_black = Gdk.Color.parse("#000000")[1]

View File

@ -1,48 +0,0 @@
Subject: Don't create disk images world readable and executable
From: Ron ron@debian.org Sun Jun 29 16:16:36 2014 +0930
Date: Wed Jul 2 07:35:15 2014 +0200:
Git: ea1d973957ce3662c7fb22046c34b62f72f0e624
Python's os.open() defaults to mode 0777 if not explicitly specified.
Disk image files don't need to be executable, and having them world
readable isn't an ideal situation either. Owner writable and group
readable is probably more than sufficient when initially creating
them.
Signed-off-by: Ron Lee <ron@debian.org>
diff --git a/virtinst/diskbackend.py b/virtinst/diskbackend.py
index 5f72d00..2c74a11 100644
--- a/virtinst/diskbackend.py
+++ b/virtinst/diskbackend.py
@@ -383,7 +383,7 @@ class StorageCreator(_StorageBase):
sparse = True
fd = None
try:
- fd = os.open(self._path, os.O_WRONLY | os.O_CREAT)
+ fd = os.open(self._path, os.O_WRONLY | os.O_CREAT, 0640)
os.ftruncate(fd, size_bytes)
finally:
if fd:
@@ -401,7 +401,7 @@ class StorageCreator(_StorageBase):
try:
try:
src_fd = os.open(self._clone_path, os.O_RDONLY)
- dst_fd = os.open(self._path, os.O_WRONLY | os.O_CREAT)
+ dst_fd = os.open(self._path, os.O_WRONLY | os.O_CREAT, 0640)
i = 0
while 1:
diff --git a/virtinst/urlfetcher.py b/virtinst/urlfetcher.py
index fba70f9..b51e524 100644
--- a/virtinst/urlfetcher.py
+++ b/virtinst/urlfetcher.py
@@ -67,7 +67,7 @@ class _ImageFetcher(object):
prefix = "virtinst-" + prefix
if "VIRTINST_TEST_SUITE" in os.environ:
fn = os.path.join(".", prefix)
- fd = os.open(fn, os.O_RDWR | os.O_CREAT)
+ fd = os.open(fn, os.O_RDWR | os.O_CREAT, 0640)
else:
(fd, fn) = tempfile.mkstemp(prefix=prefix,
dir=self.scratchdir)

View File

@ -1,48 +0,0 @@
Subject: virtinst: add method to set connection keep-alive
From: Giuseppe Scrivano gscrivan@redhat.com Tue Jul 1 12:54:38 2014 +0200
Date: Wed Jul 2 15:31:40 2014 +0200:
Git: 3606bb573df4132a70b9e0fe82a59cd49a400fa0
Signed-off-by: Giuseppe Scrivano <gscrivan@redhat.com>
Subject: virt-manager: check if still connected every 20 seconds
From: Giuseppe Scrivano gscrivan@redhat.com Tue Jul 1 13:06:05 2014 +0200
Date: Wed Jul 2 15:31:40 2014 +0200:
Git: 538c68a41dd0538c36e442ad37690b1b9c3debee
Signed-off-by: Giuseppe Scrivano <gscrivan@redhat.com>
Index: virt-manager-1.0.1/virtinst/connection.py
===================================================================
--- virt-manager-1.0.1.orig/virtinst/connection.py
+++ virt-manager-1.0.1/virtinst/connection.py
@@ -1,5 +1,5 @@
#
-# Copyright 2013 Red Hat, Inc.
+# Copyright 2013, 2014 Red Hat, Inc.
#
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
@@ -201,6 +201,10 @@ class VirtualConnection(object):
self._fetch_cache[key] = ret
return ret
+ def set_keep_alive(self, interval, count):
+ if hasattr(self._libvirtconn, "setKeepAlive"):
+ self._libvirtconn.setKeepAlive(interval, count)
+
def fetch_all_pools(self):
"""
Returns a list of StoragePool objects
Index: virt-manager-1.0.1/virtManager/connection.py
===================================================================
--- virt-manager-1.0.1.orig/virtManager/connection.py
+++ virt-manager-1.0.1/virtManager/connection.py
@@ -1112,6 +1112,7 @@ class vmmConnection(vmmGObject):
logging.debug("%s capabilities:\n%s",
self.get_uri(), self.caps.xml)
self._add_conn_events()
+ self._backend.setKeepAlive(20, 1)
self.schedule_priority_tick(stats_update=True,
pollvm=True, pollnet=True,
pollpool=True, polliface=True,

View File

@ -1,50 +0,0 @@
Subject: console: prevent access to deleted objects
From: Giuseppe Scrivano gscrivan@redhat.com Tue Jul 1 15:01:58 2014 +0200
Date: Wed Jul 2 15:31:41 2014 +0200:
Git: f4365b669acc36bdc61c57d793894305dcb9059a
last commits revealed that some objects can still be accessed by
registered callbacks after the console is closed. Unregister these
callbacks.
Signed-off-by: Giuseppe Scrivano <gscrivan@redhat.com>
Index: virt-manager-1.0.1/virtManager/console.py
===================================================================
--- virt-manager-1.0.1.orig/virtManager/console.py
+++ virt-manager-1.0.1/virtManager/console.py
@@ -572,6 +572,7 @@ class SpiceViewer(Viewer):
self.display = None
self.audio = None
self.main_channel = None
+ self._main_channel_hids = []
self.display_channel = None
self.usbdev_manager = None
@@ -636,6 +637,11 @@ class SpiceViewer(Viewer):
self.display.destroy()
self.display = None
self.display_channel = None
+
+ for i in self._main_channel_hids:
+ self.main_channel.handler_disconnect(i)
+ self._main_channel_hids = []
+
self.main_channel = None
self.usbdev_manager = None
@@ -682,10 +688,12 @@ class SpiceViewer(Viewer):
if self.console.tunnels:
self.console.tunnels.unlock()
self.main_channel = channel
- self.main_channel.connect_after("channel-event",
+ hid = self.main_channel.connect_after("channel-event",
self._main_channel_event_cb)
- self.main_channel.connect_after("notify::agent-connected",
+ self._main_channel_hids.append(hid)
+ hid = self.main_channel.connect_after("notify::agent-connected",
self._agent_connected_cb)
+ self._main_channel_hids.append(hid)
elif (type(channel) == SpiceClientGLib.DisplayChannel and
not self.display):

View File

@ -1,28 +0,0 @@
Subject: connection: Handle unsupport KeepAlive (like test URIs)
From: Cole Robinson crobinso@redhat.com Fri Jul 4 17:43:24 2014 -0400
Date: Fri Jul 4 18:20:54 2014 -0400:
Git: aa823b5b58d689e2a69a9822fd462a1333d8d415
Index: virt-manager-1.0.1/virtManager/connection.py
===================================================================
--- virt-manager-1.0.1.orig/virtManager/connection.py
+++ virt-manager-1.0.1/virtManager/connection.py
@@ -1112,7 +1112,16 @@ class vmmConnection(vmmGObject):
logging.debug("%s capabilities:\n%s",
self.get_uri(), self.caps.xml)
self._add_conn_events()
- self._backend.setKeepAlive(20, 1)
+
+ try:
+ self._backend.setKeepAlive(20, 1)
+ except Exception, e:
+ if (type(e) is not AttributeError and
+ not util.is_error_nosupport(e)):
+ raise
+ logging.debug("Connection doesn't support KeepAlive, "
+ "skipping")
+
self.schedule_priority_tick(stats_update=True,
pollvm=True, pollnet=True,
pollpool=True, polliface=True,

View File

@ -1,55 +0,0 @@
Subject: connection: Report error if things fall over during connection bring up
From: Cole Robinson crobinso@redhat.com Fri Jul 4 17:37:42 2014 -0400
Date: Fri Jul 4 18:20:54 2014 -0400:
Git: e12d7a6a8c21f0d8e0331fa06f53523258bdfaae
Index: virt-manager-1.0.1/virtManager/connection.py
===================================================================
--- virt-manager-1.0.1.orig/virtManager/connection.py
+++ virt-manager-1.0.1/virtManager/connection.py
@@ -1101,23 +1101,27 @@ class vmmConnection(vmmGObject):
def _open_notify(self):
logging.debug("Notifying open result")
- self.idle_emit("state-changed")
-
- if self.state == self.STATE_ACTIVE:
- logging.debug("libvirt version=%s",
- self._backend.local_libvirt_version())
- logging.debug("daemon version=%s",
- self._backend.daemon_version())
- logging.debug("conn version=%s", self._backend.conn_version())
- logging.debug("%s capabilities:\n%s",
- self.get_uri(), self.caps.xml)
- self._add_conn_events()
- self._backend.setKeepAlive(20, 1)
- self.schedule_priority_tick(stats_update=True,
- pollvm=True, pollnet=True,
- pollpool=True, polliface=True,
- pollnodedev=True, pollmedia=True,
- force=True)
+ try:
+ self.idle_emit("state-changed")
+ if self.state == self.STATE_ACTIVE:
+ logging.debug("libvirt version=%s",
+ self._backend.local_libvirt_version())
+ logging.debug("daemon version=%s",
+ self._backend.daemon_version())
+ logging.debug("conn version=%s", self._backend.conn_version())
+ logging.debug("%s capabilities:\n%s",
+ self.get_uri(), self.caps.xml)
+ self._add_conn_events()
+ self._backend.setKeepAlive(20, 1)
+ self.schedule_priority_tick(stats_update=True,
+ pollvm=True, pollnet=True,
+ pollpool=True, polliface=True,
+ pollnodedev=True, pollmedia=True,
+ force=True)
+ except Exception, e:
+ self.close()
+ self.connectError = (str(e),
+ "".join(traceback.format_exc()), False)
if self.state == self.STATE_DISCONNECTED:
if self.connectError:

View File

@ -1,23 +0,0 @@
Subject: network: refresh the XML definition on state update
From: Giuseppe Scrivano gscrivan@redhat.com Thu Jul 3 13:55:50 2014 +0200
Date: Tue Jul 8 00:05:09 2014 +0200:
Git: cbb18b0e9626faa08d8f017a9e02466e5ba7b767
The XML definition returned by libvirt can change on a state
transition. vmmNetwork.force_update_status invalidates the old
definition.
Signed-off-by: Giuseppe Scrivano <gscrivan@redhat.com>
Index: virt-manager-1.0.1/virtManager/network.py
===================================================================
--- virt-manager-1.0.1.orig/virtManager/network.py
+++ virt-manager-1.0.1/virtManager/network.py
@@ -80,6 +80,7 @@ class vmmNetwork(vmmLibvirtObject):
def _set_active(self, state):
if state == self._active:
return
+ self.refresh_xml()
self.idle_emit(state and "started" or "stopped")
self._active = state

View File

@ -1,24 +0,0 @@
Subject: virt-manager, create: honor untoggled "Set a fixed MAC address"
From: Giuseppe Scrivano gscrivan@redhat.com Mon Jul 21 11:28:28 2014 +0200
Date: Tue Jul 22 09:25:05 2014 +0200:
Git: 312b349fceffec38dd04aa35d053b082fe698f3a
Closes: https://bugzilla.redhat.com/show_bug.cgi?id=1083461
Signed-off-by: Giuseppe Scrivano <gscrivan@redhat.com>
Index: virt-manager-1.0.1/virtManager/create.py
===================================================================
--- virt-manager-1.0.1.orig/virtManager/create.py
+++ virt-manager-1.0.1/virtManager/create.py
@@ -1674,7 +1674,9 @@ class vmmCreate(vmmGObjectUI):
if not self.validate_storage_page():
return False
- macaddr = self.widget("config-macaddr").get_text().strip()
+ macaddr = None
+ if self.widget("config-macaddr").get_sensitive():
+ macaddr = self.widget("config-macaddr").get_text().strip()
nettype = self.netlist.get_network_selection()[0]
if nettype is None:

View File

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

View File

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

View File

@ -1,26 +1,26 @@
Index: virt-manager-1.0.1/virtManager/config.py
Index: virt-manager-1.1.0/virtManager/config.py
===================================================================
--- virt-manager-1.0.1.orig/virtManager/config.py
+++ virt-manager-1.0.1/virtManager/config.py
@@ -21,8 +21,10 @@ import os
--- virt-manager-1.1.0.orig/virtManager/config.py
+++ virt-manager-1.1.0/virtManager/config.py
@@ -20,8 +20,10 @@
import os
import logging
# pylint: disable=E0611
+import gi
from gi.repository import Gio
from gi.repository import GLib
+gi.require_version('Gtk', '3.0')
from gi.repository import Gtk
# pylint: enable=E0611
Index: virt-manager-1.0.1/virtManager/console.py
from virtinst import CPU
Index: virt-manager-1.1.0/virtManager/console.py
===================================================================
--- virt-manager-1.0.1.orig/virtManager/console.py
+++ virt-manager-1.0.1/virtManager/console.py
@@ -21,10 +21,13 @@
--- virt-manager-1.1.0.orig/virtManager/console.py
+++ virt-manager-1.1.0/virtManager/console.py
@@ -20,10 +20,13 @@
# MA 02110-1301 USA.
#
# pylint: disable=E0611
+import gi
from gi.repository import GObject
from gi.repository import Gtk
@ -30,4 +30,4 @@ Index: virt-manager-1.0.1/virtManager/console.py
+gi.require_version('SpiceClientGtk', '3.0')
from gi.repository import SpiceClientGtk
from gi.repository import SpiceClientGLib
# pylint: enable=E0611

View File

@ -1,3 +1,77 @@
-------------------------------------------------------------------
Mon Oct 22 13:33:25 MDT 2014 - carnold@suse.com
- Update to virt-manager 1.1.0
virt-manager-1.1.0.tar.bz2
* Switch to libosinfo as OS metadata database (Giuseppe Scrivano)
* Use libosinfo for OS detection from CDROM media labels (Giuseppe Scrivano)
* Use libosinfo for improved OS defaults, like recommended disk size (Giuseppe Scrivano)
* virt-image tool has been removed, as previously announced
* Enable Hyper-V enlightenments for Windows VMs
* Revert virtio-console default, back to plain serial console
* Experimental q35 option in new VM customize dialog
* UI for virtual network QoS settings (Giuseppe Scrivano)
* virt-install: disk discard= support (Jim Minter)
* addhardware: Add spiceport UI (Marc-André Lureau)
* virt-install: events on_poweroff etc. support (Chen Hanxiao)
* cli network portgroup= support and UI support
* cli boot initargs= and UI support
* addhardware: allow setting controller model (Chen Hanxiao)
* virt-install: support setting hugepage options (Chen Hanxiao)
- Drop upstream patches and old tarball
virt-manager-1.0.1.tar.bz2
5332ee4d-enable-media-detection-for-ISO-images.patch
53341e7e-hide-hardware-removal-for-non-devices.patch
53342f31-set-right-ip-address-for-ipv6.patch
53375bad-raise-value-error-when-no-ipaddr-set.patch
53388de2-show-port-number-for-active-autoport-VM.patch
53397ae0-check-ip-address-format.patch
53399b45-hook-into-domain-balloon-event.patch
533d708d-fix-showing-vcpus-values.patch
533d7602-fix-changing-graphics-type.patch
533d7be7-clarify-iscsi-IQN-fields.patch
5345682c-addstorage-remove-whitespace-for-storage-path.patch
534bcfa0-use-uniformed-expression-of-Default.patch
534be092-early-detect-ftp-connection-errors.patch
534d45db-hiding-removebutton-for-USB-controller.patch
534d6406-display-the-domain-for-PCI-devices.patch
534eafe4-avoid-useless-errors-when-connection-closes.patch
5350d9cc-display-error-on-empty-installation-URL.patch
535584ed-fix-target-validation-when-editing-device.patch
535fb6f6-hide-scrollbar-until-something-scrollable.patch
535fe0c2-fix-screenshot-with-qxl-spice.patch
535feaca-fix-storage-when-directory-name-contains-whitespace.patch
535ff0b7-fix-install-when-one-package-is-already-installed.patch
536152fe-fix-error-detecting-OS-in-show-all-list.patch
536154d8-show-error-if-launching-delete-dialog-fails.patch
53615662-call-path_exists-before-getting-storage-volume.patch
536677aa-better-handling-of-keyboard-input-type.patch
5385d602-lxc-no-default-disk.patch
53869170-virt-install-add-events-support.patch
538a11dc-raise-error-if-populating-summary-page-fails.patch
538a3609-virtconv-fix-use-of-relative-OVF-file.patch
538a3ba9-diskbackend-start-pool-if-not-running.patch
538a6862-vnc-dont-force-keyboard-grab-before-widget-is-realized.patch
538ca3f3-use-correct-dictionary-keys-for-old-pool-net-polling.patch
538d00a4-xen-keyboard-cant-be-removed.patch
538e2f74-fix-pool-create-call.patch
538edb3b-manpage-fix-incorrect-description.patch
5397b647-createnet-enable-specifying-29-subnet.patch
539e8cca-createpool-fix-creation-of-gluster-pools.patch
53a05e73-fix-edit-maxvcpus.patch
53a995cb-fix-usb-storage-removable-syntax.patch
53ac1f8d-createnet-validate-last-page-before-creating-network.patch
53ac1f8d-fix-show_err-typo.patch
53ad17e6-createnet-fix-a-small-pylint.patch
53b39a13-dont-create-disk-images-world-readable-executable.patch
53b409bc-add-keep-alive-method-and-connection-check.patch
53b409bd-console-prevent-access-to-deleted-objects.patch
53b728c6-connection-handle-unsupported-KeepAlive.patch
53b728c6-report-error-during-connection-bring-up.patch
53bb1995-network-refresh-XML-definition-on-state-update.patch
53ce11d1-honor-untoggled-set-fixed-MAC-address.patch
- Dropped xend based virtman-autorestart.patch
-------------------------------------------------------------------
Mon Oct 20 06:40:47 UTC 2014 - dimstar@opensuse.org

View File

@ -15,7 +15,6 @@
# Please submit bugfixes or comments via http://bugs.opensuse.org/
#
%define with_guestfs 0
%define askpass_package "openssh-askpass"
%define qemu_user "qemu"
@ -23,11 +22,11 @@
%define libvirt_xen_packages ""
%define preferred_distros "sles,opensuse"
%define kvm_packages ""
%define _version 1.0.1
%define _version 1.1.0
%define _release 1
Name: virt-manager
Version: 1.0.1
Version: 1.1.0
Release: 0
Summary: Virtual Machine Manager
License: GPL-2.0+
@ -36,63 +35,12 @@ Url: http://virt-manager.org/
Source0: %{name}-%{version}.tar.bz2
Source1: virt-install.rb
Source2: virt-install.desktop
Patch1: 5332ee4d-enable-media-detection-for-ISO-images.patch
Patch2: 53341e7e-hide-hardware-removal-for-non-devices.patch
Patch3: 53342f31-set-right-ip-address-for-ipv6.patch
Patch4: 53375bad-raise-value-error-when-no-ipaddr-set.patch
Patch5: 53388de2-show-port-number-for-active-autoport-VM.patch
Patch6: 53397ae0-check-ip-address-format.patch
Patch7: 53399b45-hook-into-domain-balloon-event.patch
Patch8: 533d708d-fix-showing-vcpus-values.patch
Patch9: 533d7602-fix-changing-graphics-type.patch
Patch10: 533d7be7-clarify-iscsi-IQN-fields.patch
Patch11: 5345682c-addstorage-remove-whitespace-for-storage-path.patch
Patch12: 534bcfa0-use-uniformed-expression-of-Default.patch
Patch13: 534be092-early-detect-ftp-connection-errors.patch
Patch14: 534d45db-hiding-removebutton-for-USB-controller.patch
Patch15: 534d6406-display-the-domain-for-PCI-devices.patch
Patch16: 534eafe4-avoid-useless-errors-when-connection-closes.patch
Patch17: 5350d9cc-display-error-on-empty-installation-URL.patch
Patch18: 535584ed-fix-target-validation-when-editing-device.patch
Patch19: 535fb6f6-hide-scrollbar-until-something-scrollable.patch
Patch20: 535fe0c2-fix-screenshot-with-qxl-spice.patch
Patch21: 535feaca-fix-storage-when-directory-name-contains-whitespace.patch
Patch22: 535ff0b7-fix-install-when-one-package-is-already-installed.patch
Patch23: 536152fe-fix-error-detecting-OS-in-show-all-list.patch
Patch24: 536154d8-show-error-if-launching-delete-dialog-fails.patch
Patch25: 53615662-call-path_exists-before-getting-storage-volume.patch
Patch26: 536677aa-better-handling-of-keyboard-input-type.patch
Patch27: 5385d602-lxc-no-default-disk.patch
Patch28: 53869170-virt-install-add-events-support.patch
Patch29: 538a11dc-raise-error-if-populating-summary-page-fails.patch
Patch30: 538a3609-virtconv-fix-use-of-relative-OVF-file.patch
Patch31: 538a3ba9-diskbackend-start-pool-if-not-running.patch
Patch32: 538a6862-vnc-dont-force-keyboard-grab-before-widget-is-realized.patch
Patch33: 538ca3f3-use-correct-dictionary-keys-for-old-pool-net-polling.patch
Patch34: 538d00a4-xen-keyboard-cant-be-removed.patch
Patch35: 538e2f74-fix-pool-create-call.patch
Patch36: 538edb3b-manpage-fix-incorrect-description.patch
Patch37: 5397b647-createnet-enable-specifying-29-subnet.patch
Patch38: 539e8cca-createpool-fix-creation-of-gluster-pools.patch
Patch39: 53a05e73-fix-edit-maxvcpus.patch
Patch40: 53a995cb-fix-usb-storage-removable-syntax.patch
Patch41: 53ac1f8d-fix-show_err-typo.patch
Patch42: 53ac1f8d-createnet-validate-last-page-before-creating-network.patch
Patch43: 53ad17e6-createnet-fix-a-small-pylint.patch
Patch44: 53b39a13-dont-create-disk-images-world-readable-executable.patch
Patch45: 53b409bc-add-keep-alive-method-and-connection-check.patch
Patch46: 53b409bd-console-prevent-access-to-deleted-objects.patch
Patch47: 53b728c6-report-error-during-connection-bring-up.patch
Patch48: 53b728c6-connection-handle-unsupported-KeepAlive.patch
Patch49: 53bb1995-network-refresh-XML-definition-on-state-update.patch
Patch50: 53ce11d1-honor-untoggled-set-fixed-MAC-address.patch
Patch70: virtman-desktop.patch
Patch71: virtman-cdrom.patch
Patch72: virtman-kvm.patch
Patch73: virtman-keycombo.patch
Patch74: virtman-eepro100.patch
Patch75: virtman-supported-disk-formats.patch
Patch76: virtman-autorestart.patch
Patch80: virtman-default-guest-from-host-os.patch
Patch81: virtman-default-to-xen-pv.patch
Patch82: virtman-autoyast-support.patch
@ -138,6 +86,7 @@ Requires: avahi
Requires: dbus-1-x11
Requires: dconf
Requires: gtk3
Requires: libosinfo >= 0.2.10
Requires: python-gconf
Requires: virt-manager-common = %{verrel}
Requires: vm-install >= 0.5.6
@ -196,7 +145,6 @@ Requires: virt-manager-common = %{verrel}
Provides: python-virtinst
Provides: virt-clone
Provides: virt-convert
Provides: virt-image
Obsoletes: python-virtinst <= 0.600.4
Supplements: virt-manager
@ -208,63 +156,12 @@ machine).
%prep
%setup -q
%patch1 -p1
%patch2 -p1
%patch3 -p1
%patch4 -p1
%patch5 -p1
%patch6 -p1
%patch7 -p1
%patch8 -p1
%patch9 -p1
%patch10 -p1
%patch11 -p1
%patch12 -p1
%patch13 -p1
%patch14 -p1
%patch15 -p1
%patch16 -p1
%patch17 -p1
%patch18 -p1
%patch19 -p1
%patch20 -p1
%patch21 -p1
%patch22 -p1
%patch23 -p1
%patch24 -p1
%patch25 -p1
%patch26 -p1
%patch27 -p1
%patch28 -p1
%patch29 -p1
%patch30 -p1
%patch31 -p1
%patch32 -p1
%patch33 -p1
%patch34 -p1
%patch35 -p1
%patch36 -p1
%patch37 -p1
%patch38 -p1
%patch39 -p1
%patch40 -p1
%patch41 -p1
%patch42 -p1
%patch43 -p1
%patch44 -p1
%patch45 -p1
%patch46 -p1
%patch47 -p1
%patch48 -p1
%patch49 -p1
%patch50 -p1
%patch70 -p1
%patch71 -p1
%patch72 -p1
%patch73 -p1
%patch74 -p1
%patch75 -p1
%patch76 -p1
%patch80 -p1
%patch81 -p1
%patch82 -p1
@ -402,23 +299,21 @@ fi
%{_mandir}/man1/virt-install.1*
%{_mandir}/man1/virt-clone.1*
%{_mandir}/man1/virt-convert.1*
%{_mandir}/man1/virt-image.1*
%{_mandir}/man1/virt-xml.1*
%{_mandir}/man5/virt-image.5*
%{_datadir}/%{name}/virt-install
%{_datadir}/%{name}/virt-clone
%{_datadir}/%{name}/virt-image
%{_datadir}/%{name}/virt-convert
%{_datadir}/%{name}/virt-xml
%dir %{_datadir}/*
%dir %{_datadir}/*/*
%dir %{_datadir}/YaST2
%dir %{_datadir}/YaST2/clients
%dir %{_datadir}/applications/YaST2
%dir %{_datadir}/appdata
%{_datadir}/YaST2/clients/virt-install.rb
%{_datadir}/applications/YaST2/virt-install.desktop
%{_bindir}/virt-install
%{_bindir}/virt-clone
%{_bindir}/virt-image
%{_bindir}/virt-convert
%{_bindir}/virt-xml

View File

@ -1,10 +1,10 @@
bnc#885308
Index: virt-manager-1.0.1/virtinst/guest.py
Index: virt-manager-1.1.0/virtinst/guest.py
===================================================================
--- virt-manager-1.0.1.orig/virtinst/guest.py
+++ virt-manager-1.0.1/virtinst/guest.py
@@ -627,6 +627,15 @@ class Guest(XMLBuilder):
--- virt-manager-1.1.0.orig/virtinst/guest.py
+++ virt-manager-1.1.0/virtinst/guest.py
@@ -637,6 +637,15 @@ class Guest(XMLBuilder):
return
self.add_device(virtinst.VirtualGraphics(self.conn))
@ -20,7 +20,7 @@ Index: virt-manager-1.0.1/virtinst/guest.py
def add_default_devices(self):
self.add_default_graphics()
self.add_default_video_device()
@@ -634,6 +643,7 @@ class Guest(XMLBuilder):
@@ -644,6 +653,7 @@ class Guest(XMLBuilder):
self.add_default_console_device()
self.add_default_usb_controller()
self.add_default_channels()

View File

@ -1,8 +1,8 @@
Index: virt-manager-1.0.1/virtinst/urlfetcher.py
Index: virt-manager-1.1.0/virtinst/urlfetcher.py
===================================================================
--- virt-manager-1.0.1.orig/virtinst/urlfetcher.py
+++ virt-manager-1.0.1/virtinst/urlfetcher.py
@@ -303,6 +303,88 @@ def _distroFromTreeinfo(fetcher, arch, v
--- virt-manager-1.1.0.orig/virtinst/urlfetcher.py
+++ virt-manager-1.1.0/virtinst/urlfetcher.py
@@ -321,6 +321,88 @@ def _distroFromTreeinfo(fetcher, arch, v
return ob
@ -91,7 +91,7 @@ Index: virt-manager-1.0.1/virtinst/urlfetcher.py
def getDistroStore(guest, fetcher):
stores = []
@@ -319,6 +401,10 @@ def getDistroStore(guest, fetcher):
@@ -337,6 +419,10 @@ def getDistroStore(guest, fetcher):
if dist:
return dist
@ -99,10 +99,10 @@ Index: virt-manager-1.0.1/virtinst/urlfetcher.py
+ if dist:
+ return dist
+
# FIXME: This 'distro ==' doesn't cut it. 'distro' is from our os
# dictionary, so would look like 'fedora9' or 'rhel5', so this needs
# to be a bit more intelligent
@@ -815,12 +901,11 @@ class SLDistro(RHELDistro):
stores = _allstores[:]
# If user manually specified an os_distro, bump it's URL class
@@ -819,29 +905,59 @@ class SLDistro(RHELDistro):
class SuseDistro(Distro):
name = "SUSE"
@ -116,20 +116,20 @@ Index: virt-manager-1.0.1/virtinst/urlfetcher.py
Distro.__init__(self, *args, **kwargs)
if re.match(r'i[4-9]86', self.arch):
self.arch = 'i386'
@@ -831,22 +916,44 @@ class SuseDistro(Distro):
oldkern += "64"
oldinit += "64"
- # Tested with Opensuse >= 10.2, 11, and sles 10
- self._hvm_kernel_paths = [("boot/%s/loader/linux" % self.arch,
- "boot/%s/loader/initrd" % self.arch)]
- # Tested with Opensuse 10.0
- self._hvm_kernel_paths.append(("boot/loader/%s" % oldkern,
- "boot/loader/%s" % oldinit))
-
- # Matches Opensuse > 10.2 and sles 10
- self._xen_kernel_paths = [("boot/%s/vmlinuz-xen" % self.arch,
- "boot/%s/initrd-xen" % self.arch)]
+ oldkern = "linux"
+ oldinit = "initrd"
+ if self.arch == "x86_64":
+ oldkern += "64"
+ oldinit += "64"
+
+ if self.arch == "s390x":
+ self._hvm_kernel_paths = [ ("boot/%s/linux" % self.arch,
+ "boot/%s/initrd" % self.arch) ]
@ -171,8 +171,8 @@ Index: virt-manager-1.0.1/virtinst/urlfetcher.py
return True
def _get_method_arg(self):
@@ -867,6 +974,27 @@ class SuseDistro(Distro):
return name
@@ -861,6 +977,27 @@ class SuseDistro(Distro):
return osobj.name
return self.os_variant
+class SLESDistro(SuseDistro):

View File

@ -1,8 +1,8 @@
Index: virt-manager-1.0.1/virtinst/urlfetcher.py
Index: virt-manager-1.1.0/virtinst/urlfetcher.py
===================================================================
--- virt-manager-1.0.1.orig/virtinst/urlfetcher.py
+++ virt-manager-1.0.1/virtinst/urlfetcher.py
@@ -386,6 +386,24 @@ def _distroFromContent(fetcher, arch, vm
--- virt-manager-1.1.0.orig/virtinst/urlfetcher.py
+++ virt-manager-1.1.0/virtinst/urlfetcher.py
@@ -404,6 +404,24 @@ def _distroFromContent(fetcher, arch, vm
return ob
@ -27,7 +27,7 @@ Index: virt-manager-1.0.1/virtinst/urlfetcher.py
def getDistroStore(guest, fetcher):
stores = []
logging.debug("Finding distro store for location=%s", fetcher.location)
@@ -405,6 +423,10 @@ def getDistroStore(guest, fetcher):
@@ -423,6 +441,10 @@ def getDistroStore(guest, fetcher):
if dist:
return dist
@ -35,10 +35,10 @@ Index: virt-manager-1.0.1/virtinst/urlfetcher.py
+ if dist:
+ return dist
+
# FIXME: This 'distro ==' doesn't cut it. 'distro' is from our os
# dictionary, so would look like 'fedora9' or 'rhel5', so this needs
# to be a bit more intelligent
@@ -1151,6 +1173,13 @@ class ALTLinuxDistro(Distro):
stores = _allstores[:]
# If user manually specified an os_distro, bump it's URL class
@@ -1158,6 +1180,13 @@ class ALTLinuxDistro(Distro):
logging.debug("Regex didn't match, not a %s distro", self.name)
return False
@ -52,22 +52,20 @@ Index: virt-manager-1.0.1/virtinst/urlfetcher.py
# Build list of all *Distro classes
def _build_distro_list():
Index: virt-manager-1.0.1/virtinst/osdict.py
Index: virt-manager-1.1.0/virtinst/osdict.py
===================================================================
--- virt-manager-1.0.1.orig/virtinst/osdict.py
+++ virt-manager-1.0.1/virtinst/osdict.py
@@ -316,9 +316,12 @@ _add_var("win2k", "Microsoft Windows 200
_add_var("winxp", "Microsoft Windows XP", sortby="mswin5", supported=True, xen_disable_acpi=True, parent="windows")
_add_var("winxp64", "Microsoft Windows XP (x86_64)", supported=True, sortby="mswin564", parent="windows")
_add_var("win2k3", "Microsoft Windows Server 2003", supported=True, sortby="mswinserv2003", parent="windows")
-_add_var("win2k8", "Microsoft Windows Server 2008 (or later)", supported=True, sortby="mswinserv2008", parent="windows")
--- virt-manager-1.1.0.orig/virtinst/osdict.py
+++ virt-manager-1.1.0/virtinst/osdict.py
@@ -543,6 +543,12 @@ _add_var("oes11", "Novell Open Enterpris
_add_var("rear", "Relax and Recover", supported=True, virtiodisk=True, virtionet=True, parent="sles11")
_add_var("netware6", "Novell Netware 6 (or later)", supported=True, parent="other")
+_add_var("win2k8", "Microsoft Windows Server 2008", supported=True, sortby="mswinserv2008", parent="windows")
+_add_var("win2k12", "Microsoft Windows Server 2012 (or later)", supported=True, sortby="mswinserv2012", parent="windows")
_add_var("vista", "Microsoft Windows Vista", supported=True, sortby="mswin6", parent="windows")
-_add_var("win7", "Microsoft Windows 7 (or later)", supported=True, sortby="mswin7", parent="windows")
+_add_var("win7", "Microsoft Windows 7", supported=True, sortby="mswin7", parent="windows")
+_add_var("win8", "Microsoft Windows 8 (or later)", supported=True, sortby="mswin8", parent="windows")
+_add_var("win-unknown", "Microsoft Windows Unknown Version", supported=True, sortby="mswin", parent="windows")
+
_add_type("solaris", "Solaris", clock="localtime")
_os_data_loaded = False
_os_loader = None

View File

@ -4,11 +4,11 @@ Ignore HTTP error 403 if the location is a directory. This allows
the OS detection procedure to succeed when Indexes are disabled
on the HTTP server.
Index: virt-manager-1.0.1/virtinst/urlfetcher.py
Index: virt-manager-1.1.0/virtinst/urlfetcher.py
===================================================================
--- virt-manager-1.0.1.orig/virtinst/urlfetcher.py
+++ virt-manager-1.0.1/virtinst/urlfetcher.py
@@ -140,8 +140,11 @@ class _HTTPImageFetcher(_URIImageFetcher
--- virt-manager-1.1.0.orig/virtinst/urlfetcher.py
+++ virt-manager-1.1.0/virtinst/urlfetcher.py
@@ -142,8 +142,11 @@ class _HTTPImageFetcher(_URIImageFetcher
request.get_method = lambda: "HEAD"
urllib2.urlopen(request)
except Exception, e:

View File

@ -1,8 +1,8 @@
Index: virt-manager-1.0.1/virtManager/create.py
Index: virt-manager-1.1.0/virtManager/create.py
===================================================================
--- virt-manager-1.0.1.orig/virtManager/create.py
+++ virt-manager-1.0.1/virtManager/create.py
@@ -337,7 +337,18 @@ class vmmCreate(vmmGObjectUI):
--- virt-manager-1.1.0.orig/virtManager/create.py
+++ virt-manager-1.1.0/virtManager/create.py
@@ -342,7 +342,18 @@ class vmmCreate(vmmGObjectUI):
self.widget("method-local").set_active(True)
self.widget("create-conn").set_active(-1)
activeconn = self.populate_conn_list(urihint)
@ -22,14 +22,14 @@ Index: virt-manager-1.0.1/virtManager/create.py
try:
self.set_conn(activeconn, force_validate=True)
Index: virt-manager-1.0.1/virtManager/netlist.py
Index: virt-manager-1.1.0/virtManager/netlist.py
===================================================================
--- virt-manager-1.0.1.orig/virtManager/netlist.py
+++ virt-manager-1.0.1/virtManager/netlist.py
@@ -174,10 +174,20 @@ class vmmNetworkList(vmmGObjectUI):
if nic.target_dev and nic.target_dev not in vnet_taps:
vnet_taps.append(nic.target_dev)
--- virt-manager-1.1.0.orig/virtManager/netlist.py
+++ virt-manager-1.1.0/virtManager/netlist.py
@@ -167,9 +167,19 @@ class vmmNetworkList(vmmGObjectUI):
return rows, vnet_bridges, default_label
def _find_physical_devices(self, vnet_bridges):
+ def check_for_inet(bname):
+ if bname is not None:
+ from subprocess import Popen, PIPE
@ -39,33 +39,29 @@ Index: virt-manager-1.0.1/virtManager/netlist.py
+ return True
+ return False
+
bridge_dict = {}
iface_dict = {}
hasShared = False
brIdxLabel = None
+ brIdxLabel_with_inet = None
rows = []
can_default = False
default_label = None
+ default_label_with_inet = None
skip_ifaces = ["lo"]
for name in self.conn.list_net_device_paths():
@@ -218,6 +228,11 @@ class vmmNetworkList(vmmGObjectUI):
if hasShared and not brIdxLabel:
brIdxLabel = label
vnet_taps = []
@@ -228,10 +238,18 @@ class vmmNetworkList(vmmGObjectUI):
if can_default and not default_label:
default_label = label
+ # Default to a bridge that has an actual inet addr
+ if brIdxLabel_with_inet is None:
+ if check_for_inet(bridge_name):
+ brIdxLabel_with_inet = label
+ if default_label_with_inet is None:
+ if check_for_inet(source_name):
+ default_label_with_inet = label
+
row = self._build_source_row(
nettype, bridge_name, label, sensitive, True,
key=br.get_name())
@@ -227,6 +242,9 @@ class vmmNetworkList(vmmGObjectUI):
else:
iface_dict[label] = row
rows.append(self._build_source_row(
nettype, source_name, label, sensitive, True,
key=name))
+ if brIdxLabel and brIdxLabel_with_inet is not None:
+ brIdxLabel = brIdxLabel_with_inet
+ if default_label and default_label_with_inet is not None:
+ default_label = default_label_with_inet
+
return bridge_dict, iface_dict, brIdxLabel
return rows, default_label
def _populate_network_list(self):

View File

@ -1,10 +1,10 @@
bnc#888251
Index: virt-manager-1.0.1/virtinst/util.py
Index: virt-manager-1.1.0/virtinst/util.py
===================================================================
--- virt-manager-1.0.1.orig/virtinst/util.py
+++ virt-manager-1.0.1/virtinst/util.py
@@ -626,3 +626,22 @@ def getInstallRepos(enabled_sources_only
--- virt-manager-1.1.0.orig/virtinst/util.py
+++ virt-manager-1.1.0/virtinst/util.py
@@ -612,3 +612,22 @@ def getInstallRepos(enabled_sources_only
zypper_output.insert(0, dom0_inst_source)
return (index_dom0, zypper_output)
@ -27,11 +27,11 @@ Index: virt-manager-1.0.1/virtinst/util.py
+
+ return url
+
Index: virt-manager-1.0.1/virtinst/distroinstaller.py
Index: virt-manager-1.1.0/virtinst/distroinstaller.py
===================================================================
--- virt-manager-1.0.1.orig/virtinst/distroinstaller.py
+++ virt-manager-1.0.1/virtinst/distroinstaller.py
@@ -50,6 +50,8 @@ def _sanitize_url(url):
--- virt-manager-1.1.0.orig/virtinst/distroinstaller.py
+++ virt-manager-1.1.0/virtinst/distroinstaller.py
@@ -51,6 +51,8 @@ def _sanitize_url(url):
"""
Do nothing for http or ftp, but make sure nfs is in the expected format
"""
@ -40,10 +40,10 @@ Index: virt-manager-1.0.1/virtinst/distroinstaller.py
if url.startswith("nfs://"):
# Convert RFC compliant NFS nfs://server/path/to/distro
# to what mount/anaconda expect nfs:server:/path/to/distro
Index: virt-manager-1.0.1/virtinst/urlfetcher.py
Index: virt-manager-1.1.0/virtinst/urlfetcher.py
===================================================================
--- virt-manager-1.0.1.orig/virtinst/urlfetcher.py
+++ virt-manager-1.0.1/virtinst/urlfetcher.py
--- virt-manager-1.1.0.orig/virtinst/urlfetcher.py
+++ virt-manager-1.1.0/virtinst/urlfetcher.py
@@ -33,6 +33,7 @@ import urlparse
import urlgrabber.grabber as grabber
@ -52,7 +52,7 @@ Index: virt-manager-1.0.1/virtinst/urlfetcher.py
#########################################################################
@@ -210,7 +211,8 @@ class _MountedImageFetcher(_LocalImageFe
@@ -223,7 +224,8 @@ class _MountedImageFetcher(_LocalImageFe
logging.debug("Preparing mount at " + self.srcdir)
if self.location.startswith("nfs:"):

View File

@ -1,8 +1,8 @@
Index: virt-manager-1.0.1/virtinst/guest.py
Index: virt-manager-1.1.0/virtinst/guest.py
===================================================================
--- virt-manager-1.0.1.orig/virtinst/guest.py
+++ virt-manager-1.0.1/virtinst/guest.py
@@ -623,7 +623,7 @@ class Guest(XMLBuilder):
--- virt-manager-1.1.0.orig/virtinst/guest.py
+++ virt-manager-1.1.0/virtinst/guest.py
@@ -633,7 +633,7 @@ class Guest(XMLBuilder):
return
if self.os.is_container():
return
@ -11,7 +11,7 @@ Index: virt-manager-1.0.1/virtinst/guest.py
return
self.add_device(virtinst.VirtualGraphics(self.conn))
@@ -752,6 +752,8 @@ class Guest(XMLBuilder):
@@ -771,6 +771,8 @@ class Guest(XMLBuilder):
if self.conn.is_qemu():
if self.os.arch == "s390x":
preferred_emulator = "/usr/bin/qemu-system-s390x"
@ -20,7 +20,7 @@ Index: virt-manager-1.0.1/virtinst/guest.py
else:
preferred_emulator = "/usr/bin/qemu-system-x86_64"
else:
@@ -847,7 +849,7 @@ class Guest(XMLBuilder):
@@ -877,7 +879,7 @@ class Guest(XMLBuilder):
if not self._lookup_osdict_key(key, False):
return False
@ -29,7 +29,7 @@ Index: virt-manager-1.0.1/virtinst/guest.py
return True
if (self.os.is_arm_vexpress() and
self.os.dtb and
@@ -898,6 +900,8 @@ class Guest(XMLBuilder):
@@ -928,6 +930,8 @@ class Guest(XMLBuilder):
net_model = None
elif self._can_virtio("virtionet"):
net_model = "virtio"
@ -38,11 +38,11 @@ Index: virt-manager-1.0.1/virtinst/guest.py
else:
net_model = self._lookup_osdict_key("netmodel", None)
Index: virt-manager-1.0.1/virtinst/osxml.py
Index: virt-manager-1.1.0/virtinst/osxml.py
===================================================================
--- virt-manager-1.0.1.orig/virtinst/osxml.py
+++ virt-manager-1.0.1/virtinst/osxml.py
@@ -55,6 +55,8 @@ class OSXML(XMLBuilder):
--- virt-manager-1.1.0.orig/virtinst/osxml.py
+++ virt-manager-1.1.0/virtinst/osxml.py
@@ -60,6 +60,8 @@ class OSXML(XMLBuilder):
return self.is_ppc64 and self.machine == "pseries"
def is_s390x(self):
return self.arch == "s390x"
@ -51,11 +51,11 @@ Index: virt-manager-1.0.1/virtinst/osxml.py
_XML_ROOT_NAME = "os"
_XML_PROP_ORDER = ["arch", "os_type", "loader",
Index: virt-manager-1.0.1/virtinst/urlfetcher.py
Index: virt-manager-1.1.0/virtinst/urlfetcher.py
===================================================================
--- virt-manager-1.0.1.orig/virtinst/urlfetcher.py
+++ virt-manager-1.0.1/virtinst/urlfetcher.py
@@ -940,10 +940,11 @@ class SuseDistro(Distro):
--- virt-manager-1.1.0.orig/virtinst/urlfetcher.py
+++ virt-manager-1.1.0/virtinst/urlfetcher.py
@@ -944,10 +944,11 @@ class SuseDistro(Distro):
oldkern += "64"
oldinit += "64"

View File

@ -1,8 +1,8 @@
Index: virt-manager-1.0.1/virtinst/guest.py
Index: virt-manager-1.1.0/virtinst/guest.py
===================================================================
--- virt-manager-1.0.1.orig/virtinst/guest.py
+++ virt-manager-1.0.1/virtinst/guest.py
@@ -351,8 +351,18 @@ class Guest(XMLBuilder):
--- virt-manager-1.1.0.orig/virtinst/guest.py
+++ virt-manager-1.1.0/virtinst/guest.py
@@ -353,8 +353,18 @@ class Guest(XMLBuilder):
if (not install and
self.os.is_xenpv() and
not self.os.kernel):
@ -23,10 +23,10 @@ Index: virt-manager-1.0.1/virtinst/guest.py
return self.get_xml_config()
Index: virt-manager-1.0.1/virtinst/installer.py
Index: virt-manager-1.1.0/virtinst/installer.py
===================================================================
--- virt-manager-1.0.1.orig/virtinst/installer.py
+++ virt-manager-1.0.1/virtinst/installer.py
--- virt-manager-1.1.0.orig/virtinst/installer.py
+++ virt-manager-1.1.0/virtinst/installer.py
@@ -111,7 +111,7 @@ class Installer(object):
dev.validate()
return dev

View File

@ -12,14 +12,14 @@ status affects the hypervisor connection.
Signed-off-by: Chunyan Liu <cyliu@suse.com>
Index: virt-manager-1.0.1/virtinst/pollhelpers.py
Index: virt-manager-1.1.0/virtinst/pollhelpers.py
===================================================================
--- virt-manager-1.0.1.orig/virtinst/pollhelpers.py
+++ virt-manager-1.0.1/virtinst/pollhelpers.py
@@ -138,6 +138,19 @@ def fetch_pools(backend, origmap, build_
--- virt-manager-1.1.0.orig/virtinst/pollhelpers.py
+++ virt-manager-1.1.0/virtinst/pollhelpers.py
@@ -133,6 +133,19 @@ def fetch_pools(backend, origmap, build_
if backend.check_support(
backend.SUPPORT_CONN_LISTALLSTORAGEPOOLS):
backend.SUPPORT_CONN_LISTALLSTORAGEPOOLS) and not _force_old_poll:
+
+ # Refresh pools before poll_helper. For those
+ # 'active' but target path not exist (or other reasons
@ -34,5 +34,5 @@ Index: virt-manager-1.0.1/virtinst/pollhelpers.py
+ pass
+
return _new_poll_helper(origmap, name,
backend.listAllStoragePools,
"UUIDString", build_func)
backend.listAllStoragePools, build_func)
else:

View File

@ -1,8 +1,8 @@
Index: virt-manager-1.0.1/virtinst/guest.py
Index: virt-manager-1.1.0/virtinst/guest.py
===================================================================
--- virt-manager-1.0.1.orig/virtinst/guest.py
+++ virt-manager-1.0.1/virtinst/guest.py
@@ -346,6 +346,12 @@ class Guest(XMLBuilder):
--- virt-manager-1.1.0.orig/virtinst/guest.py
+++ virt-manager-1.1.0/virtinst/guest.py
@@ -348,6 +348,12 @@ class Guest(XMLBuilder):
self.on_reboot = action
self.on_crash = action
@ -15,7 +15,7 @@ Index: virt-manager-1.0.1/virtinst/guest.py
self._set_defaults()
self.bootloader = None
@@ -365,7 +371,10 @@ class Guest(XMLBuilder):
@@ -367,7 +373,10 @@ class Guest(XMLBuilder):
self.bootloader = "/usr/bin/pygrub"
self.os.clear()

View File

@ -1,7 +1,7 @@
Index: virt-manager-1.0.1/virtinst/guest.py
Index: virt-manager-1.1.0/virtinst/guest.py
===================================================================
--- virt-manager-1.0.1.orig/virtinst/guest.py
+++ virt-manager-1.0.1/virtinst/guest.py
--- virt-manager-1.1.0.orig/virtinst/guest.py
+++ virt-manager-1.1.0/virtinst/guest.py
@@ -19,6 +19,7 @@
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
# MA 02110-1301 USA.
@ -10,7 +10,7 @@ Index: virt-manager-1.0.1/virtinst/guest.py
import logging
import urlgrabber.progress as progress
@@ -729,14 +730,22 @@ class Guest(XMLBuilder):
@@ -748,14 +749,22 @@ class Guest(XMLBuilder):
self.emulator = None
return

View File

@ -1,8 +1,8 @@
Index: virt-manager-1.0.0/virtinst/storage.py
Index: virt-manager-1.1.0/virtinst/storage.py
===================================================================
--- virt-manager-1.0.0.orig/virtinst/storage.py
+++ virt-manager-1.0.0/virtinst/storage.py
@@ -403,7 +403,7 @@ class StoragePool(_StorageObject):
--- virt-manager-1.1.0.orig/virtinst/storage.py
+++ virt-manager-1.1.0/virtinst/storage.py
@@ -405,7 +405,7 @@ class StoragePool(_StorageObject):
def list_formats(self):
if self.type == self.TYPE_FS:
return ["auto", "ext2", "ext3", "ext4", "ufs", "iso9660", "udf",

View File

@ -1,39 +1,26 @@
Index: virt-manager-1.0.1/virtinst/osdict.py
Index: virt-manager-1.1.0/virtinst/osdict.py
===================================================================
--- virt-manager-1.0.1.orig/virtinst/osdict.py
+++ virt-manager-1.0.1/virtinst/osdict.py
@@ -259,11 +259,23 @@ _add_var("fedora18", "Fedora 18", suppor
_add_var("fedora19", "Fedora 19", virtiommio=True, parent="fedora18")
_add_var("fedora20", "Fedora 20 (or later)", parent="fedora19")
--- virt-manager-1.1.0.orig/virtinst/osdict.py
+++ virt-manager-1.1.0/virtinst/osdict.py
@@ -528,6 +528,21 @@ _add_type("unix", "UNIX")
_add_type("other", "Other")
_add_var("generic", "Generic", supported=True, parent="other")
-_add_var("opensuse11", "openSuse 11", urldistro="suse", supported=True, virtiodisk=True, virtionet=True, parent="linux")
-_add_var("opensuse12", "openSuse 12 (or later)", parent="opensuse11")
+_add_var("opensuse11", "openSUSE 11", urldistro="opensuse", supported=True, virtiodisk=True, virtionet=True, parent="linux")
+_add_var("opensuse12", "openSUSE 12", inputtype="tablet", inputbus="usb", parent="opensuse11")
+_add_var("opensuse13", "openSUSE 13 (or later)", parent="opensuse12")
+
+_add_var("sles", "Suse Linux Enterprise Server", urldistro="suse", supported=True, parent="linux")
+_add_var("sles10", "Suse Linux Enterprise Server 10", supported=True, virtiodisk=True, virtionet=True, parent="sles")
+_add_var("sles11", "Suse Linux Enterprise Server 11", supported=True, virtiodisk=True, virtionet=True, inputtype="tablet", inputbus="usb", parent="sles10")
+_add_var("sles12", "Suse Linux Enterprise Server 12 (or later)", supported=True, virtiodisk=True, virtionet=True, parent="sles11")
+
+_add_var("sled10", "Suse Linux Enterprise Desktop 10", supported=True, virtiodisk=True, virtionet=True, parent="sles10")
+_add_var("sled11", "Suse Linux Enterprise Desktop 11", supported=True, virtiodisk=True, virtionet=True, inputtype="tablet", inputbus="usb", parent="sles11")
+_add_var("sled12", "Suse Linux Enterprise Desktop 12 (or later)", supported=True, virtiodisk=True, virtionet=True, parent="sles12")
-_add_var("sles10", "Suse Linux Enterprise Server", urldistro="suse", supported=True, parent="linux")
-_add_var("sles11", "Suse Linux Enterprise Server 11 (or later)", supported=True, virtiodisk=True, virtionet=True, parent="sles10")
+_add_var("oes2l", "Novell Open Enterprise Server 2", supported=True, virtiodisk=True, virtionet=True, parent="sles10")
+_add_var("oes11", "Novell Open Enterprise Server 11 (or later)", supported=True, virtiodisk=True, virtionet=True, parent="sles11")
+
+_add_var("rear", "Relax and Recover", supported=True, virtiodisk=True, virtionet=True, parent="sles11")
_add_var("mandriva2009", "Mandriva Linux 2009 and earlier", urldistro="mandriva", parent="linux")
_add_var("mandriva2010", "Mandriva Linux 2010 (or later)", virtiodisk=True, virtionet=True, parent="mandriva2009")
@@ -333,5 +345,5 @@ _add_type("other", "Other")
_add_var("msdos", "MS-DOS", acpi=False, apic=False, parent="other")
_add_var("netware4", "Novell Netware 4", parent="other")
_add_var("netware5", "Novell Netware 5", parent="other")
-_add_var("netware6", "Novell Netware 6 (or later)", parent="other")
+_add_var("netware6", "Novell Netware 6 (or later)", supported=True, parent="other")
_add_var("generic", "Generic", supported=True, parent="other")
+
_os_data_loaded = False
_os_loader = None

View File

@ -15,28 +15,6 @@ Index: virt-manager-1.0.1/virtinst/devicedisk.py
CACHE_MODE_NONE = "none"
CACHE_MODE_WRITETHROUGH = "writethrough"
Index: virt-manager-1.0.1/virtinst/virtimage.py
===================================================================
--- virt-manager-1.0.1.orig/virtinst/virtimage.py
+++ virt-manager-1.0.1/virtinst/virtimage.py
@@ -209,6 +209,7 @@ class Disk(object):
FORMAT_QCOW2 = "qcow2"
FORMAT_VMDK = "vmdk"
FORMAT_VDI = "vdi"
+ FORMAT_QED = "qed"
USE_SYSTEM = "system"
USE_USER = "user"
@@ -240,7 +241,8 @@ class Disk(object):
Disk.FORMAT_QCOW2,
Disk.FORMAT_VMDK,
Disk.FORMAT_ISO,
- Disk.FORMAT_VDI]
+ Disk.FORMAT_VDI,
+ Disk.FORMAT_QED]
validate(formats.count(self.format) > 0,
_("The format for disk %s must be one of %s") %
(self.file, ",".join(formats)))
Index: virt-manager-1.0.1/virtinst/support.py
===================================================================
--- virt-manager-1.0.1.orig/virtinst/support.py

View File

@ -3,11 +3,11 @@ issue on btrfs.
Signed-off-by: Chunyan Liu <cyliu@suse.com>
Index: virt-manager-1.0.0/virtinst/storage.py
Index: virt-manager-1.1.0/virtinst/storage.py
===================================================================
--- virt-manager-1.0.0.orig/virtinst/storage.py
+++ virt-manager-1.0.0/virtinst/storage.py
@@ -656,6 +656,11 @@ class StorageVolume(_StorageObject):
--- virt-manager-1.1.0.orig/virtinst/storage.py
+++ virt-manager-1.1.0/virtinst/storage.py
@@ -658,6 +658,11 @@ class StorageVolume(_StorageObject):
lazy_refcounts = XMLProperty("./target/features/lazy_refcounts",
is_bool=True, default_cb=_lazy_refcounts_default_cb)

View File

@ -1,10 +1,10 @@
Reference: bnc#813082
Index: virt-manager-1.0.1/virtinst/devicedisk.py
Index: virt-manager-1.1.0/virtinst/devicedisk.py
===================================================================
--- virt-manager-1.0.1.orig/virtinst/devicedisk.py
+++ virt-manager-1.0.1/virtinst/devicedisk.py
@@ -558,6 +558,12 @@ class VirtualDisk(VirtualDevice):
--- virt-manager-1.1.0.orig/virtinst/devicedisk.py
+++ virt-manager-1.1.0/virtinst/devicedisk.py
@@ -562,6 +562,12 @@ class VirtualDisk(VirtualDevice):
return None
if self.conn.is_qemu():
return self.DRIVER_QEMU
@ -17,7 +17,7 @@ Index: virt-manager-1.0.1/virtinst/devicedisk.py
return None
def _get_default_driver_type(self):
@@ -571,6 +577,8 @@ class VirtualDisk(VirtualDevice):
@@ -575,6 +581,8 @@ class VirtualDisk(VirtualDevice):
http://lists.gnu.org/archive/html/qemu-devel/2008-04/msg00675.html
"""
if self.driver_name != self.DRIVER_QEMU:

View File

@ -1,10 +1,10 @@
bnc#872789
Index: virt-manager-1.0.1/virtinst/devicedisk.py
Index: virt-manager-1.1.0/virtinst/devicedisk.py
===================================================================
--- virt-manager-1.0.1.orig/virtinst/devicedisk.py
+++ virt-manager-1.0.1/virtinst/devicedisk.py
@@ -931,6 +931,17 @@ class VirtualDisk(VirtualDevice):
--- virt-manager-1.1.0.orig/virtinst/devicedisk.py
+++ virt-manager-1.1.0/virtinst/devicedisk.py
@@ -936,6 +936,17 @@ class VirtualDisk(VirtualDevice):
@rtype C{str}
"""
prefix, maxnode = self.get_target_prefix(skip_targets)
@ -22,7 +22,7 @@ Index: virt-manager-1.0.1/virtinst/devicedisk.py
skip_targets = [t for t in skip_targets if t and t.startswith(prefix)]
skip_targets.sort()
@@ -944,7 +955,12 @@ class VirtualDisk(VirtualDevice):
@@ -949,7 +960,12 @@ class VirtualDisk(VirtualDevice):
ran = range(pref_ctrl * 7, (pref_ctrl + 1) * 7)
for i in ran:

View File

@ -1,8 +1,8 @@
Index: virt-manager-1.0.1/virtManager/engine.py
Index: virt-manager-1.1.0/virtManager/engine.py
===================================================================
--- virt-manager-1.0.1.orig/virtManager/engine.py
+++ virt-manager-1.0.1/virtManager/engine.py
@@ -205,9 +205,6 @@ class vmmEngine(vmmGObject):
--- virt-manager-1.1.0.orig/virtManager/engine.py
+++ virt-manager-1.1.0/virtManager/engine.py
@@ -202,9 +202,6 @@ class vmmEngine(vmmGObject):
except:
logging.exception("Error talking to PackageKit")
@ -12,7 +12,7 @@ Index: virt-manager-1.0.1/virtManager/engine.py
warnmsg = _("The 'libvirtd' service will need to be started.\n\n"
"After that, virt-manager will connect to libvirt on\n"
"the next application start up.")
@@ -221,7 +218,11 @@ class vmmEngine(vmmGObject):
@@ -218,7 +215,11 @@ class vmmEngine(vmmGObject):
if not connected and do_start:
manager.err.ok(_("Libvirt service must be started"), warnmsg)

View File

@ -1,8 +1,8 @@
Index: virt-manager-1.0.1/virtManager/create.py
Index: virt-manager-1.1.0/virtManager/create.py
===================================================================
--- virt-manager-1.0.1.orig/virtManager/create.py
+++ virt-manager-1.0.1/virtManager/create.py
@@ -415,7 +415,7 @@ class vmmCreate(vmmGObjectUI):
--- virt-manager-1.1.0.orig/virtManager/create.py
+++ virt-manager-1.1.0/virtManager/create.py
@@ -428,7 +428,7 @@ class vmmCreate(vmmGObjectUI):
can_remote_url = self.conn.get_backend().support_remote_url_install()
installable_arch = (self.capsguest.arch in
@ -11,7 +11,7 @@ Index: virt-manager-1.0.1/virtManager/create.py
# Install Options
method_tree = self.widget("method-tree")
@@ -677,7 +677,7 @@ class vmmCreate(vmmGObjectUI):
@@ -690,7 +690,7 @@ class vmmCreate(vmmGObjectUI):
archs.remove("i686")
archs.sort()
@ -20,11 +20,11 @@ Index: virt-manager-1.0.1/virtManager/create.py
if self.conn.caps.host.cpu.arch not in prios:
prios = []
else:
Index: virt-manager-1.0.1/virtinst/osxml.py
Index: virt-manager-1.1.0/virtinst/osxml.py
===================================================================
--- virt-manager-1.0.1.orig/virtinst/osxml.py
+++ virt-manager-1.0.1/virtinst/osxml.py
@@ -53,6 +53,8 @@ class OSXML(XMLBuilder):
--- virt-manager-1.1.0.orig/virtinst/osxml.py
+++ virt-manager-1.1.0/virtinst/osxml.py
@@ -58,6 +58,8 @@ class OSXML(XMLBuilder):
return self.arch == "ppc64"
def is_pseries(self):
return self.is_ppc64 and self.machine == "pseries"
@ -33,10 +33,10 @@ Index: virt-manager-1.0.1/virtinst/osxml.py
_XML_ROOT_NAME = "os"
_XML_PROP_ORDER = ["arch", "os_type", "loader",
Index: virt-manager-1.0.1/virtinst/guest.py
Index: virt-manager-1.1.0/virtinst/guest.py
===================================================================
--- virt-manager-1.0.1.orig/virtinst/guest.py
+++ virt-manager-1.0.1/virtinst/guest.py
--- virt-manager-1.1.0.orig/virtinst/guest.py
+++ virt-manager-1.1.0/virtinst/guest.py
@@ -112,7 +112,10 @@ class Guest(XMLBuilder):
self.skip_default_channel = False
self.skip_default_sound = False
@ -49,7 +49,7 @@ Index: virt-manager-1.0.1/virtinst/guest.py
self.x86_cpu_default = self.cpu.SPECIAL_MODE_HOST_MODEL_ONLY
self._os_variant = None
@@ -549,11 +552,13 @@ class Guest(XMLBuilder):
@@ -559,11 +562,13 @@ class Guest(XMLBuilder):
self.conn.check_support(
self.conn.SUPPORT_CONN_VIRTIO_CONSOLE)):
dev.target_type = "virtio"
@ -64,7 +64,7 @@ Index: virt-manager-1.0.1/virtinst/guest.py
return
if self.get_devices("video"):
return
@@ -598,7 +603,7 @@ class Guest(XMLBuilder):
@@ -608,7 +613,7 @@ class Guest(XMLBuilder):
return
if self.os.is_container():
return
@ -73,7 +73,7 @@ Index: virt-manager-1.0.1/virtinst/guest.py
return
self.add_device(virtinst.VirtualGraphics(self.conn))
@@ -804,7 +809,7 @@ class Guest(XMLBuilder):
@@ -834,7 +839,7 @@ class Guest(XMLBuilder):
if not self._lookup_osdict_key(key, False):
return False

View File

@ -1,7 +1,9 @@
bnc#875111
--- virt-manager-1.0.1/virtManager/manager.py.orig 2014-08-18 17:39:09.506148602 -0600
+++ virt-manager-1.0.1/virtManager/manager.py 2014-08-18 17:39:12.440170326 -0600
@@ -892,7 +892,7 @@ class vmmManager(vmmGObjectUI):
Index: virt-manager-1.1.0/virtManager/manager.py
===================================================================
--- virt-manager-1.1.0.orig/virtManager/manager.py
+++ virt-manager-1.1.0/virtManager/manager.py
@@ -921,7 +921,7 @@ class vmmManager(vmmGObjectUI):
show_pause = bool(vm and vm.is_unpauseable())
else:
show_pause = bool(vm and vm.is_pauseable())
@ -10,17 +12,19 @@ bnc#875111
if vm and vm.managedsave_supported:
self.change_run_text(vm.hasSavedImage())
--- virt-manager-1.0.1/virtManager/vmmenu.py.orig 2014-08-18 17:39:04.166109065 -0600
+++ virt-manager-1.0.1/virtManager/vmmenu.py 2014-08-18 17:39:15.265191243 -0600
@@ -24,6 +24,7 @@ from gi.repository import Gtk
Index: virt-manager-1.1.0/virtManager/vmmenu.py
===================================================================
--- virt-manager-1.1.0.orig/virtManager/vmmenu.py
+++ virt-manager-1.1.0/virtManager/vmmenu.py
@@ -22,6 +22,7 @@ from gi.repository import Gtk
from virtManager import config
import platform
+import logging
####################################################################
# Build toolbar new button menu (manager and details toolbar) #
@@ -58,6 +59,7 @@ class _VMMenu(Gtk.Menu):
# Build toolbar new button menu (manager and details toolbar) #
@@ -53,6 +54,7 @@ class _VMMenu(Gtk.Menu):
self._parent = src
self._current_vm_cb = current_vm_cb
self._show_open = show_open
@ -28,7 +32,7 @@ bnc#875111
self._init_state()
@@ -122,6 +124,7 @@ class VMShutdownMenu(_VMMenu):
@@ -114,6 +116,7 @@ class VMShutdownMenu(_VMMenu):
name = getattr(child, "vmm_widget_name", None)
if name in statemap:
child.set_sensitive(statemap[name])
@ -36,7 +40,7 @@ bnc#875111
class VMActionMenu(_VMMenu):
@@ -133,7 +136,8 @@ class VMActionMenu(_VMMenu):
@@ -122,7 +125,8 @@ class VMActionMenu(_VMMenu):
self._add_action(_("_Pause"), "suspend", Gtk.STOCK_MEDIA_PAUSE)
self._add_action(_("R_esume"), "resume", Gtk.STOCK_MEDIA_PAUSE)
s = self._add_action(_("_Shut Down"), "shutdown", addcb=False)
@ -46,7 +50,7 @@ bnc#875111
self.add(Gtk.SeparatorMenuItem())
self._add_action(_("Clone..."), "clone", None)
@@ -149,7 +153,7 @@ class VMActionMenu(_VMMenu):
@@ -138,7 +142,7 @@ class VMActionMenu(_VMMenu):
def update_widget_states(self, vm):
statemap = {
"run": bool(vm and vm.is_runable()),
@ -55,7 +59,7 @@ bnc#875111
"suspend": bool(vm and vm.is_stoppable()),
"resume": bool(vm and vm.is_paused()),
"migrate": bool(vm and vm.is_stoppable()),
@@ -166,6 +170,8 @@ class VMActionMenu(_VMMenu):
@@ -155,6 +159,8 @@ class VMActionMenu(_VMMenu):
child.update_widget_states(vm)
if name in statemap:
child.set_sensitive(statemap[name])

View File

@ -1,38 +0,0 @@
Index: virt-manager-1.0.1/virtManager/details.py
===================================================================
--- virt-manager-1.0.1.orig/virtManager/details.py
+++ virt-manager-1.0.1/virtManager/details.py
@@ -2056,10 +2056,10 @@ class vmmDetails(vmmGObjectUI):
return self._change_config_helper(self.vm.define_memory, kwargs,
hotplug_args=hotplug_args)
- def config_boot_options_apply(self):
- kwargs = {}
-
- if self.edited(EDIT_AUTOSTART):
+ # Autostart - See bnc#624250 - L3: virt-manager doesn't update
+ # "Autostart" setting in vm configuration correctly
+ def update_on_xend_start(self):
+ if self.edited(EDIT_AUTOSTART) or self.vm.conn.is_xen():
auto = self.widget("config-autostart")
try:
self.vm.set_autostart(auto.get_active())
@@ -2068,6 +2068,9 @@ class vmmDetails(vmmGObjectUI):
(_("Error changing autostart value: %s") % str(e)))
return False
+ def config_boot_options_apply(self):
+ kwargs = {}
+
if self.edited(EDIT_BOOTORDER):
kwargs["boot_order"] = self.get_config_boot_order()
@@ -2370,6 +2373,8 @@ class vmmDetails(vmmGObjectUI):
buttons=Gtk.ButtonsType.OK,
dialog_type=dtype)
+ self.update_on_xend_start()
+
return True

View File

@ -1,10 +1,10 @@
Index: virt-manager-1.0.1/virtManager/create.py
Index: virt-manager-1.1.0/virtManager/create.py
===================================================================
--- virt-manager-1.0.1.orig/virtManager/create.py
+++ virt-manager-1.0.1/virtManager/create.py
@@ -1230,11 +1230,34 @@ class vmmCreate(vmmGObjectUI):
variant = self.widget("install-os-version")
variant.set_active(0)
--- virt-manager-1.1.0.orig/virtManager/create.py
+++ virt-manager-1.1.0/virtManager/create.py
@@ -1257,11 +1257,34 @@ class vmmCreate(vmmGObjectUI):
if self.widget("install-os-version").get_visible():
self.widget("install-os-version-entry").grab_focus()
+ def _update_kickstart_label(self):
+ # Update label based on os version selected to either kickstart or autoyast
@ -37,7 +37,7 @@ Index: virt-manager-1.0.1/virtManager/create.py
# Get previous
type_row = self._selected_os_row()
if not type_row:
@@ -1594,7 +1617,10 @@ class vmmCreate(vmmGObjectUI):
@@ -1626,7 +1649,10 @@ class vmmCreate(vmmGObjectUI):
if extra:
extraargs += extra
if ks:
@ -49,7 +49,7 @@ Index: virt-manager-1.0.1/virtManager/create.py
if extraargs:
self.guest.installer.extraargs = extraargs
@@ -1992,6 +2018,7 @@ class vmmCreate(vmmGObjectUI):
@@ -2034,6 +2060,7 @@ class vmmCreate(vmmGObjectUI):
dl = self.set_os_val(self.widget("install-os-type"), distro_type)
vl = self.set_os_val(self.widget("install-os-version"), distro_var)
self.set_distro_labels(dl, vl)
@ -57,11 +57,11 @@ Index: virt-manager-1.0.1/virtManager/create.py
def check_detection(self, idx, forward):
results = None
Index: virt-manager-1.0.1/ui/create.ui
Index: virt-manager-1.1.0/ui/create.ui
===================================================================
--- virt-manager-1.0.1.orig/ui/create.ui
+++ virt-manager-1.0.1/ui/create.ui
@@ -869,7 +869,7 @@ bar</property>
--- virt-manager-1.1.0.orig/ui/create.ui
+++ virt-manager-1.1.0/ui/create.ui
@@ -841,7 +841,7 @@ bar</property>
<property name="column_spacing">6</property>
<property name="row_spacing">4</property>
<child>

View File

@ -1,8 +1,8 @@
Index: virt-manager-1.0.1/virtManager/addhardware.py
Index: virt-manager-1.1.0/virtManager/addhardware.py
===================================================================
--- virt-manager-1.0.1.orig/virtManager/addhardware.py
+++ virt-manager-1.0.1/virtManager/addhardware.py
@@ -760,7 +760,7 @@ class vmmAddHardware(vmmGObjectUI):
--- virt-manager-1.1.0.orig/virtManager/addhardware.py
+++ virt-manager-1.1.0/virtManager/addhardware.py
@@ -800,7 +800,7 @@ class vmmAddHardware(vmmGObjectUI):
disk_buses = ["ide", "sata", "scsi", "sd",
"usb", "virtio", "virtio-scsi", "xen"]
floppy_buses = ["fdc"]

View File

@ -1,10 +1,10 @@
bnc#885273
Index: virt-manager-1.0.1/virtManager/createnet.py
Index: virt-manager-1.1.0/virtManager/createnet.py
===================================================================
--- virt-manager-1.0.1.orig/virtManager/createnet.py
+++ virt-manager-1.0.1/virtManager/createnet.py
@@ -253,6 +253,8 @@ class vmmCreateNetwork(vmmGObjectUI):
--- virt-manager-1.1.0.orig/virtManager/createnet.py
+++ virt-manager-1.1.0/virtManager/createnet.py
@@ -257,6 +257,8 @@ class vmmCreateNetwork(vmmGObjectUI):
try:
net = self._build_xmlstub()
net.name = self.widget("net-name").get_text()

View File

@ -1,7 +1,7 @@
Index: virt-manager-1.0.1/virtManager/create.py
Index: virt-manager-1.1.0/virtManager/create.py
===================================================================
--- virt-manager-1.0.1.orig/virtManager/create.py
+++ virt-manager-1.0.1/virtManager/create.py
--- virt-manager-1.1.0.orig/virtManager/create.py
+++ virt-manager-1.1.0/virtManager/create.py
@@ -21,6 +21,8 @@
import logging
import threading
@ -9,9 +9,9 @@ Index: virt-manager-1.0.1/virtManager/create.py
+import sys
+import os
# pylint: disable=E0611
from gi.repository import GObject
@@ -1142,6 +1144,55 @@ class vmmCreate(vmmGObjectUI):
from gi.repository import Gtk
@@ -1167,6 +1169,55 @@ class vmmCreate(vmmGObjectUI):
return
self.start_detection(forward=forward)
@ -67,8 +67,8 @@ Index: virt-manager-1.0.1/virtManager/create.py
def toggle_detect_os(self, src):
dodetect = src.get_active()
@@ -1153,6 +1204,8 @@ class vmmCreate(vmmGObjectUI):
if dodetect:
@@ -1179,6 +1230,8 @@ class vmmCreate(vmmGObjectUI):
self.widget("install-os-version-entry").set_text("")
self.mediaDetected = False
self.detect_media_os()
+ else:

View File

@ -10,11 +10,11 @@ locally, but only if there is no kvm/xen URI to default to.
virtManager/connect.py | 4 ++++
2 files changed, 11 insertions(+), 3 deletions(-)
Index: virt-manager-1.0.1/virtManager/connect.py
Index: virt-manager-1.1.0/virtManager/connect.py
===================================================================
--- virt-manager-1.0.1.orig/virtManager/connect.py
+++ virt-manager-1.0.1/virtManager/connect.py
@@ -116,6 +116,10 @@ class vmmConnect(vmmGObjectUI):
--- virt-manager-1.1.0.orig/virtManager/connect.py
+++ virt-manager-1.1.0/virtManager/connect.py
@@ -115,6 +115,10 @@ class vmmConnect(vmmGObjectUI):
return "qemu:///system"
else:
return "qemu:///session"

View File

@ -1,8 +1,8 @@
Index: virt-manager-1.0.1/virtManager/create.py
Index: virt-manager-1.1.0/virtManager/create.py
===================================================================
--- virt-manager-1.0.1.orig/virtManager/create.py
+++ virt-manager-1.0.1/virtManager/create.py
@@ -862,7 +862,12 @@ class vmmCreate(vmmGObjectUI):
--- virt-manager-1.1.0.orig/virtManager/create.py
+++ virt-manager-1.1.0/virtManager/create.py
@@ -876,7 +876,12 @@ class vmmCreate(vmmGObjectUI):
if gtype is None:
# If none specified, prefer HVM so install options aren't limited
# with a default PV choice.

View File

@ -1,10 +1,10 @@
bnc#885094
Index: virt-manager-1.0.1/virtManager/delete.py
Index: virt-manager-1.1.0/virtManager/delete.py
===================================================================
--- virt-manager-1.0.1.orig/virtManager/delete.py
+++ virt-manager-1.0.1/virtManager/delete.py
@@ -242,7 +242,7 @@ def populate_storage_list(storage_list,
--- virt-manager-1.1.0.orig/virtManager/delete.py
+++ virt-manager-1.1.0/virtManager/delete.py
@@ -240,7 +240,7 @@ def populate_storage_list(storage_list,
diskdata.append(("dtb", vm.get_xmlobj().os.dtb, True, False))
for target, path, ro, shared in diskdata:

View File

@ -1,8 +1,8 @@
Index: virt-manager-1.0.1/virtManager/addhardware.py
Index: virt-manager-1.1.0/virtManager/addhardware.py
===================================================================
--- virt-manager-1.0.1.orig/virtManager/addhardware.py
+++ virt-manager-1.0.1/virtManager/addhardware.py
@@ -555,6 +555,7 @@ class vmmAddHardware(vmmGObjectUI):
--- virt-manager-1.1.0.orig/virtManager/addhardware.py
+++ virt-manager-1.1.0/virtManager/addhardware.py
@@ -574,6 +574,7 @@ class vmmAddHardware(vmmGObjectUI):
if vm.is_hvm():
mod_list = ["rtl8139", "ne2k_pci", "pcnet", "e1000"]
if vm.get_hv_type() in ["kvm", "qemu", "test"]:

View File

@ -1,7 +1,9 @@
bnc#892003
--- virt-manager-1.0.1/virtManager/connection.py.orig 2014-08-18 13:45:50.843688551 -0600
+++ virt-manager-1.0.1/virtManager/connection.py 2014-08-18 14:13:37.968606032 -0600
@@ -1114,7 +1114,7 @@ class vmmConnection(vmmGObject):
Index: virt-manager-1.1.0/virtManager/connection.py
===================================================================
--- virt-manager-1.1.0.orig/virtManager/connection.py
+++ virt-manager-1.1.0/virtManager/connection.py
@@ -1028,7 +1028,7 @@ class vmmConnection(vmmGObject):
self._add_conn_events()
try:

View File

@ -1,8 +1,8 @@
Index: virt-manager-1.0.1/virtManager/console.py
Index: virt-manager-1.1.0/virtManager/console.py
===================================================================
--- virt-manager-1.0.1.orig/virtManager/console.py
+++ virt-manager-1.0.1/virtManager/console.py
@@ -942,6 +942,16 @@ class vmmConsolePages(vmmGObjectUI):
--- virt-manager-1.1.0.orig/virtManager/console.py
+++ virt-manager-1.1.0/virtManager/console.py
@@ -940,6 +940,16 @@ class vmmConsolePages(vmmGObjectUI):
make_item("Ctrl+Alt+_Backspace", ["Control_L", "Alt_L", "BackSpace"])
make_item("Ctrl+Alt+_Delete", ["Control_L", "Alt_L", "Delete"])
menu.add(Gtk.SeparatorMenuItem())

View File

@ -1,8 +1,8 @@
Index: virt-manager-1.0.1/virtManager/connect.py
Index: virt-manager-1.1.0/virtManager/connect.py
===================================================================
--- virt-manager-1.0.1.orig/virtManager/connect.py
+++ virt-manager-1.0.1/virtManager/connect.py
@@ -110,7 +110,7 @@ class vmmConnect(vmmGObjectUI):
--- virt-manager-1.1.0.orig/virtManager/connect.py
+++ virt-manager-1.1.0/virtManager/connect.py
@@ -109,7 +109,7 @@ class vmmConnect(vmmGObjectUI):
if (os.path.exists("/usr/bin/qemu") or
os.path.exists("/usr/bin/qemu-kvm") or

View File

@ -1,8 +1,8 @@
Index: virt-manager-1.0.1/virtManager/packageutils.py
Index: virt-manager-1.1.0/virtManager/packageutils.py
===================================================================
--- virt-manager-1.0.1.orig/virtManager/packageutils.py
+++ virt-manager-1.0.1/virtManager/packageutils.py
@@ -151,8 +151,8 @@ def start_libvirtd():
--- virt-manager-1.1.0.orig/virtManager/packageutils.py
+++ virt-manager-1.1.0/virtManager/packageutils.py
@@ -149,8 +149,8 @@ def start_libvirtd():
logging.debug("libvirtd not running, asking system-config-services "
"to start it")
scs = Gio.DBusProxy.new_sync(bus, 0, None,

View File

@ -1,6 +1,8 @@
--- virt-manager-1.0.0/virtManager/engine.py.orig 2014-03-13 15:48:17.556984261 -0600
+++ virt-manager-1.0.0/virtManager/engine.py 2014-03-13 15:48:22.909014154 -0600
@@ -229,9 +229,22 @@ class vmmEngine(vmmGObject):
Index: virt-manager-1.1.0/virtManager/engine.py
===================================================================
--- virt-manager-1.1.0.orig/virtManager/engine.py
+++ virt-manager-1.1.0/virtManager/engine.py
@@ -226,9 +226,22 @@ class vmmEngine(vmmGObject):
if not uris:
return
logging.debug("About to connect to uris %s", uris)

View File

@ -1,8 +1,8 @@
Index: virt-manager-1.0.0/setup.py
Index: virt-manager-1.1.0/setup.py
===================================================================
--- virt-manager-1.0.0.orig/setup.py
+++ virt-manager-1.0.0/setup.py
@@ -310,8 +310,11 @@ class configure(Command):
--- virt-manager-1.1.0.orig/setup.py
+++ virt-manager-1.1.0/setup.py
@@ -303,8 +303,11 @@ class configure(Command):
("pkgversion=", None, "user specified version-id"),
("qemu-user=", None,
"user libvirt uses to launch qemu processes (default=root)"),
@ -16,7 +16,7 @@ Index: virt-manager-1.0.0/setup.py
"first run. comma separated string (default=none)"),
("kvm-package-names=", None,
"recommended kvm packages virt-manager will check for on first run "
@@ -335,7 +338,8 @@ class configure(Command):
@@ -330,7 +333,8 @@ class configure(Command):
self.prefix = sysprefix
self.pkgversion = None
self.qemu_user = None
@ -26,7 +26,7 @@ Index: virt-manager-1.0.0/setup.py
self.kvm_package_names = None
self.askpass_package_names = None
self.preferred_distros = None
@@ -351,8 +355,10 @@ class configure(Command):
@@ -347,8 +351,10 @@ class configure(Command):
template += "pkgversion = %s\n" % self.pkgversion
if self.qemu_user is not None:
template += "default_qemu_user = %s\n" % self.qemu_user
@ -39,11 +39,11 @@ Index: virt-manager-1.0.0/setup.py
if self.kvm_package_names is not None:
template += "hv_packages = %s\n" % self.kvm_package_names
if self.askpass_package_names is not None:
Index: virt-manager-1.0.0/virtcli/cliconfig.py
Index: virt-manager-1.1.0/virtcli/cliconfig.py
===================================================================
--- virt-manager-1.0.0.orig/virtcli/cliconfig.py
+++ virt-manager-1.0.0/virtcli/cliconfig.py
@@ -86,5 +86,6 @@ stable_defaults = bool(int(_get_param("s
--- virt-manager-1.1.0.orig/virtcli/cliconfig.py
+++ virt-manager-1.1.0/virtcli/cliconfig.py
@@ -92,6 +92,7 @@ stable_defaults = bool(int(_get_param("s
preferred_distros = _split_list(_get_param("preferred_distros", ""))
hv_packages = _split_list(_get_param("hv_packages", ""))
askpass_package = _split_list(_get_param("askpass_packages", ""))
@ -51,11 +51,12 @@ Index: virt-manager-1.0.0/virtcli/cliconfig.py
+libvirt_kvm_packages = _split_list(_get_param("libvirt_kvm_packages", ""))
+libvirt_xen_packages = _split_list(_get_param("libvirt_xen_packages", ""))
default_graphics = _get_param("default_graphics", "spice")
Index: virt-manager-1.0.0/virtManager/config.py
with_bhyve = bool(int(_get_param("with_bhyve", "0")))
Index: virt-manager-1.1.0/virtManager/config.py
===================================================================
--- virt-manager-1.0.0.orig/virtManager/config.py
+++ virt-manager-1.0.0/virtManager/config.py
@@ -160,7 +160,8 @@ class vmmConfig(object):
--- virt-manager-1.1.0.orig/virtManager/config.py
+++ virt-manager-1.1.0/virtManager/config.py
@@ -158,7 +158,8 @@ class vmmConfig(object):
self.stable_defaults = cliconfig.stable_defaults
self.preferred_distros = cliconfig.preferred_distros
self.hv_packages = cliconfig.hv_packages
@ -64,12 +65,12 @@ Index: virt-manager-1.0.0/virtManager/config.py
+ self.libvirt_xen_packages = cliconfig.libvirt_xen_packages
self.askpass_package = cliconfig.askpass_package
self.default_graphics_from_config = cliconfig.default_graphics
self.cli_usbredir = None
Index: virt-manager-1.0.0/virtManager/engine.py
self.with_bhyve = cliconfig.with_bhyve
Index: virt-manager-1.1.0/virtManager/engine.py
===================================================================
--- virt-manager-1.0.0.orig/virtManager/engine.py
+++ virt-manager-1.0.0/virtManager/engine.py
@@ -196,21 +196,17 @@ class vmmEngine(vmmGObject):
--- virt-manager-1.1.0.orig/virtManager/engine.py
+++ virt-manager-1.1.0/virtManager/engine.py
@@ -193,21 +193,17 @@ class vmmEngine(vmmGObject):
ret = None
try:

View File

@ -1,10 +1,10 @@
bnc#874594 - virt-manager allows issuing of start for xen domain twice, resulting in failure
Index: virt-manager-1.0.1/virtManager/details.py
Index: virt-manager-1.1.0/virtManager/details.py
===================================================================
--- virt-manager-1.0.1.orig/virtManager/details.py
+++ virt-manager-1.0.1/virtManager/details.py
@@ -1462,6 +1462,9 @@ class vmmDetails(vmmGObjectUI):
--- virt-manager-1.1.0.orig/virtManager/details.py
+++ virt-manager-1.1.0/virtManager/details.py
@@ -1499,6 +1499,9 @@ class vmmDetails(vmmGObjectUI):
self.widget("details-menu-usb-redirection").set_sensitive(can_usb)
def control_vm_run(self, src_ignore):
@ -12,5 +12,5 @@ Index: virt-manager-1.0.1/virtManager/details.py
+ # start the VM twice
+ self.widget("control-run").set_sensitive(False)
self.emit("action-run-domain",
self.vm.conn.get_uri(), self.vm.get_uuid())
self.vm.conn.get_uri(), self.vm.get_connkey())

View File

@ -1,16 +1,16 @@
Index: virt-manager-1.0.1/virtManager/engine.py
Index: virt-manager-1.1.0/virtManager/engine.py
===================================================================
--- virt-manager-1.0.1.orig/virtManager/engine.py
+++ virt-manager-1.0.1/virtManager/engine.py
@@ -30,6 +30,7 @@ import re
--- virt-manager-1.1.0.orig/virtManager/engine.py
+++ virt-manager-1.1.0/virtManager/engine.py
@@ -27,6 +27,7 @@ import re
import Queue
import threading
import traceback
+import platform
import os
from subprocess import *
import libvirt
@@ -854,7 +855,7 @@ class vmmEngine(vmmGObject):
@@ -805,7 +806,7 @@ class vmmEngine(vmmGObject):
obj.connect("action-clone-domain", self._do_show_clone)
obj.connect("action-show-domain", self._do_show_vm)
obj.connect("action-show-preferences", self._do_show_preferences)
@ -19,7 +19,7 @@ Index: virt-manager-1.0.1/virtManager/engine.py
obj.connect("action-show-create-vminstall", self._do_show_create_vminstall)
obj.connect("action-show-about", self._do_show_about)
obj.connect("action-show-host", self._do_show_host)
@@ -900,7 +901,20 @@ class vmmEngine(vmmGObject):
@@ -853,7 +854,20 @@ class vmmEngine(vmmGObject):
self.windowCreate = None
def _do_show_create_vminstall(self, src, uri):
@ -41,7 +41,7 @@ Index: virt-manager-1.0.1/virtManager/engine.py
def _do_show_create(self, src, uri, use_vminstall=False):
if uri is None:
@@ -984,7 +998,10 @@ class vmmEngine(vmmGObject):
@@ -937,7 +951,10 @@ class vmmEngine(vmmGObject):
def show_domain_creator(self, uri):
self.show_manager()
@ -51,21 +51,21 @@ Index: virt-manager-1.0.1/virtManager/engine.py
+ else:
+ self._do_show_create(self.get_manager(), uri, False)
def show_domain_console(self, uri, uuid):
self.idle_add(self._show_vm_helper, self.get_manager(), uri, uuid,
Index: virt-manager-1.0.1/virtManager/vmmenu.py
def _find_vm_by_cli_str(self, uri, clistr):
Index: virt-manager-1.1.0/virtManager/vmmenu.py
===================================================================
--- virt-manager-1.0.1.orig/virtManager/vmmenu.py
+++ virt-manager-1.0.1/virtManager/vmmenu.py
@@ -23,6 +23,7 @@ from gi.repository import Gtk
# pylint: enable=E0611
--- virt-manager-1.1.0.orig/virtManager/vmmenu.py
+++ virt-manager-1.1.0/virtManager/vmmenu.py
@@ -21,6 +21,7 @@
from gi.repository import Gtk
from virtManager import config
+import platform
####################################################################
# Build toolbar new button menu (manager and details toolbar) #
@@ -35,8 +36,10 @@ def build_new_button_menu(widget, vminst
# Build toolbar new button menu (manager and details toolbar) #
@@ -33,8 +34,10 @@ def build_new_button_menu(widget, vminst
widget.set_menu(menu)
vminstallimg = Gtk.Image.new_from_icon_name(icon_name, Gtk.IconSize.MENU)

View File

@ -1,7 +1,7 @@
Index: virt-manager-1.0.1/virtManager/create.py
Index: virt-manager-1.1.0/virtManager/create.py
===================================================================
--- virt-manager-1.0.1.orig/virtManager/create.py
+++ virt-manager-1.0.1/virtManager/create.py
--- virt-manager-1.1.0.orig/virtManager/create.py
+++ virt-manager-1.1.0/virtManager/create.py
@@ -18,6 +18,7 @@
# MA 02110-1301 USA.
#
@ -10,7 +10,7 @@ Index: virt-manager-1.0.1/virtManager/create.py
import logging
import threading
import time
@@ -365,7 +366,13 @@ class vmmCreate(vmmGObjectUI):
@@ -370,7 +371,13 @@ class vmmCreate(vmmGObjectUI):
self.widget("install-url-options").set_expanded(False)
urlmodel = self.widget("install-url-box").get_model()
ksmodel = self.widget("install-ks-box").get_model()
@ -25,10 +25,10 @@ Index: virt-manager-1.0.1/virtManager/create.py
self.populate_media_model(ksmodel, self.config.get_kickstart_urls())
self.set_distro_labels("-", "-", force=True)
Index: virt-manager-1.0.1/virtinst/util.py
Index: virt-manager-1.1.0/virtinst/util.py
===================================================================
--- virt-manager-1.0.1.orig/virtinst/util.py
+++ virt-manager-1.0.1/virtinst/util.py
--- virt-manager-1.1.0.orig/virtinst/util.py
+++ virt-manager-1.1.0/virtinst/util.py
@@ -23,12 +23,14 @@ import os
import random
import re
@ -44,7 +44,7 @@ Index: virt-manager-1.0.1/virtinst/util.py
def listify(l):
@@ -531,3 +533,96 @@ def convert_units(value, old_unit, new_u
@@ -517,3 +519,96 @@ def convert_units(value, old_unit, new_u
power = get_power(new_unit)
return in_bytes / pow(factor, power)

View File

@ -1,6 +1,8 @@
--- virt-manager-1.0.0/virtManager/create.py.orig 2014-03-21 10:30:13.000000000 -0600
+++ virt-manager-1.0.0/virtManager/create.py 2014-03-21 10:56:45.000000000 -0600
@@ -66,8 +66,9 @@ INSTALL_PAGE_CONTAINER_APP = 4
Index: virt-manager-1.1.0/virtManager/create.py
===================================================================
--- virt-manager-1.1.0.orig/virtManager/create.py
+++ virt-manager-1.1.0/virtManager/create.py
@@ -64,8 +64,9 @@ INSTALL_PAGE_CONTAINER_APP = 4
INSTALL_PAGE_CONTAINER_OS = 5
STABLE_OS_SUPPORT = [

View File

@ -1,8 +1,8 @@
Index: virt-manager-1.0.1/virtManager/addhardware.py
Index: virt-manager-1.1.0/virtManager/addhardware.py
===================================================================
--- virt-manager-1.0.1.orig/virtManager/addhardware.py
+++ virt-manager-1.0.1/virtManager/addhardware.py
@@ -700,11 +700,14 @@ class vmmAddHardware(vmmGObjectUI):
--- virt-manager-1.1.0.orig/virtManager/addhardware.py
+++ virt-manager-1.1.0/virtManager/addhardware.py
@@ -719,11 +719,14 @@ class vmmAddHardware(vmmGObjectUI):
combo.set_model(model)
uiutil.set_combo_text_column(combo, 0)

View File

@ -3,15 +3,15 @@ Prevents a second unecessary vmmDomain object from being created for the VM.
The orignal object gets the cpu stats from libvirt but the new one is used to
update the display but it is never updated with the new stats.
Index: virt-manager-1.0.1/virtManager/connection.py
Index: virt-manager-1.1.0/virtManager/connection.py
===================================================================
--- virt-manager-1.0.1.orig/virtManager/connection.py
+++ virt-manager-1.0.1/virtManager/connection.py
@@ -1291,6 +1291,9 @@ class vmmConnection(vmmGObject):
--- virt-manager-1.1.0.orig/virtManager/connection.py
+++ virt-manager-1.1.0/virtManager/connection.py
@@ -1245,6 +1245,9 @@ class vmmConnection(vmmGObject):
self.emit("nodedev-added", name)
self.idle_add(tick_send_signals)
+ if len(self.vms) < len(vms):
+ if len(self._vms) < len(vms):
+ # Allow time for tick_send_signals to run
+ time.sleep(.1)

View File

@ -1,7 +1,7 @@
Index: virt-manager-1.0.1/ui/manager.ui
Index: virt-manager-1.1.0/ui/manager.ui
===================================================================
--- virt-manager-1.0.1.orig/ui/manager.ui
+++ virt-manager-1.0.1/ui/manager.ui
--- virt-manager-1.1.0.orig/ui/manager.ui
+++ virt-manager-1.1.0/ui/manager.ui
@@ -277,7 +277,7 @@
<property name="can_focus">False</property>
<property name="show_arrow">False</property>
@ -19,11 +19,11 @@ Index: virt-manager-1.0.1/ui/manager.ui
</packing>
</child>
<child>
Index: virt-manager-1.0.1/virtManager/manager.py
Index: virt-manager-1.1.0/virtManager/manager.py
===================================================================
--- virt-manager-1.0.1.orig/virtManager/manager.py
+++ virt-manager-1.0.1/virtManager/manager.py
@@ -95,6 +95,7 @@ class vmmManager(vmmGObjectUI):
--- virt-manager-1.1.0.orig/virtManager/manager.py
+++ virt-manager-1.1.0/virtManager/manager.py
@@ -93,6 +93,7 @@ class vmmManager(vmmGObjectUI):
"action-show-host": (GObject.SignalFlags.RUN_FIRST, None, [str]),
"action-show-preferences": (GObject.SignalFlags.RUN_FIRST, None, []),
"action-show-create": (GObject.SignalFlags.RUN_FIRST, None, [str]),
@ -31,7 +31,7 @@ Index: virt-manager-1.0.1/virtManager/manager.py
"action-suspend-domain": (GObject.SignalFlags.RUN_FIRST, None, [str, str]),
"action-resume-domain": (GObject.SignalFlags.RUN_FIRST, None, [str, str]),
"action-run-domain": (GObject.SignalFlags.RUN_FIRST, None, [str, str]),
@@ -298,7 +299,8 @@ class vmmManager(vmmGObjectUI):
@@ -290,7 +291,8 @@ class vmmManager(vmmGObjectUI):
def init_toolbar(self):
@ -41,7 +41,7 @@ Index: virt-manager-1.0.1/virtManager/manager.py
self.widget("vm-open").set_icon_name("icon_console")
menu = vmmenu.VMShutdownMenu(self, self.current_vm)
@@ -489,6 +491,9 @@ class vmmManager(vmmGObjectUI):
@@ -475,6 +477,9 @@ class vmmManager(vmmGObjectUI):
def new_vm(self, src_ignore=None):
self.emit("action-show-create", self.current_conn_uri())
@ -51,19 +51,19 @@ Index: virt-manager-1.0.1/virtManager/manager.py
def show_about(self, src_ignore):
self.emit("action-show-about")
Index: virt-manager-1.0.1/virtManager/vmmenu.py
Index: virt-manager-1.1.0/virtManager/vmmenu.py
===================================================================
--- virt-manager-1.0.1.orig/virtManager/vmmenu.py
+++ virt-manager-1.0.1/virtManager/vmmenu.py
@@ -21,9 +21,28 @@
# pylint: disable=E0611
--- virt-manager-1.1.0.orig/virtManager/vmmenu.py
+++ virt-manager-1.1.0/virtManager/vmmenu.py
@@ -19,9 +19,28 @@
#
from gi.repository import Gtk
# pylint: enable=E0611
+from virtManager import config
####################################################################
+# Build toolbar new button menu (manager and details toolbar) #
+# Build toolbar new button menu (manager and details toolbar) #
+####################################################################
+
+def build_new_button_menu(widget, vminstall_cb):
@ -84,11 +84,11 @@ Index: virt-manager-1.0.1/virtManager/vmmenu.py
# Build toolbar shutdown button menu (manager and details toolbar) #
####################################################################
Index: virt-manager-1.0.1/virtManager/config.py
Index: virt-manager-1.1.0/virtManager/config.py
===================================================================
--- virt-manager-1.0.1.orig/virtManager/config.py
+++ virt-manager-1.0.1/virtManager/config.py
@@ -191,6 +191,13 @@ class vmmConfig(object):
--- virt-manager-1.1.0.orig/virtManager/config.py
+++ virt-manager-1.1.0/virtManager/config.py
@@ -190,6 +190,13 @@ class vmmConfig(object):
# General app wide helpers (gconf agnostic)
@ -102,24 +102,20 @@ Index: virt-manager-1.0.1/virtManager/config.py
def get_appname(self):
return self.appname
def get_appversion(self):
Index: virt-manager-1.0.1/virtManager/engine.py
Index: virt-manager-1.1.0/virtManager/engine.py
===================================================================
--- virt-manager-1.0.1.orig/virtManager/engine.py
+++ virt-manager-1.0.1/virtManager/engine.py
@@ -25,9 +25,12 @@ from gi.repository import Gtk
# pylint: enable=E0611
import logging
+import os
import re
--- virt-manager-1.1.0.orig/virtManager/engine.py
+++ virt-manager-1.1.0/virtManager/engine.py
@@ -27,6 +27,8 @@ import re
import Queue
import threading
+import traceback
import traceback
+import os
+from subprocess import *
import libvirt
from virtinst import util
@@ -76,6 +79,7 @@ class vmmEngine(vmmGObject):
@@ -74,6 +76,7 @@ class vmmEngine(vmmGObject):
self.windowCreate = None
self.windowManager = None
self.windowMigrate = None
@ -127,7 +123,7 @@ Index: virt-manager-1.0.1/virtManager/engine.py
self.conns = {}
self.err = vmmErrorDialog()
@@ -841,6 +845,7 @@ class vmmEngine(vmmGObject):
@@ -793,6 +796,7 @@ class vmmEngine(vmmGObject):
obj.connect("action-show-domain", self._do_show_vm)
obj.connect("action-show-preferences", self._do_show_preferences)
obj.connect("action-show-create", self._do_show_create)
@ -135,7 +131,7 @@ Index: virt-manager-1.0.1/virtManager/engine.py
obj.connect("action-show-about", self._do_show_about)
obj.connect("action-show-host", self._do_show_host)
obj.connect("action-show-connect", self._do_show_connect)
@@ -881,11 +886,52 @@ class vmmEngine(vmmGObject):
@@ -835,11 +839,52 @@ class vmmEngine(vmmGObject):
self.windowCreate = obj
return self.windowCreate
@ -191,5 +187,5 @@ Index: virt-manager-1.0.1/virtManager/engine.py
+ message_box.run()
+ message_box.destroy()
def _do_show_migrate(self, src, uri, uuid):
def _do_show_migrate(self, src, uri, connkey):
try: