[fedora-virt-maint] rpms/python-virtinst/devel virtinst-0.400.3-fix-floppy-dev.patch, NONE, 1.1 virtinst-0.400.3-no-default-keymap.patch, NONE, 1.1 virtinst-0.400.3-updated-trans.patch, NONE, 1.1 python-virtinst.spec, 1.63, 1.64 virtinst-0.400.3-selinux-context.patch, 1.2, 1.3

Cole Robinson crobinso at fedoraproject.org
Thu Apr 9 15:12:25 UTC 2009


Author: crobinso

Update of /cvs/pkgs/rpms/python-virtinst/devel
In directory cvs1.fedora.phx.redhat.com:/tmp/cvs-serv8069

Modified Files:
	python-virtinst.spec virtinst-0.400.3-selinux-context.patch 
Added Files:
	virtinst-0.400.3-fix-floppy-dev.patch 
	virtinst-0.400.3-no-default-keymap.patch 
	virtinst-0.400.3-updated-trans.patch 
Log Message:
Don't set a keymap if user doesn't specify one (bz 487737)
Fix adding floppy devices (bz 493408)
Updated translations (bz 493944, bz 494358)


virtinst-0.400.3-fix-floppy-dev.patch:

--- NEW FILE virtinst-0.400.3-fix-floppy-dev.patch ---
# HG changeset patch
# User Cole Robinson <crobinso at redhat.com>
# Date 1237498550 14400
# Node ID fd4baa6410d841f137ea89290c1a8da33c00c3c9
# Parent  a55347f926f5cfdcfd9b5234b945ec279190c513
Fix specifying --disk device=floppy

diff -r a55347f926f5 -r fd4baa6410d8 virtinst/FullVirtGuest.py
--- a/virtinst/FullVirtGuest.py	Thu Mar 19 17:35:27 2009 -0400
+++ b/virtinst/FullVirtGuest.py	Thu Mar 19 17:35:50 2009 -0400
@@ -113,7 +113,10 @@
         used_targets = []
         for disk in self._install_disks:
             if not disk.bus:
-                disk.bus = "ide"
+                if disk.device == disk.DEVICE_FLOPPY:
+                    disk.bus = "fdc"
+                else:
+                    disk.bus = "ide"
             used_targets.append(disk.generate_target(used_targets))
 
         for d in self._install_disks:
diff -r a55347f926f5 -r fd4baa6410d8 virtinst/VirtualDisk.py
--- a/virtinst/VirtualDisk.py	Thu Mar 19 17:35:27 2009 -0400
+++ b/virtinst/VirtualDisk.py	Thu Mar 19 17:35:50 2009 -0400
@@ -813,10 +813,10 @@
             return ("sd", 16)
         elif self.bus == "xen":
             return ("xvd", 16)
+        elif self.bus == "fdc" or self.device == self.DEVICE_FLOPPY:
+            return ("fd", 2)
         elif self.bus == "ide":
             return ("hd", 4)
-        elif self.bus == "floppy" or self.device == self.DEVICE_FLOPPY:
-            return ("fd", 2)
         else:
             return (None, None)
 

virtinst-0.400.3-no-default-keymap.patch:

--- NEW FILE virtinst-0.400.3-no-default-keymap.patch ---
diff -r 712276328f75 virtinst/VirtualGraphics.py
--- a/virtinst/VirtualGraphics.py	Wed Apr 08 10:27:20 2009 -0400
+++ b/virtinst/VirtualGraphics.py	Thu Apr 09 09:48:36 2009 -0400
@@ -55,8 +55,9 @@
     def get_keymap(self):
         return self._keymap
     def set_keymap(self, val):
-        if not val:
-            val = _util.default_keymap()
+        if val == None:
+            self._keymap = val
+            return
         if not val or type(val) != type("string"):
             raise ValueError, _("Keymap must be a string")
         if len(val) > 16:

virtinst-0.400.3-updated-trans.patch:

