From 657027088e4d8be4789496020c034aa2837a07b7 Mon Sep 17 00:00:00 2001 From: Adam King Date: Thu, 14 Jan 2021 20:04:27 -0500 Subject: [PATCH] mgr/cephadm: fix ha-rgw removal removing the ha-rgw service from a host was failing due to some issues with daemon type <-> service type conversions Signed-off-by: Adam King --- src/pybind/mgr/cephadm/module.py | 4 ++-- src/pybind/mgr/cephadm/services/cephadmservice.py | 9 ++++++--- 2 files changed, 8 insertions(+), 5 deletions(-) diff --git a/src/pybind/mgr/cephadm/module.py b/src/pybind/mgr/cephadm/module.py index 490c795d4e5..7254b1ca04c 100644 --- a/src/pybind/mgr/cephadm/module.py +++ b/src/pybind/mgr/cephadm/module.py @@ -1178,7 +1178,7 @@ class CephadmOrchestrator(orchestrator.Orchestrator, MgrModule, addr=spec.addr, error_ok=True, no_fsid=True) if code: - # err will contain stdout and stderr, so we filter on the message text to + # err will contain stdout and stderr, so we filter on the message text to # only show the errors errors = [_i.replace("ERROR: ", "") for _i in err if _i.startswith('ERROR')] raise OrchestratorError('New host %s (%s) failed check(s): %s' % ( @@ -1455,7 +1455,7 @@ class CephadmOrchestrator(orchestrator.Orchestrator, MgrModule, else: spec = ServiceSpec( unmanaged=True, - service_type=dd.daemon_type, + service_type=daemon_type_to_service(dd.daemon_type), service_id=dd.service_id(), placement=PlacementSpec( hosts=[dd.hostname] diff --git a/src/pybind/mgr/cephadm/services/cephadmservice.py b/src/pybind/mgr/cephadm/services/cephadmservice.py index a2b26bf0690..e85f4c86baa 100644 --- a/src/pybind/mgr/cephadm/services/cephadmservice.py +++ b/src/pybind/mgr/cephadm/services/cephadmservice.py @@ -13,6 +13,7 @@ from mgr_module import HandleCommandResult, MonCommandFailed from ceph.deployment.service_spec import ServiceSpec, RGWSpec from ceph.deployment.utils import is_ipv6, unwrap_ipv6 from orchestrator import OrchestratorError, DaemonDescription +from orchestrator._interface import daemon_type_to_service, service_to_daemon_types from cephadm import utils from mgr_util import create_self_signed_cert, ServerConfigException, verify_tls @@ -234,14 +235,14 @@ class CephadmService(metaclass=ABCMeta): """ Called before the daemon is removed. """ - assert self.TYPE == daemon.daemon_type + assert self.TYPE == daemon_type_to_service(daemon.daemon_type) logger.debug(f'Pre remove daemon {self.TYPE}.{daemon.daemon_id}') def post_remove(self, daemon: DaemonDescription) -> None: """ Called after the daemon is removed. """ - assert self.TYPE == daemon.daemon_type + assert self.TYPE == daemon_type_to_service(daemon.daemon_type) logger.debug(f'Post remove daemon {self.TYPE}.{daemon.daemon_id}') def purge(self) -> None: @@ -272,7 +273,9 @@ class CephService(CephadmService): """ Map the daemon id to a cephx keyring entity name """ - if self.TYPE in ['rgw', 'rbd-mirror', 'nfs', "iscsi", 'haproxy', 'keepalived']: + # despite this mapping entity names to daemons, self.TYPE within + # the CephService class refers to service types, not daemon types + if self.TYPE in ['rgw', 'rbd-mirror', 'nfs', "iscsi", 'ha-rgw']: return AuthEntity(f'client.{self.TYPE}.{daemon_id}') elif self.TYPE == 'crash': if host == "": -- 2.39.5