Accepting request 483463 from Virtualization

Various bug fixes

OBS-URL: https://build.opensuse.org/request/show/483463
OBS-URL: https://build.opensuse.org/package/show/openSUSE:Factory/virt-manager?expand=0&rev=149
This commit is contained in:
Yuchen Lin 2017-04-11 07:35:58 +00:00 committed by Git OBS Bridge
commit 759a2c160f
41 changed files with 211 additions and 1368 deletions

View File

@ -1,36 +0,0 @@
References: bsc#996020
Subject: virt-manager: use virDomainMigrate3 API
From: Jim Fehlig jfehlig@suse.com Wed Aug 31 11:26:24 2016 -0600
Date: Thu Sep 8 11:47:45 2016 -0400:
Git: 0425975f38cec8fca6fd6ad600985403b9d24adb
libvirt has supported the migration V3 protocol for many years now.
A nice feature of the virDomainMigrate3 API is that it will detect
the protocol version supported by the underlying hypervisor,
including whether it supports the extensible parameters variant,
and call the hypervisor API with parameters fixed up as needed.
Change virt-manager to use the virDomainMigrate3 API, allowing
migration to work with hypervisors that only support the extensible
parameters variant of the migration V3 API.
Signed-off-by: Jim Fehlig <jfehlig@suse.com>
Index: virt-manager-1.4.0/virtManager/domain.py
===================================================================
--- virt-manager-1.4.0.orig/virtManager/domain.py
+++ virt-manager-1.4.0/virtManager/domain.py
@@ -1487,7 +1487,11 @@ class vmmDomain(vmmLibvirtObject):
if meter:
start_job_progress_thread(self, meter, _("Migrating domain"))
- self._backend.migrate(libvirt_destconn, flags, None, interface, 0)
+ params = {}
+ if interface:
+ params[libvirt.VIR_MIGRATE_PARAM_URI] = interface
+
+ self._backend.migrate3(libvirt_destconn, params, flags)
# Don't schedule any conn update, migrate dialog handles it for us

View File

