]> git.apps.os.sepia.ceph.com Git - ceph-ci.git/commitdiff
qa/tasks/mgr/dashboard: rbd: image deletion test
authorRicardo Dias <rdias@suse.com>
Thu, 29 Mar 2018 09:30:25 +0000 (10:30 +0100)
committerRicardo Dias <rdias@suse.com>
Fri, 13 Apr 2018 14:58:47 +0000 (15:58 +0100)
Signed-off-by: Ricardo Dias <rdias@suse.com>
qa/tasks/mgr/dashboard/helper.py
qa/tasks/mgr/dashboard/test_rbd.py

index 4ac4fff62d73ed5286ef1a8dcfce6cb75a6bf1fd..d70c6a523c3034dca9ddf927fcc6d8e614ac8a65 100644 (file)
@@ -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
index b0fd8b84a1fa0bd5460675d8fee82a70bddf7df5..d4ad659d1276d0a766c3f9a2e4b116e0a266de73 100644 (file)
@@ -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"})