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:
commit
759a2c160f
@ -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
|
|
||||||
|
|
@ -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:
|
|
@ -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
|
|
||||||
|
|
@ -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:
|
|
@ -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:
|
|
@ -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
|
|
||||||
|
|
@ -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,
|
|
@ -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"
|
|
@ -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
|
|
||||||
|
|
@ -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
|
|
||||||
|
|
@ -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 #
|
|
||||||
##########################
|
|
@ -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):
|
|
@ -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
|
|
||||||
|
|
||||||
|
|
@ -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']")
|
|
@ -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")
|
|
||||||
|
|
||||||
|
|
@ -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
|
|
@ -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
|
|
@ -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)
|
|
||||||
|
|
||||||
|
|
||||||
#####################
|
|
@ -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:
|
|
@ -1,3 +0,0 @@
|
|||||||
version https://git-lfs.github.com/spec/v1
|
|
||||||
oid sha256:217e45f882d082d27dbbf2c0e1e5e6bcdeeaf473490934aecf1e8a647e732c7a
|
|
||||||
size 1460026
|
|
3
virt-manager-1.4.1.tar.bz2
Normal file
3
virt-manager-1.4.1.tar.bz2
Normal file
@ -0,0 +1,3 @@
|
|||||||
|
version https://git-lfs.github.com/spec/v1
|
||||||
|
oid sha256:b3a4feacb42b4615b7bb98f73cb621c91c92879c1f77cc6ad4943b25cc29779b
|
||||||
|
size 1492542
|
@ -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
|
||||||
|
|
||||||
|
@ -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*
|
||||||
|
@ -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"
|
||||||
|
|
||||||
|
@ -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:
|
|
@ -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"
|
||||||
|
|
||||||
|
@ -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
|
||||||
|
|
||||||
|
@ -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
|
||||||
|
|
||||||
|
@ -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
|
||||||
|
@ -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
|
||||||
|
|
||||||
|
@ -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")
|
||||||
|
|
||||||
|
@ -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
|
||||||
|
|
||||||
|
@ -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",
|
||||||
|
@ -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
|
||||||
|
@ -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})
|
||||||
|
|
||||||
|
@ -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)
|
||||||
|
@ -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()
|
||||||
|
@ -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.
|
||||||
|
@ -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:
|
||||||
|
@ -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
|
||||||
|
@ -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())
|
||||||
+
|
+
|
||||||
|
Loading…
Reference in New Issue
Block a user