]> git.apps.os.sepia.ceph.com Git - ceph.git/commitdiff
cephadm: add function for writing sidecar script
authorJohn Mulligan <jmulligan@redhat.com>
Fri, 17 Nov 2023 20:31:03 +0000 (15:31 -0500)
committerJohn Mulligan <jmulligan@redhat.com>
Tue, 2 Jan 2024 14:30:21 +0000 (09:30 -0500)
Signed-off-by: John Mulligan <jmulligan@redhat.com>
src/cephadm/cephadmlib/runscripts.py

index 6305b51bac5eb026d19ee877624c612752ca910d..bfa73edbd7d129e0c07724045934a2f2ec4c72a5 100644 (file)
@@ -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],