- GLITE_JP_PRIMARY prefix for all JP PS specific variables
authorZdeněk Salvet <salvet@ics.muni.cz>
Fri, 14 Oct 2005 15:45:49 +0000 (15:45 +0000)
committerZdeněk Salvet <salvet@ics.muni.cz>
Fri, 14 Oct 2005 15:45:49 +0000 (15:45 +0000)
- use -c and -k credential path options
- use glite-jp-primarystoraged's pidfile
- better quoting

org.glite.jp.primary/config/startup

index 63110cf..6050d99 100644 (file)
@@ -12,11 +12,11 @@ GLITE_LOCATION_VAR=${GLITE_LOCATION_VAR:-${GLITE_LOCATION}/var}
 [ -f $HOME/.glite.conf ] && . $HOME/.glite.conf
 
 [ -n "$GLITE_JP_PRIMARY_PIDFILE" ] && pidfile=$GLITE_JP_PRIMARY_PIDFILE ||
-       pidfile=$GLITE_LOCATION_VAR/glite-jp-primarystoraged.pid
+       pidfile="$GLITE_LOCATION_VAR/glite-jp-primarystoraged.pid"
 
 unset creds
 
-GLITE_JP_PS_PORT=8901
+GLITE_JP_PRIMARY_PORT=8901
 
 start()
 {
@@ -30,16 +30,19 @@ start()
                echo FAILED
                return 1
        fi
-       if test -z "$GLITE_JP_FTP_PORT" -o \
-               -z "$GLITE_JP_INTERNAL" -o -z "$GLITE_JP_EXTERNAL" ;then
-               echo 'Error: incomplete configuration (GLITE_JP_FTP_PORT,' \
-                       'GLITE_JP_INTERNAL, or GLITE_JP_EXTERNAL is not set'
+       if test -z "$GLITE_JP_PRIMARY_FTP_PORT" -o \
+               -z "$GLITE_JP_PRIMARY_INTERNAL" -o -z "$GLITE_JP_PRIMARY_EXTERNAL" ;then
+               echo 'Error: incomplete configuration (GLITE_JP_PRIMARY_FTP_PORT,' \
+                       'GLITE_JP_PRIMARY_INTERNAL, or GLITE_JP_PRIMARY_EXTERNAL is not set'
                echo FAILED
                return 1
        fi
 
-       [ -n "$GLITE_HOST_CERT" -a -n "$GLITE_HOST_KEY" ] &&
-               creds="-c $GLITE_HOST_CERT -k $GLITE_HOST_KEY"
+       if [ -n "$GLITE_HOST_CERT" -a -n "$GLITE_HOST_KEY" ] ;then
+               creds="-c '$GLITE_HOST_CERT' -k '$GLITE_HOST_KEY'"
+               X509_USER_CERT="$GLITE_HOST_CERT"
+               X509_USER_KEY="$GLITE_HOST_KEY"
+       fi
 
        if test -z "$creds"; then
                if su - $GLITE_USER -c "test -r /etc/grid-security/hostkey.pem -a -r /etc/grid-security/hostcert.pem"; then
@@ -53,33 +56,49 @@ start()
 
        [ -z "$creds" ] && echo $0: WARNING: No credentials specified. Using default lookup which is dangerous. >&2
 
-       # XXX: creds and pidfile not supported yet
-
-       unset GLITE_JP_DBCS_OPTION
-       if test -n "$GLITE_JP_DBCS"; then
-               GLITE_JP_DBCS_OPTION="-BD,'$GLITE_JP_DBCS'"
+       unset GLITE_JP_PRIMARY_DBCS_OPTION
+       if test -n "$GLITE_JP_PRIMARY_DBCS"; then
+               GLITE_JP_PRIMARY_DBCS_OPTION="-BD,'$GLITE_JP_PRIMARY_DBCS'"
        fi
 
        echo -n Starting glite-jp-primarystoraged ...
-       su - $GLITE_USER -c "X509_USER_CERT=\"$X509_USER_CERT\" \
-               X509_USER_KEY=\"$X509_USER_KEY\" \
-               $GLITE_LOCATION/bin/glite-jp-primarystoraged \
-               -BI,'$GLITE_JP_INTERNAL' -BE,'$GLITE_JP_EXTERNAL' \
-               ${GLITE_JP_DBCS_OPTION} " && echo " done" || echo " FAILED"
+       su - $GLITE_USER -c " $GLITE_LOCATION/bin/glite-jp-primarystoraged \
+               $creds -i '$pidfile'
+               -BI,'$GLITE_JP_PRIMARY_INTERNAL' -BE,'$GLITE_JP_PRIMARY_EXTERNAL' \
+               ${GLITE_JP_PRIMARY_DBCS_OPTION} " && echo " done" || echo " FAILED"
 
        echo -n Starting JP gridftp server ...
        su - $GLITE_USER -c "X509_USER_CERT=\"$X509_USER_CERT\" \
                X509_USER_KEY=\"$X509_USER_KEY\" \
                LD_PRELOAD=$GLITE_LOCATION/lib/glite-jp-ftpdauth.so \
-               $GLOBUS_LOCATION/sbin/in.ftpd -a -S -p $GLITE_JP_FTP_PORT & \
+               $GLOBUS_LOCATION/sbin/in.ftpd -a -S -p $GLITE_JP_PRIMARY_FTP_PORT & \
                pid=\$!; sleep 2; kill -0 \$pid" && echo " done" || echo " FAILED"
 }
 
 stop()
 {
-       # XXX pidfiles
-       killall glite-jp-primarystoraged
+       if [ -f "$pidfile" ]; then
+               pid=`cat "$pidfile"`
+               kill $pid
+               echo -n Stopping glite-jp-primarystoraged \($pid\) ...
+               try=0
+               while ps p $pid >/dev/null 2>&1; do 
+                       sleep 1;
+                       try=`expr $try + 1`
+                       if [ $try = 20 ]; then
+                               echo " giving up after $try retries"
+                               return 1
+                       fi
+               done
+               echo " done"
+               rm -f "$pidfile"
+       else
+               echo "$pidfile" does not exist - glite-jp-primarystoraged not running? >&2
+               return 1
+       fi
+}
 
+       # XXX
        echo >&2 'stopping JP gridftp server not implemented yet'
        return 1
 }
@@ -87,14 +106,14 @@ stop()
 status()
 {
        # XXX pidfile
-        if netstat -an --inet | grep "^tcp .* 0.0.0.0:${GLITE_JP_PS_PORT} .*LISTEN" >/dev/null 2>&1 ;then
+        if netstat -an --inet | grep "^tcp .* 0.0.0.0:${GLITE_JP_PRIMARY_PORT} .*LISTEN" >/dev/null 2>&1 ;then
         echo glite-jp-primarystoraged running 
         else
         echo glite-jp-primarystoraged not running
         return 1
         fi
 
-        if netstat -an --inet | grep "^tcp .* 0.0.0.0:${GLITE_JP_FTP_PORT} .*LISTEN" >/dev/null 2>&1 ;then
+        if netstat -an --inet | grep "^tcp .* 0.0.0.0:${GLITE_JP_PRIMARY_FTP_PORT} .*LISTEN" >/dev/null 2>&1 ;then
         echo JP gridftp server running 
         else
         echo JP gridftp server not running