from . import utils
from .migrations import Migrations
from .services.cephadmservice import MonService, MgrService, MdsService, RgwService, \
- RbdMirrorService, CrashService, CephadmService, AuthEntity
+ RbdMirrorService, CrashService, CephadmService
from .services.iscsi import IscsiService
from .services.nfs import NFSService
from .services.osd import RemoveUtil, OSDQueue, OSDService, OSD, NotFoundError
deps.append(dd.name())
return sorted(deps)
- def _get_config_and_keyring(self, daemon_type, daemon_id, host,
- keyring=None,
- extra_ceph_config=None):
- # type: (str, str, str, Optional[str], Optional[str]) -> Dict[str, Any]
- # keyring
- if not keyring:
- entity: AuthEntity = \
- self.cephadm_services[daemon_type].get_auth_entity(daemon_id, host=host)
- ret, keyring, err = self.check_mon_command({
- 'prefix': 'auth get',
- 'entity': entity,
- })
-
- # generate config
- ret, config, err = self.check_mon_command({
- "prefix": "config generate-minimal-conf",
- })
- if extra_ceph_config:
- config += extra_ceph_config
-
- return {
- 'config': config,
- 'keyring': keyring,
- }
-
def _create_daemon(self,
daemon_spec: CephadmDaemonSpec,
reconfig=False,
raise NotImplementedError()
def generate_config(self, daemon_spec: CephadmDaemonSpec) -> Tuple[Dict[str, Any], List[str]]:
- # Ceph.daemons (mon, mgr, mds, osd, etc)
- cephadm_config = self.mgr._get_config_and_keyring(
- daemon_spec.daemon_type,
- daemon_spec.daemon_id,
- host=daemon_spec.host,
- keyring=daemon_spec.keyring,
- extra_ceph_config=daemon_spec.extra_config.pop('config', ''))
-
- if daemon_spec.extra_config:
- cephadm_config.update({'files': daemon_spec.extra_config})
-
- return cephadm_config, []
+ raise NotImplementedError()
def daemon_check_post(self, daemon_descrs: List[DaemonDescription]):
"""The post actions needed to be done after daemons are checked"""
"""
pass
+
+class CephService(CephadmService):
+ def generate_config(self, daemon_spec: CephadmDaemonSpec) -> Tuple[Dict[str, Any], List[str]]:
+ # Ceph.daemons (mon, mgr, mds, osd, etc)
+ cephadm_config = self.get_config_and_keyring(
+ daemon_spec.daemon_type,
+ daemon_spec.daemon_id,
+ host=daemon_spec.host,
+ keyring=daemon_spec.keyring,
+ extra_ceph_config=daemon_spec.extra_config.pop('config', ''))
+
+ if daemon_spec.extra_config:
+ cephadm_config.update({'files': daemon_spec.extra_config})
+
+ return cephadm_config, []
+
def get_auth_entity(self, daemon_id: str, host: str = "") -> AuthEntity:
"""
Map the daemon id to a cephx keyring entity name
else:
raise OrchestratorError("unknown daemon type")
+ def get_config_and_keyring(self,
+ daemon_type: str,
+ daemon_id: str,
+ host: str,
+ keyring: Optional[str] = None,
+ extra_ceph_config: Optional[str] = None
+ ) -> Dict[str, Any]:
+ # keyring
+ if not keyring:
+ entity: AuthEntity = self.get_auth_entity(daemon_id, host=host)
+ ret, keyring, err = self.mgr.check_mon_command({
+ 'prefix': 'auth get',
+ 'entity': entity,
+ })
+
+ # generate config
+ ret, config, err = self.mgr.check_mon_command({
+ "prefix": "config generate-minimal-conf",
+ })
+ if extra_ceph_config:
+ config += extra_ceph_config
+
+ return {
+ 'config': config,
+ 'keyring': keyring,
+ }
+
-class MonService(CephadmService):
+class MonService(CephService):
TYPE = 'mon'
def create(self, daemon_spec: CephadmDaemonSpec) -> str:
})
-class MgrService(CephadmService):
+class MgrService(CephService):
TYPE = 'mgr'
def create(self, daemon_spec: CephadmDaemonSpec) -> str:
return bool(num)
-class MdsService(CephadmService):
+class MdsService(CephService):
TYPE = 'mds'
def config(self, spec: ServiceSpec) -> None:
return DaemonDescription()
-class RgwService(CephadmService):
+class RgwService(CephService):
TYPE = 'rgw'
def config(self, spec: RGWSpec, rgw_id: str):
self.mgr.log.info('updated period')
-class RbdMirrorService(CephadmService):
+class RbdMirrorService(CephService):
TYPE = 'rbd-mirror'
def create(self, daemon_spec: CephadmDaemonSpec) -> str:
return self.mgr._create_daemon(daemon_spec)
-class CrashService(CephadmService):
+class CrashService(CephService):
TYPE = 'crash'
def create(self, daemon_spec: CephadmDaemonSpec) -> str:
from orchestrator import OrchestratorError, DaemonDescription
from cephadm import utils
-from cephadm.services.cephadmservice import CephadmService, CephadmDaemonSpec
+from cephadm.services.cephadmservice import CephadmDaemonSpec, CephService
if TYPE_CHECKING:
from cephadm.module import CephadmOrchestrator
logger = logging.getLogger(__name__)
-class NFSService(CephadmService):
+class NFSService(CephService):
TYPE = 'nfs'
def config(self, spec: NFSServiceSpec) -> None:
'ganesha.conf': get_ganesha_conf(),
}
config.update(
- self.mgr._get_config_and_keyring(
+ self.get_config_and_keyring(
daemon_type, daemon_id,
keyring=keyring,
host=host