From 5b67b81a33fe3066115369155ec1524c43e503d4 Mon Sep 17 00:00:00 2001 From: Sebastian Wagner Date: Mon, 4 May 2020 13:55:07 +0200 Subject: [PATCH] mgr/cephadm: Add MgrService Signed-off-by: Sebastian Wagner --- src/pybind/mgr/cephadm/module.py | 22 ++++--------------- .../mgr/cephadm/services/cephadmservice.py | 19 +++++++++++++++- 2 files changed, 22 insertions(+), 19 deletions(-) diff --git a/src/pybind/mgr/cephadm/module.py b/src/pybind/mgr/cephadm/module.py index 75d359a911e9e..0ca90452bf61f 100644 --- a/src/pybind/mgr/cephadm/module.py +++ b/src/pybind/mgr/cephadm/module.py @@ -38,7 +38,7 @@ from orchestrator import OrchestratorError, OrchestratorValidationError, HostSpe from . import remotes from . import utils -from .services.cephadmservice import MonService +from .services.cephadmservice import MonService, MgrService from .services.nfs import NFSService from .services.osd import RemoveUtil, OSDRemoval, OSDService from .inventory import Inventory, SpecStore, HostCache @@ -424,6 +424,7 @@ class CephadmOrchestrator(orchestrator.Orchestrator, MgrModule): self.osd_service = OSDService(self) self.nfs_service = NFSService(self) self.mon_service = MonService(self) + self.mgr_service = MgrService(self) def shutdown(self): self.log.debug('shutdown') @@ -1927,7 +1928,7 @@ class CephadmOrchestrator(orchestrator.Orchestrator, MgrModule): self.log.debug('Applying service %s spec' % service_name) create_fns = { 'mon': self.mon_service.create, - 'mgr': self._create_mgr, + 'mgr': self.mgr_service.create, 'osd': self.create_osds, # osds work a bit different. 'mds': self._create_mds, 'rgw': self._create_rgw, @@ -2180,24 +2181,9 @@ class CephadmOrchestrator(orchestrator.Orchestrator, MgrModule): # type: (ServiceSpec) -> orchestrator.Completion return self._add_daemon('mon', spec, self.mon_service.create) - def _create_mgr(self, mgr_id, host): - """ - Create a new manager instance on a host. - """ - # get mgr. key - ret, keyring, err = self.check_mon_command({ - 'prefix': 'auth get-or-create', - 'entity': 'mgr.%s' % mgr_id, - 'caps': ['mon', 'profile mgr', - 'osd', 'allow *', - 'mds', 'allow *'], - }) - - return self._create_daemon('mgr', mgr_id, host, keyring=keyring) - def add_mgr(self, spec): # type: (ServiceSpec) -> orchestrator.Completion - return self._add_daemon('mgr', spec, self._create_mgr) + return self._add_daemon('mgr', spec, self.mgr_service.create) def _apply(self, spec: ServiceSpec) -> str: if spec.placement.is_empty(): diff --git a/src/pybind/mgr/cephadm/services/cephadmservice.py b/src/pybind/mgr/cephadm/services/cephadmservice.py index 3c088440638ad..098cba995b3d8 100644 --- a/src/pybind/mgr/cephadm/services/cephadmservice.py +++ b/src/pybind/mgr/cephadm/services/cephadmservice.py @@ -52,4 +52,21 @@ class MonService(CephadmService): return self.mgr._create_daemon('mon', name, host, keyring=keyring, - extra_config={'config': extra_config}) \ No newline at end of file + extra_config={'config': extra_config}) + + +class MgrService(CephadmService): + def create(self, mgr_id, host): + """ + Create a new manager instance on a host. + """ + # get mgr. key + ret, keyring, err = self.mgr.check_mon_command({ + 'prefix': 'auth get-or-create', + 'entity': 'mgr.%s' % mgr_id, + 'caps': ['mon', 'profile mgr', + 'osd', 'allow *', + 'mds', 'allow *'], + }) + + return self.mgr._create_daemon('mgr', mgr_id, host, keyring=keyring) -- 2.39.5