]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph.git/commitdiff
mgr/cephadm: move _refresh_hosts_and_daemons to serve.py
authorSebastian Wagner <sebastian.wagner@suse.com>
Fri, 11 Sep 2020 10:49:39 +0000 (12:49 +0200)
committerSebastian Wagner <sebastian.wagner@suse.com>
Wed, 18 Nov 2020 10:52:17 +0000 (11:52 +0100)
Signed-off-by: Sebastian Wagner <sebastian.wagner@suse.com>
(cherry picked from commit d73dc54e4ee9150e750afe779546d0242ad176c2)

src/pybind/mgr/cephadm/module.py
src/pybind/mgr/cephadm/serve.py
src/pybind/mgr/cephadm/tests/fixtures.py
src/pybind/mgr/cephadm/tests/test_cephadm.py
src/pybind/mgr/cephadm/tests/test_migration.py
src/pybind/mgr/cephadm/tests/test_upgrade.py

index b54cbde671ad5efb1f7a69496d3b5a4c09a31c3a..3995d559388dc3c677e21a3baa36dae14b4b9fa5 100644 (file)
@@ -1384,75 +1384,6 @@ To check that the host is reachable:
         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(
index 66f2ddbc950c643c71611079f26e882b8379dc8e..091c71d27142e796eed4093e0415458fb51530d9 100644 (file)
@@ -1,6 +1,7 @@
 import logging
 from typing import TYPE_CHECKING
 
+from cephadm.utils import forall_hosts
 from orchestrator import OrchestratorError
 
 if TYPE_CHECKING:
@@ -38,7 +39,7 @@ class CephadmServe:
 
                 # 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()
 
@@ -71,3 +72,72 @@ class CephadmServe:
         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)
index 460e4a24b75b472fceb464197f8a37137bc35b60..c263c81bfc78248f06e9c1d64d4295ae7a0a2998 100644 (file)
@@ -5,6 +5,7 @@ from contextlib import contextmanager
 
 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
@@ -118,7 +119,7 @@ def with_host(m: CephadmOrchestrator, name, refresh_hosts=True):
     # 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))
 
index 82712dd2f1bd852ab82736ed2749134d3c365e48..a64254714ec3440422e0369c538d8882460e2813 100644 (file)
@@ -6,6 +6,7 @@ from unittest.mock import ANY
 import pytest
 
 from ceph.deployment.drive_group import DriveGroupSpec, DeviceSelection
+from cephadm.serve import CephadmServe
 from cephadm.services.osd import OSD, OSDQueue
 
 try:
@@ -832,14 +833,14 @@ class TestCephadm(object):
             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')
 
index ac2011f1b3a664e5b433a423f3159cedc46f277b..4b86c22467320efbc484aef57128a275678c58a2 100644 (file)
@@ -9,6 +9,7 @@ from cephadm.inventory import SPEC_STORE_PREFIX
 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
 
 
@@ -32,7 +33,7 @@ def test_migrate_scheduler(cephadm_module: CephadmOrchestrator):
             # 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()
index 095b55408a7bdd74e1318d78c72e4ad439b7492f..8316670856f3a708592e991f1b9e1285ca0c99ba 100644 (file)
@@ -6,6 +6,7 @@ import pytest
 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
 
 
@@ -73,7 +74,7 @@ def test_upgrade_run(use_repo_digest, cephadm_module: CephadmOrchestrator):
                     )
                 ])
             )):
-                cephadm_module._refresh_hosts_and_daemons()
+                CephadmServe(cephadm_module)._refresh_hosts_and_daemons()
 
             cephadm_module.upgrade._do_upgrade()