--- NEW FILE virtinst-0.400.3-updated-trans.patch ---
diff -rup virtinst-0.400.3/po/es.po new/po/es.po
--- virtinst-0.400.3/po/es.po	2009-04-09 10:38:31.403059000 -0400
+++ new/po/es.po	2009-04-09 10:38:56.365058000 -0400
@@ -7,7 +7,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: Fedora Spanish Translation of virtinst\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2008-09-10 14:00-0400\n"
+"POT-Creation-Date: 2009-04-09 10:38-0400\n"
 "PO-Revision-Date: 2009-01-20 13:06-0300\n"
 "Last-Translator: héctor daniel cabrera <h.daniel.cabrera at gmail.com>\n"
 "Language-Team: Fedora Spanish <fedora-trans-es at redhat.com>\n"
@@ -15,1419 +15,2136 @@ msgstr ""
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 
-#: virt-clone:45
-msgid "What is the name for the cloned virtual machine?"
-msgstr "¿Cuál es el nombre de la máquina virtual clonada?"
+#: virtinst/CapabilitiesParser.py:172
+#, fuzzy, python-format
+msgid "No domains available for virt type '%(type)s', arch %(arch)s."
+msgstr "No existen dominios disponibles para este huésped."
 
-#: virt-clone:50
-#: virt-clone:60
-#: virt-clone:89
-#: virtinst/cli.py:175
-msgid "ERROR: "
-msgstr "ERROR:"
+#: virtinst/CapabilitiesParser.py:412
+#, python-format
+msgid "for arch '%s'"
+msgstr "para arq '%s'"
 
-#: virt-clone:55
-msgid "What is the name or uuid of the original virtual machine?"
-msgstr "¿Cuál es el nombre o el uuid de la máquina virtual original?"
+#: virtinst/CapabilitiesParser.py:416
+#, fuzzy, python-format
+msgid "virtualization type '%s'"
+msgstr "Tipo de virtualización '%s' no soportada"
 
-#: virt-clone:83
-msgid "What would you like to use as the cloned disk (file path)?"
-msgstr "¿Qué (ruta de archivo) le gustaría utilizar para el disco clonado?"
+#: virtinst/CapabilitiesParser.py:418
+#, fuzzy
+msgid "any virtualization options"
+msgstr "Opciones del Tipo de Virtualización"
 
-#: virt-clone:94
+#: virtinst/CapabilitiesParser.py:420
 #, python-format
-msgid "This will overwrite the existing path '%s'!\n"
-msgstr "Esto sobrescribirá las rutas existentes '%s'!\n"
-
-#: virt-clone:96
-msgid "Do you really want to use this disk (yes or no)?"
-msgstr "¿Realmente quiere utilizar este disco (si o no)?"
+msgid "Host does not support %(virttype)s %(arch)s"
+msgstr ""
 
-#: virt-clone:102
-#: virt-install:202
+#: virtinst/CapabilitiesParser.py:433
 #, python-format
-msgid "Disk %s is already in use by another guest!\n"
-msgstr "¡El disco %s ya está siendo utilizado por otro huésped!\n"
+msgid ""
+"Host does not support domain type '%(domain)s' for virtualization type '%"
+"(virttype)s' arch '%(arch)s'"
+msgstr ""
 
-#: virt-clone:103
-#: virt-install:203
-msgid "Do you really want to use the disk (yes or no)? "
-msgstr "¿Realmente quiere utilizar el disco (si o no)?"
+#: virtinst/cli.py:117
+msgid "Exiting at user request."
+msgstr "Saliendo a pedido del usuario."
 
-#: virt-clone:132
-msgid "Name or uuid for the original guest; The status must be shut off"
-msgstr "Nombre o uuid del huésped original; el status debe ser apagado"
+#: virtinst/cli.py:122
+msgid "Must be root to create Xen guests"
+msgstr "Debe ser root para poder crear un huésped Xen"
 
-#: virt-clone:136
-msgid "Name for the new guest"
-msgstr "Nombre para el nuevo huésped"
+#: virtinst/cli.py:124
+msgid "Could not find usable default libvirt connection."
+msgstr ""
+"No se ha podido encontrar una conexión por defecto libvirt que sea "
+"utilizable. "
 
-#: virt-clone:141
-msgid "New UUID for the clone guest; Default is a randomly generated UUID"
-msgstr "Nuevo UUID para el huésped clonado; por defecto se genera en forma aleatoria una UUID"
+#: virtinst/cli.py:146
+#, python-format
+msgid "Force flag is set but input was required. Prompt was: %s"
+msgstr ""
+"Se ha establecido una señal forzada, pero se necesita una entrada. Se pide: %"
+"s "
 
