]> git.apps.os.sepia.ceph.com Git - ceph.git/commitdiff
mgr/dashboard: fix rbdconfiguration init type 46644/head
authorPere Diaz Bou <pdiazbou@redhat.com>
Wed, 6 Jul 2022 15:47:31 +0000 (17:47 +0200)
committerPere Diaz Bou <pdiazbou@redhat.com>
Wed, 13 Jul 2022 15:45:37 +0000 (17:45 +0200)
Signed-off-by: Pere Diaz Bou <pdiazbou@redhat.com>
qa/tasks/mgr/dashboard/test_rbd.py
src/pybind/mgr/dashboard/controllers/rbd.py
src/pybind/mgr/dashboard/services/rbd.py
src/pybind/mgr/dashboard/tests/test_rbd_service.py

index 5cd4ac209a93c075d2ae57a1591084e3408cf4c2..500a49f0c726c5d401d7e6218ac230c1b6b17d67 100644 (file)
@@ -10,10 +10,12 @@ from .helper import DashboardTestCase, JLeaf, JList, JObj
 
 class RbdTest(DashboardTestCase):
     AUTH_ROLES = ['pool-manager', 'block-manager', 'cluster-manager']
+    LIST_VERSION = '2.0'
 
     @DashboardTestCase.RunAs('test', 'test', [{'rbd-image': ['create', 'update', 'delete']}])
     def test_read_access_permissions(self):
-        self._get('/api/block/image?offset=0&limit=-1&search=&sort=+name')
+        self._get('/api/block/image?offset=0&limit=-1&search=&sort=+name',
+                  version=RbdTest.LIST_VERSION)
         self.assertStatus(403)
         self.get_image('pool', None, 'image')
         self.assertStatus(403)
@@ -284,12 +286,12 @@ class RbdTest(DashboardTestCase):
             self.fail("Snapshot {} not found".format(snap_name))
 
     def test_list(self):
-        data = self._get('/api/block/image?offset=0&limit=-1&search=&sort=+name')
+        data = self._get('/api/block/image?offset=0&limit=-1&search=&sort=+name',
+                         version=RbdTest.LIST_VERSION)
         self.assertStatus(200)
         self.assertEqual(len(data), 2)
 
         for pool_view in data:
-            self.assertEqual(pool_view['status'], 0)
             self.assertIsNotNone(pool_view['value'])
             self.assertIn('pool_name', pool_view)
             self.assertIn(pool_view['pool_name'], ['rbd', 'rbd_iscsi'])
index 1c7e739d8b4b0750e90a8cb2c186cd710cfe8682..d83cd3973bf05bbbf2706edcc5a17da83cd1840b 100644 (file)
@@ -92,9 +92,9 @@ class Rbd(RESTController):
         cherrypy.response.headers['X-Total-Count'] = num_total_images
         pool_result = {}
         for i, image in enumerate(images):
-            pool = image['pool']
+            pool = image['pool_name']
             if pool not in pool_result:
-                pool_result[pool] = {'value': [], 'pool_name': image['pool']}
+                pool_result[pool] = {'value': [], 'pool_name': image['pool_name']}
             pool_result[pool]['value'].append(image)
 
             images[i]['configuration'] = RbdConfiguration(
index 19b77296d768770f0812e3be232e6458b4662fc1..5a71d7db40bbbec5bb3a0e8f6eb52065719cfcc7 100644 (file)
@@ -5,6 +5,7 @@ import json
 from enum import IntEnum
 
 import cherrypy
+import rados
 import rbd
 
 from .. import mgr
@@ -115,9 +116,8 @@ def rbd_image_call(pool_name, namespace, image_name, func, *args, **kwargs):
 class RbdConfiguration(object):
     _rbd = rbd.RBD()
 
-    def __init__(self, pool_name='', namespace='', image_name='', pool_ioctx=None,
-                 image_ioctx=None):
-        # type: (str, str, str, object, object) -> None
+    def __init__(self, pool_name: str = '', namespace: str = '', image_name: str = '',
+                 pool_ioctx: Optional[rados.Ioctx] = None, image_ioctx: Optional[rbd.Image] = None):
         assert bool(pool_name) != bool(pool_ioctx)  # xor
         self._pool_name = pool_name
         self._namespace = namespace if namespace is not None else ''
@@ -431,7 +431,7 @@ class RbdService(object):
                     image_refs = cls._rbd_image_refs(ioctx)
                     for image in image_refs:
                         image['namespace'] = current_namespace
-                        image['pool'] = pool
+                        image['pool_name'] = pool
                         joint_refs.append(image)
         return joint_refs
 
@@ -451,7 +451,7 @@ class RbdService(object):
         for ref in refs:
             if search in ref['name']:
                 image_refs.append(ref)
-            elif search in ref['pool']:
+            elif search in ref['pool_name']:
                 image_refs.append(ref)
             elif search in ref['namespace']:
                 image_refs.append(ref)
@@ -462,28 +462,25 @@ class RbdService(object):
             sort = '+name'
         descending = sort[0] == '-'
         sort_by = sort[1:]
-        if sort_by == 'pool_name':
-            sort_by = 'pool'
-        if sort_by not in ['name', 'pool', 'namespace']:
+        if sort_by not in ['name', 'pool_name', 'namespace']:
             sort_by = 'name'
         if limit == -1:
             end = len(image_refs)
         for image_ref in sorted(image_refs, key=lambda v: v[sort_by],
                                 reverse=descending)[offset:end]:
-            with mgr.rados.open_ioctx(image_ref['pool']) as ioctx:
+            with mgr.rados.open_ioctx(image_ref['pool_name']) as ioctx:
                 ioctx.set_namespace(image_ref['namespace'])
                 try:
                     stat = cls._rbd_image_stat(
-                        ioctx, image_ref['pool'], image_ref['namespace'], image_ref['name'])
+                        ioctx, image_ref['pool_name'], image_ref['namespace'], image_ref['name'])
                 except rbd.ImageNotFound:
                     # Check if the RBD has been deleted partially. This happens for example if
                     # the deletion process of the RBD has been started and was interrupted.
                     try:
                         stat = cls._rbd_image_stat_removing(
-                            ioctx, image_ref['pool'], image_ref['namespace'], image_ref['id'])
+                            ioctx, image_ref['pool_name'], image_ref['namespace'], image_ref['id'])
                     except rbd.ImageNotFound:
                         continue
-                stat['pool'] = image_ref['pool']
                 result.append(stat)
         return result, len(image_refs)
 
index 64382d92913fcaafd427077f3ffca6d395c2e8d4..3e82ceda624281b03d1e94cf476f29352f422fe5 100644 (file)
@@ -137,7 +137,6 @@ class RbdServiceTest(unittest.TestCase):
             'source': 'REMOVING',
             'deletion_time': '{}Z'.format(time.isoformat()),
             'deferment_end_time': '{}Z'.format(time.isoformat()),
-            'pool': 'test_pool',
             'pool_name': 'test_pool',
             'namespace': ''
         }], 1))