aboutsummaryrefslogtreecommitdiffstats
path: root/sysutils/kleene-daemon/files/kleened.in
diff options
context:
space:
mode:
authorDave Cottlehuber <dch@FreeBSD.org>2025-02-18 18:17:42 +0000
committerDave Cottlehuber <dch@FreeBSD.org>2025-02-18 18:17:42 +0000
commit92eeb2761b015c6da8a8cdbe9f28484b630b6af9 (patch)
tree985917b5485358750bcc57ef9ab99e212a8fc3cf /sysutils/kleene-daemon/files/kleened.in
parent4a7cd62cf1060a85d463e45d7ff095c821848d4c (diff)
sysutils/kleene-daemon: new port for container management
PR: 279003 Sponsored by: SkunkWerks, GmbH Differential Revision: https://reviews.freebsd.org/D49018
Diffstat (limited to 'sysutils/kleene-daemon/files/kleened.in')
-rw-r--r--sysutils/kleene-daemon/files/kleened.in74
1 files changed, 74 insertions, 0 deletions
diff --git a/sysutils/kleene-daemon/files/kleened.in b/sysutils/kleene-daemon/files/kleened.in
new file mode 100644
index 000000000000..081380d2f183
--- /dev/null
+++ b/sysutils/kleene-daemon/files/kleened.in
@@ -0,0 +1,74 @@
+#!/bin/sh
+#
+# PROVIDE: kleened
+# REQUIRE: LOGIN
+# KEYWORD: shutdown
+#
+# Add these lines to /etc/rc.conf.local or /etc/rc.conf
+# to enable and configure this service:
+#
+# kleened_enable (bool): Set to NO by default.
+# Set it to YES to enable kleened.
+# kleened_user (str): Set to "root" by default.
+# kleened_config (str): Path to config file.
+# Default: %%PREFIX%%/etc/kleened/config.yaml
+# kleened_shutdown_timeout (int): Seconds to wait for graceful shutdown.
+# Default: 60
+
+. /etc/rc.subr
+name=kleened
+rcvar=kleened_enable
+extra_commands="init dryinit"
+# kleened_init: Initialize host configuration
+# kleened_dryinit: Test host configuration without applying changes
+
+required_files="${kleened_config}"
+
+command="%%PREFIX%%/libexec/kleened/bin/kleened"
+pidfile="/var/run/kleened.pid"
+procname="$(/usr/bin/find %%PREFIX%%/libexec/kleened -name beam.smp)"
+
+start_cmd="${command} daemon"
+status_cmd="${command} ping"
+stop_cmd="kleened_stop"
+init_cmd="kleened_init"
+dryinit_cmd="kleened_dryinit"
+
+load_rc_config $name
+
+: ${kleened_enable:=no}
+: ${kleened_user:="root"}
+: ${kleened_config:="%%ETCDIR%%/config.yaml"}
+: ${kleened_shutdown_timeout:=60}
+: ${kleened_env="LANG=en_US.UTF-8 LC_ALL=en_US.UTF-8 PATH=%%PREFIX%%/libexec/kleened/bin:${PATH}"}
+
+kleened_stop()
+{
+ echo "Stopping ${name}."
+ ${command} stop
+ wait_for_pids ${pidfile} ${kleened_shutdown_timeout}
+}
+
+kleened_init()
+{
+ echo "Initializing kleened host configuration..."
+ if %%PREFIX%%/libexec/kleened/bin/kleened eval "Kleened.Core.Config.initialize_host(%{dry_run: false})"; then
+ echo "Host initialization completed successfully"
+ else
+ echo "Host initialization failed"
+ return 1
+ fi
+}
+
+kleened_dryinit()
+{
+ echo "Testing kleened host configuration..."
+ if %%PREFIX%%/libexec/kleened/bin/kleened eval "Kleened.Core.Config.initialize_host(%{dry_run: true})"; then
+ echo "Host configuration test completed successfully"
+ else
+ echo "Host configuration test failed"
+ return 1
+ fi
+}
+
+run_rc_command "$1"