self.log.debug(f'Refreshed OSDSpec previews for host <{host}>')
return True
- def _refresh_hosts_and_daemons(self) -> None:
- bad_hosts = []
- failures = []
-
- @forall_hosts
- def refresh(host):
- if self.cache.host_needs_check(host):
- r = self._check_host(host)
- if r is not None:
- bad_hosts.append(r)
- if self.cache.host_needs_daemon_refresh(host):
- self.log.debug('refreshing %s daemons' % host)
- r = self._refresh_host_daemons(host)
- if r:
- failures.append(r)
-
- if self.cache.host_needs_registry_login(host) and self.registry_url:
- self.log.debug(f"Logging `{host}` into custom registry")
- r = self._registry_login(host, self.registry_url,
- self.registry_username, self.registry_password)
- if r:
- bad_hosts.append(r)
-
- if self.cache.host_needs_device_refresh(host):
- self.log.debug('refreshing %s devices' % host)
- r = self._refresh_host_devices(host)
- if r:
- failures.append(r)
-
- if self.cache.host_needs_osdspec_preview_refresh(host):
- self.log.debug(f"refreshing OSDSpec previews for {host}")
- r = self._refresh_host_osdspec_previews(host)
- if r:
- failures.append(r)
-
- if self.cache.host_needs_new_etc_ceph_ceph_conf(host):
- self.log.debug(f"deploying new /etc/ceph/ceph.conf on `{host}`")
- r = self._deploy_etc_ceph_ceph_conf(host)
- if r:
- bad_hosts.append(r)
-
- refresh(self.cache.get_hosts())
-
- health_changed = False
- if 'CEPHADM_HOST_CHECK_FAILED' in self.health_checks:
- del self.health_checks['CEPHADM_HOST_CHECK_FAILED']
- health_changed = True
- if bad_hosts:
- self.health_checks['CEPHADM_HOST_CHECK_FAILED'] = {
- 'severity': 'warning',
- 'summary': '%d hosts fail cephadm check' % len(bad_hosts),
- 'count': len(bad_hosts),
- 'detail': bad_hosts,
- }
- health_changed = True
- if failures:
- self.health_checks['CEPHADM_REFRESH_FAILED'] = {
- 'severity': 'warning',
- 'summary': 'failed to probe daemons or devices',
- 'count': len(failures),
- 'detail': failures,
- }
- health_changed = True
- elif 'CEPHADM_REFRESH_FAILED' in self.health_checks:
- del self.health_checks['CEPHADM_REFRESH_FAILED']
- health_changed = True
- if health_changed:
- self.set_health_checks(self.health_checks)
-
def _refresh_host_daemons(self, host) -> Optional[str]:
try:
out, err, code = self._run_cephadm(
import logging
from typing import TYPE_CHECKING
+from cephadm.utils import forall_hosts
from orchestrator import OrchestratorError
if TYPE_CHECKING:
# refresh daemons
self.log.debug('refreshing hosts and daemons')
- self.mgr._refresh_hosts_and_daemons()
+ self._refresh_hosts_and_daemons()
self.mgr._check_for_strays()
self.log.debug('Sleeping for %d seconds', sleep_interval)
ret = self.mgr.event.wait(sleep_interval)
self.mgr.event.clear()
+
+ def _refresh_hosts_and_daemons(self) -> None:
+ bad_hosts = []
+ failures = []
+
+ @forall_hosts
+ def refresh(host):
+ if self.mgr.cache.host_needs_check(host):
+ r = self.mgr._check_host(host)
+ if r is not None:
+ bad_hosts.append(r)
+ if self.mgr.cache.host_needs_daemon_refresh(host):
+ self.log.debug('refreshing %s daemons' % host)
+ r = self.mgr._refresh_host_daemons(host)
+ if r:
+ failures.append(r)
+
+ if self.mgr.cache.host_needs_registry_login(host) and self.mgr.registry_url:
+ self.log.debug(f"Logging `{host}` into custom registry")
+ r = self.mgr._registry_login(host, self.mgr.registry_url,
+ self.mgr.registry_username, self.mgr.registry_password)
+ if r:
+ bad_hosts.append(r)
+
+ if self.mgr.cache.host_needs_device_refresh(host):
+ self.log.debug('refreshing %s devices' % host)
+ r = self.mgr._refresh_host_devices(host)
+ if r:
+ failures.append(r)
+
+ if self.mgr.cache.host_needs_osdspec_preview_refresh(host):
+ self.log.debug(f"refreshing OSDSpec previews for {host}")
+ r = self.mgr._refresh_host_osdspec_previews(host)
+ if r:
+ failures.append(r)
+
+ if self.mgr.cache.host_needs_new_etc_ceph_ceph_conf(host):
+ self.log.debug(f"deploying new /etc/ceph/ceph.conf on `{host}`")
+ r = self.mgr._deploy_etc_ceph_ceph_conf(host)
+ if r:
+ bad_hosts.append(r)
+
+ refresh(self.mgr.cache.get_hosts())
+
+ health_changed = False
+ if 'CEPHADM_HOST_CHECK_FAILED' in self.mgr.health_checks:
+ del self.mgr.health_checks['CEPHADM_HOST_CHECK_FAILED']
+ health_changed = True
+ if bad_hosts:
+ self.mgr.health_checks['CEPHADM_HOST_CHECK_FAILED'] = {
+ 'severity': 'warning',
+ 'summary': '%d hosts fail cephadm check' % len(bad_hosts),
+ 'count': len(bad_hosts),
+ 'detail': bad_hosts,
+ }
+ health_changed = True
+ if failures:
+ self.mgr.health_checks['CEPHADM_REFRESH_FAILED'] = {
+ 'severity': 'warning',
+ 'summary': 'failed to probe daemons or devices',
+ 'count': len(failures),
+ 'detail': failures,
+ }
+ health_changed = True
+ elif 'CEPHADM_REFRESH_FAILED' in self.mgr.health_checks:
+ del self.mgr.health_checks['CEPHADM_REFRESH_FAILED']
+ health_changed = True
+ if health_changed:
+ self.mgr.set_health_checks(self.mgr.health_checks)
from ceph.deployment.service_spec import PlacementSpec, ServiceSpec
from cephadm.module import CEPH_DATEFMT
+from cephadm.serve import CephadmServe
try:
from typing import Any, Iterator, List
# type: (CephadmOrchestrator, str) -> None
wait(m, m.add_host(HostSpec(hostname=name)))
if refresh_hosts:
- m._refresh_hosts_and_daemons()
+ CephadmServe(m)._refresh_hosts_and_daemons()
yield
wait(m, m.remove_host(name))
import pytest
from ceph.deployment.drive_group import DriveGroupSpec, DeviceSelection
+from cephadm.serve import CephadmServe
from cephadm.services.osd import OSD, OSDQueue
try:
cephadm_module.config_notify()
assert cephadm_module.manage_etc_ceph_ceph_conf == True
- cephadm_module._refresh_hosts_and_daemons()
+ CephadmServe(cephadm_module)._refresh_hosts_and_daemons()
_check.assert_called_with(ANY, ['dd', 'of=/etc/ceph/ceph.conf'], stdin=b'')
assert not cephadm_module.cache.host_needs_new_etc_ceph_ceph_conf('test')
# set extra config and expect that we deploy another ceph.conf
cephadm_module._set_extra_ceph_conf('[mon]\nk=v')
- cephadm_module._refresh_hosts_and_daemons()
+ CephadmServe(cephadm_module)._refresh_hosts_and_daemons()
_check.assert_called_with(
ANY, ['dd', 'of=/etc/ceph/ceph.conf'], stdin=b'\n\n[mon]\nk=v\n')
from cephadm.utils import DATEFMT
from cephadm.tests.fixtures import _run_cephadm, cephadm_module, wait, with_host
from orchestrator import OrchestratorError
+from cephadm.serve import CephadmServe
from tests import mock
# assert we need all daemons.
assert cephadm_module.migration_current == 0
- cephadm_module._refresh_hosts_and_daemons()
+ CephadmServe(cephadm_module)._refresh_hosts_and_daemons()
cephadm_module.migration.migrate()
cephadm_module._apply_all_services()
from ceph.deployment.service_spec import ServiceSpec
from cephadm import CephadmOrchestrator
from cephadm.upgrade import CephadmUpgrade
+from cephadm.serve import CephadmServe
from .fixtures import _run_cephadm, wait, cephadm_module, with_host, with_service
)
])
)):
- cephadm_module._refresh_hosts_and_daemons()
+ CephadmServe(cephadm_module)._refresh_hosts_and_daemons()
cephadm_module.upgrade._do_upgrade()