Make new systemd units more robust.
[lgpl/argeo-commons.git] / dist / argeo-node / rpm / usr / sbin / argeoctl
index 67b08ebcd438fd2a0bee9e057789d6a5d93481c2..c355308140cbae1b677ccbbacda9d54db6477200 100755 (executable)
@@ -3,35 +3,34 @@ APP=argeo
 
 if [ -z "$2" ]; then
 # Default node
+echo Argeo default node
 CONF_DIR=/etc/$APP
 EXEC_DIR=/var/lib/$APP
+
 else
 # Instance
 INSTANCE=$2
-       if [ -z "$STATE_DIRECTORY" ]; then
-       INSTANCE_DIR=$HOME/.local/share/$APP.d/$INSTANCE
-       else
-       # systemd StateDirectory=
-       INSTANCE_DIR=$STATE_DIRECTORY
-       fi
-       if [ -z "$CONFIGURATION_DIRECTORY" ]; then
-       CONF_DIR=$HOME/.config/$APP.d/$INSTANCE
-       else
-       # systemd ConfigurationDirectory=
-       CONF_DIR=$CONFIGURATION_DIRECTORY
-       fi
-       
+echo Argeo instance $INSTANCE
+  if [ -z "$INSTANCE_DIR" ]; then
+  INSTANCE_DIR=$HOME/.local/share/$APP.d/$INSTANCE
+  fi
+  if [ -z "$CONF_DIR" ]; then
+  CONF_DIR=$HOME/.config/$APP.d/$INSTANCE
+  fi  
 EXEC_DIR=$INSTANCE_DIR
-
-       if [ ! -f $CONF_DIR/$APP.ini ]; then
-       cp /etc/$APP/$APP.ini $CONF_DIR
-       fi
-       if [ ! -f $CONF_DIR/log4j.properties ]; then
-       cp /etc/$APP/log4j.properties $CONF_DIR
-       fi
+# Make sure minimal files are available
+  if [ ! -f $CONF_DIR/$APP.ini ]; then
+  cp /etc/$APP/$APP.ini $CONF_DIR
+  fi
+  if [ ! -f $CONF_DIR/log4j.properties ]; then
+  cp /etc/$APP/log4j.properties $CONF_DIR
+  fi
 fi
 
+# Java
+if [ -z "$JVM" ]; then
 JVM=java
+fi
 
 # Directories and files
 
@@ -50,112 +49,52 @@ OSGI_FRAMEWORK=$OSGI_INSTALL_AREA/org.eclipse.osgi.jar
 
 # Overwrite variables
 if [ -f $CONF_DIR/settings.sh ];then
-       . $CONF_DIR/settings.sh
+  . $CONF_DIR/settings.sh
 fi
 
 RETVAL=0
 
+## START ##
 start() {
-       mkdir -p $CONF_RW
-       mkdir -p $DATA_DIR
-
-    # Merge config files
-    printf "## Equinox configuration - Generated by /usr/sbin/nodectl ##\n\n" > $CONFIG_INI
-    cat $BASE_CONFIG_INI >> $CONFIG_INI
-    printf "\n##\n## $CONF_DIR/$APP.ini\n##\n\n" >> $CONFIG_INI
-    cat $CONF_DIR/$APP.ini >> $CONFIG_INI
-    for file in `ls -v $CONF_DIRS/*.ini`; do
-            printf "\n##\n## $file\n##\n\n" >> $CONFIG_INI
-            cat $file >> $CONFIG_INI
-    done;
+mkdir -p $CONF_RW
+mkdir -p $DATA_DIR
+
+# Merge config files
+printf "## Equinox configuration - Generated by /usr/sbin/argeoctl ##\n\n" > $CONFIG_INI
+cat $BASE_CONFIG_INI >> $CONFIG_INI
+printf "\n##\n## $CONF_DIR/$APP.ini\n##\n\n" >> $CONFIG_INI
+cat $CONF_DIR/$APP.ini >> $CONFIG_INI
+# Concatenate additional .ini files
+if [ -d "$CONF_DIRS" ]; then
+for file in `ls -v $CONF_DIRS/*.ini`; do
+  printf "\n##\n## $file\n##\n\n" >> $CONFIG_INI
+  cat $file >> $CONFIG_INI
+done;
+fi
 
-       cd $EXEC_DIR
-       $JVM \
-               -Dlog4j.configuration="file:$CONF_DIR/log4j.properties" \
-               $JAVA_OPTS -jar $OSGI_FRAMEWORK \
-               -Dargeo.osgi.sources=$A2_SOURCES \
-               -configuration "$CONF_RW" \
-               -data "$DATA_DIR"
+cd $EXEC_DIR
+$JVM \
+  -Dlog4j.configuration="file:$CONF_DIR/log4j.properties" \
+  $JAVA_OPTS -jar $OSGI_FRAMEWORK \
+  -Dargeo.osgi.sources=$A2_SOURCES \
+  -configuration "$CONF_RW" \
+  -data "$DATA_DIR"
 }
 
+## RELOAD ##
 reload() {
-       echo Not yet implemented
-}
-
-stop() {
-       if [ -f $PID_FILE ];then
-               PID=`cat $PID_FILE`
-               kill -0 $PID &> /dev/null
-               PID_EXISTS=$?
-               if [ $PID_EXISTS -ne 0 ]; then
-                       echo Dead $APP process with pid $PID, removing $PID_FILE
-                       rm -f $PID_FILE
-                       RETVAL=1
-                       return $RETVAL
-               fi
-       else
-               echo $APP is not running
-               RETVAL=1
-               return $RETVAL
-       fi
-       
-       # notifies application by removing the shutdown file
-#      rm -f $SHUTDOWN_FILE
-       kill $PID
-       
-       # wait 10 min for application to shutdown, then kill it
-       TIMEOUT=$((10*60))
-       BEGIN=$(date +%s)
-       while kill -0 $PID &> /dev/null
-       do
-               sleep 1
-               NOW=$(date +%s)
-               DURATION=$(($NOW-$BEGIN))
-               if [ $DURATION -gt $TIMEOUT ]; then
-                       kill -9 $PID
-                       echo Forcibly killed $APP with pid $PID
-                       RETVAL=1
-               fi
-       done
-       
-       # remove pid file
-       rm -f $PID_FILE
-       return $RETVAL
-}
-
-status() {
-       if [ -f $PID_FILE ];then
-               PID=`cat $PID_FILE`
-       else
-               echo $APP is not running
-               return $RETVAL
-       fi
-       kill -0 $PID &> /dev/null
-       PID_EXISTS=$?
-       if [ $PID_EXISTS -eq 0 ]; then
-               echo $APP is running with pid $PID ...
-       else
-               echo No $APP process with pid $PID, removing $PID_FILE
-               rm -f $PID_FILE
-       fi
-       return $RETVAL
+echo Not yet implemented
 }
 
 # main
 case "$1" in
-  start)
-        start
-        ;;
-  reload)
-        reload
-        ;;
-  stop)
-        stop
-        ;;
-  status)
-       status
-        ;;
-  *)
-        echo $"Usage: $0 {start|stop|status}"
-        exit 1
+start)
+  start
+  ;;
+reload)
+  reload
+  ;;
+*)
+  echo $"Usage: $0 {start|reload}"
+  exit 1
 esac
\ No newline at end of file