Repository: karaf
Updated Branches:
  refs/heads/karaf-4.0.x 3aa65856b -> 1a8809fce


KARAF-4281 - System scripts: provide Systemd templates to manage Karaf child 
instances

(cherry picked from commit bc9b83bcedbd136ef1f0548770d08d444f6701e7)


Project: http://git-wip-us.apache.org/repos/asf/karaf/repo
Commit: http://git-wip-us.apache.org/repos/asf/karaf/commit/1a8809fc
Tree: http://git-wip-us.apache.org/repos/asf/karaf/tree/1a8809fc
Diff: http://git-wip-us.apache.org/repos/asf/karaf/diff/1a8809fc

Branch: refs/heads/karaf-4.0.x
Commit: 1a8809fce028ca9d15a7e3c2b145d78c60480083
Parents: 3aa6585
Author: lburgazzoli <[email protected]>
Authored: Wed Jan 20 10:46:56 2016 +0100
Committer: Freeman Fang <[email protected]>
Committed: Thu Jan 21 10:19:38 2016 +0800

----------------------------------------------------------------------
 .../bin/contrib/karaf-service-template.systemd  | 14 ++----
 .../karaf-service-template.systemd-instances    | 42 ++++++++++++++++
 .../resources/bin/contrib/karaf-service.sh      | 52 ++++++++++++++++----
 3 files changed, 88 insertions(+), 20 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/karaf/blob/1a8809fc/assemblies/features/base/src/main/resources/resources/bin/contrib/karaf-service-template.systemd
----------------------------------------------------------------------
diff --git 
a/assemblies/features/base/src/main/resources/resources/bin/contrib/karaf-service-template.systemd
 
b/assemblies/features/base/src/main/resources/resources/bin/contrib/karaf-service-template.systemd
index 828319c..a0d728f 100644
--- 
a/assemblies/features/base/src/main/resources/resources/bin/contrib/karaf-service-template.systemd
+++ 
b/assemblies/features/base/src/main/resources/resources/bin/contrib/karaf-service-template.systemd
@@ -21,25 +21,19 @@ After=syslog.target network.target
 
 [Service]
 EnvironmentFile=${KARAF_SERVICE_CONF}
-#Environment="KARAF_OPTS=-Dkaraf.systemd.enabled=true"
 
-User=${KARAF_SERVICE_USER}
-Group=${KARAF_SERVICE_GROUP}
-PIDFile=${KARAF_SERVICE_PIDFILE}
 ExecStart=${KARAF_SERVICE_PATH}/bin/${KARAF_SERVICE_EXECUTABLE} daemon
 ExecStop=${KARAF_SERVICE_PATH}/bin/${KARAF_SERVICE_EXECUTABLE} stop
 
-Restart=on-failure
-RestartSec=5s
-StartLimitInterval=60s
-StartLimitBurst=3
+User=${KARAF_SERVICE_USER}
+Group=${KARAF_SERVICE_GROUP}
 
 SuccessExitStatus=0 143
+RestartSec=15
+Restart=on-failure
 
 LimitNOFILE=102642
 
-#WatchdogSec=60
-
 [Install]
 WantedBy=multi-user.target
 

http://git-wip-us.apache.org/repos/asf/karaf/blob/1a8809fc/assemblies/features/base/src/main/resources/resources/bin/contrib/karaf-service-template.systemd-instances
----------------------------------------------------------------------
diff --git 
a/assemblies/features/base/src/main/resources/resources/bin/contrib/karaf-service-template.systemd-instances
 
b/assemblies/features/base/src/main/resources/resources/bin/contrib/karaf-service-template.systemd-instances
new file mode 100644
index 0000000..8094a6b
--- /dev/null
+++ 
b/assemblies/features/base/src/main/resources/resources/bin/contrib/karaf-service-template.systemd-instances
@@ -0,0 +1,42 @@
+#
+#    Licensed to the Apache Software Foundation (ASF) under one or more
+#    contributor license agreements.  See the NOTICE file distributed with
+#    this work for additional information regarding copyright ownership.
+#    The ASF licenses this file to You under the Apache License, Version 2.0
+#    (the "License"); you may not use this file except in compliance with
+#    the License.  You may obtain a copy of the License at
+#
+#       http://www.apache.org/licenses/LICENSE-2.0
+#
+#    Unless required by applicable law or agreed to in writing, software
+#    distributed under the License is distributed on an "AS IS" BASIS,
+#    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+#    See the License for the specific language governing permissions and
+#    limitations under the License.
+#
+
+[Unit]
+Description=Karaf - ${KARAF_SERVICE_NAME} - %i
+After=syslog.target network.target
+Requires=${KARAF_SERVICE_NAME}.service
+
+[Service]
+EnvironmentFile=-${KARAF_SERVICE_PATH}/etc/${KARAF_SERVICE_NAME}-%i.conf
+EnvironmentFile=-${KARAF_SERVICE_PATH}/instances/%i/etc/${KARAF_SERVICE_NAME}.conf
+Environment=KARAF_HOME=${KARAF_SERVICE_PATH}
+Environment=KARAF_BASE=${KARAF_SERVICE_PATH}/instances/%i
+
+ExecStart=${KARAF_SERVICE_PATH}/bin/${KARAF_SERVICE_EXECUTABLE} daemon
+ExecStop=${KARAF_SERVICE_PATH}/bin/${KARAF_SERVICE_EXECUTABLE} stop
+
+User=${KARAF_SERVICE_USER}
+Group=${KARAF_SERVICE_GROUP}
+
+SuccessExitStatus=0 1 143
+RestartSec=15
+Restart=on-failure
+
+LimitNOFILE=102642
+
+[Install]
+WantedBy=multi-user.target