-#: virt-clone:146
-msgid "New fixed MAC address for the clone guest. Default is a randomly generated MAC"
-msgstr "Nueva dirección MAC adecuada para el huésped clonado. Por defecto se genera en forma aleatoria una MAC "
+#: virtinst/cli.py:149
+#, python-format
+msgid "Prompting disabled, but input was requested. Prompt was: %s"
+msgstr ""
+"Las peticiones están deshabilitadas, pero se solicita una entrada. Se pide: %"
+"s "
 
-#: virt-clone:151
-msgid "New file to use as the disk image for the new guest"
-msgstr "Nuevo archivo para ser usado como imagen de disco para el nuevo huésped"
+#: virtinst/cli.py:169
+#, python-format
+msgid ""
+"Prompting disabled, but yes/no was requested. Try --force to force 'yes' for "
+"such prompts. Prompt was: %s"
+msgstr ""
+"Las peticiones están deshabilitadas, pero se ha solicitado un si/no. Intente "
+"--force para forzar un \"si\" para este tipo de peticiones. Se pide: %s"
 
-#: virt-clone:155
-#: virt-image:128
-#: virt-install:317
-msgid "Connect to hypervisor with URI"
-msgstr "Conectar al hipervisor con URI"
+#: virtinst/cli.py:179 virt-clone:48 virt-clone:69 virt-clone:108
+msgid "ERROR: "
+msgstr "ERROR:"
 
-#: virt-clone:161
-msgid "Force to copy devices (eg, if 'hdc' is a readonly cdrom device, --force-copy=hdc)"
-msgstr "Copiando dispositivos de manera forzada (por ejemplo, si \"hdc\" es un dispositivo cdrom sólo de lectura, --force-copy=hdc)"
+#: virtinst/cli.py:189
+msgid "A name is required for the virtual machine."
+msgstr "Se requiere un nombre para la máquina virtual."
 
-#: virt-clone:166
-msgid "Do not use a sparse file for the clone's disk image"
-msgstr "No utilice un archivo separado para la imagen del disco de lo clonado"
+#: virtinst/cli.py:197
+msgid "Memory amount is required for the virtual machine."
+msgstr "Se requiere una cantidad de memoria para la máquina virtual."
 
-#: virt-clone:171
-msgid "Preserve a new file to use as the disk image for the new guest"
-msgstr "Preserve un archivo nuevo para utilizarlo como la imagen del disco del nuevo huésped "
+#: virtinst/cli.py:199
+#, python-format
+msgid "Installs currently require %d megs of RAM."
+msgstr "La instalación actualmente requiere %d megas de RAM."
 
-#: virt-clone:175
-#: virt-image:137
-#: virt-install:447
-#: virt-pack:109
-msgid "Print debugging information"
-msgstr "Mostrar información de depuración"
+#: virtinst/cli.py:219
+#, python-format
+msgid ""
+"You have asked for more virtual CPUs (%d) than there are physical CPUs (%d) "
+"on the host. This will work, but performance will be poor. Are you sure? "
+"(yes or no)"
+msgstr ""
+"Ha pedido más CPUs virtuales (%d) que los CPUs físicos (%d) en el anfitrión. "
+"Esto podría funcionar, pero el desempeño será pobre. ¿Esta seguro? (si o no)"
 
-#: virt-clone:177
-#: virt-image:143
-msgid "Do not prompt for input. Answers yes where applicable, terminates for all other prompts"
-msgstr "No solicite entrada. Una respuesta positiva, cuando se aplique, finaliza cualquier otra entrada"
+#: virtinst/cli.py:276
+msgid "Unknown network type "
+msgstr "Tipo de red desconocido"
 
-#: virt-clone:194
-msgid "Must be root to clone Xen guests"
-msgstr "Debe ser root para poder clonar huéspedes Xen"
+#: virtinst/cli.py:293
+msgid "Cannot mix both --bridge and --network arguments"
+msgstr "No se pueden mezclar los argumentos de --bridge y de --network"
 
