dispatch 'unregister_cluster' to specified engine
We need to dispatch the request to specified engine to erase the runtime, so that the health checking task could be stopped/removed correctly. Change-Id: I08a5c3332401e7101b892869639a0e045710bb5c Closes-Bug: #1707871
This commit is contained in:
parent
264a869f0d
commit
a6991090c5
@ -496,14 +496,34 @@ def register(cluster_id, engine_id=None, **kwargs):
|
||||
enabled=enabled)
|
||||
|
||||
|
||||
def unregister(cluster_id, engine_id=None):
|
||||
return notify(engine_id, 'unregister_cluster', cluster_id=cluster_id)
|
||||
def unregister(cluster_id):
|
||||
engine_id = get_manager_engine(cluster_id)
|
||||
if engine_id:
|
||||
return notify(engine_id, 'unregister_cluster', cluster_id=cluster_id)
|
||||
return True
|
||||
|
||||
|
||||
def enable(cluster_id, **kwargs):
|
||||
return notify(None, 'enable_cluster', cluster_id=cluster_id, params=kwargs)
|
||||
engine_id = get_manager_engine(cluster_id)
|
||||
if engine_id:
|
||||
return notify(engine_id, 'enable_cluster', cluster_id=cluster_id,
|
||||
params=kwargs)
|
||||
return False
|
||||
|
||||
|
||||
def disable(cluster_id, **kwargs):
|
||||
return notify(None, 'disable_cluster', cluster_id=cluster_id,
|
||||
params=kwargs)
|
||||
engine_id = get_manager_engine(cluster_id)
|
||||
if engine_id:
|
||||
return notify(engine_id, 'disable_cluster', cluster_id=cluster_id,
|
||||
params=kwargs)
|
||||
return False
|
||||
|
||||
|
||||
def get_manager_engine(cluster_id):
|
||||
ctx = context.get_admin_context()
|
||||
|
||||
registry = objects.HealthRegistry.get(ctx, cluster_id)
|
||||
if not registry:
|
||||
return None
|
||||
|
||||
return registry.engine_id
|
||||
|
@ -922,3 +922,34 @@ class TestHealthManager(base.SenlinTestCase):
|
||||
self.assertIn({'cluster_id': 'FAKE_ID', 'enabled': False},
|
||||
self.hm.rt['registries'])
|
||||
mock_update.assert_called_once_with(ctx, 'FAKE_ID', {'enabled': False})
|
||||
|
||||
@mock.patch.object(context, 'get_admin_context')
|
||||
@mock.patch.object(hr.HealthRegistry, 'get')
|
||||
def test_get_manager_engine(self, mock_get, mock_ctx):
|
||||
ctx = mock.Mock()
|
||||
mock_ctx.return_value = ctx
|
||||
|
||||
registry = mock.Mock(engine_id='fake')
|
||||
mock_get.return_value = registry
|
||||
|
||||
result = hm.get_manager_engine('CID')
|
||||
|
||||
self.assertEqual(result, 'fake')
|
||||
|
||||
mock_get.assert_called_once_with(ctx, 'CID')
|
||||
self.assertTrue(mock_ctx.called)
|
||||
|
||||
@mock.patch.object(context, 'get_admin_context')
|
||||
@mock.patch.object(hr.HealthRegistry, 'get')
|
||||
def test_get_manager_engine_none(self, mock_get, mock_ctx):
|
||||
ctx = mock.Mock()
|
||||
mock_ctx.return_value = ctx
|
||||
|
||||
mock_get.return_value = None
|
||||
|
||||
result = hm.get_manager_engine('CID')
|
||||
|
||||
self.assertIsNone(result)
|
||||
|
||||
mock_get.assert_called_once_with(ctx, 'CID')
|
||||
self.assertTrue(mock_ctx.called)
|
||||
|
Loading…
Reference in New Issue
Block a user