--- virt-manager-2.2.0.orig/man/virt-install.pod 2019-06-17 00:20:11.000000000 -0500 +++ virt-manager-2.2.0/man/virt-install.pod 2019-06-22 22:24:40.692771325 -0500 @@ -10,7 +10,7 @@ =head1 DESCRIPTION -B is a command line tool for creating new KVM, Xen, or Linux +B is a command line tool for creating new KVM, Xen, or GNU/Linux container guests using the C hypervisor management library. See the EXAMPLES section at the end of this document to quickly get started. @@ -70,7 +70,7 @@ =item lxc:/// -For creating linux containers +For creating GNU/Linux containers =back @@ -455,28 +455,6 @@ =back -Some distro specific url samples: - -=over 4 - -=item Fedora/Red Hat Based - -https://download.fedoraproject.org/pub/fedora/linux/releases/29/Server/x86_64/os - -=item Debian - -https://ftp.us.debian.org/debian/dists/stable/main/installer-amd64/ - -=item Ubuntu - -https://us.archive.ubuntu.com/ubuntu/dists/wily/main/installer-amd64/ - -=item Suse - -https://download.opensuse.org/pub/opensuse/distribution/leap/42.3/repo/oss/ - -=back - Additionally, --location can take 'kernel' and 'initrd' sub options. These paths relative to the specified location URL/ISO that allow selecting specific files for kernel/initrd within the install tree. This can be useful if virt-install/ @@ -719,10 +697,9 @@ =item B<--os-variant> OS_VARIANT -Optimize the guest configuration for a specific operating system (ex. -'fedora29', 'rhel7', 'win10'). While not required, specifying this -options is HIGHLY RECOMMENDED, as it can greatly increase performance -by specifying virtio among other guest tweaks. +Optimize the guest configuration for a specific operating system. While not +required, specifying this options is HIGHLY RECOMMENDED, as it can greatly +increase performance by specifying virtio among other guest tweaks. By default, virt-install will attempt to auto detect this value from the install media (currently only supported for URL installs). Autodetection @@ -891,7 +868,7 @@ =item B -Serial number of the emulated disk device. This is used in linux guests +Serial number of the emulated disk device. This is used in GNU/Linux guests to set /dev/disk/by-id symlinks. An example serial number might be: WD-WMAP9A966149 @@ -923,7 +900,7 @@ --filesystem /source/on/host,/target/point/in/guest -Which will work for recent QEMU and linux guest OS or LXC containers. For +Which will work for recent QEMU and GNU/Linux guest OS or LXC containers. For QEMU, the target point is just a mounting hint in sysfs, so will not be automatically mounted. @@ -1796,49 +1773,6 @@ =head1 EXAMPLES -The simplest invocation to interactively install a Fedora 29 KVM VM -with recommended defaults. L will be launched to -graphically interact with the VM install - - # sudo virt-install --install fedora29 - -Similar, but use libosinfo's unattended install support, which will -perform the fedora29 install automatically without user intervention: - - # sudo virt-install --install fedora29 --unattended - -Install a Windows 10 VM, using 40GiB storage in the default location -and 4096MiB of ram, and ensure we are connecting to the system libvirtd -instance: - - # virt-install \ - --connect qemu:///system \ - --name my-win10-vm \ - --memory 4096 \ - --disk size=40 \ - --os-variant win10 \ - --cdrom /path/to/my/win10.iso - -Install a CentOS 7 KVM from a URL, with recommended device defaults and -default required storag,e but specifically request VNC graphics instead -of the default SPICE, and request 8 virtual CPUs and 8192 MiB of memory: - - # virt-install \ - --connect qemu:///system \ - --memory 8192 \ - --vcpus 8 \ - --graphics vnc \ - --os-variant centos7.0 \ - --location http://mirror.centos.org/centos-7/7/os/x86_64/ - -Create a VM around an existing debian9 disk image: - - # virt-install \ - --import \ - --memory 512 \ - --disk /home/user/VMs/my-debian9.img \ - --os-variant debian9 - Start serial QEMU ARM VM, which requires specifying a manual kernel. # virt-install \ --- virt-manager-2.2.0.orig/man/virt-xml.pod 2019-06-17 00:20:11.000000000 -0500 +++ virt-manager-2.2.0/man/virt-xml.pod 2019-06-22 22:31:26.052767093 -0500 @@ -176,10 +176,9 @@ =item B<--os-variant> OS_VARIANT -Optimize the guest configuration for a specific operating system (ex. -'fedora29', 'rhel7', 'win10'). While not required, specifying this -options is HIGHLY RECOMMENDED, as it can greatly increase performance -by specifying virtio among other guest tweaks. +Optimize the guest configuration for a specific operating system. While not +required, specifying this options is HIGHLY RECOMMENDED, as it can greatly +increase performance by specifying virtio among other guest tweaks. If the guest has been installed using virt-manager version 2.0.0 or newer, providing this information should not be necessary, as the OS variant will @@ -342,63 +341,10 @@ # virt-xml EXAMPLE --edit --boot menu=on -Clear the previous definition of domain 'winxp', change it to 'host-model', but interactively confirm the diff before saving: - - # virt-xml winxp --edit --cpu host-model,clearxml=yes --confirm - -Change the second sound card to model=ich6 on 'fedora19', but only output the diff: - - # virt-xml fedora19 --edit 2 --sound model=ich6 --print-diff - -Update the every graphics device password to 'foo' of the running VM 'rhel6': - - # virt-xml rhel6 --edit all --graphics password=foo --update - -Remove the disk path from disk device hdc: - - # virt-xml rhel6 --edit target=hdc --disk path= - Change all disk devices of type 'disk' to use cache=none, using XML from stdin, printing the new XML to stdout. # cat | virt-xml --edit device=disk --disk cache=none -Change disk 'hda' IO to native and use startup policy as 'optional'. - - # virt-xml fedora20 --edit target=hda \ - --disk io=native,startup_policy=optional - -Change all host devices to use driver_name=vfio for VM 'fedora20' on the remote connection - - # virt-xml --connect qemu+ssh://remotehost/system \ - fedora20 --edit all --hostdev driver_name=vfio - -Hotplug host USB device 001.003 to running domain 'fedora19': - - # virt-xml fedora19 --update --add-device --hostdev 001.003 - -Add a spicevmc channel to the domain 'winxp', that will be available after the next VM shutdown. - - # virt-xml winxp --add-device --channel spicevmc - -Create a 10G qcow2 disk image and attach it to 'fedora18' for the next VM startup: - - # virt-xml fedora18 --add-device \ - --disk /var/lib/libvirt/images/newimage.qcow2,format=qcow2,size=10 - -Same as above, but ensure the disk is attached to the most appropriate bus -for the guest OS by providing information about it on the command line: - - # virt-xml fedora18 --os-variant fedora18 --add-device \ - --disk /var/lib/libvirt/images/newimage.qcow2,format=qcow2,size=10 - -Hotunplug the disk vdb from the running domain 'rhel7': - - # virt-xml rhel7 --update --remove-device --disk target=vdb - -Remove all graphics devices from the VM 'rhel7' after the next shutdown: - - # virt-xml rhel7 --remove-device --graphics all - Generate XML for a virtio console device and print it to stdout: # virt-xml --build-xml --console pty,target_type=virtio --- virt-manager-2.2.0.orig/virtinst/osdict.py 2019-06-17 00:20:11.000000000 -0500 +++ virt-manager-2.2.0/virtinst/osdict.py 2019-06-22 22:35:02.212764836 -0500 @@ -124,49 +124,7 @@ # This is only for back compatibility with pre-libosinfo support. # This should never change. _aliases = { - "altlinux": "altlinux1.0", - "debianetch": "debian4", - "debianlenny": "debian5", - "debiansqueeze": "debian6", - "debianwheezy": "debian7", - "freebsd10": "freebsd10.0", - "freebsd6": "freebsd6.0", - "freebsd7": "freebsd7.0", - "freebsd8": "freebsd8.0", - "freebsd9": "freebsd9.0", - "mandriva2009": "mandriva2009.0", - "mandriva2010": "mandriva2010.0", - "mbs1": "mbs1.0", - "msdos": "msdos6.22", - "openbsd4": "openbsd4.2", - "opensolaris": "opensolaris2009.06", - "opensuse11": "opensuse11.4", - "opensuse12": "opensuse12.3", - "rhel4": "rhel4.0", - "rhel5": "rhel5.0", - "rhel6": "rhel6.0", - "rhel7": "rhel7.0", - "ubuntuhardy": "ubuntu8.04", - "ubuntuintrepid": "ubuntu8.10", - "ubuntujaunty": "ubuntu9.04", - "ubuntukarmic": "ubuntu9.10", - "ubuntulucid": "ubuntu10.04", - "ubuntumaverick": "ubuntu10.10", - "ubuntunatty": "ubuntu11.04", - "ubuntuoneiric": "ubuntu11.10", - "ubuntuprecise": "ubuntu12.04", - "ubuntuquantal": "ubuntu12.10", - "ubunturaring": "ubuntu13.04", - "ubuntusaucy": "ubuntu13.10", - "virtio26": "fedora10", - "vista": "winvista", - "winxp64": "winxp", - # Old --os-type values - "linux": "generic", - "windows": "winxp", - "solaris": "solaris10", - "unix": "freebsd9.0", "other": "generic", } --- virt-manager-2.2.0.orig/virtinst/install/urldetect.py 2019-06-17 00:20:11.000000000 -0500 +++ virt-manager-2.2.0/virtinst/install/urldetect.py 2019-06-22 22:43:13.122759711 -0500 @@ -173,109 +173,6 @@ return True -class _SUSEContent(object): - """ - Helper class tracking the SUSE 'content' files - """ - def __init__(self, content_str): - self.content_str = content_str - self.content_dict = {} - - for line in self.content_str.splitlines(): - for prefix in ["LABEL", "DISTRO", "VERSION", - "BASEARCHS", "DEFAULTBASE", "REPOID"]: - if line.startswith(prefix + " "): - self.content_dict[prefix] = line.split(" ", 1)[1] - - log.debug("SUSE content dict: %s", self.content_dict) - self.tree_arch = self._get_tree_arch() - self.product_name = self._get_product_name() - self.product_version = self._get_product_version() - log.debug("SUSE content product_name=%s product_version=%s " - "tree_arch=%s", self.product_name, self.product_version, - self.tree_arch) - - def _get_tree_arch(self): - # Examples: - # opensuse 11.4: BASEARCHS i586 x86_64 - # opensuse 12.3: BASEARCHS i586 x86_64 - # opensuse 10.3: DEFAULTBASE i586 - distro_arch = (self.content_dict.get("BASEARCHS") or - self.content_dict.get("DEFAULTBASE")) - if not distro_arch and "REPOID" in self.content_dict: - distro_arch = self.content_dict["REPOID"].rsplit('/', 1)[1] - if not distro_arch: - return None - - tree_arch = distro_arch.strip() - # Fix for 13.2 official oss repo - if tree_arch.find("i586-x86_64") != -1: - tree_arch = "x86_64" - return tree_arch - - def _get_product_name(self): - """ - Parse the SUSE product name. Examples: - SUSE Linux Enterprise Server 11 SP4 - openSUSE 11.4 - """ - # Some field examples in the wild - # - # opensuse 10.3: LABEL openSUSE 10.3 - # opensuse 11.4: LABEL openSUSE 11.4 - # opensuse 12.3: LABEL openSUSE - # sles11sp4 DVD: LABEL SUSE Linux Enterprise Server 11 SP4 - # - # - # DISTRO cpe:/o:opensuse:opensuse:13.2,openSUSE - # DISTRO cpe:/o:suse:sled:12:sp3,SUSE Linux Enterprise Desktop 12 SP3 - # - # As of 2018 all latest distros match only DISTRO and REPOID. - product_name = None - if "LABEL" in self.content_dict: - product_name = self.content_dict["LABEL"] - elif "," in self.content_dict.get("DISTRO", ""): - product_name = self.content_dict["DISTRO"].rsplit(",", 1)[1] - - log.debug("SUSE content product_name=%s", product_name) - return product_name - - def _get_product_version(self): - # Some example fields: - # - # opensuse 10.3: VERSION 10.3 - # opensuse 12.3: VERSION 12.3 - # SLES-10-SP4-DVD-x86_64-GM-DVD1.iso: VERSION 10.4-0 - # - # REPOID obsproduct://build.suse.de/SUSE:SLE-11-SP4:GA/SUSE_SLES/11.4/DVD/x86_64 - # REPOID obsproduct://build.suse.de/SUSE:SLE-12-SP3:GA/SLES/12.3/DVD/aarch64 - # - # As of 2018 all latest distros match only DISTRO and REPOID. - if not self.product_name: - return None - - distro_version = self.content_dict.get("VERSION", "") - if "-" in distro_version: - distro_version = distro_version.split('-', 1)[0] - - # Special case, parse version out of a line like this - # cpe:/o:opensuse:opensuse:13.2,openSUSE - if (not distro_version and - re.match("^.*:.*,openSUSE*", self.content_dict["DISTRO"])): - distro_version = self.content_dict["DISTRO"].rsplit( - ",", 1)[0].strip().rsplit(":")[4] - distro_version = distro_version.strip() - - if "Enterprise" in self.product_name or "SLES" in self.product_name: - sle_version = self.product_name.strip().rsplit(' ')[4] - if len(self.product_name.strip().rsplit(' ')) > 5: - sle_version = (sle_version + '.' + - self.product_name.strip().rsplit(' ')[5][2]) - distro_version = sle_version - - return distro_version - - def getDistroStore(guest, fetcher, skip_error): log.debug("Finding distro store for location=%s", fetcher.location) @@ -388,403 +285,6 @@ return self.cache.libosinfo_mediaobj -class _FedoraDistro(_DistroTree): - PRETTY_NAME = "Fedora" - matching_distros = ["fedora"] - - @classmethod - def is_valid(cls, cache): - famregex = ".*Fedora.*" - return cache.treeinfo_family_regex(famregex) - - def _detect_version(self): - latest_variant = "fedora-unknown" - - verstr = self.cache.treeinfo_version - if not verstr: # pragma: no cover - log.debug("No treeinfo version? Assume latest_variant=%s", - latest_variant) - return latest_variant - - # rawhide trees changed to use version=Rawhide in Apr 2016 - if verstr in ["development", "rawhide", "Rawhide"]: - log.debug("treeinfo version=%s, using latest_variant=%s", - verstr, latest_variant) - return latest_variant - - # treeinfo version is just an integer - variant = "fedora" + verstr - if OSDB.lookup_os(variant): - return variant - - log.debug( # pragma: no cover - "variant=%s from treeinfo version=%s not found, " - "using latest_variant=%s", variant, verstr, latest_variant) - return latest_variant # pragma: no cover - - -class _RHELDistro(_DistroTree): - PRETTY_NAME = "Red Hat Enterprise Linux" - matching_distros = ["rhel"] - _variant_prefix = "rhel" - - @classmethod - def is_valid(cls, cache): - # Matches: - # Red Hat Enterprise Linux - # RHEL Atomic Host - famregex = ".*(Red Hat Enterprise Linux|RHEL).*" - return cache.treeinfo_family_regex(famregex) - - def _detect_version(self): - if not self.cache.treeinfo_version: - log.debug("No treeinfo version? Not setting an os_variant") - return - - version, update = self.cache.split_version() - - # start with example base=rhel7, then walk backwards - # through the OS list to find the latest os name that matches - # this way we handle rhel7.6 from treeinfo when osdict only - # knows about rhel7.5 - base = self._variant_prefix + str(version) - while update >= 0: - tryvar = base + ".%s" % update - if OSDB.lookup_os(tryvar): - return tryvar - update -= 1 - - -class _CentOSDistro(_RHELDistro): - PRETTY_NAME = "CentOS" - matching_distros = ["centos"] - _variant_prefix = "centos" - - @classmethod - def is_valid(cls, cache): - famregex = ".*(CentOS|Scientific).*" - return cache.treeinfo_family_regex(famregex) - - -class _SuseDistro(_RHELDistro): - PRETTY_NAME = None - _suse_regex = [] - matching_distros = [] - _variant_prefix = NotImplementedError - famregex = NotImplementedError - - @classmethod - def is_valid(cls, cache): - if cache.treeinfo_family_regex(cls.famregex): - return True - - if not cache.checked_for_suse_content: - cache.checked_for_suse_content = True - content_str = cache.acquire_file_content("content") - if content_str is None: - return False - - try: - cache.suse_content = _SUSEContent(content_str) - except Exception as e: - log.debug("Error parsing SUSE content file: %s", str(e)) - return False - - if not cache.suse_content: - return False - for regex in cls._suse_regex: - if re.match(regex, cache.suse_content.product_name or ""): - return True - return False - - def _set_manual_kernel_paths(self): - # We only reach here if no treeinfo was matched - tree_arch = self.cache.suse_content.tree_arch - - if re.match(r'i[4-9]86', tree_arch): - tree_arch = 'i386' - - oldkern = "linux" - oldinit = "initrd" - if tree_arch == "x86_64": - oldkern += "64" - oldinit += "64" - - if self.type == "xen": - # Matches Opensuse > 10.2 and sles 10 - self._kernel_paths.append( - ("boot/%s/vmlinuz-xen" % tree_arch, - "boot/%s/initrd-xen" % tree_arch)) - - if str(self._os_variant).startswith(("sles11", "sled11")): - if tree_arch == "s390x": - self._kernel_paths.append( - ("boot/s390x/vmrdr.ikr", "boot/s390x/initrd")) - if tree_arch == "ppc64": - self._kernel_paths.append( - ("suseboot/linux64", "suseboot/initrd64")) - - # Tested with SLES 12 for ppc64le, all s390x - self._kernel_paths.append( - ("boot/%s/linux" % tree_arch, - "boot/%s/initrd" % tree_arch)) - # Tested with Opensuse 10.0 - self._kernel_paths.append( - ("boot/loader/%s" % oldkern, - "boot/loader/%s" % oldinit)) - # Tested with Opensuse >= 10.2, 11, and sles 10 - self._kernel_paths.append( - ("boot/%s/loader/linux" % tree_arch, - "boot/%s/loader/initrd" % tree_arch)) - - def _detect_osdict_from_suse_content(self): - if not self.cache.suse_content: - return - - distro_version = self.cache.suse_content.product_version - if not distro_version: - return - - version = distro_version.split('.', 1)[0].strip() - if len(version) == 8: - # Tumbleweed 8 digit date - return "opensusetumbleweed" - - if int(version) < 10: - return self._variant_prefix + "9" - - if str(self._variant_prefix).startswith(("sles", "sled")): - sp_version = "" - if len(distro_version.split('.', 1)) == 2: - sp_version = 'sp' + distro_version.split('.', 1)[1].strip() - - return self._variant_prefix + version + sp_version - - return self._variant_prefix + distro_version - - def _detect_osdict_from_url(self): - root = "opensuse" - oses = [n for n in OSDB.list_os() if n.name.startswith(root)] - - for osobj in oses: - codename = osobj.name[len(root):] - if re.search("/%s/" % codename, self.uri): - return osobj.name - - def _detect_from_treeinfo(self): - if not self.cache.treeinfo_name: - return - if re.search("openSUSE Tumbleweed", self.cache.treeinfo_name): - return "opensusetumbleweed" - - version, update = self.cache.split_version() - base = self._variant_prefix + str(version) - while update >= 0: - tryvar = base - # SLE doesn't use '.0' for initial releases in - # osinfo-db (sles11, sles12, etc) - if update > 0 or not base.startswith('sle'): - tryvar += ".%s" % update - if OSDB.lookup_os(tryvar): - return tryvar - update -= 1 - - def _detect_version(self): - var = self._detect_from_treeinfo() - if not var: - var = self._detect_osdict_from_url() - if not var: - var = self._detect_osdict_from_suse_content() - return var - - -class _SLESDistro(_SuseDistro): - PRETTY_NAME = "SLES" - matching_distros = ["sles"] - _variant_prefix = "sles" - _suse_regex = [".*SUSE Linux Enterprise Server*", ".*SUSE SLES*"] - famregex = ".*SUSE Linux Enterprise.*" - - -class _SLEDDistro(_SuseDistro): - PRETTY_NAME = "SLED" - matching_distros = ["sled"] - _variant_prefix = "sled" - _suse_regex = [".*SUSE Linux Enterprise Desktop*"] - famregex = ".*SUSE Linux Enterprise.*" - - -class _OpensuseDistro(_SuseDistro): - PRETTY_NAME = "openSUSE" - matching_distros = ["opensuse"] - _variant_prefix = "opensuse" - _suse_regex = [".*openSUSE.*"] - famregex = ".*openSUSE.*" - - -class _DebianDistro(_DistroTree): - # ex. http://ftp.egr.msu.edu/debian/dists/sarge/main/installer-i386/ - # daily builds: https://d-i.debian.org/daily-images/amd64/ - PRETTY_NAME = "Debian" - matching_distros = ["debian"] - _debname = "debian" - - @classmethod - def is_valid(cls, cache): - def check_manifest(mfile): - is_ubuntu = cls._debname == "ubuntu" - if cache.content_regex(mfile, ".*[Uu]buntu.*"): - return is_ubuntu - return cache.content_regex(mfile, ".*[Dd]ebian.*") - - media_type = None - if check_manifest("current/images/MANIFEST"): - media_type = "url" - elif check_manifest("daily/MANIFEST"): - media_type = "daily" - elif cache.content_regex(".disk/info", - "%s.*" % cls._debname.capitalize()): - # There's two cases here: - # 1) Direct access ISO, attached as CDROM afterwards. We - # use one set of kernels in that case which seem to - # assume the prescence of CDROM media - # 2) ISO mounted and exported over URL. We use a different - # set of kernels that expect to boot from the network - if cache.fetcher_is_iso(): - media_type = "disk" - else: - media_type = "mounted_iso_url" - - if media_type: - cache.debian_media_type = media_type - return bool(media_type) - - - def _set_manual_kernel_paths(self): - if self.cache.debian_media_type == "disk": - self._set_installcd_paths() - else: - self._set_url_paths() - - - def _find_treearch(self): - for pattern in [r"^.*/installer-(\w+)/?$", - r"^.*/daily-images/(\w+)/?$"]: - arch = re.findall(pattern, self.uri) - if not arch: - continue - log.debug("Found pattern=%s treearch=%s in uri", - pattern, arch[0]) - return arch[0] - - # Check for standard arch strings which will be - # in the URI name for --location $ISO mounts - for arch in ["i386", "amd64", "x86_64", "arm64"]: - if arch in self.uri: - log.debug("Found treearch=%s in uri", arch) - if arch == "x86_64": - arch = "amd64" - return arch - - # Otherwise default to i386 - arch = "i386" - log.debug("No treearch found in uri, defaulting to arch=%s", arch) - return arch - - def _set_url_paths(self): - url_prefix = "current/images" - if self.cache.debian_media_type == "daily": - url_prefix = "daily" - elif self.cache.debian_media_type == "mounted_iso_url": - url_prefix = "install" - - tree_arch = self._find_treearch() - hvmroot = "%s/netboot/%s-installer/%s/" % (url_prefix, - self._debname, tree_arch) - initrd_basename = "initrd.gz" - kernel_basename = "linux" - if tree_arch in ["ppc64el"]: - kernel_basename = "vmlinux" - - if tree_arch == "s390x": - hvmroot = "%s/generic/" % url_prefix - kernel_basename = "kernel.%s" % self._debname - initrd_basename = "initrd.%s" % self._debname - - - if self.type == "xen": - xenroot = "%s/netboot/xen/" % url_prefix - self._kernel_paths.append( - (xenroot + "vmlinuz", xenroot + "initrd.gz")) - self._kernel_paths.append( - (hvmroot + kernel_basename, hvmroot + initrd_basename)) - - def _set_installcd_paths(self): - if self._debname == "ubuntu": - if not self.arch == "s390x": - kpair = ("install/vmlinuz", "install/initrd.gz") - else: - kpair = ("boot/kernel.ubuntu", "boot/initrd.ubuntu") - elif self.arch == "x86_64": - kpair = ("install.amd/vmlinuz", "install.amd/initrd.gz") - elif self.arch == "i686": - kpair = ("install.386/vmlinuz", "install.386/initrd.gz") - elif self.arch == "aarch64": - kpair = ("install.a64/vmlinuz", "install.a64/initrd.gz") - elif self.arch == "ppc64le": - kpair = ("install/vmlinux", "install/initrd.gz") - elif self.arch == "s390x": - kpair = ("boot/linux_vm", "boot/root.bin") - else: - kpair = ("install/vmlinuz", "install/initrd.gz") - self._kernel_paths += [kpair] - return True - - def _detect_version(self): - oses = [n for n in OSDB.list_os() if n.name.startswith(self._debname)] - - if self.cache.debian_media_type == "daily": - log.debug("Appears to be debian 'daily' URL, using latest " - "debian OS") - return oses[0].name - - for osobj in oses: - if osobj.codename: - # Ubuntu codenames look like 'Warty Warthog' - codename = osobj.codename.split()[0].lower() - else: - if " " not in osobj.label: - continue - # Debian labels look like 'Debian Sarge' - codename = osobj.label.split()[1].lower() - - if ("/%s/" % codename) in self.uri: - log.debug("Found codename=%s in the URL string", codename) - return osobj.name - - -class _UbuntuDistro(_DebianDistro): - # https://archive.ubuntu.com/ubuntu/dists/natty/main/installer-amd64/ - PRETTY_NAME = "Ubuntu" - matching_distros = ["ubuntu"] - _debname = "ubuntu" - - -class _MageiaDistro(_DistroTree): - # https://distro.ibiblio.org/mageia/distrib/cauldron/x86_64/ - PRETTY_NAME = "Mageia" - matching_distros = ["mageia"] - - @classmethod - def is_valid(cls, cache): - return cache.content_regex("VERSION", ".*Mageia.*") - - def _set_manual_kernel_paths(self): - self._kernel_paths += [ - ("isolinux/%s/vmlinuz" % self.arch, - "isolinux/%s/all.rdz" % self.arch)] - - class _GenericTreeinfoDistro(_DistroTree): """ Generic catchall class for .treeinfo using distros @@ -824,15 +324,6 @@ allstores = [ # Libosinfo takes priority _LibosinfoDistro, - _FedoraDistro, - _RHELDistro, - _CentOSDistro, - _SLESDistro, - _SLEDDistro, - _OpensuseDistro, - _DebianDistro, - _UbuntuDistro, - _MageiaDistro, # Always stick GenericDistro at the end, since it's a catchall _GenericTreeinfoDistro, ] --- virt-manager-2.2.0.orig/virtManager/oslist.py 2019-06-17 00:20:11.000000000 -0500 +++ virt-manager-2.2.0/virtManager/oslist.py 2019-06-22 22:48:03.832756676 -0500 @@ -55,7 +55,8 @@ all_os = virtinst.OSDB.list_os() for os in all_os: - os_list_model.append([os, "%s (%s)" % (os.label, os.name)]) + if os.name == "generic": + os_list_model.append([os, "%s (%s)" % (os.label, os.name)]) model_filter = Gtk.TreeModelFilter(child_model=os_list_model) model_filter.set_visible_func(self._filter_os_cb)