1
0
mirror of https://src.fedoraproject.org/rpms/virt-manager.git synced 2025-07-16 17:14:53 +00:00

sshtunnels: Don't use socket API for fd passed to spice (bz #1135808)

Fix available install options for qemu ppc64le (bz #1209720)
Catch errors fetching domcapabilities, fix ppc64le details (bz #1209723)
Improve disk defaults for qemu -M q35 (bz #1207834)
This commit is contained in:
Cole Robinson
2015-04-13 18:37:47 -04:00
parent d8c77829e2
commit abec60a042
7 changed files with 396 additions and 1 deletions

View File

@@ -0,0 +1,22 @@
From: Cole Robinson <crobinso@redhat.com>
Date: Sat, 11 Apr 2015 23:04:03 -0400
Subject: [PATCH virt-manager] sshtunnels: Don't use socket API for fd passed
to spice (bug 1135808)
---
virtManager/sshtunnels.py | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/virtManager/sshtunnels.py b/virtManager/sshtunnels.py
index 3a338a4..3cd0182 100644
--- a/virtManager/sshtunnels.py
+++ b/virtManager/sshtunnels.py
@@ -141,7 +141,7 @@ class _Tunnel(object):
self._outfds = socket.socketpair()
self._errfds = socket.socketpair()
- return self._outfds[0].fileno(), self._launch_tunnel, ginfo
+ return os.dup(self._outfds[0].fileno()), self._launch_tunnel, ginfo
def close(self):
if self.closed:

View File

@@ -0,0 +1,34 @@
From: Cole Robinson <crobinso@redhat.com>
Date: Wed, 8 Apr 2015 09:31:07 -0400
Subject: [PATCH virt-manager] create: Show proper install options for ppc64le
(bz 1209720)
(cherry picked from commit 68a11727a49f7c07bc3fbf14a71b65edb53a8dd7)
---
virtManager/create.py | 6 +++---
1 file changed, 3 insertions(+), 3 deletions(-)
diff --git a/virtManager/create.py b/virtManager/create.py
index 0f9bdaa..1600fda 100644
--- a/virtManager/create.py
+++ b/virtManager/create.py
@@ -417,8 +417,8 @@ class vmmCreate(vmmGObjectUI):
is_container = self.conn.is_container()
can_remote_url = self.conn.get_backend().support_remote_url_install()
- installable_arch = (self.capsguest.arch in
- ["i686", "x86_64", "ppc64", "ia64"])
+ installable_arch = (self.capsinfo.arch in
+ ["i686", "x86_64", "ppc64", "ppc64le", "ia64"])
# Install Options
method_tree = self.widget("method-tree")
@@ -680,7 +680,7 @@ class vmmCreate(vmmGObjectUI):
archs.remove("i686")
archs.sort()
- prios = ["x86_64", "i686", "armv7l", "ppc64"]
+ prios = ["x86_64", "i686", "armv7l", "ppc64", "ppc64le"]
if self.conn.caps.host.cpu.arch not in prios:
prios = []
else:

View File

@@ -0,0 +1,65 @@
From: Cole Robinson <crobinso@redhat.com>
Date: Wed, 8 Apr 2015 09:53:30 -0400
Subject: [PATCH virt-manager] domcapabilities: Can and log error fetching XML
(bz #1209723)
(cherry picked from commit 6634053533e878d8e4ed6541350c060b22a096f6)
---
virtManager/domain.py | 12 ++----------
virtinst/domcapabilities.py | 22 ++++++++++++++++++++++
2 files changed, 24 insertions(+), 10 deletions(-)
diff --git a/virtManager/domain.py b/virtManager/domain.py
index 4a98f7f..a00c0db 100644
--- a/virtManager/domain.py
+++ b/virtManager/domain.py
@@ -508,17 +508,9 @@ class vmmDomain(vmmLibvirtObject):
"image allocated to the guest.")
def get_domain_capabilities(self):
- if not self.conn.check_support(
- self.conn.SUPPORT_CONN_DOMAIN_CAPABILITIES):
- self._domain_caps = DomainCapabilities(self.conn.get_backend())
-
if not self._domain_caps:
- xml = self.conn.get_backend().getDomainCapabilities(
- self.get_xmlobj().emulator, self.get_xmlobj().os.arch,
- self.get_xmlobj().os.machine, self.get_xmlobj().type)
- self._domain_caps = DomainCapabilities(self.conn.get_backend(),
- parsexml=xml)
-
+ self._domain_caps = DomainCapabilities.build_from_guest(
+ self.get_xmlobj())
return self._domain_caps
diff --git a/virtinst/domcapabilities.py b/virtinst/domcapabilities.py
index 6de7afb..bdec335 100644
--- a/virtinst/domcapabilities.py
+++ b/virtinst/domcapabilities.py
@@ -79,3 +79,25 @@ class DomainCapabilities(XMLBuilder):
_XML_ROOT_NAME = "domainCapabilities"
os = XMLChildProperty(_OS, is_single=True)
devices = XMLChildProperty(_Devices, is_single=True)
+
+ @staticmethod
+ def build_from_params(conn, emulator, arch, machine, hvtype):
+ xml = None
+ if conn.check_support(
+ conn.SUPPORT_CONN_DOMAIN_CAPABILITIES):
+ try:
+ xml = conn.getDomainCapabilities(emulator, arch,
+ machine, hvtype)
+ except:
+ logging.debug("Error fetching domcapabilities XML",
+ exc_info=True)
+
+ if not xml:
+ # If not supported, just use a stub object
+ return DomainCapabilities(conn)
+ return DomainCapabilities(conn, parsexml=xml)
+
+ @staticmethod
+ def build_from_guest(guest):
+ return DomainCapabilities.build_from_params(guest.conn,
+ guest.emulator, guest.os.arch, guest.os.machine, guest.type)

View File

@@ -0,0 +1,22 @@
From: Cole Robinson <crobinso@redhat.com>
Date: Sat, 4 Apr 2015 19:07:39 -0400
Subject: [PATCH virt-manager] addhardware: Allow SATA CDROM (bz 1207834)
(cherry picked from commit dd8f7c90c0ab2ccccf341e344f0abd90853d8711)
---
virtManager/addhardware.py | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/virtManager/addhardware.py b/virtManager/addhardware.py
index 0c989df..5e8c0b3 100644
--- a/virtManager/addhardware.py
+++ b/virtManager/addhardware.py
@@ -800,7 +800,7 @@ class vmmAddHardware(vmmGObjectUI):
disk_buses = ["ide", "sata", "scsi", "sd",
"usb", "virtio", "virtio-scsi", "xen"]
floppy_buses = ["fdc"]
- cdrom_buses = ["ide", "scsi"]
+ cdrom_buses = ["ide", "sata", "scsi"]
lun_buses = ["virtio-scsi"]
if bus in disk_buses:

View File

@@ -0,0 +1,173 @@
From: Cole Robinson <crobinso@redhat.com>
Date: Mon, 6 Apr 2015 13:43:18 -0400
Subject: [PATCH virt-manager] guest: Use sata by default for q35 cdrom,
non-virtio (bz #1207834)
(cherry picked from commit e29f216503106738328d267b33773f54230c2f86)
---
.../compare/virt-install-q35-defaults.xml | 133 +++++++++++++++++++++
virtinst/guest.py | 4 +
2 files changed, 137 insertions(+)
create mode 100644 tests/cli-test-xml/compare/virt-install-q35-defaults.xml
diff --git a/tests/cli-test-xml/compare/virt-install-q35-defaults.xml b/tests/cli-test-xml/compare/virt-install-q35-defaults.xml
new file mode 100644
index 0000000..b87afe1
--- /dev/null
+++ b/tests/cli-test-xml/compare/virt-install-q35-defaults.xml
@@ -0,0 +1,133 @@
+<domain type="kvm">
+ <name>foobar</name>
+ <uuid>00000000-1111-2222-3333-444444444444</uuid>
+ <memory>65536</memory>
+ <currentMemory>65536</currentMemory>
+ <vcpu>1</vcpu>
+ <os>
+ <type arch="x86_64" machine="q35">hvm</type>
+ <boot dev="cdrom"/>
+ <boot dev="hd"/>
+ </os>
+ <features>
+ <acpi/>
+ <apic/>
+ <pae/>
+ </features>
+ <cpu mode="custom" match="exact">
+ <model>core2duo</model>
+ </cpu>
+ <clock offset="utc">
+ <timer name="rtc" tickpolicy="catchup"/>
+ <timer name="pit" tickpolicy="delay"/>
+ <timer name="hpet" present="no"/>
+ </clock>
+ <on_poweroff>destroy</on_poweroff>
+ <on_reboot>destroy</on_reboot>
+ <on_crash>destroy</on_crash>
+ <devices>
+ <emulator>/usr/bin/qemu-kvm</emulator>
+ <disk type="file" device="disk">
+ <driver name="qemu" type="qcow2"/>
+ <source file="/dev/default-pool/testvol1.img"/>
+ <target dev="sda" bus="sata"/>
+ </disk>
+ <disk type="file" device="cdrom">
+ <driver name="qemu" type="qcow2"/>
+ <source file="/dev/default-pool/testvol2.img"/>
+ <target dev="sdb" bus="sata"/>
+ <readonly/>
+ </disk>
+ <controller type="usb" index="0" model="ich9-ehci1"/>
+ <controller type="usb" index="0" model="ich9-uhci1">
+ <master startport="0"/>
+ </controller>
+ <controller type="usb" index="0" model="ich9-uhci2">
+ <master startport="2"/>
+ </controller>
+ <controller type="usb" index="0" model="ich9-uhci3">
+ <master startport="4"/>
+ </controller>
+ <interface type="bridge">
+ <source bridge="eth0"/>
+ <mac address="00:11:22:33:44:55"/>
+ </interface>
+ <input type="mouse" bus="ps2"/>
+ <graphics type="spice" port="-1" tlsPort="-1" autoport="yes"/>
+ <console type="pty"/>
+ <channel type="spicevmc">
+ <target type="virtio" name="com.redhat.spice.0"/>
+ </channel>
+ <sound model="ich6"/>
+ <video>
+ <model type="qxl"/>
+ </video>
+ <redirdev bus="usb" type="spicevmc"/>
+ <redirdev bus="usb" type="spicevmc"/>
+ </devices>
+</domain>
+<domain type="kvm">
+ <name>foobar</name>
+ <uuid>00000000-1111-2222-3333-444444444444</uuid>
+ <memory>65536</memory>
+ <currentMemory>65536</currentMemory>
+ <vcpu>1</vcpu>
+ <os>
+ <type arch="x86_64" machine="q35">hvm</type>
+ <boot dev="hd"/>
+ </os>
+ <features>
+ <acpi/>
+ <apic/>
+ <pae/>
+ </features>
+ <cpu mode="custom" match="exact">
+ <model>core2duo</model>
+ </cpu>
+ <clock offset="utc">
+ <timer name="rtc" tickpolicy="catchup"/>
+ <timer name="pit" tickpolicy="delay"/>
+ <timer name="hpet" present="no"/>
+ </clock>
+ <on_poweroff>destroy</on_poweroff>
+ <on_reboot>restart</on_reboot>
+ <on_crash>restart</on_crash>
+ <devices>
+ <emulator>/usr/bin/qemu-kvm</emulator>
+ <disk type="file" device="disk">
+ <driver name="qemu" type="qcow2"/>
+ <source file="/dev/default-pool/testvol1.img"/>
+ <target dev="sda" bus="sata"/>
+ </disk>
+ <disk type="block" device="cdrom">
+ <target dev="sdb" bus="sata"/>
+ <readonly/>
+ </disk>
+ <controller type="usb" index="0" model="ich9-ehci1"/>
+ <controller type="usb" index="0" model="ich9-uhci1">
+ <master startport="0"/>
+ </controller>
+ <controller type="usb" index="0" model="ich9-uhci2">
+ <master startport="2"/>
+ </controller>
+ <controller type="usb" index="0" model="ich9-uhci3">
+ <master startport="4"/>
+ </controller>
+ <interface type="bridge">
+ <source bridge="eth0"/>
+ <mac address="00:11:22:33:44:55"/>
+ </interface>
+ <input type="mouse" bus="ps2"/>
+ <graphics type="spice" port="-1" tlsPort="-1" autoport="yes"/>
+ <console type="pty"/>
+ <channel type="spicevmc">
+ <target type="virtio" name="com.redhat.spice.0"/>
+ </channel>
+ <sound model="ich6"/>
+ <video>
+ <model type="qxl"/>
+ </video>
+ <redirdev bus="usb" type="spicevmc"/>
+ <redirdev bus="usb" type="spicevmc"/>
+ </devices>
+</domain>
diff --git a/virtinst/guest.py b/virtinst/guest.py
index 2d0ec87..c0ce305 100644
--- a/virtinst/guest.py
+++ b/virtinst/guest.py
@@ -875,6 +875,8 @@ class Guest(XMLBuilder):
d.bus = "xen"
return
if not self.os.is_hvm():
+ # This likely isn't correct, but it's kind of a catch all
+ # for virt types we don't know how to handle.
d.bus = "ide"
return
@@ -886,6 +888,8 @@ class Guest(XMLBuilder):
d.bus = "scsi"
elif self.os.is_arm():
d.bus = "sd"
+ elif self.os.is_q35():
+ d.bus = "sata"
else:
d.bus = "ide"

View File

@@ -0,0 +1,51 @@
From: Cole Robinson <crobinso@redhat.com>
Date: Mon, 6 Apr 2015 13:36:54 -0400
Subject: [PATCH virt-manager] addhardware: Don't advertise IDE for Q35 (bz
#1207834)
Laine suggests we hide it altogether
(cherry picked from commit feb010621b480387bd6e4d31573de9e5426cb9f3)
---
virtManager/addhardware.py | 5 +++--
virtinst/osxml.py | 4 ++++
2 files changed, 7 insertions(+), 2 deletions(-)
diff --git a/virtManager/addhardware.py b/virtManager/addhardware.py
index 5e8c0b3..a379438 100644
--- a/virtManager/addhardware.py
+++ b/virtManager/addhardware.py
@@ -770,7 +770,9 @@ class vmmAddHardware(vmmGObjectUI):
model.clear()
if self.vm.is_hvm():
- model.append(["ide", "IDE"])
+ if not self.vm.get_xmlobj().os.is_q35():
+ model.append(["ide", "IDE"])
+ model.append(["sata", "SATA"])
model.append(["fdc", "Floppy"])
if not self.vm.stable_defaults():
@@ -778,7 +780,6 @@ class vmmAddHardware(vmmGObjectUI):
model.append(["usb", "USB"])
if self.vm.get_hv_type() in ["qemu", "kvm", "test"]:
- model.append(["sata", "SATA"])
model.append(["sd", "SD"])
model.append(["virtio", "VirtIO"])
model.append(["virtio-scsi", "VirtIO SCSI"])
diff --git a/virtinst/osxml.py b/virtinst/osxml.py
index 78b12da..32fcf84 100644
--- a/virtinst/osxml.py
+++ b/virtinst/osxml.py
@@ -50,6 +50,10 @@ class OSXML(XMLBuilder):
def is_x86(self):
return self.arch == "x86_64" or self.arch == "i686"
+ def is_q35(self):
+ return (self.is_x86() and
+ self.machine and
+ "q35" in self.machine)
def is_arm32(self):
return self.arch == "armv7l"

View File

@@ -28,7 +28,7 @@
Name: virt-manager Name: virt-manager
Version: 1.1.0 Version: 1.1.0
Release: 5.git%{gitcommit}%{_extra_release} Release: 6.git%{gitcommit}%{_extra_release}
%define verrel %{version}-%{release} %define verrel %{version}-%{release}
Summary: Virtual Machine Manager Summary: Virtual Machine Manager
@@ -56,6 +56,17 @@ Patch0006: 0006-virt-manager-reset-vgamem-for-video-when-changing-de.patch
Patch0007: 0007-cpu-Drop-vendor-and-features-if-setting-host-model-b.patch Patch0007: 0007-cpu-Drop-vendor-and-features-if-setting-host-model-b.patch
# Drop bogus network domain name validation (bz #1195873) # Drop bogus network domain name validation (bz #1195873)
Patch0008: 0008-createnet-Drop-incorrect-domain-name-validation-bz-1.patch Patch0008: 0008-createnet-Drop-incorrect-domain-name-validation-bz-1.patch
# sshtunnels: Don't use socket API for fd passed to spice (bz #1135808)
Patch0009: 0009-sshtunnels-Don-t-use-socket-API-for-fd-passed-to-spi.patch
# Fix available install options for qemu ppc64le (bz #1209720)
Patch0010: 0010-create-Show-proper-install-options-for-ppc64le-bz-12.patch
# Catch errors fetching domcapabilities, fix ppc64le details (bz
# #1209723)
Patch0011: 0011-domcapabilities-Can-and-log-error-fetching-XML-bz-12.patch
# Improve disk defaults for qemu -M q35 (bz #1207834)
Patch0012: 0012-addhardware-Allow-SATA-CDROM-bz-1207834.patch
Patch0013: 0013-guest-Use-sata-by-default-for-q35-cdrom-non-virtio-b.patch
Patch0014: 0014-addhardware-Don-t-advertise-IDE-for-Q35-bz-1207834.patch
Requires: virt-manager-common = %{verrel} Requires: virt-manager-common = %{verrel}
@@ -139,6 +150,17 @@ machine).
%patch0007 -p1 %patch0007 -p1
# Drop bogus network domain name validation (bz #1195873) # Drop bogus network domain name validation (bz #1195873)
%patch0008 -p1 %patch0008 -p1
# sshtunnels: Don't use socket API for fd passed to spice (bz #1135808)
%patch0009 -p1
# Fix available install options for qemu ppc64le (bz #1209720)
%patch0010 -p1
# Catch errors fetching domcapabilities, fix ppc64le details (bz
# #1209723)
%patch0011 -p1
# Improve disk defaults for qemu -M q35 (bz #1207834)
%patch0012 -p1
%patch0013 -p1
%patch0014 -p1
%build %build
%if %{qemu_user} %if %{qemu_user}
@@ -244,6 +266,12 @@ fi
%changelog %changelog
* Mon Apr 13 2015 Cole Robinson <crobinso@redhat.com> - 1.1.0-6.git310f6527
- sshtunnels: Don't use socket API for fd passed to spice (bz #1135808)
- Fix available install options for qemu ppc64le (bz #1209720)
- Catch errors fetching domcapabilities, fix ppc64le details (bz #1209723)
- Improve disk defaults for qemu -M q35 (bz #1207834)
* Fri Mar 27 2015 Cole Robinson <crobinso@redhat.com> - 1.1.0-5.git310f6527 * Fri Mar 27 2015 Cole Robinson <crobinso@redhat.com> - 1.1.0-5.git310f6527
- Fix new VM disk image names when VM name changes (bz #1169141) - Fix new VM disk image names when VM name changes (bz #1169141)
- Fix missing virt-install dep on pygobject (bz #1195794) - Fix missing virt-install dep on pygobject (bz #1195794)