-#: virt-clone:229
-#: virt-image:242
-#: virt-install:697
-msgid "Installation aborted at user request"
-msgstr "Instalación abortada a pedido del usuario"
+#: virtinst/cli.py:310
+msgid "Need to pass equal numbers of networks & mac addresses"
[...14182 lines suppressed...]
 "\n"
@@ -1868,7 +1834,7 @@ msgstr ""
 "\n"
 "开始安装......"
 
-#: virt-install:682 virt-install.orig:682
+#: virt-install:682
 #, python-format
 msgid ""
 "Domain installation does not appear to have been\n"
@@ -1881,7 +1847,7 @@ msgstr ""
 "重启您的域,否则请重\n"
 "新开始安装。"
 
-#: virt-install:693 virt-install.orig:693
+#: virt-install:693
 #, python-format
 msgid ""
 "Guest installation complete... you can restart your domain\n"
@@ -1890,16 +1856,15 @@ msgstr ""
 "客户端安装完成......您可以运行\n"
 " 'virsh start %s' 重启您的域"
 
-#: virt-install:697 virt-install.orig:697
+#: virt-install:697
 msgid "Guest installation complete... restarting guest."
 msgstr "客户端安装完成......重启客户端"
 
-#: virt-install:703 virt-install.orig:703
-#, fuzzy
+#: virt-install:703
 msgid "Guest install interrupted."
-msgstr "客户端安装失败"
+msgstr "客体安装中断。"
 
-#: virt-install:710 virt-install.orig:710
+#: virt-install:710
 #, python-format
 msgid ""
 "Domain installation may not have been\n"
@@ -1912,144 +1877,39 @@ msgstr ""
 "重启您的域,否则请重\n"
 "新开始安装。"
 
-#: virt-install:736 virt-install.orig:736
-#, fuzzy
+#: virt-install:736
 msgid "Guest installation failed."
-msgstr "客户端安装失败"
+msgstr "客体安装失败。"
 
-#: virt-install:746 virt-install.orig:746
-#, fuzzy, python-format
+#: virt-install:746
+#, python-format
 msgid "%d minutes "
-msgstr " %d 分钟"
+msgstr "%d 分钟"
 
-#: virt-install:748 virt-install.orig:748
-#, fuzzy, python-format
+#: virt-install:748
+#, python-format
 msgid ""
 "Domain installation still in progress. Waiting %sfor domain to complete "
 "installation."
-msgstr ""
-"域安装仍在进行。您可以重新连接\n"
-"到控制台以便完成安装进程。"
+msgstr "域安装仍在进行。请等待 %s 完成域安装。"
 
-#: virt-install:754 virt-install.orig:754
+#: virt-install:754
 msgid "Domain has shutdown. Continuing."
 msgstr "域已经关闭。请继续......"
 
-#: virt-install:761 virt-install.orig:761
-#, fuzzy, python-format
+#: virt-install:761
+#, python-format
 msgid "Could not lookup domain after install: %s"
-msgstr "无法查找卷对象:%s"
+msgstr "安装后无法查找域:%s"
 
-#: virt-install:768 virt-install.orig:768
-#, fuzzy
+#: virt-install:768
 msgid "Installation has exceeded specified time limit. Exiting application."
-msgstr "安装已经超过指定的时间限制。取消中。"
+msgstr "安装已经超过指定的时间限制。退出程序。"
 
-#: virt-install:772 virt-install.orig:772
+#: virt-install:772
 msgid ""
 "Domain installation still in progress. You can reconnect to \n"
 "the console to complete the installation process."
 msgstr ""
 "域安装仍在进行。您可以重新连接\n"
 "到控制台以便完成安装进程。"
