From c60da7bb1f6d79faea9aef83d4397567102c42c9 Mon Sep 17 00:00:00 2001 From: =?utf8?q?Stephan=20M=C3=BCller?= Date: Fri, 23 Mar 2018 14:15:45 +0100 Subject: [PATCH] mgr/dashboard: Pool backend changes MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit As needed by the UI. Signed-off-by: Stephan Müller --- qa/tasks/mgr/dashboard/test_pool.py | 8 +++++--- src/pybind/mgr/dashboard/controllers/pool.py | 3 ++- 2 files changed, 7 insertions(+), 4 deletions(-) diff --git a/qa/tasks/mgr/dashboard/test_pool.py b/qa/tasks/mgr/dashboard/test_pool.py index 2b8c7bcd2861..d04fd2b0be0d 100644 --- a/qa/tasks/mgr/dashboard/test_pool.py +++ b/qa/tasks/mgr/dashboard/test_pool.py @@ -146,13 +146,15 @@ class PoolTest(DashboardTestCase): info_data = self._get("/api/pool/_info") self.assertEqual(set(info_data), {'pool_names', 'crush_rules_replicated', 'crush_rules_erasure', - 'is_all_bluestore', 'compression_algorithms', 'compression_modes'}) + 'is_all_bluestore', 'compression_algorithms', 'compression_modes', + 'osd_count'}) self.assertTrue(all(isinstance(n, six.string_types) for n in info_data['pool_names'])) self.assertTrue( - all(isinstance(n, six.string_types) for n in info_data['crush_rules_replicated'])) + all(isinstance(n, dict) for n in info_data['crush_rules_replicated'])) self.assertTrue( - all(isinstance(n, six.string_types) for n in info_data['crush_rules_erasure'])) + all(isinstance(n, dict) for n in info_data['crush_rules_erasure'])) self.assertIsInstance(info_data['is_all_bluestore'], bool) + self.assertIsInstance(info_data['osd_count'], int) self.assertTrue( all(isinstance(n, six.string_types) for n in info_data['compression_algorithms'])) self.assertTrue( diff --git a/src/pybind/mgr/dashboard/controllers/pool.py b/src/pybind/mgr/dashboard/controllers/pool.py index a9231ada23f1..6a8f605d02c0 100644 --- a/src/pybind/mgr/dashboard/controllers/pool.py +++ b/src/pybind/mgr/dashboard/controllers/pool.py @@ -84,7 +84,7 @@ class Pool(RESTController): def _info(self): """Used by the create-pool dialog""" def rules(pool_type): - return [r["rule_name"] + return [r for r in mgr.get('osd_map_crush')['rules'] if r['type'] == pool_type] @@ -101,6 +101,7 @@ class Pool(RESTController): "crush_rules_replicated": rules(1), "crush_rules_erasure": rules(3), "is_all_bluestore": all_bluestore(), + "osd_count": len(mgr.get('osd_map')['osds']), "compression_algorithms": compression_enum('bluestore_compression_algorithm'), "compression_modes": compression_enum('bluestore_compression_mode'), } -- 2.47.3