]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph.git/commitdiff
cephadm: copy template strings into template files
authorJohn Mulligan <jmulligan@redhat.com>
Thu, 5 Oct 2023 20:41:12 +0000 (16:41 -0400)
committerJohn Mulligan <jmulligan@redhat.com>
Fri, 3 Nov 2023 22:51:49 +0000 (18:51 -0400)
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 <jmulligan@redhat.com>
src/cephadm/cephadmlib/templates/agent.service.j2 [new file with mode: 0644]
src/cephadm/cephadmlib/templates/ceph.service.j2 [new file with mode: 0644]
src/cephadm/cephadmlib/templating.py

diff --git a/src/cephadm/cephadmlib/templates/agent.service.j2 b/src/cephadm/cephadmlib/templates/agent.service.j2
new file mode 100644 (file)
index 0000000..4a494e1
--- /dev/null
@@ -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 (file)
index 0000000..1c043dc
--- /dev/null
@@ -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
index ceb2f6fbddf370317e365dfe5c1324f6c3cdf609..b48b5deeaab682c4b136d8f843729d7bf2b03e53 100644 (file)
@@ -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