@ -1,78 +0,0 @@
Subject: osdict: Fix incorrect usage of virtio input
From: Cole Robinson crobinso@redhat.com Fri Jul 29 13:17:36 2016 -0400
Date: Fri Jul 29 13:17:36 2016 -0400:
Git: 1d2cd306773064258f5d02c980b09a683ae77798
Regression reported with latest libosinfo, when the OS reports
virtio-input support:
http://www.redhat.com/archives/virt-tools-list/2016-July/msg00109.html
Really our code presently only cares about the USB tablet, so adjust
our libosinfo lookup to explicitly check for it
Index: virt-manager-1.4.0/virtinst/guest.py
===================================================================
--- virt-manager-1.4.0.orig/virtinst/guest.py
+++ virt-manager-1.4.0/virtinst/guest.py
@@ -1033,15 +1033,14 @@ class Guest(XMLBuilder):
return False
return all([c.model == "none" for c in controllers])
- input_type = self._os_object.default_inputtype()
- input_bus = self._os_object.default_inputbus()
+ input_type = "mouse"
+ input_bus = "ps2"
if self.os.is_xenpv():
input_type = VirtualInputDevice.TYPE_MOUSE
input_bus = VirtualInputDevice.BUS_XEN
- elif _usb_disabled() and input_bus == "usb":
- input_bus = "ps2"
- if input_type == "tablet":
- input_type = "mouse"
+ elif self._os_object.supports_usbtablet() and not _usb_disabled():
+ input_type = "tablet"
+ input_bus = "usb"
for inp in self.get_devices("input"):
if (inp.type == inp.TYPE_DEFAULT and
Index: virt-manager-1.4.0/virtinst/osdict.py
===================================================================
--- virt-manager-1.4.0.orig/virtinst/osdict.py
+++ virt-manager-1.4.0/virtinst/osdict.py
@@ -457,23 +457,19 @@ class _OsVariant(object):
return devname
return None
- def default_inputtype(self):
- if self._os:
- fltr = libosinfo.Filter()
- fltr.add_constraint("class", "input")
- devs = self._os.get_all_devices(fltr)
- if devs.get_length():
- return devs.get_nth(0).get_name()
- return "mouse"
+ def supports_usbtablet(self):
+ if not self._os:
+ return False
- def default_inputbus(self):
- if self._os:
- fltr = libosinfo.Filter()
- fltr.add_constraint("class", "input")
- devs = self._os.get_all_devices(fltr)
- if devs.get_length():
- return devs.get_nth(0).get_bus_type()
- return "ps2"
+ fltr = libosinfo.Filter()
+ fltr.add_constraint("class", "input")
+ fltr.add_constraint("name", "tablet")
+ devs = self._os.get_all_devices(fltr)
+ for idx in range(devs.get_length()):
+ dev = devs.get_nth(idx)
+ if devs.get_nth(idx).get_bus_type() == "usb":
+ return True
+ return False
def supports_virtiodisk(self):
if self._os:

View File

@ -1,134 +0,0 @@
References: fate#319621
Subject: xmlbuilder: Clarify the node 'pretty' helper function
From: Cole Robinson crobinso@redhat.com Mon Jul 18 13:23:43 2016 -0400
Date: Mon Jul 18 14:46:50 2016 -0400:
Git: 559e813b966c8e062740dd64d87f3193b0413771
Index: virt-manager-1.4.0/virtinst/xmlbuilder.py
===================================================================
--- virt-manager-1.4.0.orig/virtinst/xmlbuilder.py
+++ virt-manager-1.4.0/virtinst/xmlbuilder.py
@@ -98,14 +98,13 @@ def _get_xpath_node(ctx, xpath):
return (node and node[0] or None)
-def _build_xpath_node(ctx, xpath, addnode=None):
+def _add_pretty_child(parentnode, newnode):
"""
- Build all nodes required to set an xpath. If we have XML <foo/>, and want
- to set xpath /foo/bar/baz@booyeah, we create node 'bar' and 'baz'
- returning the last node created.
+ Add 'newnode' as a child of 'parentnode', but try to preserve
+ whitespace and nicely format the result.
"""
- parentpath = ""
- parentnode = None
+ def node_is_text(n):
+ return bool(n and n.type == "text" and not n.content.count("<"))
def prevSibling(node):
parent = node.get_parent()
@@ -120,47 +119,51 @@ def _build_xpath_node(ctx, xpath, addnod
return None
- def make_node(parentnode, newnode):
- # Add the needed parent node, try to preserve whitespace by
- # looking for a starting TEXT node, and copying it
- def node_is_text(n):
- return bool(n and n.type == "text" and not n.content.count("<"))
-
- sib = parentnode.get_last()
- if not node_is_text(sib):
- # This case is when we add a child element to a node for the
- # first time, like:
- #
- # <features/>
- # to
- # <features>
- # <acpi/>
- # </features>
- prevsib = prevSibling(parentnode)
- if node_is_text(prevsib):
- sib = libxml2.newText(prevsib.content)
- else:
- sib = libxml2.newText("\n")
- parentnode.addChild(sib)
-
- # This case is adding a child element to an already properly
- # spaced element. Example:
- # <features>
- # <acpi/>
- # </features>
+ sib = parentnode.get_last()
+ if not node_is_text(sib):
+ # This case is when we add a child element to a node for the
+ # first time, like:
+ #
+ # <features/>
# to
# <features>
# <acpi/>
- # <apic/>
# </features>
- sib = parentnode.get_last()
- content = sib.content
- sib = sib.addNextSibling(libxml2.newText(" "))
- txt = libxml2.newText(content)
-
- sib.addNextSibling(newnode)
- newnode.addNextSibling(txt)
- return newnode
+ prevsib = prevSibling(parentnode)
+ if node_is_text(prevsib):
+ sib = libxml2.newText(prevsib.content)
+ else:
+ sib = libxml2.newText("\n")
+ parentnode.addChild(sib)
+
+ # This case is adding a child element to an already properly
+ # spaced element. Example:
+ # <features>
+ # <acpi/>
+ # </features>
+ # to
+ # <features>
+ # <acpi/>
+ # <apic/>
+ # </features>
+ sib = parentnode.get_last()
+ content = sib.content
+ sib = sib.addNextSibling(libxml2.newText(" "))
+ txt = libxml2.newText(content)
+
+ sib.addNextSibling(newnode)
+ newnode.addNextSibling(txt)
+ return newnode
+
+
+def _build_xpath_node(ctx, xpath, addnode=None):
+ """
+ Build all nodes required to set an xpath. If we have XML <foo/>, and want
+ to set xpath /foo/bar/baz@booyeah, we create node 'bar' and 'baz'
+ returning the last node created.
+ """
+ parentpath = ""
+ parentnode = None
nodelist = xpath.split("/")
for nodename in nodelist:
@@ -192,10 +195,10 @@ def _build_xpath_node(ctx, xpath, addnod
nodename = nodename[:nodename.index("[")]
newnode = libxml2.newNode(nodename)
- parentnode = make_node(parentnode, newnode)
+ parentnode = _add_pretty_child(parentnode, newnode)
if addnode:
- parentnode = make_node(parentnode, addnode)
+ parentnode = _add_pretty_child(parentnode, addnode)
return parentnode

View File

@ -1,35 +0,0 @@
References: bsc#996020
Subject: virt-manager: drop 'xenmigr' scheme from Xen migration URI
From: Jim Fehlig jfehlig@suse.com Tue Sep 6 22:55:42 2016 -0600
Date: Thu Sep 8 11:47:52 2016 -0400:
Git: 561f5cd3e68fa3f1fb6745463a5c1a486171d8c9
For Xen, virt-manager uses a 'xenmigr' URI scheme, which is not
supported by the libvirt libxl driver. Attempting migration
fails with
libvirtError: invalid argument: unable to parse URI: xenmigr://myhost
The old xend-based libvirt driver supports this scheme, but also
supports an empty scheme. It's not clear what the 'xenmigr' scheme
is used for. 'xenmigr' is not referenced by any files in the Xen
code-base, including old branches with xend.
Drop setting scheme to 'xenmigr' when creating the Xen migration URI.
Signed-off-by: Jim Fehlig <jfehlig@suse.com>
Index: virt-manager-1.4.0/virtManager/migrate.py
===================================================================
--- virt-manager-1.4.0.orig/virtManager/migrate.py
+++ virt-manager-1.4.0/virtManager/migrate.py
@@ -344,7 +344,7 @@ class vmmMigrateDialog(vmmGObjectUI):
return
if self.conn.is_xen():
- uri = "xenmigr://%s" % address
+ uri = "%s" % address
else:
uri = "tcp:%s" % address
if port:

View File

@ -1,51 +0,0 @@
Subject: virt-manager generates invalid guest XML
From: Seeteena Thoufeek s1seetee@linux.vnet.ibm.com Mon Dec 12 17:48:50 2016 +0530
Date: Mon Dec 12 21:12:09 2016 -0500:
Git: 5a11cf0782998a36eef42718231bcb4c2de8ebba
The virt-manager application generates invalid guest XML when a
spapr-vio SCSI model controller is changed to a virtio-scsi model controller.
1. Create a guest
2. Add an spapr-vio controller to the guest via this gui path:
->Add Hardware
->Controller
->Type SCSI
->Model Hypervisor default
At this point, there will be a valid spapr-vio SCSI controller defined:
<controller type='scsi' index='0'>
<address type='spapr-vio' reg='0x2000'/>
</controller>
3.Now modify the above SCSI controller using this gui path:
->Choose "Controller sPAPR SCSI" on left pane
->Choose "VirtIO SCSI" for the Model on the right pane
->Apply
At this point, there will be a SCSI controller definition which is invalid due to an incorrect address type:
~# virsh dumpxml dotg2|grep -A2 -i scsi
<controller type='scsi' index='0' model='virtio-scsi'>
<address type='spapr-vio' reg='0x2000'/>
</controller>
Any attempt to start the guest will throw this error:
error: Failed to start domain dotg2
error: internal error: process exited while connecting to monitor: 2016-12-02T17:45:12.989165Z qemu-system-ppc64le: -device virtio-scsi-pci,id=scsi0,reg=0x2000: Property '.reg' not found
virt-manager fails to realize that the address type needs to be changed to a PCI address for a virtio-scsi controller.
If you change the model, you are supposed to leave the address field empty, so that libvirt sets it correctly. Or change the address field also appropriately.
Note that this bug can be reproduced entirely within virt-manager. No manual editing of guest XML is being done here. So, fix is to make virt-manager delete the address field when the SCSI controller model is changed, allowing libvirt to automatically assign a new address with the correct type.
Signed-off-by: Seeteena Thoufeek <s1seetee@linux.vnet.ibm.com>
Index: virt-manager-1.4.0/virtManager/domain.py
===================================================================
--- virt-manager-1.4.0.orig/virtManager/domain.py
+++ virt-manager-1.4.0/virtManager/domain.py
@@ -949,6 +949,7 @@ class vmmDomain(vmmLibvirtObject):
else:
editdev.model = model
+ editdev.address.clear()
self.hotplug(device=editdev)
if model != _SENTINEL:

View File

@ -1,23 +0,0 @@
Subject: osdict: Don't return virtio1.0-net as a valid device name (bug 1399083)
From: Cole Robinson crobinso@redhat.com Tue Dec 13 12:58:14 2016 -0500
Date: Tue Dec 13 12:58:14 2016 -0500:
Git: 617b92710f50015c5df5f9db15d25de18867957d
We can't depend on libosinfo device names being valid libvirt network
model names, so use a whitelist
https://bugzilla.redhat.com/show_bug.cgi?id=1399083
Index: virt-manager-1.4.0/virtinst/osdict.py
===================================================================
--- virt-manager-1.4.0.orig/virtinst/osdict.py
+++ virt-manager-1.4.0/virtinst/osdict.py
@@ -453,7 +453,7 @@ class _OsVariant(object):
devs = self._os.get_all_devices(fltr)
for idx in range(devs.get_length()):
devname = devs.get_nth(idx).get_name()
- if devname != "virtio-net":
+ if devname in ["pcnet", "ne2k_pci", "rtl8139", "e1000"]:
return devname
return None

View File

@ -1,23 +0,0 @@
Subject: man: Document new --sysinfo option
From: Cole Robinson crobinso@redhat.com Thu Sep 8 11:42:45 2016 -0400
Date: Thu Sep 8 11:42:45 2016 -0400:
Git: 63784f4dd82caaf164fa93a1685cbe5272b68404
Index: virt-manager-1.4.0/man/virt-install.pod
===================================================================
--- virt-manager-1.4.0.orig/man/virt-install.pod
+++ virt-manager-1.4.0/man/virt-install.pod
@@ -135,6 +135,12 @@ Specify resource partitioning for the gu
Use --resource=? to see a list of all available sub options. Complete details at L<http://libvirt.org/formatdomain.html#resPartition>
+=item B<--sysinfo> OPT=VAL,[...]
+
+Configure sysinfo/SMBIOS values exposed to the guest OS. '--sysinfo host' can be used to expose the host's SMBIOS info to the VM, otherwise values can be manually specified.
+
+Use --sysinfo=? to see a list of all available sub options. Complete details at L<http://libvirt.org/formatdomain.html#elementsSysinfo>
+
=item B<--vcpus> OPTIONS
Number of virtual cpus to configure for the guest. If 'maxvcpus' is specified,

View File

@ -1,31 +0,0 @@
Note: This is just a part of the upstream patch
Subject: Update translations, and fix it.po problems
From: Cole Robinson crobinso@redhat.com Wed Jun 29 08:49:00 2016 -0400
Date: Wed Jun 29 08:49:00 2016 -0400:
Git: 6daff68a3f04fd166d555e4ad632564adc0e57a2
https://bugzilla.redhat.com/show_bug.cgi?id=1350185
Index: virt-manager-1.4.0/po/it.po
===================================================================
--- virt-manager-1.4.0.orig/po/it.po
+++ virt-manager-1.4.0/po/it.po
@@ -1460,7 +1460,7 @@ msgstr "Invia combinazione di tasti"
#: ../virtManager/console.py:289
#, python-format
msgid "%(vm-name)s on %(connection-name)s"
-msgstr "%(nome-mv)s su %(nome-connessione)s"
+msgstr "%(vm-name)s su %(connection-name)s"
#: ../virtManager/console.py:296
#, python-format
@@ -2515,7 +2515,7 @@ msgstr "Disabilitato"
#: ../virtManager/details.py:2435
#, python-format
msgid "%(current-memory)s of %(total-memory)s"
-msgstr "%(memoria-corrente)s di %(memoria-totale)s"
+msgstr "%(current-memory)s di %(total-memory)s"
#: ../virtManager/details.py:2645
msgid "Absolute Movement"

View File

@ -1,25 +0,0 @@
Subject: virt-install: Fix error checking extra_args
From: Cole Robinson crobinso@redhat.com Wed Nov 2 10:27:14 2016 -0400
Date: Wed Nov 2 10:27:14 2016 -0400:
Git: 7962672c713cf6d35e770f0d00068dee707b6ec9
Later bits in the code that want to warn based on extra_args content
don't handle the None case. Be consistent and convert it to a list
everywhere.
Mentioned at https://bugzilla.redhat.com/show_bug.cgi?id=1376547#c9
Index: virt-manager-1.4.0/virt-install
===================================================================
--- virt-manager-1.4.0.orig/virt-install
+++ virt-manager-1.4.0/virt-install
@@ -595,7 +595,8 @@ def build_guest_instance(conn, options):
convert_old_os_options(options)
# non-xml install options
- guest.installer.extraargs = options.extra_args or []
+ options.extra_args = options.extra_args or []
+ guest.installer.extraargs = options.extra_args
guest.installer.initrd_injections = options.initrd_inject
guest.autostart = options.autostart

View File

@ -1,87 +0,0 @@
References: fate#319621
Subject: xmlbuilder: More comments for _build_xpath_node
From: Cole Robinson crobinso@redhat.com Mon Jul 18 13:50:25 2016 -0400
Date: Mon Jul 18 14:46:50 2016 -0400:
Git: 835ddc5f7710d195a8d069358693712e68f2b353
Index: virt-manager-1.4.0/virtinst/xmlbuilder.py
===================================================================
--- virt-manager-1.4.0.orig/virtinst/xmlbuilder.py
+++ virt-manager-1.4.0/virtinst/xmlbuilder.py
@@ -158,44 +158,56 @@ def _add_pretty_child(parentnode, newnod
def _build_xpath_node(ctx, xpath):
"""
- Build all nodes required to set an xpath. If we have XML <foo/>, and want
- to set xpath /foo/bar/baz@booyeah, we create node 'bar' and 'baz'
- returning the last node created.
- """
- parentpath = ""
- parentnode = None
+ Build all nodes for the passed xpath. For example, if 'ctx' xml=<foo/>,
+ and xpath=./bar/@baz, after this function the 'ctx' XML will be:
- nodelist = xpath.split("/")
- for nodename in nodelist:
- if not nodename:
- continue
+ <foo>
+ <bar baz=''/>
+ </foo>
+
+ And the node pointing to @baz will be returned, for the caller to
+ do with as they please.
+ """
+ def _handle_node(nodename, parentnode, parentpath):
+ # If the passed xpath snippet (nodename) exists, return the node
+ # If it doesn't exist, create it, and return the new node
- # If xpath is a node property, set it and move on
+ # If nodename is a node property, we can handle it up front
if nodename.startswith("@"):
nodename = nodename.strip("@")
- parentnode = parentnode.setProp(nodename, "")
- continue
+ return parentnode.setProp(nodename, ""), parentpath
if not parentpath:
parentpath = nodename
else:
parentpath += "/%s" % nodename
- # Node found, nothing to create for now
+ # See if the xpath node already exists
node = _get_xpath_node(ctx, parentpath)
if node:
- parentnode = node
- continue
+ # xpath node already exists, so we don't need to create anything
+ return node, parentpath
+ # If we don't have a parentnode by this point, the root of the
+ # xpath didn't find anything. Usually a coding error
if not parentnode:
raise RuntimeError("Could not find XML root node")
- # Remove conditional xpath elements for node creation
+ # Remove conditional xpath elements for node creation. We preserved
+ # them up until this point since it was needed for proper xpath
+ # lookup, but they aren't valid syntax when creating the node
if nodename.count("["):
nodename = nodename[:nodename.index("[")]
newnode = libxml2.newNode(nodename)
- parentnode = _add_pretty_child(parentnode, newnode)
+ return _add_pretty_child(parentnode, newnode), parentpath
+
+
+ # Split the xpath and lookup/create each individual piece
+ parentpath = None
+ parentnode = None
+ for nodename in xpath.split("/"):
+ parentnode, parentpath = _handle_node(nodename, parentnode, parentpath)
return parentnode

View File

@ -1,258 +0,0 @@
Subject: virtinst: Add the --sysinfo option
From: Charles Arnold carnold@suse.com Tue Sep 6 16:12:20 2016 -0600
Date: Thu Sep 8 11:36:59 2016 -0400:
Git: a3206f89c89ff4f197748f2a7d1040380afc835d
Allow passing SMBios information to the guest using the new sysinfo
option. Also update the appropriate files with test cases.
Index: virt-manager-1.4.0/tests/cli-test-xml/compare/virt-install-singleton-config-2.xml
===================================================================
--- virt-manager-1.4.0.orig/tests/cli-test-xml/compare/virt-install-singleton-config-2.xml
+++ virt-manager-1.4.0/tests/cli-test-xml/compare/virt-install-singleton-config-2.xml
@@ -36,6 +36,7 @@
<boot dev="fd"/>
<boot dev="hd"/>
<boot dev="network"/>
+ <smbios mode="sysinfo"/>
<bootmenu enable="no"/>
</os>
<idmap>
@@ -122,6 +123,31 @@
<seclabel type="static" model="selinux" relabel="yes">
<label>system_u:object_r:svirt_image_t:s0:c100,c200</label>
</seclabel>
+ <sysinfo type="smbios">
+ <bios>
+ <entry name="vendor">Acme LLC</entry>
+ <entry name="version">1.2.3</entry>
+ <entry name="date">01/01/1970</entry>
+ <entry name="release">10.22</entry>
+ </bios>
+ <system>
+ <entry name="manufacturer">Acme Inc.</entry>
+ <entry name="product">Computer</entry>
+ <entry name="version">3.2.1</entry>
+ <entry name="serial">123456789</entry>
+ <entry name="uuid">00000000-1111-2222-3333-444444444444</entry>
+ <entry name="sku">abc-123</entry>
+ <entry name="family">Server</entry>
+ </system>
+ <baseBoard>
+ <entry name="manufacturer">Acme Corp.</entry>
+ <entry name="product">Motherboard</entry>
+ <entry name="version">A01</entry>
+ <entry name="serial">1234-5678</entry>
+ <entry name="asset">Tag</entry>
+ <entry name="location">Chassis</entry>
+ </baseBoard>
+ </sysinfo>
<on_lockfailure>ignore</on_lockfailure>
</domain>
<domain type="kvm">
@@ -162,6 +188,7 @@
<boot dev="fd"/>
<boot dev="hd"/>
<boot dev="network"/>
+ <smbios mode="sysinfo"/>
<bootmenu enable="no"/>
</os>
<idmap>
@@ -248,5 +275,30 @@
<seclabel type="static" model="selinux" relabel="yes">
<label>system_u:object_r:svirt_image_t:s0:c100,c200</label>
</seclabel>
+ <sysinfo type="smbios">
+ <bios>
+ <entry name="vendor">Acme LLC</entry>
+ <entry name="version">1.2.3</entry>
+ <entry name="date">01/01/1970</entry>
+ <entry name="release">10.22</entry>
+ </bios>
+ <system>
+ <entry name="manufacturer">Acme Inc.</entry>
+ <entry name="product">Computer</entry>
+ <entry name="version">3.2.1</entry>
+ <entry name="serial">123456789</entry>
+ <entry name="uuid">00000000-1111-2222-3333-444444444444</entry>
+ <entry name="sku">abc-123</entry>
+ <entry name="family">Server</entry>
+ </system>
+ <baseBoard>
+ <entry name="manufacturer">Acme Corp.</entry>
+ <entry name="product">Motherboard</entry>
+ <entry name="version">A01</entry>
+ <entry name="serial">1234-5678</entry>
+ <entry name="asset">Tag</entry>
+ <entry name="location">Chassis</entry>
+ </baseBoard>
+ </sysinfo>
<on_lockfailure>ignore</on_lockfailure>
</domain>
Index: virt-manager-1.4.0/tests/clitest.py
===================================================================
--- virt-manager-1.4.0.orig/tests/clitest.py
+++ virt-manager-1.4.0/tests/clitest.py
@@ -427,6 +427,9 @@ c.add_compare("""--pxe \
--memorybacking size=1,unit='G',nodeset='1,2-5',nosharepages=yes,locked=yes \
--features acpi=off,eoi=on,privnet=on,hyperv_spinlocks=on,hyperv_spinlocks_retries=1234,vmport=off,pmu=off \
--clock offset=utc,hpet_present=no,rtc_tickpolicy=merge \
+--sysinfo type=smbios,bios_vendor="Acme LLC",bios_version=1.2.3,bios_date=01/01/1970,bios_release=10.22 \
+--sysinfo type=smbios,system_manufacturer="Acme Inc.",system_product=Computer,system_version=3.2.1,system_serial=123456789,system_uuid=00000000-1111-2222-3333-444444444444,system_sku=abc-123,system_family=Server \
+--sysinfo type=smbios,baseBoard_manufacturer="Acme Corp.",baseBoard_product=Motherboard,baseBoard_version=A01,baseBoard_serial=1234-5678,baseBoard_asset=Tag,baseBoard_location=Chassis \
--pm suspend_to_mem=yes,suspend_to_disk=no \
--resource partition=/virtualmachines/production \
--events on_poweroff=destroy,on_reboot=restart,on_crash=preserve,on_lockfailure=ignore \
Index: virt-manager-1.4.0/virtinst/cli.py
===================================================================
--- virt-manager-1.4.0.orig/virtinst/cli.py
+++ virt-manager-1.4.0/virtinst/cli.py
@@ -21,6 +21,7 @@
import argparse
import collections
+import datetime
import logging
import logging.handlers
import os
@@ -67,6 +68,7 @@ from .osxml import OSXML
from .pm import PM
from .seclabel import Seclabel
from .storage import StoragePool, StorageVolume
+from .sysinfo import SYSInfo
##########################
@@ -722,6 +724,13 @@ def add_guest_xml_options(geng):
help=_("Configure VM lifecycle management policy"))
geng.add_argument("--resource", action="append",
help=_("Configure VM resource partitioning (cgroups)"))
+ geng.add_argument("--sysinfo", action="append",
+ help=_("Configure SMBIOS System Information. Ex:\n"
+ "--sysinfo emulate\n"
+ "--sysinfo host\n"
+ "--sysinfo bios_vendor=Vendor_Inc.,bios_version=1.2.3-abc,...\n"
+ "--sysinfo system_manufacturer=System_Corp.,system_product=Computer,...\n"
+ "--sysinfo baseBoard_manufacturer=Baseboard_Corp.,baseBoard_product=Motherboard,...\n"))
def add_boot_options(insg):
@@ -1541,6 +1550,13 @@ class ParserBoot(VirtCLIParser):
def set_initargs_cb(self, inst, val, virtarg):
inst.os.set_initargs_string(val)
+ def set_smbios_mode_cb(self, inst, val, virtarg):
+ if not val.startswith("emulate") and not val.startswith("host"):
+ inst.sysinfo.parse(val)
+ val = "sysinfo"
+ inst.os.smbios_mode = val
+ self.optdict["smbios_mode"] = val
+
def noset_cb(self, inst, val, virtarg):
pass
@@ -1584,6 +1600,8 @@ ParserBoot.add_arg("os.kernel_args", "ke
ParserBoot.add_arg("os.init", "init")
ParserBoot.add_arg("os.machine", "machine")
ParserBoot.add_arg("os.initargs", "initargs", cb=ParserBoot.set_initargs_cb)
+ParserBoot.add_arg("os.smbios_mode", "smbios_mode",
+ can_comma=True, cb=ParserBoot.set_smbios_mode_cb)
# This is simply so the boot options are advertised with --boot help,
# actual processing is handled by _parse
@@ -1702,6 +1720,95 @@ ParserPM.add_arg("suspend_to_mem", "susp
ParserPM.add_arg("suspend_to_disk", "suspend_to_disk", is_onoff=True)
+#####################
+# --sysinfo parsing #
+#####################
+
+class ParserSYSInfo(VirtCLIParser):
+ cli_arg_name = "sysinfo"
+ objclass = SYSInfo
+ remove_first = "type"
+
+ def set_type_cb(self, inst, val, virtarg):
+ if val == "host" or val == "emulate":
+ self.guest.os.smbios_mode = val
+ elif val == "smbios":
+ self.guest.os.smbios_mode = "sysinfo"
+ inst.type = val
+ else:
+ fail(_("Unknown sysinfo flag '%s'") % val)
+
+ def validate_date_cb(self, inst, val, virtarg):
+ # If supplied, date must be in either mm/dd/yy or mm/dd/yyyy format
+ try:
+ datetime.datetime.strptime(val, '%m/%d/%Y')
+ except ValueError:
+ try:
+ datetime.datetime.strptime(val, '%m/%d/%y')
+ except ValueError:
+ raise RuntimeError(_("SMBios date string '%s' is invalid.")
+ % val)
+ inst.bios_date = val
+ return val
+
+ def validate_uuid_cb(self, inst, val, virtarg):
+ # If a uuid is supplied it must match the guest UUID. This would be
+ # impossible to guess if the guest uuid is autogenerated so just
+ # overwrite the guest uuid with what is passed in assuming it passes
+ # the sanity checking below.
+ try:
+ util.validate_uuid(val)
+ except ValueError:
+ raise ValueError(_("Invalid uuid for SMBios: %s") % val)
+
+ if util.vm_uuid_collision(self.guest.conn, val):
+ raise ValueError(_("UUID '%s' is in use by another guest.") %
+ val)
+
+ # Override guest uuid with passed in SMBios value (they must match)
+ self.guest.uuid = val
+ inst.system_uuid = val
+
+ def _parse(self, inst):
+ if self.optstr == "none":
+ self.guest.skip_default_sysinfo = True
+ return
+ if self.optstr == "host" or self.optstr == "emulate":
+ self.optdict['type'] = self.optstr
+
+ return VirtCLIParser._parse(self, inst)
+
+_register_virt_parser(ParserSYSInfo)
+# <sysinfo type='smbios'>
+ParserSYSInfo.add_arg("type", "type",
+ cb=ParserSYSInfo.set_type_cb, can_comma=True)
+
+# <bios> type 0 BIOS Information
+ParserSYSInfo.add_arg("bios_vendor", "bios_vendor")
+ParserSYSInfo.add_arg("bios_version", "bios_version")
+ParserSYSInfo.add_arg("bios_date", "bios_date",
+ cb=ParserSYSInfo.validate_date_cb)
+ParserSYSInfo.add_arg("bios_release", "bios_release")
+
+# <system> type 1 System Information
+ParserSYSInfo.add_arg("system_manufacturer", "system_manufacturer")
+ParserSYSInfo.add_arg("system_product", "system_product")
+ParserSYSInfo.add_arg("system_version", "system_version")
+ParserSYSInfo.add_arg("system_serial", "system_serial")
+ParserSYSInfo.add_arg("system_uuid", "system_uuid",
+ cb=ParserSYSInfo.validate_uuid_cb)
+ParserSYSInfo.add_arg("system_sku", "system_sku")
+ParserSYSInfo.add_arg("system_family", "system_family")
+
+# <baseBoard> type 2 Baseboard (or Module) Information
+ParserSYSInfo.add_arg("baseBoard_manufacturer", "baseBoard_manufacturer")
+ParserSYSInfo.add_arg("baseBoard_product", "baseBoard_product")
+ParserSYSInfo.add_arg("baseBoard_version", "baseBoard_version")
+ParserSYSInfo.add_arg("baseBoard_serial", "baseBoard_serial")
+ParserSYSInfo.add_arg("baseBoard_asset", "baseBoard_asset")
+ParserSYSInfo.add_arg("baseBoard_location", "baseBoard_location")
+
+
##########################
# Guest <device> parsing #
##########################

View File

@ -1,42 +0,0 @@
References: fate#319621
Subject: xmlbuilder: Opencode single addnode= usage
From: Cole Robinson crobinso@redhat.com Mon Jul 18 13:34:06 2016 -0400
Date: Mon Jul 18 14:46:50 2016 -0400:
Git: a931a1a6adf768f73c223f9b8d78fb7ca25cb0a3
Index: virt-manager-1.4.0/virtinst/xmlbuilder.py
===================================================================
--- virt-manager-1.4.0.orig/virtinst/xmlbuilder.py
+++ virt-manager-1.4.0/virtinst/xmlbuilder.py
@@ -156,7 +156,7 @@ def _add_pretty_child(parentnode, newnod
return newnode
-def _build_xpath_node(ctx, xpath, addnode=None):
+def _build_xpath_node(ctx, xpath):
"""
Build all nodes required to set an xpath. If we have XML <foo/>, and want
to set xpath /foo/bar/baz@booyeah, we create node 'bar' and 'baz'
@@ -197,9 +197,6 @@ def _build_xpath_node(ctx, xpath, addnod
newnode = libxml2.newNode(nodename)
parentnode = _add_pretty_child(parentnode, newnode)
- if addnode:
- parentnode = _add_pretty_child(parentnode, addnode)
-
return parentnode
@@ -989,7 +986,9 @@ class XMLBuilder(object):
use_xpath = obj.get_root_xpath().rsplit("/", 1)[0]
indent = 2 * obj.get_root_xpath().count("/")
newnode = libxml2.parseDoc(util.xml_indent(xml, indent)).children
- _build_xpath_node(self._xmlstate.xml_ctx, use_xpath, newnode)
+ parentnode = _build_xpath_node(self._xmlstate.xml_ctx, use_xpath)
+ # Tack newnode on the end
+ _add_pretty_child(parentnode, newnode)
obj._parse_with_children(None, self._xmlstate.xml_node)
def remove_child(self, obj):

View File

@ -1,63 +0,0 @@
References: fate#319621
Subject: xmlbuilder: Handle setting conditional xpaths correctly
From: Cole Robinson crobinso@redhat.com Mon Jul 18 14:40:58 2016 -0400
Date: Mon Jul 18 14:46:50 2016 -0400:
Git: b08647c2f277e463971ae1e4430aaed28a4619f3
So if xml=<foo> and xpath=./bar[@baz='foo'] and val=XXX, xmlbuilder
previously would generate XML
<foo>
<bar>XXX</bar>
</foo>
But now generates the expected
<foo>
<bar baz='foo'/>XXX</bar>
</foo>
No users yet, but they are incoming
Index: virt-manager-1.4.0/virtinst/xmlbuilder.py
===================================================================
--- virt-manager-1.4.0.orig/virtinst/xmlbuilder.py
+++ virt-manager-1.4.0/virtinst/xmlbuilder.py
@@ -167,6 +167,16 @@ def _build_xpath_node(ctx, xpath):
And the node pointing to @baz will be returned, for the caller to
do with as they please.
+
+ There's also special handling to ensure that setting
+ xpath=./bar[@baz='foo']/frob will create
+
+ <bar baz='foo'>
+ <frob></frob>
+ </bar>
+
+ Even if <bar> didn't exist before. So we fill in the dependent property
+ expression values
"""
def _handle_node(nodename, parentnode, parentpath):
# If the passed xpath snippet (nodename) exists, return the node
@@ -209,6 +219,19 @@ def _build_xpath_node(ctx, xpath):
for nodename in xpath.split("/"):
parentnode, parentpath = _handle_node(nodename, parentnode, parentpath)
+ # Check if the xpath snippet had an '=' expression in it, example:
+ #
+ # ./foo[@bar='baz']
+ #
+ # If so, we also want to set <foo bar='baz'/>, so that setting
+ # this XML element works as expected in this case.
+ if "[" not in nodename or "=" not in nodename:
+ continue
+
+ propname, val = nodename.split("[")[1].strip("]").split("=")
+ propobj, ignore = _handle_node(propname, parentnode, parentpath)
+ propobj.setContent(val.strip("'"))
+
return parentnode

View File

@ -1,125 +0,0 @@
Subject: virtinst: Add classes for defining SMBios information
From: Charles Arnold carnold@suse.com Tue Sep 6 16:12:19 2016 -0600
Date: Thu Sep 8 11:36:59 2016 -0400:
Git: b31c0b442e9b1295d86cc49bd77c31919ab0cc02
This includes adding an smbios sub-element to the guest os element and a
sysinfo sub-element to the guest. The sysinfo sub-element contains the SMBios
specific data.
Index: virt-manager-1.4.0/virtinst/guest.py
===================================================================
--- virt-manager-1.4.0.orig/virtinst/guest.py
+++ virt-manager-1.4.0/virtinst/guest.py
@@ -52,6 +52,7 @@ from .idmap import IdMap
from .osxml import OSXML
from .pm import PM
from .seclabel import Seclabel
+from .sysinfo import SYSInfo
from .xmlbuilder import XMLBuilder, XMLProperty, XMLChildProperty
@@ -106,7 +107,7 @@ class Guest(XMLBuilder):
"vcpus", "curvcpus", "vcpu_placement", "cpuset",
"numatune", "bootloader", "os", "idmap",
"features", "cpu", "clock", "on_poweroff", "on_reboot", "on_crash",
- "resource", "pm", "emulator", "_devices", "seclabels"]
+ "resource", "pm", "emulator", "_devices", "seclabels", "sysinfo"]
def __init__(self, *args, **kwargs):
XMLBuilder.__init__(self, *args, **kwargs)
@@ -212,6 +213,7 @@ class Guest(XMLBuilder):
memoryBacking = XMLChildProperty(DomainMemorybacking, is_single=True)
idmap = XMLChildProperty(IdMap, is_single=True)
resource = XMLChildProperty(DomainResource, is_single=True)
+ sysinfo = XMLChildProperty(SYSInfo, is_single=True)
###############################
Index: virt-manager-1.4.0/virtinst/osxml.py
===================================================================
--- virt-manager-1.4.0.orig/virtinst/osxml.py
+++ virt-manager-1.4.0/virtinst/osxml.py
@@ -77,7 +77,7 @@ class OSXML(XMLBuilder):
_XML_ROOT_NAME = "os"
_XML_PROP_ORDER = ["arch", "os_type", "loader", "loader_ro", "loader_type",
"nvram", "nvram_template", "kernel", "initrd",
- "kernel_args", "dtb", "_bootdevs"]
+ "kernel_args", "dtb", "_bootdevs", "smbios_mode"]
def _get_bootorder(self):
return [dev.dev for dev in self._bootdevs]
@@ -116,6 +116,7 @@ class OSXML(XMLBuilder):
loader = XMLProperty("./loader")
loader_ro = XMLProperty("./loader/@readonly", is_yesno=True)
loader_type = XMLProperty("./loader/@type")
+ smbios_mode = XMLProperty("./smbios/@mode")
nvram = XMLProperty("./nvram")
nvram_template = XMLProperty("./nvram/@template")
arch = XMLProperty("./type/@arch",
Index: virt-manager-1.4.0/virtinst/sysinfo.py
===================================================================
--- /dev/null
+++ virt-manager-1.4.0/virtinst/sysinfo.py
@@ -0,0 +1,61 @@
+#
+# Copyright (C) 2016 Red Hat, Inc.
+# Copyright (C) 2016 SUSE LINUX Products GmbH, Nuernberg, Germany.
+# Charles Arnold <carnold suse com>
+#
+# 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
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
+# MA 02110-1301 USA.
+"""
+Classes for building and installing with libvirt <sysinfo> XML
+"""
+
+from .xmlbuilder import XMLBuilder, XMLProperty
+
+
+class SYSInfo(XMLBuilder):
+ """
+ Top level class for <sysinfo type='smbios'> object XML
+ """
+
+ _XML_ROOT_NAME = "sysinfo"
+ _XML_PROP_ORDER = ["type",
+ "bios_vendor", "bios_version", "bios_date", "bios_release",
+ "system_manufacturer", "system_product", "system_version",
+ "system_serial", "system_uuid", "system_sku", "system_family",
+ "baseBoard_manufacturer", "baseBoard_product", "baseBoard_version",
+ "baseBoard_serial", "baseBoard_asset", "baseBoard_location"]
+
+ type = XMLProperty("./@type")
+
+ bios_vendor = XMLProperty("./bios/entry[@name='vendor']")
+ bios_version = XMLProperty("./bios/entry[@name='version']")
+ bios_date = XMLProperty("./bios/entry[@name='date']")
+ bios_release = XMLProperty("./bios/entry[@name='release']")
+
+ system_manufacturer = XMLProperty("./system/entry[@name='manufacturer']")
+ system_product = XMLProperty("./system/entry[@name='product']")
+ system_version = XMLProperty("./system/entry[@name='version']")
+ system_serial = XMLProperty("./system/entry[@name='serial']")
+ system_uuid = XMLProperty("./system/entry[@name='uuid']")
+ system_sku = XMLProperty("./system/entry[@name='sku']")
+ system_family = XMLProperty("./system/entry[@name='family']")
+
+ baseBoard_manufacturer = XMLProperty(
+ "./baseBoard/entry[@name='manufacturer']")
+ baseBoard_product = XMLProperty("./baseBoard/entry[@name='product']")
+ baseBoard_version = XMLProperty("./baseBoard/entry[@name='version']")
+ baseBoard_serial = XMLProperty("./baseBoard/entry[@name='serial']")
+ baseBoard_asset = XMLProperty("./baseBoard/entry[@name='asset']")
+ baseBoard_location = XMLProperty("./baseBoard/entry[@name='location']")

View File

@ -1,23 +0,0 @@
Subject: virtinst: fix bad version check regression from 55327c81b7
From: Marc-André Lureau marcandre.lureau@redhat.com Wed Nov 9 11:21:32 2016 +0400
Date: Mon Nov 14 09:03:30 2016 +0100:
Git: b4858842f9e2f4f39ca81ad596fb777d11537a0f
Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com>
Index: virt-manager-1.4.0/virtinst/support.py
===================================================================
--- virt-manager-1.4.0.orig/virtinst/support.py
+++ virt-manager-1.4.0/virtinst/support.py
@@ -312,9 +312,9 @@ SUPPORT_CONN_MEM_STATS_PERIOD = _make(
function="virDomain.setMemoryStatsPeriod",
version="1.1.1", hv_version={"qemu": 0})
SUPPORT_CONN_SPICE_GL = _make(version="1.3.3",
- hv_version={"qemu": "2.7.92", "test": 0})
+ hv_version={"qemu": "2.6.0", "test": 0})
SUPPORT_CONN_VIDEO_VIRTIO_ACCEL3D = _make(version="1.3.0",
- hv_version={"qemu": "2.7.0", "test": 0})
+ hv_version={"qemu": "2.5.0", "test": 0})
SUPPORT_CONN_GRAPHICS_LISTEN_NONE = _make(version="2.0.0")

View File

@ -1,23 +0,0 @@
Subject: connection: Fix transport detection for qemu://$HOST/system
From: Cole Robinson crobinso@redhat.com Tue Jun 21 11:31:26 2016 -0400
Date: Tue Jun 21 11:31:26 2016 -0400:
Git: c5ce0ab512b0d8a3045b9d09329648559f825b86
In this case, when a host is specified but not a transport, libvirt
defaults to transport=tls
diff --git a/virtinst/connection.py b/virtinst/connection.py
index a09f4df..2efc3eb 100644
--- a/virtinst/connection.py
+++ b/virtinst/connection.py
@@ -355,6 +355,10 @@ class VirtualConnection(object):
def get_uri_username(self):
return self._uriobj.username
def get_uri_transport(self):
+ if self.get_uri_hostname() and not self._uriobj.transport:
+ # Libvirt defaults to transport=tls if hostname specified but
+ # no transport is specified
+ return "tls"
return self._uriobj.transport
def get_uri_path(self):
return self._uriobj.path

View File

@ -1,36 +0,0 @@
References: fate#319621
Subject: xmlbuilder: Update XMLProperty docs
From: Cole Robinson crobinso@redhat.com Mon Jul 18 12:46:59 2016 -0400
Date: Mon Jul 18 14:46:50 2016 -0400:
Git: d8a0a78805b17778c37d181f7b3a0be145536e9b
Index: virt-manager-1.4.0/virtinst/xmlbuilder.py
===================================================================
--- virt-manager-1.4.0.orig/virtinst/xmlbuilder.py
+++ virt-manager-1.4.0/virtinst/xmlbuilder.py
@@ -340,15 +340,16 @@ class XMLProperty(property):
is_bool=False, is_int=False, is_yesno=False, is_onoff=False,
default_cb=None, default_name=None, do_abspath=False):
"""
- Set a XMLBuilder class property that represents a value in the
- <domain> XML. For example
+ Set a XMLBuilder class property that maps to a value in an XML
+ document, indicated by the passed xpath. For example, for a
+ <domain><name> the definition may look like:
- name = XMLProperty(get_name, set_name, xpath="/domain/name")
+ name = XMLProperty("./name")
- When building XML from scratch (virt-install), name is a regular
- class property. When parsing and editting existing guest XML, we
- use the xpath value to map the name property to the underlying XML
- definition.
+ When building XML from scratch (virt-install), 'name' works
+ similar to a regular class property(). When parsing and editing
+ existing guest XML, we use the xpath value to get/set the value
+ in the parsed XML document.
@param doc: option doc string for the property
@param xpath: xpath string which maps to the associated property

View File

@ -1,48 +0,0 @@
Subject: viewers: spice: Catch failure to setup usbdev manager
From: Cole Robinson crobinso@redhat.com Tue Jun 21 09:01:32 2016 -0400
Date: Tue Jun 21 09:01:32 2016 -0400:
Git: e69cc002b10b49a77f1cd5170931e5e9209ab240
Since some distros like openbsd don't compile support for
usb redirection, which makes this fail
https://bugzilla.redhat.com/show_bug.cgi?id=1348479
diff --git a/virtManager/viewers.py b/virtManager/viewers.py
index 403c316..2f7d2e9 100644
--- a/virtManager/viewers.py
+++ b/virtManager/viewers.py
@@ -538,16 +538,23 @@ class SpiceViewer(Viewer):
GObject.GObject.connect(self._spice_session, "channel-new",
self._channel_new_cb)
- self._usbdev_manager = SpiceClientGLib.UsbDeviceManager.get(
- self._spice_session)
- self._usbdev_manager.connect("auto-connect-failed",
- self._usbdev_redirect_error)
- self._usbdev_manager.connect("device-error",
- self._usbdev_redirect_error)
-
- autoredir = self.config.get_auto_redirection()
- if autoredir:
- gtk_session.set_property("auto-usbredir", True)
+ # Distros might have usb redirection compiled out, like OpenBSD
+ # https://bugzilla.redhat.com/show_bug.cgi?id=1348479
+ try:
+ self._usbdev_manager = SpiceClientGLib.UsbDeviceManager.get(
+ self._spice_session)
+ self._usbdev_manager.connect("auto-connect-failed",
+ self._usbdev_redirect_error)
+ self._usbdev_manager.connect("device-error",
+ self._usbdev_redirect_error)
+
+ autoredir = self.config.get_auto_redirection()
+ if autoredir:
+ gtk_session.set_property("auto-usbredir", True)
+ except:
+ self._usbdev_manager = None
+ logging.debug("Error initializing spice usb device manager",
+ exc_info=True)
#####################

View File

@ -1,22 +0,0 @@
Subject: virt-install: fix --wait=0 to behave like --noautoconsole
From: Pavel Hrdina phrdina@redhat.com Wed Jan 18 13:11:43 2017 +0100
Date: Wed Jan 18 13:11:43 2017 +0100:
Git: f07a3021d99298e3b157f6c18b880dcb3ac19b62
Resolves: https://bugzilla.redhat.com/show_bug.cgi?id=1371781
Signed-off-by: Pavel Hrdina <phrdina@redhat.com>
Index: virt-manager-1.4.0/virt-install
===================================================================
--- virt-manager-1.4.0.orig/virt-install
+++ virt-manager-1.4.0/virt-install
@@ -647,7 +647,7 @@ def build_guest_instance(conn, options):
###########################
def start_install(guest, options):
- if options.wait:
+ if options.wait is not None:
wait_on_install = True
wait_time = options.wait * 60
if "VIRTINST_TEST_SUITE" in os.environ and wait_time:

View File

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

View File

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

View File

@ -1,3 +1,57 @@
-------------------------------------------------------------------
Wed Mar 15 22:24:27 MDT 2017 - carnold@suse.com
- Fix initializing the default host installation source location
(bsc#1027942)
virtman-default-guest-from-host-os.patch
virtman-show-suse-install-repos.patch
-------------------------------------------------------------------
Thu Mar 9 08:34:24 MST 2017 - carnold@suse.com
- Update to virt-manager 1.4.1 (bsc#1027942)
virt-manager-1.4.1.tar.bz2
* storage/nodedev event API support (Jovanka Gulicoska)
* UI options for enabling spice GL (Marc-André Lureau)
* Add default virtio-rng /dev/urandom for supported guest OS
* Cloning and rename support for UEFI VMs (Pavel Hrdina)
* libguestfs inspection UI improvements (Pino Toscano)
* virt-install: Add qemu-commandline
* virt-install: Add network vhostuser (Chen Hanxiao)
* virt-install: Add sysinfo (Charles Arnold)
- Dropped the following patches contained in new tarball
0425975f-use-virDomainMigrate3-API.patch
0910c8dc-black-display-if-graphic-mode-vnc-and-listen-type-none.patch
1d2cd306-Fix-incorrect-usage-of-virtio-input.patch
2df8dc39-detect-whether-IP-address-comes-from-DHCP-server.patch
559e813b-xmlbuilder-02.patch
561f5cd3-drop-xenmigr-scheme-from-Xen-migration-URI.patch
5a11cf07-virt-manager-generates-invalid-guest-XML.patch
617b9271-dont-return-virtio1.0-net-as-valid-device-name.patch
63784f4d-document-new-sysinfo-option.patch
6daff68a-fix-italian-lang-file.patch
7962672c-fix-error-checking-extra_args.patch
835ddc5f-xmlbuilder-04.patch
a3206f89-Add-the-sysinfo-option.patch
a931a1a6-xmlbuilder-03.patch
b08647c2-xmlbuilder-05.patch
b31c0b44-Add-classes-for-defining-SMBios-information.patch
b4858842-fix-bad-version-check-regression.patch
b8dccf6a-fix-connection-to-remote-spice-with-password.patch
c5ce0ab5-connection-fix-transport-detection.patch
d8a0a788-xmlbuilder-01.patch
e69cc002-spice-catch-failure-to-setup-usbdev-manager.patch
f07a3021-fix-wait-to-behave-like-noautoconsole.patch
virtinst-add-default-rng-device.patch
-------------------------------------------------------------------
Fri Mar 3 11:55:53 MST 2017 - carnold@suse.com
- Upstream bug fixes (bsc#1027942)
2df8dc39-detect-whether-IP-address-comes-from-DHCP-server.patch
b8dccf6a-fix-connection-to-remote-spice-with-password.patch
0910c8dc-black-display-if-graphic-mode-vnc-and-listen-type-none.patch
------------------------------------------------------------------- -------------------------------------------------------------------
Thu Jan 26 16:41:16 MST 2017 - carnold@suse.com Thu Jan 26 16:41:16 MST 2017 - carnold@suse.com
@ -159,6 +213,13 @@ Fri May 6 15:50:12 MDT 2016 - carnold@suse.com
virt-manager virt-manager
8ba48f52-add-virtio-device-model-and-accel3d-attribute.patch 8ba48f52-add-virtio-device-model-and-accel3d-attribute.patch
-------------------------------------------------------------------
Tue May 3 12:13:29 MDT 2016 - carnold@suse.com
- fate#319659 - vm-install: remove shortcut in virt-manager
Need to also remove spec file 'Recommends' for vm-install
virt-manager.spec
------------------------------------------------------------------- -------------------------------------------------------------------
Mon Apr 25 15:20:23 MDT 2016 - michael@stroeder.com Mon Apr 25 15:20:23 MDT 2016 - michael@stroeder.com
@ -478,6 +539,18 @@ Wed Jul 8 11:29:25 MDT 2015 - carnold@suse.com
34db1af7-fix-adding-iscsi-pools.patch 34db1af7-fix-adding-iscsi-pools.patch
77423e7a-connection-catch-more-errors-in-filter_nodedevs.patch 77423e7a-connection-catch-more-errors-in-filter_nodedevs.patch
-------------------------------------------------------------------
Wed Jul 8 08:45:09 MDT 2015 - carnold@suse.com
- bsc#937386 - virt-manager can not create new VMs: "Error
launching manager: list index out of range"
virtman-show-suse-install-repos.patch
-------------------------------------------------------------------
Wed Jul 8 07:29:41 MDT 2015 - cyliu@suse.com
- bnc#910929 - Unable to clone a qcow2 guest
------------------------------------------------------------------- -------------------------------------------------------------------
Mon Jun 15 14:17:50 UTC 2015 - lma@suse.com Mon Jun 15 14:17:50 UTC 2015 - lma@suse.com

View File

@ -23,11 +23,11 @@
%define libvirt_xen_packages "" %define libvirt_xen_packages ""
%define preferred_distros "sles12sp3,opensuse42.3" %define preferred_distros "sles12sp3,opensuse42.3"
%define kvm_packages "" %define kvm_packages ""
%define _version 1.4.0 %define _version 1.4.1
%define _release 0 %define _release 0
Name: virt-manager Name: virt-manager
Version: 1.4.0 Version: 1.4.1
Release: 0 Release: 0
Summary: Virtual Machine Manager Summary: Virtual Machine Manager
License: GPL-2.0+ License: GPL-2.0+
@ -37,25 +37,6 @@ Source0: %{name}-%{version}.tar.bz2
Source1: virt-install.rb Source1: virt-install.rb
Source2: virt-install.desktop Source2: virt-install.desktop
# Upstream Patches # Upstream Patches
Patch1: e69cc002-spice-catch-failure-to-setup-usbdev-manager.patch
Patch2: c5ce0ab5-connection-fix-transport-detection.patch
Patch3: 6daff68a-fix-italian-lang-file.patch
Patch4: d8a0a788-xmlbuilder-01.patch
Patch5: 559e813b-xmlbuilder-02.patch
Patch6: a931a1a6-xmlbuilder-03.patch
Patch7: 835ddc5f-xmlbuilder-04.patch
Patch8: b08647c2-xmlbuilder-05.patch
Patch9: b31c0b44-Add-classes-for-defining-SMBios-information.patch
Patch10: a3206f89-Add-the-sysinfo-option.patch
Patch11: 63784f4d-document-new-sysinfo-option.patch
Patch12: 0425975f-use-virDomainMigrate3-API.patch
Patch13: 561f5cd3-drop-xenmigr-scheme-from-Xen-migration-URI.patch
Patch14: 1d2cd306-Fix-incorrect-usage-of-virtio-input.patch
Patch15: 7962672c-fix-error-checking-extra_args.patch
Patch16: b4858842-fix-bad-version-check-regression.patch
Patch17: 5a11cf07-virt-manager-generates-invalid-guest-XML.patch
Patch18: 617b9271-dont-return-virtio1.0-net-as-valid-device-name.patch
Patch19: f07a3021-fix-wait-to-behave-like-noautoconsole.patch
# SUSE Only # SUSE Only
Patch70: virtman-desktop.patch Patch70: virtman-desktop.patch
Patch71: virtman-kvm.patch Patch71: virtman-kvm.patch
@ -77,12 +58,11 @@ Patch122: virtinst-detect-oes-distros.patch
Patch123: virtinst-modify-gui-defaults.patch Patch123: virtinst-modify-gui-defaults.patch
Patch124: virtinst-vol-default-nocow.patch Patch124: virtinst-vol-default-nocow.patch
Patch125: virtinst-set-cache-mode-unsafe-for-install.patch Patch125: virtinst-set-cache-mode-unsafe-for-install.patch
Patch126: virtinst-add-default-rng-device.patch Patch126: virtinst-set-qemu-emulator.patch
Patch127: virtinst-set-qemu-emulator.patch Patch127: virtinst-add-ppc64-arch-support.patch
Patch128: virtinst-add-ppc64-arch-support.patch Patch128: virtinst-s390x-disable-graphics.patch
Patch129: virtinst-s390x-disable-graphics.patch Patch129: virtinst-add-casp-support.patch
Patch130: virtinst-add-casp-support.patch Patch130: virtinst-expand-combobox.patch
Patch131: virtinst-expand-combobox.patch
# Bug Fixes # Bug Fixes
Patch150: virtman-prevent-double-click-starting-vm-twice.patch Patch150: virtman-prevent-double-click-starting-vm-twice.patch
Patch151: virtman-increase-setKeepAlive-count.patch Patch151: virtman-increase-setKeepAlive-count.patch
@ -109,8 +89,10 @@ Requires: python-gobject-cairo
Recommends: python-SpiceClientGtk Recommends: python-SpiceClientGtk
Requires: virt-install Requires: virt-install
Requires: virt-manager-common = %{verrel} Requires: virt-manager-common = %{verrel}
%if 0%{?is_opensuse} == 1
# virtman-desktop.patch changes the icon to be yast-vm-management, which is provided by yast2-branding # virtman-desktop.patch changes the icon to be yast-vm-management, which is provided by yast2-branding
Requires: yast2-branding-openSUSE Requires: yast2-branding-openSUSE
%endif
%if %{with_guestfs} %if %{with_guestfs}
Requires: python-libguestfs Requires: python-libguestfs
@ -175,25 +157,6 @@ machine).
%prep %prep
%setup -q %setup -q
# Upstream Patches # Upstream Patches
%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
# SUSE Only # SUSE Only
%patch70 -p1 %patch70 -p1
%patch71 -p1 %patch71 -p1
@ -220,7 +183,6 @@ machine).
%patch128 -p1 %patch128 -p1
%patch129 -p1 %patch129 -p1
%patch130 -p1 %patch130 -p1
%patch131 -p1
# Bug Fixes # Bug Fixes
%patch150 -p1 %patch150 -p1
%patch151 -p1 %patch151 -p1
@ -301,7 +263,6 @@ fi
%files %files
%defattr(-,root,root,-) %defattr(-,root,root,-)
%doc README COPYING NEWS
%{_bindir}/%{name} %{_bindir}/%{name}
%{_mandir}/man1/%{name}.1* %{_mandir}/man1/%{name}.1*

View File

@ -2,10 +2,10 @@ References: bsc#1010060
Notes: SUSE Containers as a Service Platform and 'CASP' are not Notes: SUSE Containers as a Service Platform and 'CASP' are not
names set in stone yet and could change before the product ships. names set in stone yet and could change before the product ships.
Index: virt-manager-1.4.0/virtinst/urlfetcher.py Index: virt-manager-1.4.1/virtinst/urlfetcher.py
=================================================================== ===================================================================
--- virt-manager-1.4.0.orig/virtinst/urlfetcher.py --- virt-manager-1.4.1.orig/virtinst/urlfetcher.py
+++ virt-manager-1.4.0/virtinst/urlfetcher.py +++ virt-manager-1.4.1/virtinst/urlfetcher.py
@@ -464,6 +464,10 @@ def _distroFromSUSEContent(fetcher, arch @@ -464,6 +464,10 @@ def _distroFromSUSEContent(fetcher, arch
dclass = SLESDistro dclass = SLESDistro
if distro_version is None: if distro_version is None:
@ -17,7 +17,7 @@ Index: virt-manager-1.4.0/virtinst/urlfetcher.py
elif re.match(".*openSUSE.*", distribution[1]): elif re.match(".*openSUSE.*", distribution[1]):
dclass = OpensuseDistro dclass = OpensuseDistro
if distro_version is None: if distro_version is None:
@@ -1019,7 +1023,8 @@ class SuseDistro(Distro): @@ -1021,7 +1025,8 @@ class SuseDistro(Distro):
distro_version = self.version_from_content[1].strip() distro_version = self.version_from_content[1].strip()
version = distro_version.split('.', 1)[0].strip() version = distro_version.split('.', 1)[0].strip()
self.os_variant = self.urldistro self.os_variant = self.urldistro
@ -27,7 +27,7 @@ Index: virt-manager-1.4.0/virtinst/urlfetcher.py
if self.os_variant.startswith(("sles", "sled")): if self.os_variant.startswith(("sles", "sled")):
sp_version = None sp_version = None
if len(distro_version.split('.', 1)) == 2: if len(distro_version.split('.', 1)) == 2:
@@ -1033,6 +1038,8 @@ class SuseDistro(Distro): @@ -1035,6 +1040,8 @@ class SuseDistro(Distro):
self.os_variant += "tumbleweed" self.os_variant += "tumbleweed"
else: else:
self.os_variant += distro_version self.os_variant += distro_version
@ -36,7 +36,7 @@ Index: virt-manager-1.4.0/virtinst/urlfetcher.py
else: else:
self.os_variant += "9" self.os_variant += "9"
@@ -1079,6 +1086,9 @@ class SLESDistro(SuseDistro): @@ -1081,6 +1088,9 @@ class SLESDistro(SuseDistro):
class SLEDDistro(SuseDistro): class SLEDDistro(SuseDistro):
urldistro = "sled" urldistro = "sled"

View File

@ -1,38 +0,0 @@
References: bnc#885308
Enhancement to add a virtio RNG device to non windows VMs.
Index: virt-manager-1.4.0/virtinst/guest.py
===================================================================
--- virt-manager-1.4.0.orig/virtinst/guest.py
+++ virt-manager-1.4.0/virtinst/guest.py
@@ -39,6 +39,7 @@ from .devicedisk import VirtualDisk
from .devicegraphics import VirtualGraphics
from .deviceinput import VirtualInputDevice
from .deviceredirdev import VirtualRedirDevice
+from .devicerng import VirtualRNGDevice
from .devicevideo import VirtualVideoDevice
from .distroinstaller import DistroInstaller
from .domainblkiotune import DomainBlkiotune
@@ -655,6 +656,15 @@ class Guest(XMLBuilder):
return
self.add_device(VirtualGraphics(self.conn))
+ def add_default_rng(self):
+ osvar = self._get_os_variant()
+ if not self.conn.is_qemu() or not osvar or osvar.startswith("win"):
+ return
+ rng_dev = VirtualRNGDevice(True)
+ rng_dev.type = VirtualRNGDevice.TYPE_RANDOM
+ setattr(rng_dev, "device", "/dev/random")
+ self.add_device(rng_dev)
+
def add_default_devices(self):
self.add_default_graphics()
self.add_default_video_device()
@@ -662,6 +672,7 @@ class Guest(XMLBuilder):
self.add_default_console_device()
self.add_default_usb_controller()
self.add_default_channels()
+ self.add_default_rng()
def _add_install_cdrom(self):
if self._install_cdrom_device:

View File

@ -1,9 +1,9 @@
Reference: bnc#869024 Reference: bnc#869024
Add s390x and ppc64 support Add s390x and ppc64 support
Index: virt-manager-1.4.0/virtinst/urlfetcher.py Index: virt-manager-1.4.1/virtinst/urlfetcher.py
=================================================================== ===================================================================
--- virt-manager-1.4.0.orig/virtinst/urlfetcher.py --- virt-manager-1.4.1.orig/virtinst/urlfetcher.py
+++ virt-manager-1.4.0/virtinst/urlfetcher.py +++ virt-manager-1.4.1/virtinst/urlfetcher.py
@@ -438,6 +438,10 @@ def _distroFromSUSEContent(fetcher, arch @@ -438,6 +438,10 @@ def _distroFromSUSEContent(fetcher, arch
arch = "i586" arch = "i586"
elif cbuf.find("s390x") != -1: elif cbuf.find("s390x") != -1:
@ -15,7 +15,7 @@ Index: virt-manager-1.4.0/virtinst/urlfetcher.py
def _parse_sle_distribution(d): def _parse_sle_distribution(d):
sle_version = d[1].strip().rsplit(' ')[4] sle_version = d[1].strip().rsplit(' ')[4]
@@ -989,10 +993,12 @@ class SuseDistro(Distro): @@ -991,10 +995,12 @@ class SuseDistro(Distro):
oldkern += "64" oldkern += "64"
oldinit += "64" oldinit += "64"

View File

@ -3,11 +3,11 @@ Enhancement for the following GUI wizard installation options.
is the default is the default
2) Under 'Network selection' default to a bridge that has an actual 2) Under 'Network selection' default to a bridge that has an actual
IP address if available (not just the first one found). IP address if available (not just the first one found).
Index: virt-manager-1.4.0/virtManager/create.py Index: virt-manager-1.4.1/virtManager/create.py
=================================================================== ===================================================================
--- virt-manager-1.4.0.orig/virtManager/create.py --- virt-manager-1.4.1.orig/virtManager/create.py
+++ virt-manager-1.4.0/virtManager/create.py +++ virt-manager-1.4.1/virtManager/create.py
@@ -376,7 +376,19 @@ class vmmCreate(vmmGObjectUI): @@ -377,7 +377,19 @@ class vmmCreate(vmmGObjectUI):
self.widget("method-local").set_active(True) self.widget("method-local").set_active(True)
self.widget("create-conn").set_active(-1) self.widget("create-conn").set_active(-1)
activeconn = self._populate_conn_list(urihint) activeconn = self._populate_conn_list(urihint)
@ -28,10 +28,10 @@ Index: virt-manager-1.4.0/virtManager/create.py
if self._set_conn(activeconn) is False: if self._set_conn(activeconn) is False:
return False return False
Index: virt-manager-1.4.0/virtManager/netlist.py Index: virt-manager-1.4.1/virtManager/netlist.py
=================================================================== ===================================================================
--- virt-manager-1.4.0.orig/virtManager/netlist.py --- virt-manager-1.4.1.orig/virtManager/netlist.py
+++ virt-manager-1.4.0/virtManager/netlist.py +++ virt-manager-1.4.1/virtManager/netlist.py
@@ -167,9 +167,19 @@ class vmmNetworkList(vmmGObjectUI): @@ -167,9 +167,19 @@ class vmmNetworkList(vmmGObjectUI):
return rows, vnet_bridges, default_label return rows, vnet_bridges, default_label

View File

@ -5,13 +5,13 @@ A fix for accessing nfs mounted media. A comment in the code states,
and carry the latter form around internally" and carry the latter form around internally"
We need the RFC version to work correctly whereas redhat's anaconda We need the RFC version to work correctly whereas redhat's anaconda
needs their own modified version. needs their own modified version.
Index: virt-manager-1.4.0/virtinst/util.py Index: virt-manager-1.4.1/virtinst/util.py
=================================================================== ===================================================================
--- virt-manager-1.4.0.orig/virtinst/util.py --- virt-manager-1.4.1.orig/virtinst/util.py
+++ virt-manager-1.4.0/virtinst/util.py +++ virt-manager-1.4.1/virtinst/util.py
@@ -553,3 +553,22 @@ def getInstallRepos(enabled_sources_only @@ -447,3 +447,22 @@ def getInstallRepos():
return (index_dom0, zypper_output) return (0, [])
return lookupZypperRepos(getHostInstallSource())
+def sanitize_url(url): +def sanitize_url(url):
+ """ + """
@ -32,10 +32,10 @@ Index: virt-manager-1.4.0/virtinst/util.py
+ +
+ return url + return url
+ +
Index: virt-manager-1.4.0/virtinst/distroinstaller.py Index: virt-manager-1.4.1/virtinst/distroinstaller.py
=================================================================== ===================================================================
--- virt-manager-1.4.0.orig/virtinst/distroinstaller.py --- virt-manager-1.4.1.orig/virtinst/distroinstaller.py
+++ virt-manager-1.4.0/virtinst/distroinstaller.py +++ virt-manager-1.4.1/virtinst/distroinstaller.py
@@ -44,6 +44,8 @@ def _sanitize_url(url): @@ -44,6 +44,8 @@ def _sanitize_url(url):
""" """
Do nothing for http or ftp, but make sure nfs is in the expected format Do nothing for http or ftp, but make sure nfs is in the expected format
@ -45,10 +45,10 @@ Index: virt-manager-1.4.0/virtinst/distroinstaller.py
if url.startswith("nfs://"): if url.startswith("nfs://"):
# Convert RFC compliant NFS nfs://server/path/to/distro # Convert RFC compliant NFS nfs://server/path/to/distro
# to what mount/anaconda expect nfs:server:/path/to/distro # to what mount/anaconda expect nfs:server:/path/to/distro
Index: virt-manager-1.4.0/virtinst/urlfetcher.py Index: virt-manager-1.4.1/virtinst/urlfetcher.py
=================================================================== ===================================================================
--- virt-manager-1.4.0.orig/virtinst/urlfetcher.py --- virt-manager-1.4.1.orig/virtinst/urlfetcher.py
+++ virt-manager-1.4.0/virtinst/urlfetcher.py +++ virt-manager-1.4.1/virtinst/urlfetcher.py
@@ -34,6 +34,7 @@ import urlparse @@ -34,6 +34,7 @@ import urlparse
import requests import requests

View File

@ -2,11 +2,11 @@ Reference: bnc#863821
grub.xen is required to boot PV VMs that use the BTRFS filesystem. grub.xen is required to boot PV VMs that use the BTRFS filesystem.
This patch forces the use of grub.xen (instead of using pygrub) for This patch forces the use of grub.xen (instead of using pygrub) for
newer suse distros like SLE12 and openSUSE 13.2. newer suse distros like SLE12 and openSUSE 13.2.
Index: virt-manager-1.4.0/virtinst/guest.py Index: virt-manager-1.4.1/virtinst/guest.py
=================================================================== ===================================================================
--- virt-manager-1.4.0.orig/virtinst/guest.py --- virt-manager-1.4.1.orig/virtinst/guest.py
+++ virt-manager-1.4.0/virtinst/guest.py +++ virt-manager-1.4.1/virtinst/guest.py
@@ -364,8 +364,20 @@ class Guest(XMLBuilder): @@ -363,8 +363,20 @@ class Guest(XMLBuilder):
if (not install and if (not install and
self.os.is_xenpv() and self.os.is_xenpv() and
not self.os.kernel): not self.os.kernel):
@ -29,10 +29,10 @@ Index: virt-manager-1.4.0/virtinst/guest.py
return self.get_xml_config() return self.get_xml_config()
Index: virt-manager-1.4.0/virtinst/installer.py Index: virt-manager-1.4.1/virtinst/installer.py
=================================================================== ===================================================================
--- virt-manager-1.4.0.orig/virtinst/installer.py --- virt-manager-1.4.1.orig/virtinst/installer.py
+++ virt-manager-1.4.0/virtinst/installer.py +++ virt-manager-1.4.1/virtinst/installer.py
@@ -99,7 +99,7 @@ class Installer(object): @@ -99,7 +99,7 @@ class Installer(object):
break break
return bootorder return bootorder

View File

@ -1,10 +1,10 @@
Reference: bnc#869024 Reference: bnc#869024
Disable graphics on s390x Disable graphics on s390x
Index: virt-manager-1.4.0/virtinst/guest.py Index: virt-manager-1.4.1/virtinst/guest.py
=================================================================== ===================================================================
--- virt-manager-1.4.0.orig/virtinst/guest.py --- virt-manager-1.4.1.orig/virtinst/guest.py
+++ virt-manager-1.4.0/virtinst/guest.py +++ virt-manager-1.4.1/virtinst/guest.py
@@ -123,7 +123,10 @@ class Guest(XMLBuilder): @@ -124,7 +124,10 @@ class Guest(XMLBuilder):
self.skip_default_channel = False self.skip_default_channel = False
self.skip_default_sound = False self.skip_default_sound = False
self.skip_default_usbredir = False self.skip_default_usbredir = False
@ -13,10 +13,10 @@ Index: virt-manager-1.4.0/virtinst/guest.py
+ self.skip_default_graphics = True + self.skip_default_graphics = True
+ else: + else:
+ self.skip_default_graphics = False + self.skip_default_graphics = False
self.skip_default_rng = False
self.x86_cpu_default = self.cpu.SPECIAL_MODE_HOST_MODEL_ONLY self.x86_cpu_default = self.cpu.SPECIAL_MODE_HOST_MODEL_ONLY
self.__os_object = None @@ -619,7 +622,7 @@ class Guest(XMLBuilder):
@@ -606,7 +609,7 @@ class Guest(XMLBuilder):
self.add_device(dev) self.add_device(dev)
def add_default_video_device(self): def add_default_video_device(self):
@ -25,7 +25,7 @@ Index: virt-manager-1.4.0/virtinst/guest.py
return return
if self.get_devices("video"): if self.get_devices("video"):
return return
@@ -644,6 +647,8 @@ class Guest(XMLBuilder): @@ -657,6 +660,8 @@ class Guest(XMLBuilder):
dev.target_type = "virtio" dev.target_type = "virtio"
dev.target_name = dev.CHANNEL_NAME_QEMUGA dev.target_name = dev.CHANNEL_NAME_QEMUGA
self.add_device(dev) self.add_device(dev)
@ -34,7 +34,7 @@ Index: virt-manager-1.4.0/virtinst/guest.py
def add_default_graphics(self): def add_default_graphics(self):
if self.skip_default_graphics: if self.skip_default_graphics:
@@ -652,7 +657,7 @@ class Guest(XMLBuilder): @@ -665,7 +670,7 @@ class Guest(XMLBuilder):
return return
if self.os.is_container(): if self.os.is_container():
return return
@ -43,7 +43,7 @@ Index: virt-manager-1.4.0/virtinst/guest.py
return return
self.add_device(VirtualGraphics(self.conn)) self.add_device(VirtualGraphics(self.conn))
@@ -980,7 +985,7 @@ class Guest(XMLBuilder): @@ -1003,7 +1008,7 @@ class Guest(XMLBuilder):
if self._hv_only_supports_virtio(): if self._hv_only_supports_virtio():
return True return True

View File

@ -1,10 +1,10 @@
Set cache mode for target installation disk to unsafe for better Set cache mode for target installation disk to unsafe for better
performance. performance.
Index: virt-manager-1.4.0/virtinst/guest.py Index: virt-manager-1.4.1/virtinst/guest.py
=================================================================== ===================================================================
--- virt-manager-1.4.0.orig/virtinst/guest.py --- virt-manager-1.4.1.orig/virtinst/guest.py
+++ virt-manager-1.4.0/virtinst/guest.py +++ virt-manager-1.4.1/virtinst/guest.py
@@ -360,6 +360,17 @@ class Guest(XMLBuilder): @@ -359,6 +359,17 @@ class Guest(XMLBuilder):
self._set_osxml_defaults() self._set_osxml_defaults()
@ -22,7 +22,7 @@ Index: virt-manager-1.4.0/virtinst/guest.py
self.bootloader = None self.bootloader = None
if (not install and if (not install and
self.os.is_xenpv() and self.os.is_xenpv() and
@@ -379,7 +390,10 @@ class Guest(XMLBuilder): @@ -378,7 +389,10 @@ class Guest(XMLBuilder):
self.installer.alter_bootconfig(self, True, True) self.installer.alter_bootconfig(self, True, True)
logging.info("Using grub.xen to boot guest") logging.info("Using grub.xen to boot guest")

View File

@ -1,11 +1,11 @@
Use the correct qemu emulator based on the architecture. Use the correct qemu emulator based on the architecture.
We want to get away from using the old qemu-dm emulator We want to get away from using the old qemu-dm emulator
for Xen HVM guests so default to qemu-system-i386. for Xen HVM guests so default to qemu-system-i386.
Index: virt-manager-1.4.0/virtinst/guest.py Index: virt-manager-1.4.1/virtinst/guest.py
=================================================================== ===================================================================
--- virt-manager-1.4.0.orig/virtinst/guest.py --- virt-manager-1.4.1.orig/virtinst/guest.py
+++ virt-manager-1.4.0/virtinst/guest.py +++ virt-manager-1.4.1/virtinst/guest.py
@@ -793,14 +793,11 @@ class Guest(XMLBuilder): @@ -816,14 +816,11 @@ class Guest(XMLBuilder):
self.emulator = None self.emulator = None
return return

View File

@ -1,9 +1,9 @@
Enhancement to add ocfs2 as a supported FS type Enhancement to add ocfs2 as a supported FS type
Index: virt-manager-1.4.0/virtinst/storage.py Index: virt-manager-1.4.1/virtinst/storage.py
=================================================================== ===================================================================
--- virt-manager-1.4.0.orig/virtinst/storage.py --- virt-manager-1.4.1.orig/virtinst/storage.py
+++ virt-manager-1.4.0/virtinst/storage.py +++ virt-manager-1.4.1/virtinst/storage.py
@@ -459,7 +459,7 @@ class StoragePool(_StorageObject): @@ -462,7 +462,7 @@ class StoragePool(_StorageObject):
def list_formats(self): def list_formats(self):
if self.type == self.TYPE_FS: if self.type == self.TYPE_FS:
return ["auto", "ext2", "ext3", "ext4", "ufs", "iso9660", "udf", return ["auto", "ext2", "ext3", "ext4", "ufs", "iso9660", "udf",

View File

@ -4,11 +4,11 @@ a non pae version. The sles10 sp4 32bit kernel will only boot para-
virtualized if the pae kernel is selected. virtualized if the pae kernel is selected.
Note that sles12 and newer has no 32bit release. Note that sles12 and newer has no 32bit release.
Index: virt-manager-1.4.0/virtinst/urlfetcher.py Index: virt-manager-1.4.1/virtinst/urlfetcher.py
=================================================================== ===================================================================
--- virt-manager-1.4.0.orig/virtinst/urlfetcher.py --- virt-manager-1.4.1.orig/virtinst/urlfetcher.py
+++ virt-manager-1.4.0/virtinst/urlfetcher.py +++ virt-manager-1.4.1/virtinst/urlfetcher.py
@@ -1016,8 +1016,12 @@ class SuseDistro(Distro): @@ -1018,8 +1018,12 @@ class SuseDistro(Distro):
"boot/%s/initrd" % self.arch)) "boot/%s/initrd" % self.arch))
# Matches Opensuse > 10.2 and sles 10 # Matches Opensuse > 10.2 and sles 10

View File

@ -4,12 +4,12 @@ issue on btrfs.
Signed-off-by: Chunyan Liu <cyliu@suse.com> Signed-off-by: Chunyan Liu <cyliu@suse.com>
Index: virt-manager-1.4.0/virtinst/storage.py Index: virt-manager-1.4.1/virtinst/storage.py
=================================================================== ===================================================================
--- virt-manager-1.4.0.orig/virtinst/storage.py --- virt-manager-1.4.1.orig/virtinst/storage.py
+++ virt-manager-1.4.0/virtinst/storage.py +++ virt-manager-1.4.1/virtinst/storage.py
@@ -707,6 +707,12 @@ class StorageVolume(_StorageObject): @@ -717,6 +717,12 @@ class StorageVolume(_StorageObject):
return self.TYPE_FILE return self._pool_xml.get_disk_type()
file_type = property(_get_vol_type) file_type = property(_get_vol_type)
+ def _nocow_default_cb(self): + def _nocow_default_cb(self):
@ -21,14 +21,14 @@ Index: virt-manager-1.4.0/virtinst/storage.py
################## ##################
# XML properties # # XML properties #
Index: virt-manager-1.4.0/virtinst/support.py Index: virt-manager-1.4.1/virtinst/support.py
=================================================================== ===================================================================
--- virt-manager-1.4.0.orig/virtinst/support.py --- virt-manager-1.4.1.orig/virtinst/support.py
+++ virt-manager-1.4.0/virtinst/support.py +++ virt-manager-1.4.1/virtinst/support.py
@@ -316,6 +316,8 @@ SUPPORT_CONN_SPICE_GL = _make(version="1 @@ -321,6 +321,8 @@ SUPPORT_CONN_VIDEO_VIRTIO_ACCEL3D = _mak
SUPPORT_CONN_VIDEO_VIRTIO_ACCEL3D = _make(version="1.3.0",
hv_version={"qemu": "2.5.0", "test": 0}) hv_version={"qemu": "2.5.0", "test": 0})
SUPPORT_CONN_GRAPHICS_LISTEN_NONE = _make(version="2.0.0") SUPPORT_CONN_GRAPHICS_LISTEN_NONE = _make(version="2.0.0")
SUPPORT_CONN_RNG_URANDOM = _make(version="1.3.4")
+SUPPORT_CONN_NOCOW = _make( +SUPPORT_CONN_NOCOW = _make(
+ version="1.2.18", hv_version={"qemu": "2.2.0", "test": 0}) + version="1.2.18", hv_version={"qemu": "2.2.0", "test": 0})

View File

@ -1,11 +1,11 @@
References: bsc#919692 References: bsc#919692
Because openSUSE repos combine 32 and 64 bit sources we need to Because openSUSE repos combine 32 and 64 bit sources we need to
continue showing the 'Architecture' pop-up. continue showing the 'Architecture' pop-up.
Index: virt-manager-1.4.0/virtManager/create.py Index: virt-manager-1.4.1/virtManager/create.py
=================================================================== ===================================================================
--- virt-manager-1.4.0.orig/virtManager/create.py --- virt-manager-1.4.1.orig/virtManager/create.py
+++ virt-manager-1.4.0/virtManager/create.py +++ virt-manager-1.4.1/virtManager/create.py
@@ -780,11 +780,6 @@ class vmmCreate(vmmGObjectUI): @@ -781,11 +781,6 @@ class vmmCreate(vmmGObjectUI):
for guest in self.conn.caps.guests: for guest in self.conn.caps.guests:
if guest.os_type == self._capsinfo.os_type: if guest.os_type == self._capsinfo.os_type:
archs.append(guest.arch) archs.append(guest.arch)

View File

@ -1,19 +1,20 @@
Enhancement to default to the host os version when creating a VM Enhancement to default to the host os version when creating a VM
and media detection of the install source is turned off. and media detection of the install source is turned off.
Index: virt-manager-1.4.0/virtManager/create.py Index: virt-manager-1.4.1/virtManager/create.py
=================================================================== ===================================================================
--- virt-manager-1.4.0.orig/virtManager/create.py --- virt-manager-1.4.1.orig/virtManager/create.py
+++ virt-manager-1.4.0/virtManager/create.py +++ virt-manager-1.4.1/virtManager/create.py
@@ -21,6 +21,8 @@ @@ -21,6 +21,9 @@
import logging import logging
import threading import threading
import time import time
+import sys +import sys
+import os +import os
+import re
from gi.repository import GObject from gi.repository import GObject
from gi.repository import Gtk from gi.repository import Gtk
@@ -968,7 +970,7 @@ class vmmCreate(vmmGObjectUI): @@ -968,7 +971,7 @@ class vmmCreate(vmmGObjectUI):
preferred = self.config.preferred_distros preferred = self.config.preferred_distros
variants = virtinst.OSDB.list_os(typename=_type, sortpref=preferred) variants = virtinst.OSDB.list_os(typename=_type, sortpref=preferred)
supportl = virtinst.OSDB.list_os(typename=_type, sortpref=preferred, supportl = virtinst.OSDB.list_os(typename=_type, sortpref=preferred,
@ -22,11 +23,17 @@ Index: virt-manager-1.4.0/virtManager/create.py
for v in variants: for v in variants:
supported = v in supportl or v.name == "generic" supported = v in supportl or v.name == "generic"
@@ -1324,6 +1326,53 @@ class vmmCreate(vmmGObjectUI): @@ -1324,6 +1327,59 @@ class vmmCreate(vmmGObjectUI):
def _cdrom_changed(self, src): def _cdrom_changed(self, src):
self._detectable_media_widget_changed(src) self._detectable_media_widget_changed(src)
+ def _lookup_host_os(self): + def _lookup_host_os(self):
+ def _lookup_sp(line):
+ sp = ""
+ m = re.search(' SP[1234] ', line)
+ if m:
+ sp = m.group(0).strip().lower()
+ return sp
+ if sys.platform == 'linux2': + if sys.platform == 'linux2':
+ if os.path.exists('/etc/issue'): + if os.path.exists('/etc/issue'):
+ f = open('/etc/issue') + f = open('/etc/issue')
@ -40,13 +47,13 @@ Index: virt-manager-1.4.0/virtManager/create.py
+ return 'linux', os_ver + return 'linux', os_ver
+ return 'linux', 'opensuse13.2' + return 'linux', 'opensuse13.2'
+ if "SUSE Linux Enterprise Server 12" in line: + if "SUSE Linux Enterprise Server 12" in line:
+ return 'linux', 'sles12' + return 'linux', ('sles12' + _lookup_sp(line))
+ if "SUSE Linux Enterprise Desktop 12" in line: + if "SUSE Linux Enterprise Desktop 12" in line:
+ return 'linux', 'sled12' + return 'linux', ('sled12' + _lookup_sp(line))
+ if "SUSE Linux Enterprise Server 11" in line: + if "SUSE Linux Enterprise Server 11" in line:
+ return 'linux', 'sles11' + return 'linux', ('sles11' + _lookup_sp(line))
+ if "SUSE Linux Enterprise Desktop 11" in line: + if "SUSE Linux Enterprise Desktop 11" in line:
+ return 'linux', 'sled11' + return 'linux', ('sled11' + _lookup_sp(line))
+ return None, None + return None, None
+ +
+ def detect_host_os(self): + def detect_host_os(self):
@ -76,7 +83,7 @@ Index: virt-manager-1.4.0/virtManager/create.py
def _toggle_detect_os(self, src): def _toggle_detect_os(self, src):
dodetect = src.get_active() dodetect = src.get_active()
@@ -1336,6 +1385,8 @@ class vmmCreate(vmmGObjectUI): @@ -1336,6 +1392,8 @@ class vmmCreate(vmmGObjectUI):
self.widget("install-os-version-entry").set_text("") self.widget("install-os-version-entry").set_text("")
self._os_already_detected_for_media = False self._os_already_detected_for_media = False
self._start_detect_os_if_needed() self._start_detect_os_if_needed()

View File

@ -1,9 +1,9 @@
Enhancement to default to PV instead of HVM on Xen host. Enhancement to default to PV instead of HVM on Xen host.
Index: virt-manager-1.4.0/virtManager/create.py Index: virt-manager-1.4.1/virtManager/create.py
=================================================================== ===================================================================
--- virt-manager-1.4.0.orig/virtManager/create.py --- virt-manager-1.4.1.orig/virtManager/create.py
+++ virt-manager-1.4.0/virtManager/create.py +++ virt-manager-1.4.1/virtManager/create.py
@@ -690,7 +690,12 @@ class vmmCreate(vmmGObjectUI): @@ -691,7 +691,12 @@ class vmmCreate(vmmGObjectUI):
if gtype is None: if gtype is None:
# If none specified, prefer HVM so install options aren't limited # If none specified, prefer HVM so install options aren't limited
# with a default PV choice. # with a default PV choice.

View File

@ -2,11 +2,11 @@ References: bnc#892003
For very large memory VMs Xen takes a long time scrubbing memory For very large memory VMs Xen takes a long time scrubbing memory
which causes the libvirt connection to timeout. Upstream was not which causes the libvirt connection to timeout. Upstream was not
interested in making this a preferences option (4/11/2015) interested in making this a preferences option (4/11/2015)
Index: virt-manager-1.4.0/virtManager/connection.py Index: virt-manager-1.4.1/virtManager/connection.py
=================================================================== ===================================================================
--- virt-manager-1.4.0.orig/virtManager/connection.py --- virt-manager-1.4.1.orig/virtManager/connection.py
+++ virt-manager-1.4.0/virtManager/connection.py +++ virt-manager-1.4.1/virtManager/connection.py
@@ -947,7 +947,7 @@ class vmmConnection(vmmGObject): @@ -1051,7 +1051,7 @@ class vmmConnection(vmmGObject):
self.caps.get_cpu_values("x86_64") self.caps.get_cpu_values("x86_64")
try: try:

View File

@ -3,11 +3,11 @@ When the 'Power on virtual machine' button is double clicked,
virt-manager issues two start commands to start the VM which virt-manager issues two start commands to start the VM which
results in a failure. There is code elsewhere to desensitize the results in a failure. There is code elsewhere to desensitize the
button but this patch does it earlier. button but this patch does it earlier.
Index: virt-manager-1.4.0/virtManager/details.py Index: virt-manager-1.4.1/virtManager/details.py
=================================================================== ===================================================================
--- virt-manager-1.4.0.orig/virtManager/details.py --- virt-manager-1.4.1.orig/virtManager/details.py
+++ virt-manager-1.4.0/virtManager/details.py +++ virt-manager-1.4.1/virtManager/details.py
@@ -1418,6 +1418,9 @@ class vmmDetails(vmmGObjectUI): @@ -1459,6 +1459,9 @@ class vmmDetails(vmmGObjectUI):
def control_vm_run(self, src_ignore): def control_vm_run(self, src_ignore):
if self.has_unapplied_changes(self.get_hw_row()): if self.has_unapplied_changes(self.get_hw_row()):
return return

View File

@ -2,10 +2,10 @@ Enhancement that gets the hosts installation location from
install.inf and also collects the repos provided by zypper. install.inf and also collects the repos provided by zypper.
These locations are then presented as potential installation These locations are then presented as potential installation
locations when creating a VM. locations when creating a VM.
Index: virt-manager-1.4.0/virtManager/create.py Index: virt-manager-1.4.1/virtManager/create.py
=================================================================== ===================================================================
--- virt-manager-1.4.0.orig/virtManager/create.py --- virt-manager-1.4.1.orig/virtManager/create.py
+++ virt-manager-1.4.0/virtManager/create.py +++ virt-manager-1.4.1/virtManager/create.py
@@ -403,7 +403,13 @@ class vmmCreate(vmmGObjectUI): @@ -403,7 +403,13 @@ class vmmCreate(vmmGObjectUI):
self.widget("install-url-entry").set_text("") self.widget("install-url-entry").set_text("")
self.widget("install-url-options").set_expanded(False) self.widget("install-url-options").set_expanded(False)
@ -21,13 +21,13 @@ Index: virt-manager-1.4.0/virtManager/create.py
self._set_distro_labels("-", "-") self._set_distro_labels("-", "-")
# Install import # Install import
Index: virt-manager-1.4.0/virtinst/util.py Index: virt-manager-1.4.1/virtinst/util.py
=================================================================== ===================================================================
--- virt-manager-1.4.0.orig/virtinst/util.py --- virt-manager-1.4.1.orig/virtinst/util.py
+++ virt-manager-1.4.0/virtinst/util.py +++ virt-manager-1.4.1/virtinst/util.py
@@ -24,9 +24,12 @@ import random @@ -23,9 +23,12 @@ import os
import random
import re import re
import stat
import sys import sys
+import subprocess +import subprocess
+from subprocess import Popen, PIPE +from subprocess import Popen, PIPE
@ -38,7 +38,7 @@ Index: virt-manager-1.4.0/virtinst/util.py
def listify(l): def listify(l):
if l is None: if l is None:
@@ -452,3 +455,101 @@ def make_meter(quiet): @@ -343,3 +346,104 @@ def make_meter(quiet):
if quiet: if quiet:
return progress.BaseMeter() return progress.BaseMeter()
return progress.TextMeter(fo=sys.stdout) return progress.TextMeter(fo=sys.stdout)
@ -96,19 +96,18 @@ Index: virt-manager-1.4.0/virtinst/util.py
+ repo_url = repo_url + server_dir + repo_url = repo_url + server_dir
+ _host_repo_url = repo_url + _host_repo_url = repo_url
+ return repo_url + return repo_url
+ else:
+ (_,zypper_output) = lookupZypperRepos()
+ if len(zypper_output):
+ _host_repo_url = zypper_output[0]
+ return _host_repo_url
+ return None + return None
+ +
+def getInstallRepos(enabled_sources_only = True): +def lookupZypperRepos(dom0_inst_source=None):
+ if os.geteuid() != 0:
+ return (0, [])
+ dom0_inst_source = getHostInstallSource()
+ try: + try:
+ env = os.environ.copy() + env = os.environ.copy()
+ env['LC_ALL'] = 'C' + env['LC_ALL'] = 'C'
+ if enabled_sources_only is True: + cmd = ['/usr/bin/zypper', 'lr', '-u', '-P', '-E']
+ cmd = ['/usr/bin/zypper', 'lr', '-u', '-E']
+ else:
+ cmd = ['/usr/bin/zypper', 'lr', '-u']
+ p = subprocess.Popen(cmd, stdout=PIPE, stderr=PIPE, env=env) + p = subprocess.Popen(cmd, stdout=PIPE, stderr=PIPE, env=env)
+ stdout, stderr = p.communicate() + stdout, stderr = p.communicate()
+ zypper_output = stdout + zypper_output = stdout
@ -139,4 +138,8 @@ Index: virt-manager-1.4.0/virtinst/util.py
+ zypper_output.insert(0, dom0_inst_source) + zypper_output.insert(0, dom0_inst_source)
+ return (index_dom0, zypper_output) + return (index_dom0, zypper_output)
+ +
+def getInstallRepos():
+ if os.geteuid() != 0:
+ return (0, [])
+ return lookupZypperRepos(getHostInstallSource())
+ +