_status = {
1: {
- 'callouts': {},
+ 'callouts': {
+ 'image': {
+ 'level': 'warning',
+ }
+ },
'image_local_count': 5,
'image_remote_count': 6,
'image_error_count': 7,
mock_rbd_instance = mock_rbd.return_value
mock_rbd_instance.mirror_peer_list.return_value = []
test_cases = self._get_pool_test_cases()
- for new_status, mirror_mode, expected_output in test_cases:
+ for new_status, pool_mirror_mode, images_summary, expected_output in test_cases:
_status[1].update(new_status)
daemon_status = {
'json': json.dumps(_status)
}
mgr.get_daemon_status.return_value = daemon_status
daemons = get_daemons()
- mock_rbd_instance.mirror_mode_get.return_value = mirror_mode
+ mock_rbd_instance.mirror_mode_get.return_value = pool_mirror_mode
+ mock_rbd_instance.mirror_image_status_summary.return_value = images_summary
res = get_pools(daemons)
for k, v in expected_output.items():
self.assertTrue(v == res['rbd'][k])
def _get_pool_test_cases(self):
test_cases = [
+ # 1. daemon status
+ # 2. Pool mirror mock_get_daemon_status
+ # 3. Image health summary
+ # 4. Pool health output
(
{
'image_error_count': 7,
},
rbd.RBD_MIRROR_MODE_IMAGE,
+ [(rbd.MIRROR_IMAGE_STATUS_STATE_UNKNOWN, None)],
{
'health_color': 'warning',
'health': 'Warning'
{
'image_error_count': 7,
},
- rbd.RBD_MIRROR_MODE_DISABLED,
+ rbd.RBD_MIRROR_MODE_POOL,
+ [(rbd.MIRROR_IMAGE_STATUS_STATE_ERROR, None)],
{
'health_color': 'error',
'health': 'Error'
'leader_id': 1
},
rbd.RBD_MIRROR_MODE_DISABLED,
+ [],
{
'health_color': 'info',
'health': 'Disabled'
self.assertStatus(200)
summary = self.json_body()['rbd_mirroring']
- self.assertEqual(summary, {'errors': 0, 'warnings': 1})
+ # 2 warnings: 1 for the daemon, 1 for the pool
+ self.assertEqual(summary, {'errors': 0, 'warnings': 2})
class RbdMirroringStatusControllerTest(ControllerTestCase):