]> git.apps.os.sepia.ceph.com Git - ceph-ci.git/commitdiff
mgr/cephadm: Add config() to CephadmService
authorSebastian Wagner <sebastian.wagner@suse.com>
Mon, 1 Feb 2021 17:13:59 +0000 (18:13 +0100)
committerSebastian Wagner <sebastian.wagner@suse.com>
Tue, 16 Feb 2021 11:50:30 +0000 (12:50 +0100)
Signed-off-by: Sebastian Wagner <sebastian.wagner@suse.com>
src/pybind/mgr/cephadm/module.py
src/pybind/mgr/cephadm/serve.py
src/pybind/mgr/cephadm/services/cephadmservice.py
src/pybind/mgr/cephadm/services/iscsi.py
src/pybind/mgr/cephadm/services/nfs.py

index 399ce2bdb1db82064c163f1a4828b8193e91366e..b45a2d2b63d22fa57dedd881333981609fef646e 100644 (file)
@@ -1936,10 +1936,7 @@ class CephadmOrchestrator(orchestrator.Orchestrator, MgrModule,
                                              forcename=name)
 
             if not did_config and config_func:
-                if daemon_type == 'rgw':
-                    config_func(spec, daemon_id)
-                else:
-                    config_func(spec)
+                config_func(spec, daemon_id)
                 did_config = True
 
             daemon_spec = self.cephadm_services[daemon_type_to_service(daemon_type)].make_daemon_spec(
index a721babcbd15732289eda9d3905fde58638caad7..a4cad1a4fee916f7de4c6e473f6dfe423b578910 100644 (file)
@@ -2,7 +2,7 @@ import json
 import logging
 from collections import defaultdict
 from contextlib import contextmanager
-from typing import TYPE_CHECKING, Optional, List, Callable, cast, Set, Dict, Any, Union, Tuple, Iterator
+from typing import TYPE_CHECKING, Optional, List, cast, Set, Dict, Any, Union, Tuple, Iterator
 
 from cephadm import remotes
 
@@ -14,7 +14,7 @@ except ImportError:
 
 from ceph.deployment import inventory
 from ceph.deployment.drive_group import DriveGroupSpec
-from ceph.deployment.service_spec import ServiceSpec, HostPlacementSpec, RGWSpec, \
+from ceph.deployment.service_spec import ServiceSpec, HostPlacementSpec, \
     HA_RGWSpec, CustomContainerSpec
 from ceph.utils import str_to_datetime, datetime_now
 
@@ -443,15 +443,6 @@ class CephadmServe:
 
         return r
 
-    def _config_fn(self, service_type: str) -> Optional[Callable[[ServiceSpec], None]]:
-        fn = {
-            'mds': self.mgr.mds_service.config,
-            'rgw': self.mgr.rgw_service.config,
-            'nfs': self.mgr.nfs_service.config,
-            'iscsi': self.mgr.iscsi_service.config,
-        }.get(service_type)
-        return cast(Callable[[ServiceSpec], None], fn)
-
     def _apply_service(self, spec: ServiceSpec) -> bool:
         """
         Schedule a service.  Deploy new daemons or remove old ones, depending
@@ -469,8 +460,6 @@ class CephadmServe:
             return False
         self.log.debug('Applying service %s spec' % service_name)
 
-        config_func = self._config_fn(service_type)
-
         if service_type == 'osd':
             self.mgr.osd_service.create_from_spec(cast(DriveGroupSpec, spec))
             # TODO: return True would result in a busy loop
@@ -552,12 +541,8 @@ class CephadmServe:
                                                      prefix=spec.service_id,
                                                      forcename=name)
 
-                if not did_config and config_func:
-                    if daemon_type == 'rgw':
-                        rgw_config_func = cast(Callable[[RGWSpec, str], None], config_func)
-                        rgw_config_func(cast(RGWSpec, spec), daemon_id)
-                    else:
-                        config_func(spec)
+                if not did_config:
+                    self.mgr.cephadm_services[service_type].config(spec, daemon_id)
                     did_config = True
 
                 daemon_spec = self.mgr.cephadm_services[service_type].make_daemon_spec(
index 4cff688e875c604ef7f1605450d2d6423e0c46f9..8d35483c6d26c68f0deade2e5f369ee25c2723e4 100644 (file)
@@ -124,6 +124,13 @@ class CephadmService(metaclass=ABCMeta):
     def generate_config(self, daemon_spec: CephadmDaemonSpec) -> Tuple[Dict[str, Any], List[str]]:
         raise NotImplementedError()
 
+    def config(self, spec: ServiceSpec, daemon_id: str) -> None:
+        """
+        Configure the cluster for this service. Only called *once* per
+        service apply. Not for every daemon.
+        """
+        pass
+
     def daemon_check_post(self, daemon_descrs: List[DaemonDescription]) -> None:
         """The post actions needed to be done after daemons are checked"""
         if self.mgr.config_dashboard:
@@ -560,7 +567,7 @@ class MgrService(CephService):
 class MdsService(CephService):
     TYPE = 'mds'
 
-    def config(self, spec: ServiceSpec) -> None:
+    def config(self, spec: ServiceSpec, daemon_id: str) -> None:
         assert self.TYPE == spec.service_type
         assert spec.service_id
 
@@ -616,7 +623,7 @@ class MdsService(CephService):
 class RgwService(CephService):
     TYPE = 'rgw'
 
-    def config(self, spec: RGWSpec, rgw_id: str) -> None:
+    def config(self, spec: RGWSpec, rgw_id: str) -> None:  # type: ignore
         assert self.TYPE == spec.service_type
 
         # create realm, zonegroup, and zone if needed
index 2241b214935955d4f5ef083bb313fce3cd7ec29f..cf1e6932eb92a851dd87990d6806c4948b800517 100644 (file)
@@ -14,7 +14,7 @@ logger = logging.getLogger(__name__)
 class IscsiService(CephService):
     TYPE = 'iscsi'
 
-    def config(self, spec: IscsiServiceSpec) -> None:
+    def config(self, spec: IscsiServiceSpec, daemon_id: str) -> None:  # type: ignore
         assert self.TYPE == spec.service_type
         assert spec.pool
         self.mgr._check_pool_exists(spec.pool, spec.service_name())
index b4e884f330d3031d6291619f56623b653f7d9f52..9136b7ba9187c72986e456c557d56bc91589d833 100644 (file)
@@ -14,7 +14,7 @@ logger = logging.getLogger(__name__)
 class NFSService(CephService):
     TYPE = 'nfs'
 
-    def config(self, spec: NFSServiceSpec) -> None:
+    def config(self, spec: NFSServiceSpec, daemon_id: str) -> None:  # type: ignore
         assert self.TYPE == spec.service_type
         assert spec.pool
         self.mgr._check_pool_exists(spec.pool, spec.service_name())