From: Sebastian Wagner Date: Tue, 8 May 2018 12:22:07 +0000 (+0200) Subject: mgr/dashboard: Make use of Tasks in pool API X-Git-Tag: v14.0.1~716^2~4 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=1f58ca5e36bff55bcd26f2dd38f8c0e149307cde;p=ceph.git mgr/dashboard: Make use of Tasks in pool API Signed-off-by: Sebastian Wagner --- diff --git a/qa/tasks/mgr/dashboard/test_pool.py b/qa/tasks/mgr/dashboard/test_pool.py index f32c3f959c60..81ce3d87ca90 100644 --- a/qa/tasks/mgr/dashboard/test_pool.py +++ b/qa/tasks/mgr/dashboard/test_pool.py @@ -97,12 +97,12 @@ class PoolTest(DashboardTestCase): 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) @@ -190,16 +190,16 @@ class PoolTest(DashboardTestCase): } ] - 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): diff --git a/src/pybind/mgr/dashboard/controllers/pool.py b/src/pybind/mgr/dashboard/controllers/pool.py index f263521ace4e..3f82b8c0c5c0 100644 --- a/src/pybind/mgr/dashboard/controllers/pool.py +++ b/src/pybind/mgr/dashboard/controllers/pool.py @@ -1,9 +1,10 @@ # -*- 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 @@ -11,6 +12,10 @@ from ..services.exception import handle_send_command_error 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): @@ -53,20 +58,24 @@ 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):