From: John Mulligan Date: Fri, 17 Nov 2023 20:31:03 +0000 (-0500) Subject: cephadm: add function for writing sidecar script X-Git-Tag: v19.1.0~566^2~21 X-Git-Url: http://git.apps.os.sepia.ceph.com/?a=commitdiff_plain;h=99a2c306d74053386b095af087c79d2bd1fd5a24;p=ceph.git cephadm: add function for writing sidecar script Signed-off-by: John Mulligan --- diff --git a/src/cephadm/cephadmlib/runscripts.py b/src/cephadm/cephadmlib/runscripts.py index 6305b51bac5eb..bfa73edbd7d12 100644 --- a/src/cephadm/cephadmlib/runscripts.py +++ b/src/cephadm/cephadmlib/runscripts.py @@ -5,11 +5,12 @@ import shlex from typing import Any, Dict, Union, List, IO, TextIO, Optional, cast +from . import templating from .container_engines import Podman -from .container_types import CephContainer, InitContainer +from .container_types import CephContainer, InitContainer, SidecarContainer from .context import CephadmContext from .context_getters import fetch_meta -from .daemon_identity import DaemonIdentity +from .daemon_identity import DaemonIdentity, DaemonSubIdentity from .file_utils import write_new from .net_utils import EndPoint @@ -39,6 +40,7 @@ def write_service_scripts( *, container: CephContainer, init_containers: Optional[List[InitContainer]] = None, + sidecars: Optional[List[SidecarContainer]] = None, endpoints: Optional[List[EndPoint]] = None, pre_start_commands: Optional[List[Command]] = None, post_stop_commands: Optional[List[Command]] = None, @@ -94,6 +96,18 @@ def write_service_scripts( _write_init_container_cmds(ctx, initf, idx, ic) initf.write('exit 0\n') + # sidecar container scripts + for sidecar in sidecars or []: + assert isinstance(sidecar.identity, DaemonSubIdentity) + script_path = sidecar.identity.sidecar_script(ctx.data_dir) + scsf = estack.enter_context(write_new(script_path)) + _write_sidecar_script( + ctx, + scsf, + sidecar, + f'sidecar: {sidecar.identity.subcomponent}', + ) + # post-stop command(s) pstopf = estack.enter_context(write_new(post_stop_file_path)) # this is a fallback to eventually stop any underlying container that @@ -206,6 +220,23 @@ def _write_stop_actions( ) +def _write_sidecar_script( + ctx: CephadmContext, + file_obj: IO[str], + sidecar: SidecarContainer, + comment: str = '', +) -> None: + has_podman_engine = isinstance(ctx.container_engine, Podman) + templating.render_to_file( + file_obj, + ctx, + templating.Templates.sidecar_run, + sidecar=sidecar, + comment=comment, + has_podman_engine=has_podman_engine, + ) + + def _bash_cmd( fh: IO[str], cmd: List[str],