clearer names for actions, and infer actions better
[monitor.git] / monitor-server.init
index 265a803..544b47e 100644 (file)
@@ -18,6 +18,8 @@
 local_config=/etc/planetlab/configs/site.xml
 
 MONITORPATH=/usr/share/monitor
+WEB_ROOT_PATH=web/MonitorWeb/monitorweb
+WEB_XML_PATH=static/xml
 
 # Be verbose
 set -x
@@ -31,8 +33,8 @@ pghba_conf=$PGDATA/pg_hba.conf
 export PGPORT=$PLC_DB_PORT
 
 
-MONITOR_DB_USER="monitoruser"
-MONITOR_DB_NAME="monitor"
+MONITOR_DB_USER=$PLC_MONITOR_DBUSER
+MONITOR_DB_NAME=$PLC_MONITOR_DBNAME
 
 WROTE_PG_CONFIG=
 
@@ -40,10 +42,45 @@ if [ -z "$PLC_MONITOR_IP" ] ; then
        PLC_MONITOR_IP=$( gethostbyname $PLC_MONITOR_HOST )
 fi
 
-function check_monitor_schema_and_data() 
+function update_config ()
 {
-       # NOTE: call create_all() to setup the database from the info model.
-       python -c "from monitor.database.info.model import *; from elixir import create_all; create_all()"
+       pattern=$1
+       with=$2
+       file=$3
+       sed -i -e "s/$pattern/$with/g" $file
+}
+function apply_template ()
+{
+       TEMPLATE=$1
+       DESTFILE=$2
+
+       tmp_file=$(mktemp)
+       cp $TEMPLATE $tmp_file
+
+       update_config PLC_NAME "$PLC_NAME" $tmp_file
+       update_config PLC_WWW_HOSTNAME $PLC_WWW_HOST $tmp_file
+       update_config MONITOR_HOSTNAME $PLC_MONITOR_HOST $tmp_file
+
+       cp $tmp_file $DESTFILE
+       rm -f $tmp_file
+}
+
+function check_gadget_config ()
+{
+       for input_file in $MONITORPATH/$WEB_ROOT_PATH/$WEB_XML_PATH/*.in ; do 
+               output_file=$MONITORPATH/$WEB_ROOT_PATH/$WEB_XML_PATH/`basename $input_file | sed -e 's/.in\$//'`
+               if [ $input_file -nt $output_file ] ; then 
+                       apply_template $input_file $output_file
+               fi
+       done
+}
+
+function check_monitor_schema_and_data_init() 
+{
+       # from monitor.functions
+        check_monitor_schema_and_data
+
+       $MONITORPATH/config.d/init-bootman-sequence.py
 }
 
 function check_monitor_conf ()
@@ -86,14 +123,14 @@ MONITOR_IP=${PLC_MONITOR_IP}
 PLC_WWW_HOSTNAME=${PLC_WWW_HOST}
 PLC_NAME=${PLC_NAME}
 
-# used for debug mode
-email=${PLC_MONITOR_CC_EMAIL}
+email=${PLC_MONITOR_EMAIL}
 # all messages will appear to be from this address
 from_email=${PLC_MONITOR_EMAIL}
 # a separate address for support messages
 support_email=${PLC_MAIL_SUPPORT_ADDRESS}
 # mailing list copied on all out-going messages
 cc_email=${PLC_MONITOR_CC_EMAIL}
+exception_email=${PLC_MONITOR_CC_EMAIL}
 
 # these are reserved values
 RT_DB_HOST=${PLC_RT_HOST}
@@ -102,8 +139,7 @@ RT_DB_PASSWORD=
 RT_DB_NAME=
 
 [monitordatabase]
-monitor_dburi=postgres://${MONITOR_DB_USER}:${PLC_MONITOR_DBPASSWORD}@localhost:5432/${MONITOR_DB_NAME}
-zabbix_dburi=postgres://${ZABBIX_DB_USER}:${PLC_MONITOR_DBPASSWORD}@localhost:5432/${ZABBIX_DB_NAME}
+monitor_dburi=postgres://${MONITOR_DB_USER}:${PLC_MONITOR_DBPASSWORD}@${PLC_MONITOR_DBHOST}:5432/${MONITOR_DB_NAME}
 
 cachetime=60
 
@@ -149,6 +185,7 @@ function create_httpd_conf ()
 
 # NOTE: redirect path without trailing '/' to path with.  Favor SSL.
 Redirect /monitor https://${PLC_MONITOR_HOST}:${PLC_WWW_SSL_PORT}/monitor/
+#RedirectMatch ^/$ https://${PLC_MONITOR_HOST}:${PLC_WWW_SSL_PORT}/monitor
 
 # NOTE: this directive strips '/monitor/' from the requested path and pastes
 #       the remaining part to the end of the ProxyPass url below.  All TG urls
@@ -171,7 +208,7 @@ function start_tg_server ()
 {
        stop_tg_server
        pushd ${MONITORPATH}/web/MonitorWeb/
-       mkdir -p /var/log/monitor/monitorweb/
+       mkdir -p /var/lib/monitor/monitorweb/
        cp /var/log/monitorweb.log /var/lib/monitor/monitorweb/`date +%Y-%m-%d-%H-%M`-monitorweb.log
        ./start-monitorweb.py ${MONITORPATH}/web/MonitorWeb/prod.cfg &> /var/log/monitorweb.log &
        popd
@@ -200,6 +237,8 @@ case "$1" in
                # WRITE default /etc/monitor.conf
                check_monitor_conf
 
+               check_gadget_config
+
                if [ -n "$WROTE_PG_CONFIG" ] ; then
                        # NOTE: restart db to enable access by users granted above.
                        service plc restart postgresql
@@ -208,7 +247,7 @@ case "$1" in
                        dialog "$MESSAGE"
                fi
 
-               check_monitor_schema_and_data
+               check_monitor_schema_and_data_init
 
                # create /etc/httpd/conf.d/monitorweb.conf
                create_httpd_conf