# 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'])
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
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()
'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:
'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'])
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'])
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'])
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"})