From nobody Thu Dec 26 20:48:50 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of ovirt.org designates 66.187.230.42 as permitted sender) client-ip=66.187.230.42; envelope-from=kimchi-devel-bounces@ovirt.org; helo=lists.ovirt.org; Authentication-Results: mx.zoho.com; spf=pass (zoho.com: domain of ovirt.org designates 66.187.230.42 as permitted sender) smtp.mailfrom=kimchi-devel-bounces@ovirt.org; Return-Path: Received: from lists.ovirt.org (lists.phx.ovirt.org [66.187.230.42]) by mx.zohomail.com with SMTPS id 1488993650760875.8435526379685; Wed, 8 Mar 2017 09:20:50 -0800 (PST) Received: from lists.phx.ovirt.org (localhost [127.0.0.1]) by lists.ovirt.org (Postfix) with ESMTP id A825782061B; Wed, 8 Mar 2017 17:20:48 +0000 (UTC) Received: from mx0a-001b2d01.pphosted.com (mx0b-001b2d01.pphosted.com [148.163.158.5]) by lists.ovirt.org (Postfix) with ESMTPS id C3638820557 for ; Wed, 8 Mar 2017 17:20:08 +0000 (UTC) Received: from pps.filterd (m0098416.ppops.net [127.0.0.1]) by mx0b-001b2d01.pphosted.com (8.16.0.20/8.16.0.20) with SMTP id v28HImL5138138 for ; Wed, 8 Mar 2017 12:20:08 -0500 Received: from e24smtp01.br.ibm.com (e24smtp01.br.ibm.com [32.104.18.85]) by mx0b-001b2d01.pphosted.com with ESMTP id 292mrjd0qg-1 (version=TLSv1.2 cipher=AES256-SHA bits=256 verify=NOT) for ; Wed, 08 Mar 2017 12:20:08 -0500 Received: from localhost by e24smtp01.br.ibm.com with IBM ESMTP SMTP Gateway: Authorized Use Only! Violators will be prosecuted for from ; Wed, 8 Mar 2017 14:20:05 -0300 Received: from d24relay03.br.ibm.com (9.18.232.225) by e24smtp01.br.ibm.com (10.172.0.143) with IBM ESMTP SMTP Gateway: Authorized Use Only! Violators will be prosecuted; Wed, 8 Mar 2017 14:20:02 -0300 Received: from d24av03.br.ibm.com (d24av03.br.ibm.com [9.8.31.95]) by d24relay03.br.ibm.com (8.14.9/8.14.9/NCO v10.0) with ESMTP id v28HK17N32964622 for ; Wed, 8 Mar 2017 14:20:01 -0300 Received: from d24av03.br.ibm.com (localhost [127.0.0.1]) by d24av03.br.ibm.com (8.14.4/8.14.4/NCO v10.0 AVout) with ESMTP id v28HK1ZW018594 for ; Wed, 8 Mar 2017 14:20:01 -0300 Received: from jarvis.ibmmodules.com ([9.80.212.187]) by d24av03.br.ibm.com (8.14.4/8.14.4/NCO v10.0 AVin) with ESMTP id v28HJwRs018464 for ; Wed, 8 Mar 2017 14:20:01 -0300 X-Original-To: kimchi-devel@ovirt.org From: Ramon Medeiros To: Kimchi Devel Date: Wed, 8 Mar 2017 14:19:49 -0300 X-Mailer: git-send-email 2.9.3 In-Reply-To: <20170308171951.8016-1-ramonn@linux.vnet.ibm.com> References: <20170308171951.8016-1-ramonn@linux.vnet.ibm.com> X-TM-AS-MML: disable x-cbid: 17030817-1523-0000-0000-00000287F049 X-IBM-AV-DETECTION: SAVI=unused REMOTE=unused XFE=unused x-cbparentid: 17030817-1524-0000-0000-00002A1E043F Message-Id: <20170308171951.8016-2-ramonn@linux.vnet.ibm.com> X-Proofpoint-Virus-Version: vendor=fsecure engine=2.50.10432:, , definitions=2017-03-08_13:, , signatures=0 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 spamscore=0 suspectscore=0 malwarescore=0 phishscore=0 adultscore=0 bulkscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.0.1-1702020001 definitions=main-1703080137 Subject: [Kimchi-devel] [PATCH] [Kimchi 1/3] Allow disks to update cache and io flags X-BeenThere: kimchi-devel@ovirt.org X-Mailman-Version: 2.1.12 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Sender: kimchi-devel-bounces@ovirt.org Errors-To: kimchi-devel-bounces@ovirt.org X-ZohoMail: RSF_0 Z_629925259 SPT_0 Content-Type: text/plain; charset="utf-8" This is a part of Bug fix #1092 solution Signed-off-by: Ramon Medeiros --- API.json | 11 ++++++++++- docs/API.md | 3 +++ i18n.py | 1 - model/vmstorages.py | 51 +++++++++++++++++++++++++++++++++----------------= -- xmlutils/disk.py | 12 +++++++++++- 5 files changed, 57 insertions(+), 21 deletions(-) diff --git a/API.json b/API.json index 5729e5d..abe980c 100644 --- a/API.json +++ b/API.json @@ -761,8 +761,17 @@ "description": "Path of iso image file or disk mount p= oint", "type": "string", "pattern": "^(|(/)|(http)[s]?:|[t]?(ftp)[s]?:)+.*$", - "required": true, "error": "KCHVMSTOR0003E" + }, + "cache": { + "description": "Cache options", + "type": "string", + "pattern": "^(none|writethrough|writeback|directsync|u= nsafe|default)$" + }, + "io": { + "description": "I/O options", + "type": "string", + "pattern": "^(native|threads|default)$" } }, "additionalProperties": false diff --git a/docs/API.md b/docs/API.md index 3ecc7a0..6f00600 100644 --- a/docs/API.md +++ b/docs/API.md @@ -253,6 +253,9 @@ Represents a snapshot of the Virtual Machine's primary = monitor. * bus: Bus type of disk attached. * **PUT**: Update storage information * path: Path of cdrom iso. Can not be blank. Now just support cdrom ty= pe. + * io: IO settings for disks. Values accepted: native, threads and defa= ult. + * cache: Cache settings for disks. Values accepted: none, writethrough, + writeback, directsync, unsafe and default. * **DELETE**: Remove the storage. =20 **Actions (POST):** diff --git a/i18n.py b/i18n.py index 4460ce5..4bb3a4f 100644 --- a/i18n.py +++ b/i18n.py @@ -327,7 +327,6 @@ messages =3D { =20 "KCHVMSTOR0002E": _("Invalid storage type. Types supported: 'cdrom', '= disk'"), "KCHVMSTOR0003E": _("The path '%(value)s' is not a valid local/remote = path for the device"), - "KCHVMSTOR0006E": _("Only CDROM path can be update."), "KCHVMSTOR0007E": _("The storage device %(dev_name)s does not exist in= the virtual machine %(vm_name)s"), "KCHVMSTOR0008E": _("Error while creating new storage device: %(error)= s"), "KCHVMSTOR0009E": _("Error while updating storage device: %(error)s"), diff --git a/model/vmstorages.py b/model/vmstorages.py index db68121..007e88c 100644 --- a/model/vmstorages.py +++ b/model/vmstorages.py @@ -1,7 +1,7 @@ # # Project Kimchi # -# Copyright IBM Corp, 2015-2016 +# Copyright IBM Corp, 2015-2017 # # This library is free software; you can redistribute it and/or # modify it under the terms of the GNU Lesser General Public @@ -35,7 +35,6 @@ from wok.plugins.kimchi.utils import create_disk_image, i= s_s390x from wok.plugins.kimchi.xmlutils.disk import get_device_node, get_disk_xml from wok.plugins.kimchi.xmlutils.disk import get_vm_disk_info, get_vm_disks =20 - HOTPLUG_TYPE =3D ['scsi', 'virtio'] =20 =20 @@ -232,26 +231,42 @@ class VMStorageModel(object): dom =3D VMModel.get_vm(vm_name, self.conn) =20 dev_info =3D self.lookup(vm_name, dev_name) + + # only change path to cdrom devices if dev_info['type'] !=3D 'cdrom': - raise InvalidOperation("KCHVMSTOR0006E") + old_dev, old_xml =3D get_disk_xml(dev_info) + dev_info.update(params) + dev, xml =3D get_disk_xml(dev_info) =20 - params['path'] =3D params.get('path', '') - old_disk_path =3D dev_info['path'] - new_disk_path =3D params['path'] - if new_disk_path !=3D old_disk_path: - # An empty path means a CD-ROM was empty or ejected: - if old_disk_path is not '': - old_disk_used_by =3D get_disk_used_by(self.conn, old_disk_= path) - if new_disk_path is not '': - new_disk_used_by =3D get_disk_used_by(self.conn, new_disk_= path) + # remove + self.delete(vm_name, dev_name) =20 - dev_info.update(params) - dev, xml =3D get_disk_xml(dev_info) + try: + dom.attachDeviceFlags(xml) + except Exception as e: + dom.attachDeviceFlags(old_xml) + raise OperationFailed("KCHVMSTOR0009E", {'error': e.messag= e}) =20 - try: - dom.updateDeviceFlags(xml, get_vm_config_flag(dom, 'all')) - except Exception as e: - raise OperationFailed("KCHVMSTOR0009E", {'error': e.message}) + else: + dev_info.update(params) + dev, xml =3D get_disk_xml(dev_info) + + params['path'] =3D params.get('path', '') + old_disk_path =3D dev_info['path'] + new_disk_path =3D params['path'] + if new_disk_path !=3D old_disk_path: + # An empty path means a CD-ROM was empty or ejected: + if old_disk_path is not '': + old_disk_used_by =3D get_disk_used_by(self.conn, + old_disk_path) + if new_disk_path is not '': + new_disk_used_by =3D get_disk_used_by(self.conn, + new_disk_path) + + try: + dom.updateDeviceFlags(xml, get_vm_config_flag(dom, 'all')) + except Exception as e: + raise OperationFailed("KCHVMSTOR0009E", {'error': e.messag= e}) =20 try: if old_disk_used_by is not None and \ diff --git a/xmlutils/disk.py b/xmlutils/disk.py index 8edb991..9a9987a 100644 --- a/xmlutils/disk.py +++ b/xmlutils/disk.py @@ -1,7 +1,7 @@ # # Project Kimchi # -# Copyright IBM Corp, 2015-2016 +# Copyright IBM Corp, 2015-2017 # # This library is free software; you can redistribute it and/or # modify it under the terms of the GNU Lesser General Public @@ -50,6 +50,8 @@ def get_disk_xml(params): if disk_type is None: disk_type =3D _get_disk_type(path) if len(path) > 0 else 'file' disk =3D E.disk(type=3Ddisk_type, device=3Dparams['type']) + + # driver =3D E.driver(name=3D'qemu', type=3Dparams['format']) if params['type'] !=3D 'cdrom': driver.set('cache', 'none') @@ -57,6 +59,14 @@ def get_disk_xml(params): if params.get('pool_type') =3D=3D "netfs": driver.set("io", "native") =20 + # set io + if params.get("io") is not None: + driver.set("io", params.get("io")) + + # set cache + if params.get("cache") is not None: + driver.set("cache", params.get("cache")) + disk.append(driver) =20 # Get device name according to bus and index values --=20 2.9.3 _______________________________________________ Kimchi-devel mailing list Kimchi-devel@ovirt.org http://lists.ovirt.org/mailman/listinfo/kimchi-devel From nobody Thu Dec 26 20:48:50 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of ovirt.org designates 66.187.230.42 as permitted sender) client-ip=66.187.230.42; envelope-from=kimchi-devel-bounces@ovirt.org; helo=lists.ovirt.org; Authentication-Results: mx.zoho.com; spf=pass (zoho.com: domain of ovirt.org designates 66.187.230.42 as permitted sender) smtp.mailfrom=kimchi-devel-bounces@ovirt.org; Return-Path: Received: from lists.ovirt.org (lists.phx.ovirt.org [66.187.230.42]) by mx.zohomail.com with SMTPS id 1488993659732894.4424062420065; Wed, 8 Mar 2017 09:20:59 -0800 (PST) Received: from lists.phx.ovirt.org (localhost [127.0.0.1]) by lists.ovirt.org (Postfix) with ESMTP id CFE3B82063D; Wed, 8 Mar 2017 17:20:57 +0000 (UTC) Received: from mx0a-001b2d01.pphosted.com (mx0a-001b2d01.pphosted.com [148.163.156.1]) by lists.ovirt.org (Postfix) with ESMTPS id 8049F820557 for ; Wed, 8 Mar 2017 17:20:09 +0000 (UTC) Received: from pps.filterd (m0098409.ppops.net [127.0.0.1]) by mx0a-001b2d01.pphosted.com (8.16.0.20/8.16.0.20) with SMTP id v28HImkI042439 for ; Wed, 8 Mar 2017 12:20:09 -0500 Received: from e24smtp04.br.ibm.com (e24smtp04.br.ibm.com [32.104.18.25]) by mx0a-001b2d01.pphosted.com with ESMTP id 292hvqdwe7-1 (version=TLSv1.2 cipher=AES256-SHA bits=256 verify=NOT) for ; Wed, 08 Mar 2017 12:20:08 -0500 Received: from localhost by e24smtp04.br.ibm.com with IBM ESMTP SMTP Gateway: Authorized Use Only! Violators will be prosecuted for from ; Wed, 8 Mar 2017 14:20:05 -0300 Received: from d24relay02.br.ibm.com (9.18.232.42) by e24smtp04.br.ibm.com (10.172.0.140) with IBM ESMTP SMTP Gateway: Authorized Use Only! Violators will be prosecuted; Wed, 8 Mar 2017 14:20:03 -0300 Received: from d24av03.br.ibm.com (d24av03.br.ibm.com [9.8.31.95]) by d24relay02.br.ibm.com (8.14.9/8.14.9/NCO v10.0) with ESMTP id v28HK2F730736522 for ; Wed, 8 Mar 2017 14:20:03 -0300 Received: from d24av03.br.ibm.com (localhost [127.0.0.1]) by d24av03.br.ibm.com (8.14.4/8.14.4/NCO v10.0 AVout) with ESMTP id v28HK3Vl018618 for ; Wed, 8 Mar 2017 14:20:03 -0300 Received: from jarvis.ibmmodules.com ([9.80.212.187]) by d24av03.br.ibm.com (8.14.4/8.14.4/NCO v10.0 AVin) with ESMTP id v28HJwRt018464 for ; Wed, 8 Mar 2017 14:20:02 -0300 X-Original-To: kimchi-devel@ovirt.org From: Ramon Medeiros To: Kimchi Devel Date: Wed, 8 Mar 2017 14:19:50 -0300 X-Mailer: git-send-email 2.9.3 In-Reply-To: <20170308171951.8016-1-ramonn@linux.vnet.ibm.com> References: <20170308171951.8016-1-ramonn@linux.vnet.ibm.com> X-TM-AS-MML: disable x-cbid: 17030817-0028-0000-0000-0000019DAA89 X-IBM-AV-DETECTION: SAVI=unused REMOTE=unused XFE=unused x-cbparentid: 17030817-0029-0000-0000-0000149BC46C Message-Id: <20170308171951.8016-3-ramonn@linux.vnet.ibm.com> X-Proofpoint-Virus-Version: vendor=fsecure engine=2.50.10432:, , definitions=2017-03-08_13:, , signatures=0 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 spamscore=0 suspectscore=0 malwarescore=0 phishscore=0 adultscore=0 bulkscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.0.1-1702020001 definitions=main-1703080137 Subject: [Kimchi-devel] [PATCH] [Kimchi 2/3] Bug fix #1091: Allow to set disk performance options per guest and template X-BeenThere: kimchi-devel@ovirt.org X-Mailman-Version: 2.1.12 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Sender: kimchi-devel-bounces@ovirt.org Errors-To: kimchi-devel-bounces@ovirt.org X-ZohoMail: RSF_0 Z_629925259 SPT_0 Content-Type: text/plain; charset="utf-8" Allow vmstorage creation passing disk bus Signed-off-by: Ramon Medeiros --- model/vmstorages.py | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/model/vmstorages.py b/model/vmstorages.py index 007e88c..bf55300 100644 --- a/model/vmstorages.py +++ b/model/vmstorages.py @@ -91,7 +91,9 @@ class VMStoragesModel(object): raise InvalidParameter("KCHVMSTOR0019E") =20 dom =3D VMModel.get_vm(vm_name, self.conn) - params['bus'] =3D _get_device_bus(params['type'], dom) + + if params.get('bus') is None: + params['bus'] =3D _get_device_bus(params['type'], dom) =20 if is_s390x() and params['type'] =3D=3D 'disk' and 'dir_path' in p= arams: if 'format' not in params: --=20 2.9.3 _______________________________________________ Kimchi-devel mailing list Kimchi-devel@ovirt.org http://lists.ovirt.org/mailman/listinfo/kimchi-devel From nobody Thu Dec 26 20:48:50 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of ovirt.org designates 66.187.230.42 as permitted sender) client-ip=66.187.230.42; envelope-from=kimchi-devel-bounces@ovirt.org; helo=lists.ovirt.org; Authentication-Results: mx.zoho.com; spf=pass (zoho.com: domain of ovirt.org designates 66.187.230.42 as permitted sender) smtp.mailfrom=kimchi-devel-bounces@ovirt.org; Return-Path: Received: from lists.ovirt.org (lists.phx.ovirt.org [66.187.230.42]) by mx.zohomail.com with SMTPS id 1488993670923297.0331335111248; Wed, 8 Mar 2017 09:21:10 -0800 (PST) Received: from lists.phx.ovirt.org (localhost [127.0.0.1]) by lists.ovirt.org (Postfix) with ESMTP id 08F938205F6; Wed, 8 Mar 2017 17:21:09 +0000 (UTC) Received: from mx0a-001b2d01.pphosted.com (mx0b-001b2d01.pphosted.com [148.163.158.5]) by lists.ovirt.org (Postfix) with ESMTPS id DCD35820557 for ; Wed, 8 Mar 2017 17:20:09 +0000 (UTC) Received: from pps.filterd (m0098421.ppops.net [127.0.0.1]) by mx0a-001b2d01.pphosted.com (8.16.0.20/8.16.0.20) with SMTP id v28HIlQ1079742 for ; Wed, 8 Mar 2017 12:20:09 -0500 Received: from e24smtp01.br.ibm.com (e24smtp01.br.ibm.com [32.104.18.85]) by mx0a-001b2d01.pphosted.com with ESMTP id 292mscvwyg-1 (version=TLSv1.2 cipher=AES256-SHA bits=256 verify=NOT) for ; Wed, 08 Mar 2017 12:20:08 -0500 Received: from localhost by e24smtp01.br.ibm.com with IBM ESMTP SMTP Gateway: Authorized Use Only! Violators will be prosecuted for from ; Wed, 8 Mar 2017 14:20:06 -0300 Received: from d24relay02.br.ibm.com (9.18.232.42) by e24smtp01.br.ibm.com (10.172.0.143) with IBM ESMTP SMTP Gateway: Authorized Use Only! Violators will be prosecuted; Wed, 8 Mar 2017 14:20:05 -0300 Received: from d24av03.br.ibm.com (d24av03.br.ibm.com [9.8.31.95]) by d24relay02.br.ibm.com (8.14.9/8.14.9/NCO v10.0) with ESMTP id v28HK4pP26411234 for ; Wed, 8 Mar 2017 14:20:04 -0300 Received: from d24av03.br.ibm.com (localhost [127.0.0.1]) by d24av03.br.ibm.com (8.14.4/8.14.4/NCO v10.0 AVout) with ESMTP id v28HK4QE018649 for ; Wed, 8 Mar 2017 14:20:04 -0300 Received: from jarvis.ibmmodules.com ([9.80.212.187]) by d24av03.br.ibm.com (8.14.4/8.14.4/NCO v10.0 AVin) with ESMTP id v28HJwRu018464 for ; Wed, 8 Mar 2017 14:20:03 -0300 X-Original-To: kimchi-devel@ovirt.org From: Ramon Medeiros To: Kimchi Devel Date: Wed, 8 Mar 2017 14:19:51 -0300 X-Mailer: git-send-email 2.9.3 In-Reply-To: <20170308171951.8016-1-ramonn@linux.vnet.ibm.com> References: <20170308171951.8016-1-ramonn@linux.vnet.ibm.com> MIME-Version: 1.0 X-TM-AS-MML: disable x-cbid: 17030817-1523-0000-0000-00000287F04A X-IBM-AV-DETECTION: SAVI=unused REMOTE=unused XFE=unused x-cbparentid: 17030817-1524-0000-0000-00002A1E0441 Message-Id: <20170308171951.8016-4-ramonn@linux.vnet.ibm.com> X-Proofpoint-Virus-Version: vendor=fsecure engine=2.50.10432:, , definitions=2017-03-08_13:, , signatures=0 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 spamscore=0 suspectscore=0 malwarescore=0 phishscore=0 adultscore=0 bulkscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.0.1-1702020001 definitions=main-1703080137 Subject: [Kimchi-devel] [PATCH] [Kimchi 3/3] Add tests to verify if cache and io of a disk can be changed X-BeenThere: kimchi-devel@ovirt.org X-Mailman-Version: 2.1.12 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Sender: kimchi-devel-bounces@ovirt.org Errors-To: kimchi-devel-bounces@ovirt.org X-ZohoMail: RSF_0 Z_629925259 SPT_0 Signed-off-by: Ramon Medeiros --- tests/test_rest.py | 28 ++++++++++++++++++++++++++++ 1 file changed, 28 insertions(+) diff --git a/tests/test_rest.py b/tests/test_rest.py index 852e4bd..a9f92fe 100644 --- a/tests/test_rest.py +++ b/tests/test_rest.py @@ -330,6 +330,34 @@ class RestTests(unittest.TestCase): resp =3D self.request('/plugins/kimchi/vms/=E2=88=A8=D0=BC-=D1=86= =D1=80d=CE=B1t=D0=B5d', req, 'PUT') self.assertEquals(400, resp.status) =20 + # add volume as scsi + mock_base =3D '/tmp/mock.img' + os.system("qemu-img create -f qcow2 %s 100M" % mock_base) + req =3D json.dumps({'type': 'disk', + 'path': mock_base, + 'bus': 'scsi'}) + resp =3D self.request('/plugins/kimchi/vms/=E2=88=A8=D0=BC-=D1=86= =D1=80d=CE=B1t=D0=B5d/storages', + req, 'POST') + self.assertEquals(201, resp.status) + resp =3D json.loads(resp.read()) + self.assertEquals("scsi", resp["bus"]) + dev =3D resp["dev"] + + # change io/cache + req =3D json.dumps({"io": "threads", "cache": "unsafe"}) + resp =3D self.request('/plugins/kimchi/vms/=E2=88=A8=D0=BC-=D1=86= =D1=80d=CE=B1t=D0=B5d/storages/' + + str(dev), req, 'PUT') + self.assertEquals(200, resp.status) + resp =3D json.loads(resp.read()) + self.assertEquals('threads', resp['io']) + self.assertEquals('unsafe', resp['cache']) + + # remove disk + resp =3D self.request('/plugins/kimchi/vms/=E2=88=A8=D0=BC-=D1=86= =D1=80d=CE=B1t=D0=B5d/storages/' + + str(dev), req, 'DELETE') + os.system("rm -rf " + mock_base) + self.assertEquals(204, resp.status) + def test_vm_lifecycle(self): # Create a Template req =3D json.dumps({'name': 'test', --=20 2.9.3 _______________________________________________ Kimchi-devel mailing list Kimchi-devel@ovirt.org http://lists.ovirt.org/mailman/listinfo/kimchi-devel