From d8c77829e247e3c7d9b478e694bfdf7855280fe0 Mon Sep 17 00:00:00 2001 From: Cole Robinson Date: Fri, 27 Mar 2015 17:05:35 -0400 Subject: [PATCH] Fix new VM disk image names when VM name changes (bz #1169141) Fix missing virt-install dep on pygobject (bz #1195794) Fix changing VM video type away from qxl (bz #1182710) Clear vendor field when changing CPU (bz #1190851) Drop bogus network domain name validation (bz #1195873) --- ...lt-storage-path-when-VM-name-is-chan.patch | 63 ++++++++++++++++ ...ct3-base-dep-for-virt-install-bz-119.patch | 23 ++++++ ...et-vgamem-for-video-when-changing-de.patch | 74 +++++++++++++++++++ ...and-features-if-setting-host-model-b.patch | 63 ++++++++++++++++ ...ncorrect-domain-name-validation-bz-1.patch | 33 +++++++++ virt-manager.spec | 31 +++++++- 6 files changed, 286 insertions(+), 1 deletion(-) create mode 100644 0004-create-Fix-default-storage-path-when-VM-name-is-chan.patch create mode 100644 0005-spec-Add-pygobject3-base-dep-for-virt-install-bz-119.patch create mode 100644 0006-virt-manager-reset-vgamem-for-video-when-changing-de.patch create mode 100644 0007-cpu-Drop-vendor-and-features-if-setting-host-model-b.patch create mode 100644 0008-createnet-Drop-incorrect-domain-name-validation-bz-1.patch diff --git a/0004-create-Fix-default-storage-path-when-VM-name-is-chan.patch b/0004-create-Fix-default-storage-path-when-VM-name-is-chan.patch new file mode 100644 index 0000000..fb3bea0 --- /dev/null +++ b/0004-create-Fix-default-storage-path-when-VM-name-is-chan.patch @@ -0,0 +1,63 @@ +From: Cole Robinson +Date: Wed, 3 Dec 2014 13:08:18 -0500 +Subject: [PATCH virt-manager] create: Fix default storage path when VM name is + changed (bz 1169141) + +Regressed with 2e7ebd4 . Use skip_disk_page() to determine when we +shouldn't assume default storage + +(cherry picked from commit 4a678f05439da9f17c8cd89f22a59df1b27eddd6) +--- + virtManager/addstorage.py | 6 +----- + virtManager/create.py | 7 ++++--- + 2 files changed, 5 insertions(+), 8 deletions(-) + +diff --git a/virtManager/addstorage.py b/virtManager/addstorage.py +index 9b2a673..91cce73 100644 +--- a/virtManager/addstorage.py ++++ b/virtManager/addstorage.py +@@ -108,9 +108,6 @@ class vmmAddStorage(vmmGObjectUI): + hd_label = ("%s" % hd_label) + widget.set_markup(hd_label) + +- def _is_default_storage(self): +- return bool(self.widget("config-storage-create").get_active()) +- + def _check_default_pool_active(self): + default_pool = self.conn.get_default_pool() + if default_pool and not default_pool.is_active(): +@@ -257,8 +254,7 @@ class vmmAddStorage(vmmGObjectUI): + return path + + def is_default_storage(self): +- return self.widget("config-storage-create").is_visible() and \ +- self.widget("config-storage-create").get_active() ++ return self.widget("config-storage-create").get_active() + + def _check_ideal_path(self, path, vmname, collidelist): + # See if the ideal disk path (/default/pool/vmname.img) +diff --git a/virtManager/create.py b/virtManager/create.py +index f15763c..0f9bdaa 100644 +--- a/virtManager/create.py ++++ b/virtManager/create.py +@@ -1062,9 +1062,8 @@ class vmmCreate(vmmGObjectUI): + return self.addstorage.get_default_path(name) + + def is_default_storage(self): +- usedef = self.addstorage.is_default_storage() +- isimport = (self.get_config_install_page() == INSTALL_PAGE_IMPORT) +- return usedef and not isimport ++ return (self.addstorage.is_default_storage() and ++ not self.skip_disk_page()) + + def get_config_customize(self): + return self.widget("summary-customize").get_active() +@@ -1718,6 +1717,8 @@ class vmmCreate(vmmGObjectUI): + if name != self.guest.name: + self.guest.name = name + if self.is_default_storage(): ++ logging.debug("User changed VM name and using default storage," ++ "re-validating with new default storage path.") + # User changed the name and we are using default storage + # which depends on the VM name. Revalidate things + if not self.validate_storage_page(): diff --git a/0005-spec-Add-pygobject3-base-dep-for-virt-install-bz-119.patch b/0005-spec-Add-pygobject3-base-dep-for-virt-install-bz-119.patch new file mode 100644 index 0000000..db09acd --- /dev/null +++ b/0005-spec-Add-pygobject3-base-dep-for-virt-install-bz-119.patch @@ -0,0 +1,23 @@ +From: Cole Robinson +Date: Tue, 24 Feb 2015 11:23:46 -0500 +Subject: [PATCH virt-manager] spec: Add pygobject3-base dep for virt-install + (bz 1195794) + +(cherry picked from commit 72324a857591e23c9d8998366e2eef337a9fd4e9) +--- + virt-manager.spec.in | 2 ++ + 1 file changed, 2 insertions(+) + +diff --git a/virt-manager.spec.in b/virt-manager.spec.in +index 607a4b6..b378749 100644 +--- a/virt-manager.spec.in ++++ b/virt-manager.spec.in +@@ -75,6 +75,8 @@ Requires: libxml2-python + Requires: python-urlgrabber + Requires: python-ipaddr + Requires: libosinfo >= 0.2.10 ++# Required for gobject-introspection infrastructure ++Requires: pygobject3-base + + %description common + Common files used by the different virt-manager interfaces, as well as diff --git a/0006-virt-manager-reset-vgamem-for-video-when-changing-de.patch b/0006-virt-manager-reset-vgamem-for-video-when-changing-de.patch new file mode 100644 index 0000000..9767636 --- /dev/null +++ b/0006-virt-manager-reset-vgamem-for-video-when-changing-de.patch @@ -0,0 +1,74 @@ +From: Giuseppe Scrivano +Date: Mon, 1 Dec 2014 15:56:29 +0100 +Subject: [PATCH virt-manager] virt-manager: reset vgamem for video when + changing device type + +Closes: https://bugzilla.redhat.com/show_bug.cgi?id=1169295 + +Signed-off-by: Giuseppe Scrivano +(cherry picked from commit 51e5a471202a67e3c9c1dd53c0afc333d77933c9) +--- + tests/xmlparse-xml/change-videos-out.xml | 2 +- + tests/xmlparse.py | 1 + + virtManager/domain.py | 1 + + virtinst/devicevideo.py | 4 ++-- + 4 files changed, 5 insertions(+), 3 deletions(-) + +diff --git a/tests/xmlparse-xml/change-videos-out.xml b/tests/xmlparse-xml/change-videos-out.xml +index ea357ef..15cb0b0 100644 +--- a/tests/xmlparse-xml/change-videos-out.xml ++++ b/tests/xmlparse-xml/change-videos-out.xml +@@ -30,7 +30,7 @@ + + + + + +diff --git a/tests/xmlparse.py b/tests/xmlparse.py +index 870bf36..c4bcb20 100644 +--- a/tests/xmlparse.py ++++ b/tests/xmlparse.py +@@ -624,6 +624,7 @@ class XMLParseTest(unittest.TestCase): + check = self._make_checker(dev3) + check("model", "cirrus", "cirrus", "qxl") + check("ram", None, 100) ++ check("vgamem", None, 8192) + + self._alter_compare(guest.get_xml_config(), outfile) + +diff --git a/virtManager/domain.py b/virtManager/domain.py +index 585f64b..4a98f7f 100644 +--- a/virtManager/domain.py ++++ b/virtManager/domain.py +@@ -860,6 +860,7 @@ class vmmDomain(vmmLibvirtObject): + editdev.vram = None + editdev.heads = None + editdev.ram = None ++ editdev.vgamem = None + + return self._redefine_device(change, devobj, use_live_device) + +diff --git a/virtinst/devicevideo.py b/virtinst/devicevideo.py +index 088c9ad..1d8ee10 100644 +--- a/virtinst/devicevideo.py ++++ b/virtinst/devicevideo.py +@@ -35,14 +35,14 @@ class VirtualVideoDevice(VirtualDevice): + return model.upper() + return model.capitalize() + +- +- _XML_PROP_ORDER = ["model", "vram", "heads"] ++ _XML_PROP_ORDER = ["model", "vram", "heads", "vgamem"] + model = XMLProperty("./model/@type", + default_cb=lambda s: "cirrus", + default_name=MODEL_DEFAULT) + vram = XMLProperty("./model/@vram", is_int=True) + ram = XMLProperty("./model/@ram", is_int=True) + heads = XMLProperty("./model/@heads", is_int=True) ++ vgamem = XMLProperty("./model/@vgamem", is_int=True) + + + VirtualVideoDevice.register_type() diff --git a/0007-cpu-Drop-vendor-and-features-if-setting-host-model-b.patch b/0007-cpu-Drop-vendor-and-features-if-setting-host-model-b.patch new file mode 100644 index 0000000..85497fc --- /dev/null +++ b/0007-cpu-Drop-vendor-and-features-if-setting-host-model-b.patch @@ -0,0 +1,63 @@ +From: Cole Robinson +Date: Thu, 26 Mar 2015 17:08:15 -0400 +Subject: [PATCH virt-manager] cpu: Drop vendor and features if setting + host-model (bz 1190851) + +Otherwise via virt-manager we can try to set a with a +but no , and libvirt complains. + +(cherry picked from commit dc1737e623aef0f661cc28c0c5b87f847fc2526b) +--- + tests/xmlparse-xml/change-minimal-guest-out.xml | 2 +- + tests/xmlparse.py | 1 + + virtinst/cpu.py | 5 +++++ + 3 files changed, 7 insertions(+), 1 deletion(-) + +diff --git a/tests/xmlparse-xml/change-minimal-guest-out.xml b/tests/xmlparse-xml/change-minimal-guest-out.xml +index 5363080..f3be5c0 100644 +--- a/tests/xmlparse-xml/change-minimal-guest-out.xml ++++ b/tests/xmlparse-xml/change-minimal-guest-out.xml +@@ -23,7 +23,7 @@ + + + +- foobar ++ foobar + + + +diff --git a/tests/xmlparse.py b/tests/xmlparse.py +index c4bcb20..477de22 100644 +--- a/tests/xmlparse.py ++++ b/tests/xmlparse.py +@@ -251,6 +251,7 @@ class XMLParseTest(unittest.TestCase): + + check = self._make_checker(guest.cpu) + check("model", None, "foobar") ++ check("model_fallback", None, "allow") + check("cores", None, 4) + guest.cpu.add_feature("x2apic", "forbid") + guest.cpu.set_topology_defaults(guest.vcpus) +diff --git a/virtinst/cpu.py b/virtinst/cpu.py +index 551364c..b12fd30 100644 +--- a/virtinst/cpu.py ++++ b/virtinst/cpu.py +@@ -59,6 +59,10 @@ class CPU(XMLBuilder): + if (val == self.SPECIAL_MODE_HOST_MODEL or + val == self.SPECIAL_MODE_HOST_PASSTHROUGH): + self.model = None ++ self.vendor = None ++ self.model_fallback = None ++ for f in self.features: ++ self.remove_feature(f) + self.mode = val + elif val == self.SPECIAL_MODE_HOST_COPY: + self.copy_host_cpu() +@@ -161,6 +165,7 @@ class CPU(XMLBuilder): + self.match = "exact" + return val + model = XMLProperty("./model", set_converter=_set_model) ++ model_fallback = XMLProperty("./model/@fallback") + + match = XMLProperty("./@match") + vendor = XMLProperty("./vendor") diff --git a/0008-createnet-Drop-incorrect-domain-name-validation-bz-1.patch b/0008-createnet-Drop-incorrect-domain-name-validation-bz-1.patch new file mode 100644 index 0000000..6e28778 --- /dev/null +++ b/0008-createnet-Drop-incorrect-domain-name-validation-bz-1.patch @@ -0,0 +1,33 @@ +From: Cole Robinson +Date: Thu, 26 Mar 2015 17:11:23 -0400 +Subject: [PATCH virt-manager] createnet: Drop incorrect domain name validation + (bz 1195873) + +Just let libvirt error if something is wrong + +(cherry picked from commit af562320a5c4f9148dd7710547386ab203dd9849) +--- + virtManager/createnet.py | 10 ---------- + 1 file changed, 10 deletions(-) + +diff --git a/virtManager/createnet.py b/virtManager/createnet.py +index 6c0634c..0f09732 100644 +--- a/virtManager/createnet.py ++++ b/virtManager/createnet.py +@@ -425,16 +425,6 @@ class vmmCreateNetwork(vmmGObjectUI): + return True + + def validate_miscellaneous(self): +- domain_name = self.widget("net-domain-name").get_text() +- if len(domain_name) > 0: +- if len(domain_name) > 16: +- return self.err.val_err(_("Invalid Domain Name"), +- _("Domain name must be less than 17 characters")) +- if re.match("^[a-zA-Z0-9_]*$", domain_name) is None: +- return self.err.val_err(_("Invalid Domain Name"), +- _("Domain name may contain alphanumeric and '_' " +- "characters only")) +- + return True + + def validate(self, page_num): diff --git a/virt-manager.spec b/virt-manager.spec index 6d9ad0b..9c24c8e 100644 --- a/virt-manager.spec +++ b/virt-manager.spec @@ -28,7 +28,7 @@ Name: virt-manager Version: 1.1.0 -Release: 4.git%{gitcommit}%{_extra_release} +Release: 5.git%{gitcommit}%{_extra_release} %define verrel %{version}-%{release} Summary: Virtual Machine Manager @@ -46,6 +46,16 @@ Patch0001: 0001-tunnels-do-not-close-unowned-fd.patch Patch0002: 0002-spec-move-dependency-to-libosinfo-from-virt-manager-.patch # Fix PCI/USB hotplug (bz #1146297) Patch0003: 0003-addhardware-Fix-attaching-USB-PCI-hostdev-bz-1146297.patch +# Fix new VM disk image names when VM name changes (bz #1169141) +Patch0004: 0004-create-Fix-default-storage-path-when-VM-name-is-chan.patch +# Fix missing virt-install dep on pygobject (bz #1195794) +Patch0005: 0005-spec-Add-pygobject3-base-dep-for-virt-install-bz-119.patch +# Fix changing VM video type away from qxl (bz #1182710) +Patch0006: 0006-virt-manager-reset-vgamem-for-video-when-changing-de.patch +# Clear vendor field when changing CPU (bz #1190851) +Patch0007: 0007-cpu-Drop-vendor-and-features-if-setting-host-model-b.patch +# Drop bogus network domain name validation (bz #1195873) +Patch0008: 0008-createnet-Drop-incorrect-domain-name-validation-bz-1.patch Requires: virt-manager-common = %{verrel} @@ -85,6 +95,8 @@ Requires: libxml2-python Requires: python-urlgrabber Requires: python-ipaddr Requires: libosinfo >= 0.2.10 +# Required for gobject-introspection infrastructure +Requires: pygobject3-base %description common Common files used by the different virt-manager interfaces, as well as @@ -117,6 +129,16 @@ machine). %patch0002 -p1 # Fix PCI/USB hotplug (bz #1146297) %patch0003 -p1 +# Fix new VM disk image names when VM name changes (bz #1169141) +%patch0004 -p1 +# Fix missing virt-install dep on pygobject (bz #1195794) +%patch0005 -p1 +# Fix changing VM video type away from qxl (bz #1182710) +%patch0006 -p1 +# Clear vendor field when changing CPU (bz #1190851) +%patch0007 -p1 +# Drop bogus network domain name validation (bz #1195873) +%patch0008 -p1 %build %if %{qemu_user} @@ -222,6 +244,13 @@ fi %changelog +* Fri Mar 27 2015 Cole Robinson - 1.1.0-5.git310f6527 +- Fix new VM disk image names when VM name changes (bz #1169141) +- Fix missing virt-install dep on pygobject (bz #1195794) +- Fix changing VM video type away from qxl (bz #1182710) +- Clear vendor field when changing CPU (bz #1190851) +- Drop bogus network domain name validation (bz #1195873) + * Sun Nov 16 2014 Cole Robinson - 1.1.0-4.git310f6527 - Fix crash when rebooting VMs after install (bz #1135546) - Fix dep on libosinfo (bz #1159370)