]> git.apps.os.sepia.ceph.com Git - ceph.git/commitdiff
mgr/cephadm: Add MgrService
authorSebastian Wagner <sebastian.wagner@suse.com>
Mon, 4 May 2020 11:55:07 +0000 (13:55 +0200)
committerSebastian Wagner <sebastian.wagner@suse.com>
Thu, 7 May 2020 11:05:31 +0000 (13:05 +0200)
Signed-off-by: Sebastian Wagner <sebastian.wagner@suse.com>
src/pybind/mgr/cephadm/module.py
src/pybind/mgr/cephadm/services/cephadmservice.py

index 75d359a911e9e7c7550268123cd74c4141205972..0ca90452bf61fb0f3ce082d557ff492657f92bcb 100644 (file)
@@ -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():
index 3c088440638ad81fb5f75ceaad417a93e13cd274..098cba995b3d8668202676e8d100dd0593ddd4b8 100644 (file)
@@ -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)