LogDestination,
)
from cephadmlib.systemd import check_unit, check_units
-from cephadmlib.systemd_unit import get_unit_file, install_base_units
+from cephadmlib import systemd_unit
from cephadmlib.container_types import (
CephContainer,
InitContainer,
install_sysctl(ctx, fsid, daemon_form_create(ctx, ident))
# systemd
- install_base_units(ctx, fsid)
- unit = get_unit_file(ctx, fsid)
- unit_file = 'ceph-%s@.service' % (fsid)
- with write_new(ctx.unit_dir + '/' + unit_file, perms=None) as f:
- f.write(unit)
+ systemd_unit.update_files(ctx, ident)
call_throws(ctx, ['systemctl', 'daemon-reload'])
unit_name = get_unit_name(fsid, daemon_type, daemon_id)
##################################
+@infer_fsid
def command_unit_install(ctx):
# type: (CephadmContext) -> int
- if not ctx.fsid:
+ if not getattr(ctx, 'fsid', None):
raise Error('must pass --fsid to specify cluster')
-
- fsid = ctx.fsid
- install_base_units(ctx, fsid)
- unit = get_unit_file(ctx, fsid)
- unit_file = 'ceph-%s@.service' % (fsid)
- with open(ctx.unit_dir + '/' + unit_file + '.new', 'w') as f:
- f.write(unit)
- os.rename(ctx.unit_dir + '/' + unit_file + '.new',
- ctx.unit_dir + '/' + unit_file)
+ if not getattr(ctx, 'name', None):
+ raise Error('daemon name required')
+ ident = DaemonIdentity.from_context(ctx)
+ systemd_unit.update_files(ctx, ident)
call_throws(ctx, ['systemctl', 'daemon-reload'])
-
return 0
parser_unit_install = subparsers.add_parser(
'unit-install', help="Install the daemon's systemd unit")
parser_unit_install.set_defaults(func=command_unit_install)
+ parser_unit_install.add_argument(
+ '--fsid',
+ help='cluster FSID')
+ parser_unit_install.add_argument(
+ '--name', '-n',
+ required=True,
+ help='daemon name (type.id)')
parser_logs = subparsers.add_parser(
'logs', help='print journald logs for a daemon container')
from .call_wrappers import call_throws
from .container_engines import Docker, Podman
from .context import CephadmContext
+from .daemon_identity import DaemonIdentity
from .file_utils import write_new
from .logging import write_cluster_logrotate_config
-def get_unit_file(ctx: CephadmContext, fsid: str) -> str:
+def _get_unit_file(ctx: CephadmContext, fsid: str) -> str:
has_docker_engine = isinstance(ctx.container_engine, Docker)
has_podman_engine = isinstance(ctx.container_engine, Podman)
has_podman_split_version = (
)
-def install_base_units(ctx, fsid):
- # type: (CephadmContext, str) -> None
+def _install_base_units(ctx: CephadmContext, fsid: str) -> None:
"""
Set up ceph.target and ceph-$fsid.target units.
"""
return
write_cluster_logrotate_config(ctx, fsid)
+
+
+def update_files(ctx: CephadmContext, ident: DaemonIdentity) -> None:
+ _install_base_units(ctx, ident.fsid)
+ unit = _get_unit_file(ctx, ident.fsid)
+ unit_file = 'ceph-%s@.service' % (ident.fsid)
+ with write_new(ctx.unit_dir + '/' + unit_file, perms=None) as f:
+ f.write(unit)