From: Ricardo Dias Date: Thu, 29 Mar 2018 09:30:25 +0000 (+0100) Subject: qa/tasks/mgr/dashboard: rbd: image deletion test X-Git-Tag: v13.1.0~234^2~21 X-Git-Url: http://git.apps.os.sepia.ceph.com/?a=commitdiff_plain;h=8264e93458f2e544565ce83711773379db445686;p=ceph-ci.git qa/tasks/mgr/dashboard: rbd: image deletion test Signed-off-by: Ricardo Dias --- diff --git a/qa/tasks/mgr/dashboard/helper.py b/qa/tasks/mgr/dashboard/helper.py index 4ac4fff62d7..d70c6a523c3 100644 --- a/qa/tasks/mgr/dashboard/helper.py +++ b/qa/tasks/mgr/dashboard/helper.py @@ -150,10 +150,9 @@ class DashboardTestCase(MgrTestCase): # pylint: disable=too-many-arguments @classmethod - def _task_post(cls, url, task_name, task_metadata, data=None, - timeout=60): - res = cls._post(url, data) - cls._assertIn(cls._resp.status_code, [200, 201]) + def _task_request(cls, method, url, task_name, task_metadata, data, timeout): + res = cls._request(url, method, data) + cls._assertIn(cls._resp.status_code, [200, 201, 204]) cls._assertIsInst(res, dict) cls._assertIn('status', res) cls._assertIn(res['status'], ['done', 'executing']) @@ -200,6 +199,18 @@ class DashboardTestCase(MgrTestCase): return thread.res_task['ret_value'] raise Exception(thread.res_task['exception']) + @classmethod + def _task_post(cls, url, task_name, task_metadata, data=None, + timeout=60): + return cls._task_request('POST', url, task_name, task_metadata, data, + timeout) + + @classmethod + def _task_delete(cls, url, task_name, task_metadata, data=None, + timeout=60): + return cls._task_request('DELETE', url, task_name, task_metadata, data, + timeout) + @classmethod def cookies(cls): return cls._resp.cookies diff --git a/qa/tasks/mgr/dashboard/test_rbd.py b/qa/tasks/mgr/dashboard/test_rbd.py index b0fd8b84a1f..d4ad659d127 100644 --- a/qa/tasks/mgr/dashboard/test_rbd.py +++ b/qa/tasks/mgr/dashboard/test_rbd.py @@ -25,6 +25,12 @@ class RbdTest(DashboardTestCase): return cls._task_post('/api/rbd', 'rbd/create', {'pool_name': pool, 'image_name': name}, data) + @classmethod + def remove_image(cls, pool, image): + return cls._task_delete('/api/rbd/{}/{}'.format(pool, image), + 'rbd/delete', + {'pool_name': pool, 'image_name': image}) + @classmethod def setUpClass(cls): super(RbdTest, cls).setUpClass() @@ -158,7 +164,7 @@ class RbdTest(DashboardTestCase): 'fast-diff', 'layering', 'object-map']) - self._rbd_cmd(['rm', 'rbd/{}'.format(rbd_name)]) + self.remove_image('rbd', rbd_name) def test_create_rbd_in_data_pool(self): if not self.bluestore_support: @@ -183,7 +189,7 @@ class RbdTest(DashboardTestCase): 'fast-diff', 'layering', 'object-map']) - self._rbd_cmd(['rm', 'rbd/{}'.format(rbd_name)]) + self.remove_image('rbd', rbd_name) self._ceph_cmd(['osd', 'pool', 'delete', 'data_pool', 'data_pool', '--yes-i-really-really-mean-it']) @@ -193,7 +199,7 @@ class RbdTest(DashboardTestCase): res = self.create_image('test_rbd_twice', 'rbd', 10240) self.assertEqual(res, {"success": False, "errno": 17, "detail": "[errno 17] error creating image"}) - self._rbd_cmd(['rm', 'rbd/test_rbd_twice']) + self.remove_image('rbd', 'test_rbd_twice') def test_snapshots_and_clone_info(self): self._rbd_cmd(['snap', 'create', 'rbd/img1@snap1']) @@ -227,7 +233,7 @@ class RbdTest(DashboardTestCase): features_name=['deep-flatten', 'exclusive-lock', 'fast-diff', 'layering', 'object-map']) - self._rbd_cmd(['rm', 'rbd_iscsi/img1_clone']) + self.remove_image('rbd_iscsi', 'img1_clone') def test_disk_usage(self): self._rbd_cmd(['bench', '--io-type', 'write', '--io-total', '50M', 'rbd/img2']) @@ -241,3 +247,8 @@ class RbdTest(DashboardTestCase): self.assertStatus(200) self._validate_image(img, name='img2', size=2147483648, total_disk_usage=268435456, disk_usage=67108864) + + def test_delete_non_existent_image(self): + res = self.remove_image('rbd', 'i_dont_exist') + self.assertEqual(res, {"success": False, "errno": 2, + "detail": "[errno 2] error removing image"})