http://git-wip-us.apache.org/repos/asf/karaf/blob/1a8809fc/assemblies/features/base/src/main/resources/resources/bin/contrib/karaf-service.sh
----------------------------------------------------------------------
diff --git 
a/assemblies/features/base/src/main/resources/resources/bin/contrib/karaf-service.sh
 
b/assemblies/features/base/src/main/resources/resources/bin/contrib/karaf-service.sh
index a7a4c55..3b9b517 100755
--- 
a/assemblies/features/base/src/main/resources/resources/bin/contrib/karaf-service.sh
+++ 
b/assemblies/features/base/src/main/resources/resources/bin/contrib/karaf-service.sh
@@ -38,6 +38,7 @@ END
 
 CONF_TEMPLATE="karaf-service-template.conf"
 SYSTEMD_TEMPLATE="karaf-service-template.systemd"
+SYSTEMD_TEMPLATE_INSTANCES="karaf-service-template.systemd-instances"
 INIT_REDHAT_TEMPLATE="karaf-service-template.init-redhat"
 INIT_DEBIAN_TEMPLATE="karaf-service-template.init-debian"
 SOLARIS_SMF_TEMPLATE="karaf-service-template.solaris-smf"
@@ -115,12 +116,18 @@ fi
 
################################################################################
 
 function generate_service_descriptor {
+    echo "Writing service file $2"
     perl -p -e 's/\$\{([^}]+)\}/defined $ENV{$1} ? $ENV{$1} : $&/eg' < $1 > $2
-    perl -p -e 's/\$\{([^}]+)\}/defined $ENV{$1} ? $ENV{$1} : $&/eg' < 
${CONF_TEMPLATE} > ${KARAF_SERVICE_CONF}
 
-    for var in "${KARAF_ENV[@]}"; do
-      echo "${var}" >> ${KARAF_SERVICE_CONF}
-    done
+    if [ $# -eq 4 ]; then
+
+        echo "Writing service configuration file $4"
+        perl -p -e 's/\$\{([^}]+)\}/defined $ENV{$1} ? $ENV{$1} : $&/eg' < $3 
> $4
+
+        for var in "${KARAF_ENV[@]}"; do
+          echo "${var}" >> $4
+        done
+    fi
 }
 
 
################################################################################
@@ -131,20 +138,45 @@ if [[ ! $KARAF_SERVICE_TEMPLATE ]]; then
     case $(uname | tr [:upper:] [:lower:]) in
         sunos)
             # smc vs initv
-            generate_service_descriptor $SOLARIS_SMF_TEMPLATE 
${PWD}/${KARAF_SERVICE_NAME}.xml
+            generate_service_descriptor \
+                $SOLARIS_SMF_TEMPLATE \
+                ${PWD}/${KARAF_SERVICE_NAME}.xml
             ;;
         linux)
             if [ -d /run/systemd/system ]; then
-                generate_service_descriptor $SYSTEMD_TEMPLATE 
${PWD}/${KARAF_SERVICE_NAME}.service
+                generate_service_descriptor \
+                    $SYSTEMD_TEMPLATE \
+                    ${PWD}/${KARAF_SERVICE_NAME}.service \
+                    ${CONF_TEMPLATE} \
+                    ${KARAF_SERVICE_CONF}
+
+                generate_service_descriptor \
+                    $SYSTEMD_TEMPLATE_INSTANCES \
+                    ${PWD}/${KARAF_SERVICE_NAME}@.service
+
             elif [ -f /etc/redhat-release ]; then
-                generate_service_descriptor $INIT_REDHAT_TEMPLATE 
${PWD}/${KARAF_SERVICE_NAME}
-                chmod 755 ${PWD}/${KARAF_SERVICE_NAME}
+                generate_service_descriptor \
+                    $INIT_REDHAT_TEMPLATE \
+                    ${PWD}/${KARAF_SERVICE_NAME} \
+                    ${CONF_TEMPLATE} \
+                    ${KARAF_SERVICE_CONF}
+
+                chmod 755 ${PWD}/${KARAF_SERVICE_NAME} 
             elif [ -f /etc/debian-release ]; then
-                generate_service_descriptor $INIT_DEBIAN_TEMPLATE 
${PWD}/${KARAF_SERVICE_NAME}
+                generate_service_descriptor \
+                    $INIT_DEBIAN_TEMPLATE \
+                    ${PWD}/${KARAF_SERVICE_NAME} \
+                    ${CONF_TEMPLATE} \
+                    ${KARAF_SERVICE_CONF}
+
                 chmod 755 ${PWD}/${KARAF_SERVICE_NAME}
             fi
             ;;
     esac
 else
-    generate_service_descriptor $KARAF_SERVICE_TEMPLATE 
${PWD}/${KARAF_SERVICE_NAME}
+    generate_service_descriptor \
+        $KARAF_SERVICE_TEMPLATE \
+        ${PWD}/${KARAF_SERVICE_NAME} \
+        ${CONF_TEMPLATE} \
+        ${KARAF_SERVICE_CONF}
 fi

Reply via email to