-
-#~ msgid "Name or UUID of guest to clone is required"
-#~ msgstr "需要要克隆的客户端的名称或者 UUID"
-
-#~ msgid "A valid name or UUID of guest to clone is required"
-#~ msgstr "需要要克隆的客户端的有效名称或者 UUID"
-
-#~ msgid "New file to use for disk image is required"
-#~ msgstr "需要磁盘映像使用的新文件"
-
-#~ msgid "Domain status must be SHUTOFF"
-#~ msgstr "域状态必须是 SHUTOFF"
-
-#~ msgid "Domain %s already exists"
-#~ msgstr "域 %s 已存在"
-
-#, fuzzy
-#~ msgid "Cloning from %(src)s to %(dst)s..."
-#~ msgstr "从 %(src)s 克隆到 %(dst)s"
-
-#~ msgid "Invalid file location given: "
-#~ msgstr "给出的文件位置无效:"
-
-#, fuzzy
-#~ msgid "Invalid file location given: %s: %s"
-#~ msgstr "给出的文件位置无效:"
-
-#~ msgid "Connection does not support HVM virtualisation, cannot boot live CD"
-#~ msgstr "连接不支持 HVM 虚拟化,无法引导 live CD。"
-
-#~ msgid "Storage object name must be a string "
-#~ msgstr "存储对象名称必须是一个字符串"
-
-#~ msgid "Storage object name can not be only "
-#~ msgstr "存储对象名称不能只是"
-
-#~ msgid "Storage object name can only contain "
-#~ msgstr "存储对象名称只能包含"
-
-#~ msgid "'%s' is not managed on remote host: %s"
-#~ msgstr "远程主机中不管理 '%s':%s"
-
-#~ msgid "Cannot parse capabilities"
-#~ msgstr "无法解析容量"
-
-#~ msgid "Only one of --pxe, --location and --cdrom can be used"
-#~ msgstr "只能使用 --pxe、--location 和 --cdrom 之一"
-
-#~ msgid "location must be specified for paravirtualized guests."
-#~ msgstr "必须为半虚拟客户端指定位置。"
-
-#~ msgid "Domain installation still in progress. Waiting"
-#~ msgstr "域安装仍在进行,请等待"
-
-#~ msgid ""
-#~ "UUID for the guest; if none is given a random UUID will be generated. If "
-#~ "you specify UUID, you should use a 32-digit hexadecimal number."
-#~ msgstr ""
-#~ "客户端的 UUID;如果没有给定则会随机生成 UUID。如果指定 UUID,则应该使用 "
-#~ "32 位十六进制数字。"
-
-#~ msgid ""
-#~ "Total time to wait for VM to shutdown if console not present. Time less "
-#~ "than 0 waits indefinitely."
-#~ msgstr "控制台没有出现时等待 VM 关闭的总时间。如果时间小于 0 则一定要等待。"
-
-#~ msgid "The image name and version must be present"
-#~ msgstr "必须有映像名称和版本"
-
-#~ msgid "Scratch disk %s does not have a size attribute"
-#~ msgstr "暂存盘 %s 没有大小属性"
-
-#~ msgid "Disk file %s could not be found"
-#~ msgstr "无法找到磁盘文件 %s"
-
-#~ msgid "Writing %s"
-#~ msgstr "写入 %s"
-
-#~ msgid "Directory in which packaged file will be put"
-#~ msgstr "放入打包文件的目录"
-
-#~ msgid "The image descriptor must contain name and version"
-#~ msgstr "映像描述符必须含有名称和版本"
-
-#~ msgid "Validation failed: %s"
-#~ msgstr "确认失败:%s"
-
-#~ msgid "Packaging failed: %s"
-#~ msgstr "打包失败:%s"
-
-#~ msgid "Cloning domain..."
-#~ msgstr "克隆域......"
-
-#~ msgid "NFS installations are only supported as root"
-#~ msgstr "只在根用户中支持 NFS 安装"
-
-#~ msgid "Verifying install location..."
-#~ msgstr "确认安装位置......"
-
-#~ msgid "Unsupported virtualization type"
-#~ msgstr "不支持的虚拟化类型"


Index: python-virtinst.spec
===================================================================
RCS file: /cvs/pkgs/rpms/python-virtinst/devel/python-virtinst.spec,v
retrieving revision 1.63
retrieving revision 1.64
diff -u -r1.63 -r1.64
--- python-virtinst.spec	3 Apr 2009 18:24:57 -0000	1.63
+++ python-virtinst.spec	9 Apr 2009 15:11:55 -0000	1.64
@@ -23,6 +23,12 @@
 Patch2: %{appname}-%{version}-hostdev-libvirt-calls.patch
 Patch3: %{appname}-%{version}-spanish-trans.patch
 Patch4: %{appname}-%{version}-selinux-context.patch
