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
|
||||
|
||||
@ -159,6 +213,13 @@ Fri May 6 15:50:12 MDT 2016 - carnold@suse.com
|
||||
virt-manager
|
||||
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
|
||||
|
||||
@ -478,6 +539,18 @@ Wed Jul 8 11:29:25 MDT 2015 - carnold@suse.com
|
||||
34db1af7-fix-adding-iscsi-pools.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
|
||||
|
||||
|
@ -23,11 +23,11 @@
|
||||
%define libvirt_xen_packages ""
|
||||
%define preferred_distros "sles12sp3,opensuse42.3"
|
||||
%define kvm_packages ""
|
||||
%define _version 1.4.0
|
||||
%define _version 1.4.1
|
||||
%define _release 0
|
||||
|
||||
Name: virt-manager
|
||||
Version: 1.4.0
|
||||
Version: 1.4.1
|
||||
Release: 0
|
||||
Summary: Virtual Machine Manager
|
||||
License: GPL-2.0+
|
||||
@ -37,25 +37,6 @@ Source0: %{name}-%{version}.tar.bz2
|
||||
Source1: virt-install.rb
|
||||
Source2: virt-install.desktop
|
||||
# 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
|
||||
Patch70: virtman-desktop.patch
|
||||
Patch71: virtman-kvm.patch
|
||||
@ -77,12 +58,11 @@ Patch122: virtinst-detect-oes-distros.patch
|
||||
Patch123: virtinst-modify-gui-defaults.patch
|
||||
Patch124: virtinst-vol-default-nocow.patch
|
||||
Patch125: virtinst-set-cache-mode-unsafe-for-install.patch
|
||||
Patch126: virtinst-add-default-rng-device.patch
|
||||
Patch127: virtinst-set-qemu-emulator.patch
|
||||
Patch128: virtinst-add-ppc64-arch-support.patch
|
||||
Patch129: virtinst-s390x-disable-graphics.patch
|
||||
Patch130: virtinst-add-casp-support.patch
|
||||
Patch131: virtinst-expand-combobox.patch
|
||||
Patch126: virtinst-set-qemu-emulator.patch
|
||||
Patch127: virtinst-add-ppc64-arch-support.patch
|
||||
Patch128: virtinst-s390x-disable-graphics.patch
|
||||
Patch129: virtinst-add-casp-support.patch
|
||||
Patch130: virtinst-expand-combobox.patch
|
||||
# Bug Fixes
|
||||
Patch150: virtman-prevent-double-click-starting-vm-twice.patch
|
||||
Patch151: virtman-increase-setKeepAlive-count.patch
|
||||
@ -109,8 +89,10 @@ Requires: python-gobject-cairo
|
||||
Recommends: python-SpiceClientGtk
|
||||
Requires: virt-install
|
||||
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
|
||||
Requires: yast2-branding-openSUSE
|
||||
%endif
|
||||
|
||||
%if %{with_guestfs}
|
||||
Requires: python-libguestfs
|
||||
@ -175,25 +157,6 @@ machine).
|
||||
%prep
|
||||
%setup -q
|
||||
# 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
|
||||
%patch70 -p1
|
||||
%patch71 -p1
|
||||
@ -220,7 +183,6 @@ machine).
|
||||
%patch128 -p1
|
||||
%patch129 -p1
|
||||
%patch130 -p1
|
||||
%patch131 -p1
|
||||
# Bug Fixes
|
||||
%patch150 -p1
|
||||
%patch151 -p1
|
||||
@ -301,7 +263,6 @@ fi
|
||||
|
||||
%files
|
||||
%defattr(-,root,root,-)
|
||||
%doc README COPYING NEWS
|
||||
%{_bindir}/%{name}
|
||||
|
||||
%{_mandir}/man1/%{name}.1*
|
||||
|
@ -2,10 +2,10 @@ References: bsc#1010060
|
||||
Notes: SUSE Containers as a Service Platform and 'CASP' are not
|
||||
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.0/virtinst/urlfetcher.py
|
||||
--- virt-manager-1.4.1.orig/virtinst/urlfetcher.py
|
||||
+++ virt-manager-1.4.1/virtinst/urlfetcher.py
|
||||
@@ -464,6 +464,10 @@ def _distroFromSUSEContent(fetcher, arch
|
||||
dclass = SLESDistro
|
||||
if distro_version is None:
|
||||
@ -17,7 +17,7 @@ Index: virt-manager-1.4.0/virtinst/urlfetcher.py
|
||||
elif re.match(".*openSUSE.*", distribution[1]):
|
||||
dclass = OpensuseDistro
|
||||
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()
|
||||
version = distro_version.split('.', 1)[0].strip()
|
||||
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")):
|
||||
sp_version = None
|
||||
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"
|
||||
else:
|
||||
self.os_variant += distro_version
|
||||
@ -36,7 +36,7 @@ Index: virt-manager-1.4.0/virtinst/urlfetcher.py
|
||||
else:
|
||||
self.os_variant += "9"
|
||||
|
||||
@@ -1079,6 +1086,9 @@ class SLESDistro(SuseDistro):
|
||||
@@ -1081,6 +1088,9 @@ class SLESDistro(SuseDistro):
|
||||
class SLEDDistro(SuseDistro):
|
||||
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
|
||||
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.0/virtinst/urlfetcher.py
|
||||
--- virt-manager-1.4.1.orig/virtinst/urlfetcher.py
|
||||
+++ virt-manager-1.4.1/virtinst/urlfetcher.py
|
||||
@@ -438,6 +438,10 @@ def _distroFromSUSEContent(fetcher, arch
|
||||
arch = "i586"
|
||||
elif cbuf.find("s390x") != -1:
|
||||
@ -15,7 +15,7 @@ Index: virt-manager-1.4.0/virtinst/urlfetcher.py
|
||||
|
||||
def _parse_sle_distribution(d):
|
||||
sle_version = d[1].strip().rsplit(' ')[4]
|
||||
@@ -989,10 +993,12 @@ class SuseDistro(Distro):
|
||||
@@ -991,10 +995,12 @@ class SuseDistro(Distro):
|
||||
oldkern += "64"
|
||||
oldinit += "64"
|
||||
|
||||
|
@ -3,11 +3,11 @@ Enhancement for the following GUI wizard installation options.
|
||||
is the default
|
||||
2) Under 'Network selection' default to a bridge that has an actual
|
||||
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.0/virtManager/create.py
|
||||
@@ -376,7 +376,19 @@ class vmmCreate(vmmGObjectUI):
|
||||
--- virt-manager-1.4.1.orig/virtManager/create.py
|
||||
+++ virt-manager-1.4.1/virtManager/create.py
|
||||
@@ -377,7 +377,19 @@ class vmmCreate(vmmGObjectUI):
|
||||
self.widget("method-local").set_active(True)
|
||||
self.widget("create-conn").set_active(-1)
|
||||
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:
|
||||
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.0/virtManager/netlist.py
|
||||
--- virt-manager-1.4.1.orig/virtManager/netlist.py
|
||||
+++ virt-manager-1.4.1/virtManager/netlist.py
|
||||
@@ -167,9 +167,19 @@ class vmmNetworkList(vmmGObjectUI):
|
||||
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"
|
||||
We need the RFC version to work correctly whereas redhat's anaconda
|
||||
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.0/virtinst/util.py
|
||||
@@ -553,3 +553,22 @@ def getInstallRepos(enabled_sources_only
|
||||
return (index_dom0, zypper_output)
|
||||
|
||||
--- virt-manager-1.4.1.orig/virtinst/util.py
|
||||
+++ virt-manager-1.4.1/virtinst/util.py
|
||||
@@ -447,3 +447,22 @@ def getInstallRepos():
|
||||
return (0, [])
|
||||
return lookupZypperRepos(getHostInstallSource())
|
||||
|
||||
+def sanitize_url(url):
|
||||
+ """
|
||||
@ -32,10 +32,10 @@ Index: virt-manager-1.4.0/virtinst/util.py
|
||||
+
|
||||
+ 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.0/virtinst/distroinstaller.py
|
||||
--- virt-manager-1.4.1.orig/virtinst/distroinstaller.py
|
||||
+++ virt-manager-1.4.1/virtinst/distroinstaller.py
|
||||
@@ -44,6 +44,8 @@ def _sanitize_url(url):
|
||||
"""
|
||||
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://"):
|
||||
# Convert RFC compliant NFS 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.0/virtinst/urlfetcher.py
|
||||
--- virt-manager-1.4.1.orig/virtinst/urlfetcher.py
|
||||
+++ virt-manager-1.4.1/virtinst/urlfetcher.py
|
||||
@@ -34,6 +34,7 @@ import urlparse
|
||||
import requests
|
||||
|
||||
|
@ -2,11 +2,11 @@ Reference: bnc#863821
|
||||
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
|
||||
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.0/virtinst/guest.py
|
||||
@@ -364,8 +364,20 @@ class Guest(XMLBuilder):
|
||||
--- virt-manager-1.4.1.orig/virtinst/guest.py
|
||||
+++ virt-manager-1.4.1/virtinst/guest.py
|
||||
@@ -363,8 +363,20 @@ class Guest(XMLBuilder):
|
||||
if (not install and
|
||||
self.os.is_xenpv() and
|
||||
not self.os.kernel):
|
||||
@ -29,10 +29,10 @@ Index: virt-manager-1.4.0/virtinst/guest.py
|
||||
|
||||
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.0/virtinst/installer.py
|
||||
--- virt-manager-1.4.1.orig/virtinst/installer.py
|
||||
+++ virt-manager-1.4.1/virtinst/installer.py
|
||||
@@ -99,7 +99,7 @@ class Installer(object):
|
||||
break
|
||||
return bootorder
|
||||
|
@ -1,10 +1,10 @@
|
||||
Reference: bnc#869024
|
||||
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.0/virtinst/guest.py
|
||||
@@ -123,7 +123,10 @@ class Guest(XMLBuilder):
|
||||
--- virt-manager-1.4.1.orig/virtinst/guest.py
|
||||
+++ virt-manager-1.4.1/virtinst/guest.py
|
||||
@@ -124,7 +124,10 @@ class Guest(XMLBuilder):
|
||||
self.skip_default_channel = False
|
||||
self.skip_default_sound = False
|
||||
self.skip_default_usbredir = False
|
||||
@ -13,10 +13,10 @@ Index: virt-manager-1.4.0/virtinst/guest.py
|
||||
+ self.skip_default_graphics = True
|
||||
+ else:
|
||||
+ self.skip_default_graphics = False
|
||||
self.skip_default_rng = False
|
||||
self.x86_cpu_default = self.cpu.SPECIAL_MODE_HOST_MODEL_ONLY
|
||||
|
||||
self.__os_object = None
|
||||
@@ -606,7 +609,7 @@ class Guest(XMLBuilder):
|
||||
@@ -619,7 +622,7 @@ class Guest(XMLBuilder):
|
||||
self.add_device(dev)
|
||||
|
||||
def add_default_video_device(self):
|
||||
@ -25,7 +25,7 @@ Index: virt-manager-1.4.0/virtinst/guest.py
|
||||
return
|
||||
if self.get_devices("video"):
|
||||
return
|
||||
@@ -644,6 +647,8 @@ class Guest(XMLBuilder):
|
||||
@@ -657,6 +660,8 @@ class Guest(XMLBuilder):
|
||||
dev.target_type = "virtio"
|
||||
dev.target_name = dev.CHANNEL_NAME_QEMUGA
|
||||
self.add_device(dev)
|
||||
@ -34,7 +34,7 @@ Index: virt-manager-1.4.0/virtinst/guest.py
|
||||
|
||||
def add_default_graphics(self):
|
||||
if self.skip_default_graphics:
|
||||
@@ -652,7 +657,7 @@ class Guest(XMLBuilder):
|
||||
@@ -665,7 +670,7 @@ class Guest(XMLBuilder):
|
||||
return
|
||||
if self.os.is_container():
|
||||
return
|
||||
@ -43,7 +43,7 @@ Index: virt-manager-1.4.0/virtinst/guest.py
|
||||
return
|
||||
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():
|
||||
return True
|
||||
|
||||
|
@ -1,10 +1,10 @@
|
||||
Set cache mode for target installation disk to unsafe for better
|
||||
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.0/virtinst/guest.py
|
||||
@@ -360,6 +360,17 @@ class Guest(XMLBuilder):
|
||||
--- virt-manager-1.4.1.orig/virtinst/guest.py
|
||||
+++ virt-manager-1.4.1/virtinst/guest.py
|
||||
@@ -359,6 +359,17 @@ class Guest(XMLBuilder):
|
||||
|
||||
self._set_osxml_defaults()
|
||||
|
||||
@ -22,7 +22,7 @@ Index: virt-manager-1.4.0/virtinst/guest.py
|
||||
self.bootloader = None
|
||||
if (not install 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)
|
||||
logging.info("Using grub.xen to boot guest")
|
||||
|
||||
|
@ -1,11 +1,11 @@
|
||||
Use the correct qemu emulator based on the architecture.
|
||||
We want to get away from using the old qemu-dm emulator
|
||||
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.0/virtinst/guest.py
|
||||
@@ -793,14 +793,11 @@ class Guest(XMLBuilder):
|
||||
--- virt-manager-1.4.1.orig/virtinst/guest.py
|
||||
+++ virt-manager-1.4.1/virtinst/guest.py
|
||||
@@ -816,14 +816,11 @@ class Guest(XMLBuilder):
|
||||
self.emulator = None
|
||||
return
|
||||
|
||||
|
@ -1,9 +1,9 @@
|
||||
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.0/virtinst/storage.py
|
||||
@@ -459,7 +459,7 @@ class StoragePool(_StorageObject):
|
||||
--- virt-manager-1.4.1.orig/virtinst/storage.py
|
||||
+++ virt-manager-1.4.1/virtinst/storage.py
|
||||
@@ -462,7 +462,7 @@ class StoragePool(_StorageObject):
|
||||
def list_formats(self):
|
||||
if self.type == self.TYPE_FS:
|
||||
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.
|
||||
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.0/virtinst/urlfetcher.py
|
||||
@@ -1016,8 +1016,12 @@ class SuseDistro(Distro):
|
||||
--- virt-manager-1.4.1.orig/virtinst/urlfetcher.py
|
||||
+++ virt-manager-1.4.1/virtinst/urlfetcher.py
|
||||
@@ -1018,8 +1018,12 @@ class SuseDistro(Distro):
|
||||
"boot/%s/initrd" % self.arch))
|
||||
|
||||
# Matches Opensuse > 10.2 and sles 10
|
||||
|
@ -4,12 +4,12 @@ issue on btrfs.
|
||||
|
||||
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.0/virtinst/storage.py
|
||||
@@ -707,6 +707,12 @@ class StorageVolume(_StorageObject):
|
||||
return self.TYPE_FILE
|
||||
--- virt-manager-1.4.1.orig/virtinst/storage.py
|
||||
+++ virt-manager-1.4.1/virtinst/storage.py
|
||||
@@ -717,6 +717,12 @@ class StorageVolume(_StorageObject):
|
||||
return self._pool_xml.get_disk_type()
|
||||
file_type = property(_get_vol_type)
|
||||
|
||||
+ def _nocow_default_cb(self):
|
||||
@ -21,14 +21,14 @@ Index: virt-manager-1.4.0/virtinst/storage.py
|
||||
|
||||
##################
|
||||
# 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.0/virtinst/support.py
|
||||
@@ -316,6 +316,8 @@ SUPPORT_CONN_SPICE_GL = _make(version="1
|
||||
SUPPORT_CONN_VIDEO_VIRTIO_ACCEL3D = _make(version="1.3.0",
|
||||
--- virt-manager-1.4.1.orig/virtinst/support.py
|
||||
+++ virt-manager-1.4.1/virtinst/support.py
|
||||
@@ -321,6 +321,8 @@ SUPPORT_CONN_VIDEO_VIRTIO_ACCEL3D = _mak
|
||||
hv_version={"qemu": "2.5.0", "test": 0})
|
||||
SUPPORT_CONN_GRAPHICS_LISTEN_NONE = _make(version="2.0.0")
|
||||
SUPPORT_CONN_RNG_URANDOM = _make(version="1.3.4")
|
||||
+SUPPORT_CONN_NOCOW = _make(
|
||||
+ version="1.2.18", hv_version={"qemu": "2.2.0", "test": 0})
|
||||
|
||||
|
@ -1,11 +1,11 @@
|
||||
References: bsc#919692
|
||||
Because openSUSE repos combine 32 and 64 bit sources we need to
|
||||
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.0/virtManager/create.py
|
||||
@@ -780,11 +780,6 @@ class vmmCreate(vmmGObjectUI):
|
||||
--- virt-manager-1.4.1.orig/virtManager/create.py
|
||||
+++ virt-manager-1.4.1/virtManager/create.py
|
||||
@@ -781,11 +781,6 @@ class vmmCreate(vmmGObjectUI):
|
||||
for guest in self.conn.caps.guests:
|
||||
if guest.os_type == self._capsinfo.os_type:
|
||||
archs.append(guest.arch)
|
||||
|
@ -1,19 +1,20 @@
|
||||
Enhancement to default to the host os version when creating a VM
|
||||
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.0/virtManager/create.py
|
||||
@@ -21,6 +21,8 @@
|
||||
--- virt-manager-1.4.1.orig/virtManager/create.py
|
||||
+++ virt-manager-1.4.1/virtManager/create.py
|
||||
@@ -21,6 +21,9 @@
|
||||
import logging
|
||||
import threading
|
||||
import time
|
||||
+import sys
|
||||
+import os
|
||||
+import re
|
||||
|
||||
from gi.repository import GObject
|
||||
from gi.repository import Gtk
|
||||
@@ -968,7 +970,7 @@ class vmmCreate(vmmGObjectUI):
|
||||
@@ -968,7 +971,7 @@ class vmmCreate(vmmGObjectUI):
|
||||
preferred = self.config.preferred_distros
|
||||
variants = 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:
|
||||
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):
|
||||
self._detectable_media_widget_changed(src)
|
||||
|
||||
+ 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 os.path.exists('/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', 'opensuse13.2'
|
||||
+ 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:
|
||||
+ return 'linux', 'sled12'
|
||||
+ return 'linux', ('sled12' + _lookup_sp(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:
|
||||
+ return 'linux', 'sled11'
|
||||
+ return 'linux', ('sled11' + _lookup_sp(line))
|
||||
+ return None, None
|
||||
+
|
||||
+ def detect_host_os(self):
|
||||
@ -76,7 +83,7 @@ Index: virt-manager-1.4.0/virtManager/create.py
|
||||
def _toggle_detect_os(self, src):
|
||||
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._os_already_detected_for_media = False
|
||||
self._start_detect_os_if_needed()
|
||||
|
@ -1,9 +1,9 @@
|
||||
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.0/virtManager/create.py
|
||||
@@ -690,7 +690,12 @@ class vmmCreate(vmmGObjectUI):
|
||||
--- virt-manager-1.4.1.orig/virtManager/create.py
|
||||
+++ virt-manager-1.4.1/virtManager/create.py
|
||||
@@ -691,7 +691,12 @@ class vmmCreate(vmmGObjectUI):
|
||||
if gtype is None:
|
||||
# If none specified, prefer HVM so install options aren't limited
|
||||
# with a default PV choice.
|
||||
|
@ -2,11 +2,11 @@ References: bnc#892003
|
||||
For very large memory VMs Xen takes a long time scrubbing memory
|
||||
which causes the libvirt connection to timeout. Upstream was not
|
||||
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.0/virtManager/connection.py
|
||||
@@ -947,7 +947,7 @@ class vmmConnection(vmmGObject):
|
||||
--- virt-manager-1.4.1.orig/virtManager/connection.py
|
||||
+++ virt-manager-1.4.1/virtManager/connection.py
|
||||
@@ -1051,7 +1051,7 @@ class vmmConnection(vmmGObject):
|
||||
self.caps.get_cpu_values("x86_64")
|
||||
|
||||
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
|
||||
results in a failure. There is code elsewhere to desensitize the
|
||||
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.0/virtManager/details.py
|
||||
@@ -1418,6 +1418,9 @@ class vmmDetails(vmmGObjectUI):
|
||||
--- virt-manager-1.4.1.orig/virtManager/details.py
|
||||
+++ virt-manager-1.4.1/virtManager/details.py
|
||||
@@ -1459,6 +1459,9 @@ class vmmDetails(vmmGObjectUI):
|
||||
def control_vm_run(self, src_ignore):
|
||||
if self.has_unapplied_changes(self.get_hw_row()):
|
||||
return
|
||||
|
@ -2,10 +2,10 @@ Enhancement that gets the hosts installation location from
|
||||
install.inf and also collects the repos provided by zypper.
|
||||
These locations are then presented as potential installation
|
||||
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.0/virtManager/create.py
|
||||
--- virt-manager-1.4.1.orig/virtManager/create.py
|
||||
+++ virt-manager-1.4.1/virtManager/create.py
|
||||
@@ -403,7 +403,13 @@ class vmmCreate(vmmGObjectUI):
|
||||
self.widget("install-url-entry").set_text("")
|
||||
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("-", "-")
|
||||
|
||||
# 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.0/virtinst/util.py
|
||||
@@ -24,9 +24,12 @@ import random
|
||||
--- virt-manager-1.4.1.orig/virtinst/util.py
|
||||
+++ virt-manager-1.4.1/virtinst/util.py
|
||||
@@ -23,9 +23,12 @@ import os
|
||||
import random
|
||||
import re
|
||||
import stat
|
||||
import sys
|
||||
+import subprocess
|
||||
+from subprocess import Popen, PIPE
|
||||
@ -38,7 +38,7 @@ Index: virt-manager-1.4.0/virtinst/util.py
|
||||
|
||||
def listify(l):
|
||||
if l is None:
|
||||
@@ -452,3 +455,101 @@ def make_meter(quiet):
|
||||
@@ -343,3 +346,104 @@ def make_meter(quiet):
|
||||
if quiet:
|
||||
return progress.BaseMeter()
|
||||
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
|
||||
+ _host_repo_url = 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
|
||||
+
|
||||
+def getInstallRepos(enabled_sources_only = True):
|
||||
+ if os.geteuid() != 0:
|
||||
+ return (0, [])
|
||||
+ dom0_inst_source = getHostInstallSource()
|
||||
+def lookupZypperRepos(dom0_inst_source=None):
|
||||
+ try:
|
||||
+ env = os.environ.copy()
|
||||
+ env['LC_ALL'] = 'C'
|
||||
+ if enabled_sources_only is True:
|
||||
+ cmd = ['/usr/bin/zypper', 'lr', '-u', '-E']
|
||||
+ else:
|
||||
+ cmd = ['/usr/bin/zypper', 'lr', '-u']
|
||||
+ cmd = ['/usr/bin/zypper', 'lr', '-u', '-P', '-E']
|
||||
+ p = subprocess.Popen(cmd, stdout=PIPE, stderr=PIPE, env=env)
|
||||
+ stdout, stderr = p.communicate()
|
||||
+ zypper_output = stdout
|
||||
@ -139,4 +138,8 @@ Index: virt-manager-1.4.0/virtinst/util.py
|
||||
+ zypper_output.insert(0, dom0_inst_source)
|
||||
+ return (index_dom0, zypper_output)
|
||||
+
|
||||
+def getInstallRepos():
|
||||
+ if os.geteuid() != 0:
|
||||
+ return (0, [])
|
||||
+ return lookupZypperRepos(getHostInstallSource())
|
||||
+
|
||||
|
Loading…
Reference in New Issue
Block a user