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
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 ()
if [ ! -f ${MONITOR_CONFIG} ] ; then
cat <<EOF > ${MONITOR_CONFIG}
[monitorconfig]
-RT_DB_HOST=rt.planet-lab.org
-RT_DB_USER=
-RT_DB_PASSWORD=
-RT_DB_NAME=
-
# RT Web user account
-RT_WEB_SERVER=https://rt.planet-lab.org/
-RT_WEB_TOOLS_PATH=
-RT_WEB_USER=
-RT_WEB_PASSWORD=
+RT_WEB_SERVER=http://${PLC_RT_HOST}/
+RT_WEB_TOOLS_PATH=/usr/bin/
+RT_WEB_USER=${PLC_RT_WEB_USER}
+RT_WEB_PASSWORD=${PLC_RT_WEB_PASSWORD}
RT_WEB_DEBUG=0
-RT_QUEUE=
+RT_QUEUE=${PLC_MONITOR_RT_QUEUE}
# PLC admin account
-API_SERVER=https://${PLC_BOOT_HOST}/PLCAPI/
+API_SERVER=https://${PLC_API_HOST}:${PLC_API_PORT}/PLCAPI/
API_AUTH_USER=${PLC_MONITOR_EMAIL}
API_AUTH_PASSWORD=${PLC_MONITOR_DBPASSWORD}
PLC_NAME=${PLC_NAME}
# used for debug mode
-email=
-
+email=${PLC_MONITOR_CC_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=
+cc_email=${PLC_MONITOR_CC_EMAIL}
+
+# these are reserved values
+RT_DB_HOST=${PLC_RT_HOST}
+RT_DB_USER=
+RT_DB_PASSWORD=
+RT_DB_NAME=
[monitordatabase]
monitor_dburi=postgres://${MONITOR_DB_USER}:${PLC_MONITOR_DBPASSWORD}@localhost:5432/${MONITOR_DB_NAME}
[commandline]
cachecalls=True
embedded=False
+zabbix_enabled=False
echo=False
debug=False
# 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
{
stop_tg_server
pushd ${MONITORPATH}/web/MonitorWeb/
+ mkdir -p /var/log/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
}
# 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
dialog "$MESSAGE"
fi
- check_monitor_schema_and_data
+ check_monitor_schema_and_data_init
# create /etc/httpd/conf.d/monitorweb.conf
create_httpd_conf