Repository: metron Updated Branches: refs/heads/master e206f2508 -> ae50723a5
METRON-1064 Make init script OS-agnostic (merrimanr) closes apache/metron#669 Project: http://git-wip-us.apache.org/repos/asf/metron/repo Commit: http://git-wip-us.apache.org/repos/asf/metron/commit/ae50723a Tree: http://git-wip-us.apache.org/repos/asf/metron/tree/ae50723a Diff: http://git-wip-us.apache.org/repos/asf/metron/diff/ae50723a Branch: refs/heads/master Commit: ae50723a5e890f23ef5d5029bcdb5c8c9b327a82 Parents: e206f25 Author: merrimanr <[email protected]> Authored: Fri Jul 28 09:38:55 2017 -0500 Committer: merrimanr <[email protected]> Committed: Fri Jul 28 09:38:55 2017 -0500 ---------------------------------------------------------------------- .../package/scripts/management_ui_master.py | 4 ++ .../CURRENT/package/scripts/rest_master.py | 2 +- .../METRON/CURRENT/package/templates/metron.j2 | 1 + .../metron-config/scripts/metron-management-ui | 47 ++++++++++++------ .../metron-rest/src/main/scripts/metron-rest | 51 +++++++++++++------- 5 files changed, 70 insertions(+), 35 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/metron/blob/ae50723a/metron-deployment/packaging/ambari/metron-mpack/src/main/resources/common-services/METRON/CURRENT/package/scripts/management_ui_master.py ---------------------------------------------------------------------- diff --git a/metron-deployment/packaging/ambari/metron-mpack/src/main/resources/common-services/METRON/CURRENT/package/scripts/management_ui_master.py b/metron-deployment/packaging/ambari/metron-mpack/src/main/resources/common-services/METRON/CURRENT/package/scripts/management_ui_master.py index 28e6b55..86d94e6 100644 --- a/metron-deployment/packaging/ambari/metron-mpack/src/main/resources/common-services/METRON/CURRENT/package/scripts/management_ui_master.py +++ b/metron-deployment/packaging/ambari/metron-mpack/src/main/resources/common-services/METRON/CURRENT/package/scripts/management_ui_master.py @@ -44,6 +44,10 @@ class ManagementUIMaster(Script): from params import params env.set_params(params) + File(format("/etc/default/metron"), + content=Template("metron.j2") + ) + File(format("{metron_config_path}/management_ui.yml"), mode=0755, content=Template("management_ui.yml.j2"), http://git-wip-us.apache.org/repos/asf/metron/blob/ae50723a/metron-deployment/packaging/ambari/metron-mpack/src/main/resources/common-services/METRON/CURRENT/package/scripts/rest_master.py ---------------------------------------------------------------------- diff --git a/metron-deployment/packaging/ambari/metron-mpack/src/main/resources/common-services/METRON/CURRENT/package/scripts/rest_master.py b/metron-deployment/packaging/ambari/metron-mpack/src/main/resources/common-services/METRON/CURRENT/package/scripts/rest_master.py index a097dff..0d8d630 100755 --- a/metron-deployment/packaging/ambari/metron-mpack/src/main/resources/common-services/METRON/CURRENT/package/scripts/rest_master.py +++ b/metron-deployment/packaging/ambari/metron-mpack/src/main/resources/common-services/METRON/CURRENT/package/scripts/rest_master.py @@ -42,7 +42,7 @@ class RestMaster(Script): params.metron_jvm_flags = format('-Djava.security.auth.login.config={client_jaas_path}') env.set_params(params) - File(format("/etc/sysconfig/metron"), + File(format("/etc/default/metron"), content=Template("metron.j2") ) http://git-wip-us.apache.org/repos/asf/metron/blob/ae50723a/metron-deployment/packaging/ambari/metron-mpack/src/main/resources/common-services/METRON/CURRENT/package/templates/metron.j2 ---------------------------------------------------------------------- diff --git a/metron-deployment/packaging/ambari/metron-mpack/src/main/resources/common-services/METRON/CURRENT/package/templates/metron.j2 b/metron-deployment/packaging/ambari/metron-mpack/src/main/resources/common-services/METRON/CURRENT/package/templates/metron.j2 index 5d07fb2..06dddd3 100644 --- a/metron-deployment/packaging/ambari/metron-mpack/src/main/resources/common-services/METRON/CURRENT/package/templates/metron.j2 +++ b/metron-deployment/packaging/ambari/metron-mpack/src/main/resources/common-services/METRON/CURRENT/package/templates/metron.j2 @@ -13,6 +13,7 @@ # 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. +JAVA_HOME="{{java_home}}" METRON_HOME="{{metron_home}}" METRON_USER="{{metron_user}}" METRON_LOG_DIR="{{metron_log_dir}}" http://git-wip-us.apache.org/repos/asf/metron/blob/ae50723a/metron-interface/metron-config/scripts/metron-management-ui ---------------------------------------------------------------------- diff --git a/metron-interface/metron-config/scripts/metron-management-ui b/metron-interface/metron-config/scripts/metron-management-ui index 34c0cb6..76b9be8 100644 --- a/metron-interface/metron-config/scripts/metron-management-ui +++ b/metron-interface/metron-config/scripts/metron-management-ui @@ -21,8 +21,11 @@ # description: Management UI # processname: metron-management-ui # -if [ -f /etc/rc.d/init.d/functions ]; then - . /etc/rc.d/init.d/functions + +# all LSB compliant distributions provide the following +# http://refspecs.linuxbase.org/LSB_3.0.0/LSB-PDA/LSB-PDA/iniscrptfunc.html +if [ -f /lib/lsb/init-functions ]; then + . /lib/lsb/init-functions fi NAME=metron-management-ui @@ -33,14 +36,13 @@ METRON_LOG_DIR="/var/log/metron" METRON_PID_DIR="/var/run/metron" METRON_USER="metron" METRON_GROUP="metron" -METRON_SYSCONFIG="/etc/sysconfig/metron" +METRON_SYSCONFIG="/etc/default/metron" if [ -f "$METRON_SYSCONFIG" ]; then set -a . "$METRON_SYSCONFIG" fi PIDFILE="$METRON_PID_DIR/$NAME.pid" -LOCKFILE=/var/lock/subsys/$NAME DAEMON="node $METRON_HOME/web/expressjs/server.js -c $METRON_HOME/config/management_ui.yml" @@ -65,12 +67,13 @@ start() { fi # kick-off the daemon - PID=`runuser -s /bin/bash $METRON_USER -c "$DAEMON" >> $METRON_LOG_DIR/$NAME.log 2>&1 & echo $!` + CMD="$DAEMON >> $METRON_LOG_DIR/$NAME.log 2>&1 & echo \$!" + PID=`su -c "$CMD" $METRON_USER` if [ -z $PID ]; then printf "Fail\n" else - echo $PID > $PIDFILE && touch $LOCKFILE + echo $PID > $PIDFILE printf "Ok [$PID]\n" fi } @@ -80,22 +83,34 @@ start() { # stop() { if [ -f $PIDFILE ]; then - PID=`cat $PIDFILE` - killproc -p $PIDFILE metron-rest - RETVAL=$? - echo - [ $RETVAL -eq 0 ] && rm -f $LOCKFILE - printf "Stopped [$PID]\n" + PID=`cat $PIDFILE` + while sleep 1 + echo -n "." + kill -0 $PID >/dev/null 2>&1 + do + kill $PID + done + rm -f $PIDFILE + printf "%s\n" "Ok" else - printf "Not running\n" + printf "%s\n" "Not running" fi } # # status check of the rest application # -management_ui_status() { - status -p $PIDFILE metron-managment-ui +status() { + if [ -f $PIDFILE ]; then + PID=`cat $PIDFILE` + if [ -z "`ps axf | grep ${PID} | grep -v grep`" ]; then + printf "%s\n" "Process dead but pidfile exists" + else + echo "Running" + fi + else + printf "%s\n" "Service not running" + fi } case "$1" in @@ -113,7 +128,7 @@ case "$1" in # status) printf "%-50s \n" "Checking $NAME..." - management_ui_status + status ;; ############################################################################## http://git-wip-us.apache.org/repos/asf/metron/blob/ae50723a/metron-interface/metron-rest/src/main/scripts/metron-rest ---------------------------------------------------------------------- diff --git a/metron-interface/metron-rest/src/main/scripts/metron-rest b/metron-interface/metron-rest/src/main/scripts/metron-rest index 9c5b1d4..a84f496 100644 --- a/metron-interface/metron-rest/src/main/scripts/metron-rest +++ b/metron-interface/metron-rest/src/main/scripts/metron-rest @@ -21,8 +21,11 @@ # description: rest application # processname: metron-rest # -if [ -f /etc/rc.d/init.d/functions ]; then - . /etc/rc.d/init.d/functions + +# all LSB compliant distributions provide the following +# http://refspecs.linuxbase.org/LSB_3.0.0/LSB-PDA/LSB-PDA/iniscrptfunc.html +if [ -f /lib/lsb/init-functions ]; then + . /lib/lsb/init-functions fi NAME=metron-rest @@ -35,14 +38,13 @@ METRON_USER="metron" METRON_GROUP="metron" METRON_REST_PORT=8082 METRON_JDBC_PASSWORD="$2" -METRON_SYSCONFIG="/etc/sysconfig/metron" +METRON_SYSCONFIG="/etc/default/metron" if [ -f "$METRON_SYSCONFIG" ]; then set -a . "$METRON_SYSCONFIG" fi PIDFILE="$METRON_PID_DIR/$NAME.pid" -LOCKFILE=/var/lock/subsys/$NAME METRON_REST_CLASSPATH="$METRON_HOME/lib/metron-rest-$METRON_VERSION.jar" @@ -66,12 +68,12 @@ else METRON_REST_CLASSPATH+=":$METRON_HOME/lib/metron-elasticsearch-$METRON_VERSION-uber.jar" fi METRON_JVMFLAGS+=" -cp $METRON_REST_CLASSPATH" -DAEMON="java $METRON_JVMFLAGS org.apache.metron.rest.MetronRestApplication $METRON_SPRING_OPTIONS" +DAEMON="$JAVA_HOME/bin/java $METRON_JVMFLAGS org.apache.metron.rest.MetronRestApplication $METRON_SPRING_OPTIONS" # # start the rest application # -start() { +start() { # if pidfile exists, do not start another if [ -f $PIDFILE ]; then @@ -89,12 +91,13 @@ start() { fi # kick-off the daemon - PID=`runuser -s /bin/bash $METRON_USER -c "$DAEMON" >> $METRON_LOG_DIR/$NAME.log 2>&1 & echo $!` + CMD="$DAEMON >> $METRON_LOG_DIR/$NAME.log 2>&1 & echo \$!" + PID=`su -c "$CMD" $METRON_USER` if [ -z $PID ]; then printf "Fail\n" else - echo $PID > $PIDFILE && touch $LOCKFILE + echo $PID > $PIDFILE printf "Ok [$PID]\n" fi } @@ -104,22 +107,34 @@ start() { # stop() { if [ -f $PIDFILE ]; then - PID=`cat $PIDFILE` - killproc -p $PIDFILE metron-rest - RETVAL=$? - echo - [ $RETVAL -eq 0 ] && rm -f $LOCKFILE - printf "Stopped [$PID]\n" + PID=`cat $PIDFILE` + while sleep 1 + echo -n "." + kill -0 $PID >/dev/null 2>&1 + do + kill $PID + done + rm -f $PIDFILE + printf "%s\n" "Ok" else - printf "Not running\n" + printf "%s\n" "Not running" fi } # # status check of the rest application # -rest_status() { - status -p $PIDFILE metron-rest +status() { + if [ -f $PIDFILE ]; then + PID=`cat $PIDFILE` + if [ -z "`ps axf | grep ${PID} | grep -v grep`" ]; then + printf "%s\n" "Process dead but pidfile exists" + else + echo "Running" + fi + else + printf "%s\n" "Service not running" + fi } case "$1" in @@ -137,7 +152,7 @@ case "$1" in # status) printf "%-50s \n" "Checking $NAME..." - rest_status + status ;; ##############################################################################
