]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph.git/commitdiff
mgr/dashboard: Make use of Tasks in pool API
authorSebastian Wagner <sebastian.wagner@suse.com>
Tue, 8 May 2018 12:22:07 +0000 (14:22 +0200)
committerSebastian Wagner <sebastian.wagner@suse.com>
Tue, 24 Jul 2018 14:20:04 +0000 (16:20 +0200)
Signed-off-by: Sebastian Wagner <sebastian.wagner@suse.com>
qa/tasks/mgr/dashboard/test_pool.py
src/pybind/mgr/dashboard/controllers/pool.py

index f32c3f959c6033cc3ad557bc020b27269648afa8..81ce3d87ca907166c21487eb34895d8c767fa6ac 100644 (file)
@@ -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):
index f263521ace4edb6ceba1c219eae7483551fe4de1..3f82b8c0c5c04ba76e758a4b483b87c614487b3f 100644 (file)
@@ -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):