Merge "Revise Cache of Registry of Health Manager"

This commit is contained in:
Jenkins 2016-03-04 06:48:07 +00:00 committed by Gerrit Code Review
commit 16ac60834d
2 changed files with 28 additions and 11 deletions

View File

@ -74,10 +74,11 @@ class HealthManager(service.Service):
self.TG.add_timer(cfg.CONF.periodic_interval, self._idle_task)
for registry in self.registries:
if registry.check_type == 'NODE_STATUS_POLLING':
interval = min(registry.interval, self.periodic_interval_max)
self.TG.add_timer(interval,
self._periodic_check(registry.cluster_id))
if registry.get('check_type') == 'NODE_STATUS_POLLING':
interval = min(registry.get('interval'),
self.periodic_interval_max)
self.TG.add_timer(interval, self._periodic_check(
registry.get('cluster_id')))
def start(self):
super(HealthManager, self).start()
@ -91,7 +92,14 @@ class HealthManager(service.Service):
def _load_runtime_registry(self):
db_registries = db_api.registry_claim(self.ctx, self.engine_id)
self.rt = {'registries': [r for r in db_registries]}
for registry in db_registries:
reg_cap = {
'cluster_id': registry.cluster_id,
'check_type': registry.check_type,
'interval': registry.interval,
'params': registry.params,
}
self.rt['registries'].append(reg_cap)
@property
def registries(self):
@ -120,7 +128,14 @@ class HealthManager(service.Service):
params = params or {}
registry = db_api.registry_create(ctx, cluster_id, check_type,
interval, params, self.engine_id)
self.rt['registries'].append(registry)
reg_cap = {
'cluster_id': registry.cluster_id,
'check_type': registry.check_type,
'interval': registry.interval,
'params': registry.params,
}
self.rt['registries'].append(reg_cap)
def unregister_cluster(self, ctx, cluster_id):
"""Unregister a cluster from health checking.
@ -130,7 +145,7 @@ class HealthManager(service.Service):
:return: None
"""
for registry in self.rt['registries']:
if registry.cluster_id == cluster_id:
if registry.get('cluster_id') == cluster_id:
self.rt['registries'].remove(registry)
db_api.registry_delete(ctx, cluster_id)

View File

@ -95,10 +95,12 @@ class TestHealthManager(base.SenlinTestCase):
self.hm.TG = tg
target = mock.Mock()
mock_target.return_value = target
registry = mock.Mock()
registry.engine_id = 'ENGINE_ID'
registry.interval = 50
registry.check_type = 'NODE_STATUS_POLLING'
registry = {
'cluster_id': 'CLUSTER_ID',
'check_type': 'NODE_STATUS_POLLING',
'interval': 50,
'params': {},
}
rpc_server = mock.Mock()
mock_st = self.patchobject(rpc_messaging, 'get_rpc_server',
return_value=rpc_server)