def _pool_create(self, data):
try:
- self._post('/api/pool/', data)
+ self._task_post('/api/pool/', data)
self.assertStatus(201)
self._check_pool_properties(data)
- self._delete("/api/pool/" + data['pool'])
+ self._task_delete("/api/pool/" + data['pool'])
self.assertStatus(204)
except Exception:
log.exception("test_pool_create: data=%s", data)
}
]
- self._post('/api/pool/', pool[0])
+ self._task_post('/api/pool/', pool[0])
self.assertStatus(201)
self._check_pool_properties(pool[0])
for data in pool[1:]:
- self._put('/api/pool/' + pool[0]['pool'], data)
+ self._task_put('/api/pool/' + pool[0]['pool'], data)
self._check_pool_properties(data, pool_name=pool[0]['pool'])
- self._delete("/api/pool/" + pool[0]['pool'])
+ self._task_delete("/api/pool/" + pool[0]['pool'])
self.assertStatus(204)
def test_pool_create_fail(self):
# -*- coding: utf-8 -*-
from __future__ import absolute_import
+
import cherrypy
-from . import ApiController, RESTController, Endpoint, ReadPermission
+from . import ApiController, RESTController, Endpoint, ReadPermission, Task
from .. import mgr
from ..security import Scope
from ..services.ceph_service import CephService
from ..tools import str_to_bool
+def pool_task(name, metadata, wait_for=2.0):
+ return Task("pool/{}".format(name), metadata, wait_for)
+
+
@ApiController('/pool', Scope.POOL)
class Pool(RESTController):
return self._pool_list(attrs, stats)
def get(self, pool_name, attrs=None, stats=False):
+ # type: (str, str, bool) -> dict
pools = self._pool_list(attrs, stats)
pool = [pool for pool in pools if pool['pool_name'] == pool_name]
if not pool:
- return cherrypy.NotFound('No such pool')
+ raise cherrypy.NotFound('No such pool')
return pool[0]
+ @pool_task('delete', ['{pool_name}'])
@handle_send_command_error('pool')
def delete(self, pool_name):
return CephService.send_command('mon', 'osd pool delete', pool=pool_name, pool2=pool_name,
sure='--yes-i-really-really-mean-it')
+ @pool_task('set', ['{pool_name}'])
def set(self, pool_name, flags=None, application_metadata=None, **kwargs):
self._set_pool_values(pool_name, application_metadata, flags, True, kwargs)
+ @pool_task('create', ['{pool}'])
@handle_send_command_error('pool')
def create(self, pool, pg_num, pool_type, erasure_code_profile=None, flags=None,
application_metadata=None, rule_name=None, **kwargs):