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
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')
'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,
'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,
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)
from typing import TYPE_CHECKING
+from ceph.deployment.service_spec import ServiceSpec
from orchestrator import OrchestratorError
if TYPE_CHECKING:
})
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)