From nobody Sat Jul 27 02:53:23 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 1490052546844211.05497213917636; Mon, 20 Mar 2017 16:29:06 -0700 (PDT) Received: from lists.phx.ovirt.org (localhost [127.0.0.1]) by lists.ovirt.org (Postfix) with ESMTP id E6E4B8204E8; Mon, 20 Mar 2017 23:29:05 +0000 (UTC) Received: from mx0a-001b2d01.pphosted.com (mx0b-001b2d01.pphosted.com [148.163.158.5]) by lists.ovirt.org (Postfix) with ESMTPS id BA6DA820650 for ; Mon, 20 Mar 2017 23:28:10 +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 v2KNO0hD054488 for ; Mon, 20 Mar 2017 19:28:10 -0400 Received: from e24smtp02.br.ibm.com (e24smtp02.br.ibm.com [32.104.18.86]) by mx0b-001b2d01.pphosted.com with ESMTP id 29amb5tqs8-1 (version=TLSv1.2 cipher=AES256-SHA bits=256 verify=NOT) for ; Mon, 20 Mar 2017 19:28:09 -0400 Received: from localhost by e24smtp02.br.ibm.com with IBM ESMTP SMTP Gateway: Authorized Use Only! Violators will be prosecuted for from ; Mon, 20 Mar 2017 20:28:07 -0300 Received: from d24relay02.br.ibm.com (9.18.232.42) by e24smtp02.br.ibm.com (10.172.0.142) with IBM ESMTP SMTP Gateway: Authorized Use Only! Violators will be prosecuted; Mon, 20 Mar 2017 20:28:06 -0300 Received: from d24av04.br.ibm.com (d24av04.br.ibm.com [9.8.31.97]) by d24relay02.br.ibm.com (8.14.9/8.14.9/NCO v10.0) with ESMTP id v2KNS5qR39714892 for ; Mon, 20 Mar 2017 20:28:05 -0300 Received: from d24av04.br.ibm.com (localhost [127.0.0.1]) by d24av04.br.ibm.com (8.14.4/8.14.4/NCO v10.0 AVout) with ESMTP id v2KNS5H7025381 for ; Mon, 20 Mar 2017 20:28:05 -0300 Received: from jarvis.ibmmodules.com ([9.85.180.226]) by d24av04.br.ibm.com (8.14.4/8.14.4/NCO v10.0 AVin) with ESMTP id v2KNRuZa025337 for ; Mon, 20 Mar 2017 20:28:04 -0300 X-Original-To: kimchi-devel@ovirt.org From: Ramon Medeiros To: Kimchi Devel Date: Mon, 20 Mar 2017 20:27:50 -0300 X-Mailer: git-send-email 2.9.3 In-Reply-To: <20170320232750.31603-1-ramonn@linux.vnet.ibm.com> References: <20170320232750.31603-1-ramonn@linux.vnet.ibm.com> MIME-Version: 1.0 X-TM-AS-MML: disable x-cbid: 17032023-0020-0000-0000-00000295FAE4 X-IBM-AV-DETECTION: SAVI=unused REMOTE=unused XFE=unused x-cbparentid: 17032023-0021-0000-0000-000030B21F28 Message-Id: <20170320232750.31603-5-ramonn@linux.vnet.ibm.com> X-Proofpoint-Virus-Version: vendor=fsecure engine=2.50.10432:, , definitions=2017-03-20_18:, , 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-1703200198 Subject: [Kimchi-devel] [PATCH] [Kimchi 4/4] 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 Tests run both on update and template creation Signed-off-by: Ramon Medeiros --- tests/test_rest.py | 72 ++++++++++++++++++++++++++++++++++++++++++++++++++= +++- 1 file changed, 71 insertions(+), 1 deletion(-) diff --git a/tests/test_rest.py b/tests/test_rest.py index 852e4bd..96a5216 100644 --- a/tests/test_rest.py +++ b/tests/test_rest.py @@ -151,10 +151,35 @@ class RestTests(unittest.TestCase): self.assertEquals(200, resp.status) =20 def test_edit_vm(self): + disks =3D [ + {'index': 0, 'size': 10, 'format': 'qcow2', + 'pool': {"name": "/plugins/kimchi/storagepools/default-pool"}= }, + {'index': 1, 'size': 10, 'format': 'qcow2', 'io': 'threads', + 'cache': 'unsafe', 'bus': 'scsi', + 'pool': {"name": "/plugins/kimchi/storagepools/default-pool"}= }] + req =3D json.dumps({'name': 'test', - 'source_media': {'type': 'disk', 'path': fake_is= o}}) + 'source_media': {'type': 'disk', 'path': fake_is= o}, + 'disks': disks}) + resp =3D self.request('/plugins/kimchi/templates', req, 'POST') self.assertEquals(201, resp.status) + resp =3D json.loads(resp.read()) + + # update template storage + req =3D json.dumps({'disks': [ + {'index': 0, 'size': 10, 'format': 'qcow2', + 'pool': {"name": "/plugins/kimchi/storagepools/default-pool"}, + 'io': 'threads', 'cache': 'unsafe', 'bus': 'virtio'}, + {'index': 1, 'size': 10, 'format': 'qcow2', 'io': 'threads', + 'cache': 'unsafe', 'bus': 'scsi', + 'pool': {"name": "/plugins/kimchi/storagepools/default-pool"}= }]}) + resp =3D self.request('/plugins/kimchi/templates/' + str(resp["nam= e"]), + req, 'PUT') + resp =3D json.loads(resp.read()) + self.assertEquals(resp['disks'][0]['bus'], 'virtio') + self.assertEquals(resp['disks'][0]['cache'], 'unsafe') + self.assertEquals(resp['disks'][0]['io'], 'threads') =20 req =3D json.dumps({'name': 'vm-1', 'template': '/plugins/kimchi/templates/test'}) @@ -166,6 +191,23 @@ class RestTests(unittest.TestCase): vm =3D json.loads(self.request('/plugins/kimchi/vms/vm-1').read()) self.assertEquals('vm-1', vm['name']) =20 + # test vm storage + storages =3D json.loads( + self.request('/plugins/kimchi/vms/vm-1/storages').read()) + self.assertEquals(len(storages), 3) + + # test sdb disk + resp =3D self.request('/plugins/kimchi/vms/vm-1/storages/sdb', 'GE= T') + self.assertEquals(resp.status, 200) + scsi_disk =3D json.loads(resp.read()) + self.assertEquals(scsi_disk['cache'], 'unsafe') + self.assertEquals(scsi_disk['io'], 'threads') + + # remove sdb disk + resp =3D self.request('/plugins/kimchi/vms/vm-1/storages/sdb', + '', 'DELETE') + self.assertEquals(resp.status, 204) + req =3D json.dumps({'cpu_info': {'maxvcpus': 5, 'vcpus': 3}}) resp =3D self.request('/plugins/kimchi/vms/vm-1', req, 'PUT') self.assertEquals(200, resp.status) @@ -330,6 +372,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