from cephadm.module import CEPH_DATEFMT
try:
- from typing import Any
+ from typing import Any, Iterator, List
except ImportError:
pass
import pytest
@contextmanager
-def with_service(cephadm_module: CephadmOrchestrator, spec: ServiceSpec, meth, host: str):
+def with_service(cephadm_module: CephadmOrchestrator, spec: ServiceSpec, meth, host: str) -> Iterator[List[str]]:
if spec.placement.is_empty():
spec.placement = PlacementSpec(hosts=[host], count=1)
c = meth(cephadm_module, spec)
cephadm_module._apply_all_services()
dds = wait(cephadm_module, cephadm_module.list_daemons())
- names = {dd.service_name() for dd in dds}
- assert spec.service_name() in names, dds
+ own_dds = [dd for dd in dds if dd.service_name() == spec.service_name()]
+ assert own_dds
- yield
+ yield [dd.name() for dd in own_dds]
assert_rm_service(cephadm_module, spec.service_name())
assert 'myerror' in ''.join(evs)
+ @pytest.mark.parametrize(
+ "action",
+ [
+ 'start',
+ 'stop',
+ 'restart',
+ 'reconfig',
+ 'redeploy'
+ ]
+ )
+ @mock.patch("cephadm.module.CephadmOrchestrator._run_cephadm", _run_cephadm('{}'))
+ def test_daemon_check(self, cephadm_module: CephadmOrchestrator, action):
+ with with_host(cephadm_module, 'test'):
+ with with_service(cephadm_module, ServiceSpec(service_type='grafana'), CephadmOrchestrator.apply_grafana, 'test') as d_names:
+ [daemon_name] = d_names
+
+ cephadm_module._schedule_daemon_action(daemon_name, action)
+
+ assert cephadm_module.cache.get_scheduled_daemon_action(
+ 'test', daemon_name) == action
+
+ cephadm_module._check_daemons()
+
+ assert cephadm_module.cache.get_scheduled_daemon_action('test', daemon_name) is None
+
@mock.patch("cephadm.module.CephadmOrchestrator._run_cephadm", _run_cephadm('{}'))
def test_daemon_check_post(self, cephadm_module: CephadmOrchestrator):
with with_host(cephadm_module, 'test'):