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
   ;;
 
   
##############################################################################

Reply via email to