From 1b4e9e68d449ba58f1d0169c733124879173cf76 Mon Sep 17 00:00:00 2001 From: Sebastian Wagner Date: Mon, 1 Feb 2021 18:13:59 +0100 Subject: [PATCH] mgr/cephadm: Add config() to CephadmService Signed-off-by: Sebastian Wagner --- src/pybind/mgr/cephadm/module.py | 5 +--- src/pybind/mgr/cephadm/serve.py | 23 ++++--------------- .../mgr/cephadm/services/cephadmservice.py | 11 +++++++-- src/pybind/mgr/cephadm/services/iscsi.py | 2 +- src/pybind/mgr/cephadm/services/nfs.py | 2 +- 5 files changed, 16 insertions(+), 27 deletions(-) diff --git a/src/pybind/mgr/cephadm/module.py b/src/pybind/mgr/cephadm/module.py index 399ce2bdb1db8..b45a2d2b63d22 100644 --- a/src/pybind/mgr/cephadm/module.py +++ b/src/pybind/mgr/cephadm/module.py @@ -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( diff --git a/src/pybind/mgr/cephadm/serve.py b/src/pybind/mgr/cephadm/serve.py index a721babcbd157..a4cad1a4fee91 100644 --- a/src/pybind/mgr/cephadm/serve.py +++ b/src/pybind/mgr/cephadm/serve.py @@ -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( diff --git a/src/pybind/mgr/cephadm/services/cephadmservice.py b/src/pybind/mgr/cephadm/services/cephadmservice.py index 4cff688e875c6..8d35483c6d26c 100644 --- a/src/pybind/mgr/cephadm/services/cephadmservice.py +++ b/src/pybind/mgr/cephadm/services/cephadmservice.py @@ -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 diff --git a/src/pybind/mgr/cephadm/services/iscsi.py b/src/pybind/mgr/cephadm/services/iscsi.py index 2241b21493595..cf1e6932eb92a 100644 --- a/src/pybind/mgr/cephadm/services/iscsi.py +++ b/src/pybind/mgr/cephadm/services/iscsi.py @@ -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()) diff --git a/src/pybind/mgr/cephadm/services/nfs.py b/src/pybind/mgr/cephadm/services/nfs.py index b4e884f330d30..9136b7ba9187c 100644 --- a/src/pybind/mgr/cephadm/services/nfs.py +++ b/src/pybind/mgr/cephadm/services/nfs.py @@ -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()) -- 2.39.5