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(
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]
"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'),
}