+# Rawhide/F11 can auto detect keymapping (bz 487735)
+Patch5: %{appname}-%{version}-no-default-keymap.patch
+# Fix generating device name for floppy device (bz 493408)
+Patch6: %{appname}-%{version}-fix-floppy-dev.patch
+# F11 Translations (bz 493944 and bz 494358)
+Patch7: %{appname}-%{version}-updated-trans.patch
 License: GPLv2+
 Group: Development/Libraries
 BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n)
@@ -37,6 +43,7 @@
 Requires: urlgrabber
 Requires: libxml2-python
 Requires: python-urlgrabber
+Requires: libselinux-python
 BuildRequires: gettext
 BuildRequires: python-devel
 
@@ -52,6 +59,9 @@
 %patch2 -p1
 %patch3 -p1
 %patch4 -p1
+%patch5 -p1
+%patch6 -p1
+%patch7 -p1
 
 %build
 python setup.py build
@@ -87,10 +97,15 @@
 %{_bindir}/virt-convert
 
 %changelog
-* Fri Apr  3 2009 Daniel P. Berrange <berrange at redhat.com> - 0.400.4-fc11
+* Thu Apr 9 2009 Cole Robinson <crobinso at redhat.com> - 0.400.3-5.fc11
+- Don't set a keymap if user doesn't specify one (bz 487737)
+- Fix adding floppy devices (bz 493408)
+- Updated translations (bz 493944, bz 494358)
+
+* Fri Apr  3 2009 Daniel P. Berrange <berrange at redhat.com> - 0.400.3-4.fc11
 - Attempt to fix SELinux labelling on CDROM ISOs used for installation
 
-* Fri Apr  3 2009 Daniel P. Berrange <berrange at redhat.com> - 0.400.3-fc11
+* Fri Apr  3 2009 Daniel P. Berrange <berrange at redhat.com> - 0.400.3-3.fc11
 - Set SELinux context on $HOME/.virtinst to make kernel/initrd boot work (rhbz #491052)
 
 * Mon Mar 23 2009 Cole Robinson <crobinso at redhat.com> - 0.400.3-2.fc11

virtinst-0.400.3-selinux-context.patch:

Index: virtinst-0.400.3-selinux-context.patch
===================================================================
RCS file: /cvs/pkgs/rpms/python-virtinst/devel/virtinst-0.400.3-selinux-context.patch,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -r1.2 -r1.3
--- virtinst-0.400.3-selinux-context.patch	3 Apr 2009 18:24:57 -0000	1.2
+++ virtinst-0.400.3-selinux-context.patch	9 Apr 2009 15:11:55 -0000	1.3
@@ -32,11 +32,11 @@
 +            self.parseXML(node)
 +
 +    def parseXML(self, node):
-+        child = node.children
-+        if child.name == "model":
-+            self.model = child.content
-+        elif cihld.name == "doi":
-+            self.doi == child.content
++        for child in node.children or []:
++           if child.name == "model":
++                self.model = child.content
++           elif child.name == "doi":
++                self.doi = child.content
 +
  class Capabilities(object):
      def __init__(self, node = None):
@@ -116,8 +116,8 @@
 +        if self.device != VirtualDisk.DEVICE_CDROM:
 +            return
 +
-+        caps = parseCapabilities(self.conn.getCapabilities())
-+        if caps.host.secmodel is None:
++        caps = self._caps
++        if not caps or caps.host.secmodel is None:
 +            logging.info("No security model active")
 +            return
 +        if caps.host.secmodel.model != "selinux":
@@ -134,7 +134,7 @@
 +                logging.info("Labelling is correct")
 +                return
 +
-+            if _util.is_uri_remote(self.conn.getURI()):
++            if self._is_remote():
 +                raise ValueError, _("Install volume %s has incorrect SELinux label %s, expecting %s" %
 +                                    (self.path, label, wantLabel))
 +            else:
@@ -147,7 +147,7 @@
 +                    logging.info("Labelling is correct")
 +                    return
 +
-+                if _util.is_remote_uri(self.conn.URI()):
++                if self._is_remote():
 +                    raise ValueError, _("Install volume %s has incorrect SELinux label %s, expecting %s" %
 +                                        (self.path, label, wantLabel))
 +                else:




More information about the Fedora-virt-maint mailing list