]> git.argeo.org Git - lgpl/argeo-commons.git/blob - dist/argeo-node/rpm/usr/sbin/nodectl
Simplify nodectl
[lgpl/argeo-commons.git] / dist / argeo-node / rpm / usr / sbin / nodectl
1 #!/bin/sh
2 APP=node
3
4 JVM=java
5
6 # Directories and files
7 CONF_DIR=/etc/$APP
8 CONF_DIRS=/etc/$APP/conf.d
9 BASE_POLICY_ALL=/usr/share/$APP/all.policy
10 BASE_CONFIG_INI=/usr/share/$APP/config.ini
11
12 EXEC_DIR=/var/lib/$APP
13 DATA_DIR=$EXEC_DIR/data
14 CONF_RW=$EXEC_DIR/state
15 CONFIG_INI=$CONF_RW/config.ini
16
17 OSGI_INSTALL_AREA=/usr/share/osgi/boot
18 OSGI_FRAMEWORK=$OSGI_INSTALL_AREA/org.eclipse.osgi.jar
19
20 # Overwrite variables
21 if [ -f $CONF_DIR/settings.sh ];then
22 . $CONF_DIR/settings.sh
23 fi
24
25 RETVAL=0
26
27 start() {
28 mkdir -p $CONF_RW
29 mkdir -p $DATA_DIR
30
31 # Merge config files
32 echo ## Equinox configuration - Generated by /usr/sbin/nodectl > $CONFIG_INI
33 cat $BASE_CONFIG_INI >> $CONFIG_INI
34 cat $CONF_DIR/$APP.ini >> $CONFIG_INI
35 for file in `ls -v $CONF_DIRS/*.ini`; do
36 echo "\n# $file\n" >> $CONFIG_INI;
37 cat $file >> $CONFIG_INI
38 done;
39
40 cd $EXEC_DIR
41 $JVM \
42 -Dlog4j.configuration="file:$CONF_DIR/log4j.properties" \
43 $JAVA_OPTS -jar $OSGI_FRAMEWORK \
44 -configuration "$CONF_RW" \
45 -data "$DATA_DIR"
46 }
47
48 reload() {
49 echo Not yet implemented
50 }
51
52 stop() {
53 if [ -f $PID_FILE ];then
54 PID=`cat $PID_FILE`
55 kill -0 $PID &> /dev/null
56 PID_EXISTS=$?
57 if [ $PID_EXISTS -ne 0 ]; then
58 echo Dead $APP process with pid $PID, removing $PID_FILE
59 rm -f $PID_FILE
60 RETVAL=1
61 return $RETVAL
62 fi
63 else
64 echo $APP is not running
65 RETVAL=1
66 return $RETVAL
67 fi
68
69 # notifies application by removing the shutdown file
70 # rm -f $SHUTDOWN_FILE
71 kill $PID
72
73 # wait 10 min for application to shutdown, then kill it
74 TIMEOUT=$((10*60))
75 BEGIN=$(date +%s)
76 while kill -0 $PID &> /dev/null
77 do
78 sleep 1
79 NOW=$(date +%s)
80 DURATION=$(($NOW-$BEGIN))
81 if [ $DURATION -gt $TIMEOUT ]; then
82 kill -9 $PID
83 echo Forcibly killed $APP with pid $PID
84 RETVAL=1
85 fi
86 done
87
88 # remove pid file
89 rm -f $PID_FILE
90 return $RETVAL
91 }
92
93 status() {
94 if [ -f $PID_FILE ];then
95 PID=`cat $PID_FILE`
96 else
97 echo $APP is not running
98 return $RETVAL
99 fi
100 kill -0 $PID &> /dev/null
101 PID_EXISTS=$?
102 if [ $PID_EXISTS -eq 0 ]; then
103 echo $APP is running with pid $PID ...
104 else
105 echo No $APP process with pid $PID, removing $PID_FILE
106 rm -f $PID_FILE
107 fi
108 return $RETVAL
109 }
110
111 # main
112 case "$1" in
113 start)
114 start
115 ;;
116 reload)
117 reload
118 ;;
119 stop)
120 stop
121 ;;
122 status)
123 status
124 ;;
125 *)
126 echo $"Usage: $0 {start|stop|status}"
127 exit 1
128 esac