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

index 0ca90452bf61fb0f3ce082d557ff492657f92bcb..b5fafa1768b1a84a1dc866959658c583d490a534 100644 (file)
@@ -38,7 +38,7 @@ from orchestrator import OrchestratorError, OrchestratorValidationError, HostSpe
 
 from . import remotes
 from . import utils
-from .services.cephadmservice import MonService, MgrService
+from .services.cephadmservice import MonService, MgrService, MdsService
 from .services.nfs import NFSService
 from .services.osd import RemoveUtil, OSDRemoval, OSDService
 from .inventory import Inventory, SpecStore, HostCache
@@ -425,6 +425,7 @@ class CephadmOrchestrator(orchestrator.Orchestrator, MgrModule):
         self.nfs_service = NFSService(self)
         self.mon_service = MonService(self)
         self.mgr_service = MgrService(self)
+        self.mds_service = MdsService(self)
 
     def shutdown(self):
         self.log.debug('shutdown')
@@ -1930,7 +1931,7 @@ class CephadmOrchestrator(orchestrator.Orchestrator, MgrModule):
             'mon': self.mon_service.create,
             'mgr': self.mgr_service.create,
             'osd': self.create_osds,  # osds work a bit different.
-            'mds': self._create_mds,
+            'mds': self.mds_service.create,
             'rgw': self._create_rgw,
             'rbd-mirror': self._create_rbd_mirror,
             'nfs': self.nfs_service.create,
@@ -1942,7 +1943,7 @@ class CephadmOrchestrator(orchestrator.Orchestrator, MgrModule):
             'iscsi': self._create_iscsi,
         }
         config_fns = {
-            'mds': self._config_mds,
+            'mds': self.mds_service.config,
             'rgw': self._config_rgw,
             'nfs': self.nfs_service.config,
             'iscsi': self._config_iscsi,
@@ -2230,33 +2231,12 @@ class CephadmOrchestrator(orchestrator.Orchestrator, MgrModule):
         return self._apply(spec)
 
     def add_mds(self, spec: ServiceSpec):
-        return self._add_daemon('mds', spec, self._create_mds, self._config_mds)
+        return self._add_daemon('mds', spec, self.mds_service.create, self.mds_service.config)
 
     @trivial_completion
     def apply_mds(self, spec: ServiceSpec):
         return self._apply(spec)
 
-    def _config_mds(self, spec):
-        # ensure mds_join_fs is set for these daemons
-        assert spec.service_id
-        ret, out, err = self.check_mon_command({
-            'prefix': 'config set',
-            'who': 'mds.' + spec.service_id,
-            'name': 'mds_join_fs',
-            'value': spec.service_id,
-        })
-
-    def _create_mds(self, mds_id, host):
-        # get mgr. key
-        ret, keyring, err = self.check_mon_command({
-            'prefix': 'auth get-or-create',
-            'entity': 'mds.' + mds_id,
-            'caps': ['mon', 'profile mds',
-                     'osd', 'allow rwx',
-                     'mds', 'allow'],
-        })
-        return self._create_daemon('mds', mds_id, host, keyring=keyring)
-
     def add_rgw(self, spec):
         return self._add_daemon('rgw', spec, self._create_rgw, self._config_rgw)
 
index 098cba995b3d8668202676e8d100dd0593ddd4b8..db7264854c0b42149368297011f60e9f1b05a366 100644 (file)
@@ -1,5 +1,6 @@
 from typing import  TYPE_CHECKING
 
+from ceph.deployment.service_spec import ServiceSpec
 from orchestrator import OrchestratorError
 
 if TYPE_CHECKING:
@@ -70,3 +71,26 @@ class MgrService(CephadmService):
         })
 
         return self.mgr._create_daemon('mgr', mgr_id, host, keyring=keyring)
+
+
+class MdsService(CephadmService):
+    def config(self, spec: ServiceSpec):
+        # ensure mds_join_fs is set for these daemons
+        assert spec.service_id
+        ret, out, err = self.mgr.check_mon_command({
+            'prefix': 'config set',
+            'who': 'mds.' + spec.service_id,
+            'name': 'mds_join_fs',
+            'value': spec.service_id,
+        })
+
+    def create(self, mds_id, host) -> str:
+        # get mgr. key
+        ret, keyring, err = self.mgr.check_mon_command({
+            'prefix': 'auth get-or-create',
+            'entity': 'mds.' + mds_id,
+            'caps': ['mon', 'profile mds',
+                     'osd', 'allow rwx',
+                     'mds', 'allow'],
+        })
+        return self.mgr._create_daemon('mds', mds_id, host, keyring=keyring)