From 92acb88fd5c474c05c84bbfba90969bda10c4a5f Mon Sep 17 00:00:00 2001 From: Ben Peddell Date: Sun, 22 Nov 2015 18:33:46 +1000 Subject: [PATCH] Update systemd and upstart scripts with multi-instance support --- tools/arkmanager | 22 +++++++++++++--------- tools/install.sh | 3 +++ tools/systemd/arkmanager.init | 13 +++++++++++-- tools/upstart/arkmanager.conf | 6 ++++-- 4 files changed, 31 insertions(+), 13 deletions(-) diff --git a/tools/arkmanager b/tools/arkmanager index 9a8d6a5..c672f1a 100755 --- a/tools/arkmanager +++ b/tools/arkmanager @@ -1496,14 +1496,18 @@ getAllInstanceNames(){ } doListAllInstances(){ - echo "The following instances are available:" - for n in $(getAllInstanceNames); do - ( - echo -n " @${n}: " - useConfig "$n" - echo "${arkserverroot}" - ) - done + if [ "$1" == "--brief" ]; then + getAllInstanceNames + else + echo "The following instances are available:" + for n in $(getAllInstanceNames); do + ( + echo -n " @${n}: " + useConfig "$n" + echo "${arkserverroot}" + ) + done + fi } useConfig() { @@ -1638,7 +1642,7 @@ while true; do continue ;; list-instances) - doListAllInstances + doListAllInstances "${options[@]}" exit ;; --version) diff --git a/tools/install.sh b/tools/install.sh index e2f526b..3ac4df4 100755 --- a/tools/install.sh +++ b/tools/install.sh @@ -210,6 +210,7 @@ else if [ -f /etc/systemd/system.conf ]; then # used by systemd mkdir -p "${INSTALL_ROOT}${LIBEXECDIR}" cp systemd/arkmanager.init "${INSTALL_ROOT}${LIBEXECDIR}/arkmanager.init" + sed -i "s|^DAEMON=\"/usr/bin/|DAEMON=\"${BINDIR}/|" "${INSTALL_ROOT}${LIBEXECDIR}/arkmanager.init" chmod +x "${INSTALL_ROOT}${LIBEXECDIR}/arkmanager.init" cp systemd/arkmanager.service "${INSTALL_ROOT}/etc/systemd/system/arkmanager.service" sed -i "s|=/usr/libexec/arkmanager/|=${LIBEXECDIR}/|" "${INSTALL_ROOT}/etc/systemd/system/arkmanager.service" @@ -237,6 +238,7 @@ else if [ -f /etc/systemd/system.conf ]; then # used by systemd mkdir -p "${INSTALL_ROOT}${LIBEXECDIR}" cp systemd/arkmanager.init "${INSTALL_ROOT}${LIBEXECDIR}/arkmanager.init" + sed -i "s|^DAEMON=\"/usr/bin/|DAEMON=\"${BINDIR}/|" "${INSTALL_ROOT}${LIBEXECDIR}/arkmanager.init" chmod +x "${INSTALL_ROOT}${LIBEXECDIR}/arkmanager.init" cp systemd/arkmanager.service "${INSTALL_ROOT}/etc/systemd/system/arkmanager.service" sed -i "s|=/usr/libexec/arkmanager/|=${LIBEXECDIR}/|" "${INSTALL_ROOT}/etc/systemd/system/arkmanager.service" @@ -270,6 +272,7 @@ else elif [ -f /etc/systemd/system.conf ]; then # used by systemd mkdir -p "${INSTALL_ROOT}${LIBEXECDIR}" cp systemd/arkmanager.init "${INSTALL_ROOT}${LIBEXECDIR}/arkmanager.init" + sed -i "s|^DAEMON=\"/usr/bin/|DAEMON=\"${BINDIR}/|" "${INSTALL_ROOT}${LIBEXECDIR}/arkmanager.init" chmod +x "${INSTALL_ROOT}${LIBEXECDIR}/arkmanager.init" cp systemd/arkmanager.service "${INSTALL_ROOT}/etc/systemd/system/arkmanager.service" sed -i "s|=/usr/libexec/arkmanager/|=${LIBEXECDIR}/|" "${INSTALL_ROOT}/etc/systemd/system/arkmanager.service" diff --git a/tools/systemd/arkmanager.init b/tools/systemd/arkmanager.init index be25029..fa760d2 100755 --- a/tools/systemd/arkmanager.init +++ b/tools/systemd/arkmanager.init @@ -1,5 +1,14 @@ #!/bin/bash -for service in main $(grep -o '^configfile_[^=]*' /etc/arkmanager/arkmanager.cfg); do - systemctl start arkmanager@${service#configfile_} +DAEMON=/usr/bin/arkmanager + +for service in $(${DAEMON} list-instances --brief); do + case "$1" in + start) + systemctl start arkmanager@${service} + ;; + stop) + systemctl stop arkmanager@${service} + ;; + esac done diff --git a/tools/upstart/arkmanager.conf b/tools/upstart/arkmanager.conf index 688cbe8..5cc8008 100644 --- a/tools/upstart/arkmanager.conf +++ b/tools/upstart/arkmanager.conf @@ -1,8 +1,10 @@ start on runlevel [345] stop on runlevel [!345] +env DAEMON="/usr/bin/arkmanager" + script - for service in main $(grep -o '^configfile_[^=]*' /etc/arkmanager/arkmanager.cfg); do - start arkmanager-instance service=${service#configfile_} + for service in $(${DAEMON} list-instances --brief); do + start arkmanager-instance service=${service} done end script