From: John Mulligan Date: Thu, 5 Oct 2023 20:41:12 +0000 (-0400) Subject: cephadm: copy template strings into template files X-Git-Tag: v19.0.0~153^2~1 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=45fca896bf667f2f2387d5ff5cab9d4c933bb0c7;p=ceph.git cephadm: copy template strings into template files Copy the current template strings into files under the `templates` dir. Add a enum for holding the names of known template files. Signed-off-by: John Mulligan --- diff --git a/src/cephadm/cephadmlib/templates/agent.service.j2 b/src/cephadm/cephadmlib/templates/agent.service.j2 new file mode 100644 index 000000000000..4a494e10d624 --- /dev/null +++ b/src/cephadm/cephadmlib/templates/agent.service.j2 @@ -0,0 +1,15 @@ +# generated by cephadm +[Unit] +Description=cephadm agent for cluster {{agent.fsid}} + +PartOf=ceph-{{agent.fsid}}.target +Before=ceph-{{agent.fsid}}.target + +[Service] +Type=forking +ExecStart=/bin/bash {{agent.daemon_dir}}/unit.run +Restart=on-failure +RestartSec=10s + +[Install] +WantedBy=ceph-{{agent.fsid}}.target diff --git a/src/cephadm/cephadmlib/templates/ceph.service.j2 b/src/cephadm/cephadmlib/templates/ceph.service.j2 new file mode 100644 index 000000000000..1c043dcdd6ad --- /dev/null +++ b/src/cephadm/cephadmlib/templates/ceph.service.j2 @@ -0,0 +1,43 @@ +# generated by cephadm +[Unit] +Description=Ceph %i for {{fsid}} + +# According to: +# http://www.freedesktop.org/wiki/Software/systemd/NetworkTarget +# these can be removed once ceph-mon will dynamically change network +# configuration. +After=network-online.target local-fs.target time-sync.target{% if has_docker_engine %} docker.service{% endif %} +Wants=network-online.target local-fs.target time-sync.target +{%- if has_docker_engine %} +Requires=docker.service +{%- endif %} + +PartOf=ceph-{{fsid}}.target +Before=ceph-{{fsid}}.target + +[Service] +LimitNOFILE=1048576 +LimitNPROC=1048576 +EnvironmentFile=-/etc/environment +ExecStart=/bin/bash {{ctx.data_dir}}/{{fsid}}/%i/unit.run +ExecStop=-/bin/bash -c 'bash {{ctx.data_dir}}/{{fsid}}/%i/unit.stop' +ExecStopPost=-/bin/bash {{ctx.data_dir}}/{{fsid}}/%i/unit.poststop +KillMode=none +Restart=on-failure +RestartSec=10s +TimeoutStartSec=200 +TimeoutStopSec=120 +StartLimitInterval=30min +StartLimitBurst=5 +{%- if has_podman_engine %} +ExecStartPre=-/bin/rm -f %t/%n-pid %t/%n-cid +ExecStopPost=-/bin/rm -f %t/%n-pid %t/%n-cid +Type=forking +PIDFile=%t/%n-pid +{%- if has_podman_split_version %} +Delegate=yes +{%- endif %} +{%- endif %} + +[Install] +WantedBy=ceph-{{fsid}}.target diff --git a/src/cephadm/cephadmlib/templating.py b/src/cephadm/cephadmlib/templating.py index ceb2f6fbddf3..b48b5deeaab6 100644 --- a/src/cephadm/cephadmlib/templating.py +++ b/src/cephadm/cephadmlib/templating.py @@ -1,5 +1,6 @@ # templating.py - functions to wrap string/file templating libs +import enum from typing import Any, Optional, IO @@ -11,6 +12,19 @@ _PKG = __name__.rsplit('.', 1)[0] _DIR = 'templates' +class Templates(str, enum.Enum): + """Known template files.""" + + ceph_service = 'ceph.service.j2' + agent_service = 'agent.service.j2' + + def __str__(self) -> str: + return self.value + + def __repr__(self) -> str: + return repr(self.value) + + class Templater: """Cephadm's generic templater class. Based on jinja2.""" @@ -39,12 +53,12 @@ class Templater: return self._env.from_string(template).render(ctx=ctx, **kwargs) def render(self, ctx: CephadmContext, name: str, **kwargs: Any) -> str: - return self._env.get_template(name).render(ctx=ctx, **kwargs) + return self._env.get_template(str(name)).render(ctx=ctx, **kwargs) def render_to_file( self, fp: IO, ctx: CephadmContext, name: str, **kwargs: Any ) -> None: - self._env.get_template(name).stream(ctx=ctx, **kwargs).dump(fp) + self._env.get_template(str(name)).stream(ctx=ctx, **kwargs).dump(fp) # create a defaultTemplater instace from the Templater class that will