From 28f3fdbfb870c779281dc14dfbc24051e6828fa8 Mon Sep 17 00:00:00 2001
From: Sinisa Veseli <sveseli@aps.anl.gov>
Date: Mon, 20 Apr 2015 12:48:08 +0000
Subject: [PATCH] work on web service deployment scripts

---
 Makefile                            |  40 +++++--
 etc/dm.deploy.conf                  |   3 +-
 etc/dm_dev.deploy.conf              |   3 +-
 sbin/dm_deploy_daq_web_service.sh   | 165 ++++++++++++++++++++++++++++
 sbin/dm_deploy_ds_web_service.sh    | 158 ++++++++++++++++++++++++++
 sbin/dm_undeploy_daq_web_service.sh |  63 +++++++++++
 sbin/dm_undeploy_ds_web_service.sh  |  63 +++++++++++
 7 files changed, 485 insertions(+), 10 deletions(-)
 create mode 100755 sbin/dm_deploy_daq_web_service.sh
 create mode 100755 sbin/dm_deploy_ds_web_service.sh
 create mode 100755 sbin/dm_undeploy_daq_web_service.sh
 create mode 100755 sbin/dm_undeploy_ds_web_service.sh

diff --git a/Makefile b/Makefile
index 314dbfce..1bd69d71 100644
--- a/Makefile
+++ b/Makefile
@@ -27,17 +27,29 @@ destroy-db:
 backup:
 	$(TOP)/sbin/dm_backup_all.sh 
 
+configure-web-portal: dist
+	$(TOP)/sbin/dm_configure_web_portal.sh
+
 deploy-web-portal: dist
 	$(TOP)/sbin/dm_deploy_web_portal.sh
 
-deploy-web-service: 
-	$(TOP)/sbin/dm_deploy_web_service.sh
+deploy-ds-web-service: 
+	$(TOP)/sbin/dm_deploy_ds_web_service.sh
+
+deploy-daq-web-service: 
+	$(TOP)/sbin/dm_deploy_daq_web_service.sh
+
+unconfigure-web-portal: 
+	$(TOP)/sbin/dm_unconfigure_web_portal.sh 
 
 undeploy-web-portal: 
 	$(TOP)/sbin/dm_undeploy_web_portal.sh
 
-undeploy-web-service: 
-	$(TOP)/sbin/dm_undeploy_web_service.sh
+undeploy-ds-web-service: 
+	$(TOP)/sbin/dm_undeploy_ds_web_service.sh
+
+undeploy-daq-web-service: 
+	$(TOP)/sbin/dm_undeploy_daq_web_service.sh
 
 db-dev:
 	$(TOP)/sbin/dm_create_db.sh dm_dev
@@ -48,17 +60,29 @@ destroy-db-dev:
 backup-dev:
 	$(TOP)/sbin/dm_backup_all.sh dm_dev
 
+configure-web-portal-dev: dist
+	$(TOP)/sbin/dm_configure_web_portal.sh dm_dev
+
 deploy-web-portal-dev: dist
 	$(TOP)/sbin/dm_deploy_web_portal.sh dm_dev
 
-deploy-web-service-dev: 
-	$(TOP)/sbin/dm_deploy_web_service.sh dm_dev
+deploy-ds-web-service-dev: 
+	$(TOP)/sbin/dm_deploy_ds_web_service.sh dm_dev
+
+deploy-daq-web-service-dev: 
+	$(TOP)/sbin/dm_deploy_daq_web_service.sh dm_dev
+
+unconfigure-web-portal-dev: 
+	$(TOP)/sbin/dm_unconfigure_web_portal.sh dm_dev
 
 undeploy-web-portal-dev: 
 	$(TOP)/sbin/dm_undeploy_web_portal.sh dm_dev
 
-undeploy-web-service-dev: 
-	$(TOP)/sbin/dm_undeploy_web_service.sh dm_dev
+undeploy-ds-web-service-dev: 
+	$(TOP)/sbin/dm_undeploy_ds_web_service.sh dm_dev
+
+undeploy-daq-web-service-dev: 
+	$(TOP)/sbin/dm_undeploy_daq_web_service.sh dm_dev
 
 include $(TOP)/tools/make/RULES_DM
 
diff --git a/etc/dm.deploy.conf b/etc/dm.deploy.conf
index 73116d46..c97f337b 100644
--- a/etc/dm.deploy.conf
+++ b/etc/dm.deploy.conf
@@ -8,9 +8,10 @@ DM_DB_SCRIPTS_DIR=
 DM_SYSTEM_USER=dm
 DM_STORAGE_DIR=DM_DATA_DIR
 DM_CONTEXT_ROOT=dm
+DM_WEB_SERVICE_PROTOCOL=https
 DM_DS_WEB_SERVICE_HOST=DM_HOSTNAME
 DM_DS_WEB_SERVICE_PORT=22236
-DM_DS_WEB_SERVICE_PROTOCOL=https
+DM_DAQ_WEB_SERVICE_HOST=DM_HOSTNAME
 DM_DAQ_WEB_SERVICE_PORT=33336
 DM_SOFTWARE_VERSION="0.1 (DM_DATE)"
 
diff --git a/etc/dm_dev.deploy.conf b/etc/dm_dev.deploy.conf
index 45dff623..77ade47b 100644
--- a/etc/dm_dev.deploy.conf
+++ b/etc/dm_dev.deploy.conf
@@ -8,9 +8,10 @@ DM_DB_SCRIPTS_DIR=
 DM_SYSTEM_USER=dm
 DM_STORAGE_DIR=DM_DATA_DIR
 DM_CONTEXT_ROOT=dm_dev
+DM_WEB_SERVICE_PROTOCOL=https
 DM_DS_WEB_SERVICE_HOST=DM_HOSTNAME
 DM_DS_WEB_SERVICE_PORT=22237
-DM_DS_WEB_SERVICE_PROTOCOL=https
+DM_DAQ_WEB_SERVICE_HOST=DM_HOSTNAME
 DM_DAQ_WEB_SERVICE_PORT=33337
 DM_SOFTWARE_VERSION="Development Snapshot (DM_DATE)"
 
diff --git a/sbin/dm_deploy_daq_web_service.sh b/sbin/dm_deploy_daq_web_service.sh
new file mode 100755
index 00000000..1148143b
--- /dev/null
+++ b/sbin/dm_deploy_daq_web_service.sh
@@ -0,0 +1,165 @@
+#!/bin/sh
+
+#
+# Script used for deploying DM DS web service
+# Deployment configuration can be set in etc/$DM_DB_NAME.deploy.conf file
+#
+# Usage:
+#
+# $0 [DM_DB_NAME]
+#
+
+MY_DIR=`dirname $0` && cd $MY_DIR && MY_DIR=`pwd`
+if [ -z "${DM_ROOT_DIR}" ]; then
+    DM_ROOT_DIR=$MY_DIR/..
+fi
+DM_ENV_FILE=${DM_ROOT_DIR}/setup.sh
+if [ ! -f ${DM_ENV_FILE} ]; then
+    echo "Environment file ${DM_ENV_FILE} does not exist." 
+    exit 2
+fi
+. ${DM_ENV_FILE} > /dev/null
+
+# Use first argument as db name, if provided
+DM_DB_NAME=${DM_DB_NAME:=dm}
+if [ ! -z "$1" ]; then
+    DM_DB_NAME=$1
+fi
+echo "Using DB name: $DM_DB_NAME"
+
+# Look for deployment file in etc directory, and use it to override
+# default entries
+deployConfigFile=$DM_ROOT_DIR/etc/${DM_DB_NAME}.deploy.conf
+if [ -f $deployConfigFile ]; then
+    echo "Using deployment config file: $deployConfigFile"
+    . $deployConfigFile
+else
+    echo "Deployment config file $deployConfigFile not found, using defaults"
+fi
+
+DM_HOST_ARCH=`uname | tr [A-Z] [a-z]`-`uname -m`
+DM_DATE=`date +%Y.%m.%d`
+DM_HOSTNAME=`hostname -f`
+
+DM_CONTEXT_ROOT=${DM_CONTEXT_ROOT:=dm}
+DM_DATA_DIR=${DM_DATA_DIR:=/dm}
+DM_INSTALL_DIR=${DM_INSTALL_DIR:=$DM_ROOT_DIR/..}
+DM_ETC_DIR=${DM_INSTALL_DIR}/etc
+DM_SSL_DIR=${DM_ETC_DIR}/ssl
+DM_LOG_DIR=${DM_INSTALL_DIR}/var/log
+DM_CA_DIR=${DM_ETC_DIR}/CA
+DM_CA_CERT_FILE=${DM_SSL_DIR}/dm-ca-cert.pem
+DM_WEB_SERVICE_DAEMON=daq-web-service
+DM_WEB_SERVICE_CERT_FILE=${DM_SSL_DIR}/$DM_DB_NAME.$DM_WEB_SERVICE_DAEMON.crt
+DM_WEB_SERVICE_KEY_FILE=${DM_SSL_DIR}/$DM_DB_NAME.$DM_WEB_SERVICE_DAEMON.key
+DM_WEB_SERVICE_CONFIG_FILE=${DM_ETC_DIR}/$DM_DB_NAME.$DM_WEB_SERVICE_DAEMON.conf
+DM_WEB_SERVICE_LOG_FILE=${DM_LOG_DIR}/$DM_DB_NAME.$DM_WEB_SERVICE_DAEMON.log
+DM_WEB_SERVICE_INIT_CMD=${DM_ROOT_DIR}/etc/init.d/dm-$DM_WEB_SERVICE_DAEMON
+DM_DB_PASSWORD_FILE=${DM_ETC_DIR}/${DM_DB_NAME}.db.passwd 
+DM_SYSTEM_PASSWORD_FILE=${DM_INSTALL_DIR}/etc/${DM_SYSTEM_USER}.system.passwd
+DM_USER_SETUP_FILE=${DM_ETC_DIR}/${DM_DB_NAME}.setup.sh
+
+cmd="echo $DM_DAQ_WEB_SERVICE_HOST | sed 's?DM_HOSTNAME?$DM_HOSTNAME?'"
+DM_WEB_SERVICE_HOST=`eval $cmd`
+DM_WEB_SERVICE_PORT=$DM_DAQ_WEB_SERVICE_PORT
+
+if [ -z "$DM_DS_WEB_SERVICE_HOST" -o "$DM_DS_WEB_SERVICE_HOST" = "DM_HOSTNAME" ]; then
+    read -p "Enter DM DS Web Service Host: " DM_DS_WEB_SERVICE_HOST
+fi
+
+echo "DM DAQ web service host: $DM_DAQ_WEB_SERVICE_HOST"
+echo "DM DS web service host: $DM_DS_WEB_SERVICE_HOST"
+echo "DM install directory: $DM_INSTALL_DIR"
+
+mkdir -p $DM_ETC_DIR
+mkdir -p $DM_SSL_DIR
+mkdir -p $DM_LOG_DIR
+chmod 700 $DM_SSL_DIR
+
+echo "Stopping web service for $DM_DB_NAME"
+$DM_WEB_SERVICE_INIT_CMD stop $DM_DB_NAME
+
+if [ ! -f $DM_ETC_DIR/$DM_DB_NAME.db.passwd ]; then
+    echo "DB passsword file not found"
+    exit 1
+fi
+
+echo "Checking CA certificate"
+if [ ! -f $DM_CA_CERT_FILE ]; then
+    echo "Copying DM CA cert"
+    rsync -ar $DM_DS_WEB_SERVICE_HOST:$DM_CA_CERT_FILE $DM_SSL_DIR
+else
+    echo "DM CA certificate exists"
+fi
+
+echo "Checking service certificates"
+if [ ! -f $DM_WEB_SERVICE_CERT_FILE -o ! -f $DM_WEB_SERVICE_KEY_FILE ]; then
+    if [ ! -f $DM_CA_DIR/certs/$DM_SERVICE_HOST.crt ]; then
+        echo "Attempting to create DM $DM_WEB_SERVICE_DAEMON certificate"
+        ssh $DM_DS_WEB_SERVICE_HOST "$MY_DIR/dm_create_server_cert.sh $DM_WEB_SERVICE_HOST $DM_WEB_SERVICE_HOST dm@aps.anl.gov" 
+    fi
+    echo "Copying DM $DM_WEB_SERVICE_DAEMON certificate"
+    rsync -ar $DM_DS_WEB_SERVICE_HOST:$DM_CA_DIR/certs/$DM_WEB_SERVICE_HOST.crt $DM_WEB_SERVICE_CERT_FILE || exit 1
+    rsync -ar $DM_DS_WEB_SERVICE_HOST:$DM_CA_DIR/certs/$DM_WEB_SERVICE_HOST.key $DM_WEB_SERVICE_KEY_FILE || exit 1
+else
+    echo "DM service certificate exists"
+fi
+
+echo "Checking service configuration file"
+if [ ! -f $DM_WEB_SERVICE_CONFIG_FILE ]; then
+    echo "Generating service config file"
+    cmd="cat $DM_ROOT_DIR/etc/$DM_WEB_SERVICE_DAEMON.conf.template \
+        | sed 's?servicePort=.*?servicePort=$DM_WEB_SERVICE_PORT?g' \
+        | sed 's?sslCaCertFile=.*?sslCaCertFile=$DM_CA_CERT_FILE?g' \
+        | sed 's?sslCertFile=.*?sslCertFile=$DM_WEB_SERVICE_CERT_FILE?g' \
+        | sed 's?sslKeyFile=.*?sslKeyFile=$DM_WEB_SERVICE_KEY_FILE?g' \
+        | sed 's?handler=TimedRotatingFileLoggingHandler.*?handler=TimedRotatingFileLoggingHandler(\"$DM_WEB_SERVICE_LOG_FILE\")?g' \
+        | sed 's?DM_STORAGE_DIR?$DM_STORAGE_DIR?g' \
+        | sed 's?DM_INSTALL_DIR?$DM_INSTALL_DIR?g' \
+        | sed 's?DM_SYSTEM_USER?$DM_SYSTEM_USER?g' \
+        | sed 's?DM_DS_WEB_SERVICE_HOST?$DM_DS_WEB_SERVICE_HOST?g' \
+        | sed 's?DM_DS_WEB_SERVICE_PORT?$DM_DS_WEB_SERVICE_PORT?g' \
+        | sed 's?DM_WEB_SERVICE_PROTOCOL?$DM_WEB_SERVICE_PROTOCOL?g' \
+        | sed 's?DM_DATA_DIR?$DM_DATA_DIR?g' \
+        | sed 's?DM_HOSTNAME?$DM_HOSTNAME?g' \
+        | sed 's?DM_DB_NAME?$DM_DB_NAME?g' \
+        > $DM_WEB_SERVICE_CONFIG_FILE"
+    eval $cmd || exit 1
+else
+    echo "Service config file exists"
+fi
+
+# Modify version
+echo "Modifying python module version"
+versionFile=$DM_ROOT_DIR/src/python/dm/__init__.py
+cmd="cat $versionFile | sed 's?__version__ =.*?__version__ = \"${DM_SOFTWARE_VERSION}\"?g' | sed 's?DM_DATE?$DM_DATE?g' > $versionFile.2
+&& mv $versionFile.2 $versionFile"
+eval $cmd
+
+# Check system account password
+if [ ! -f $DM_SYSTEM_PASSWORD_FILE ]; then
+    echo "Copying system account password file $DM_SYSTEM_PASSWORD_FILE"
+    rsync -ar $DM_DS_WEB_SERVICE_HOST:$DM_SYSTEM_PASSWORD_FILE $DM_SYSTEM_PASSWORD_FILE || exit 1
+fi
+
+# Prepare setup file
+if [ ! -f $DM_USER_SETUP_FILE ]; then
+    echo "Copying user setup file $DM_USER_SETUP_FILE"
+    rsync -ar $DM_DS_WEB_SERVICE_HOST:$DM_USER_SETUP_FILE $DM_USER_SETUP_FILE || exit 1
+fi
+
+# Prepare setup file
+echo "Preparing setup file"
+cmd="cat $DM_USER_SETUP_FILE \
+        | sed 's?DM_ROOT_DIR=.*?DM_ROOT_DIR=$DM_ROOT_DIR?g' \
+        | sed 's?DM_DAQ_WEB_SERVICE_HOST=.*?DM_DAQ_WEB_SERVICE_HOST=$DM_DAQ_WEB_SERVICE_HOST?g' \
+        | sed 's?DM_DAQ_WEB_SERVICE_PORT=.*?DM_DAQ_WEB_SERVICE_PORT=$DM_DAQ_WEB_SERVICE_PORT?g' \
+        | sed 's?DM_HOSTNAME?$DM_HOSTNAME?g' \
+        > $DM_USER_SETUP_FILE.2 && mv $DM_USER_SETUP_FILE.2 $DM_USER_SETUP_FILE"
+eval $cmd || exit 1
+
+echo "Starting web service for $DM_DB_NAME"
+$DM_WEB_SERVICE_INIT_CMD start $DM_DB_NAME
+
+echo "Done deploying $DM_WEB_SERVICE_DAEMON for $DM_DB_NAME"
+
diff --git a/sbin/dm_deploy_ds_web_service.sh b/sbin/dm_deploy_ds_web_service.sh
new file mode 100755
index 00000000..e8c87984
--- /dev/null
+++ b/sbin/dm_deploy_ds_web_service.sh
@@ -0,0 +1,158 @@
+#!/bin/sh
+
+#
+# Script used for deploying DM DS web service
+# Deployment configuration can be set in etc/$DM_DB_NAME.deploy.conf file
+#
+# Usage:
+#
+# $0 [DM_DB_NAME]
+#
+
+MY_DIR=`dirname $0` && cd $MY_DIR && MY_DIR=`pwd`
+if [ -z "${DM_ROOT_DIR}" ]; then
+    DM_ROOT_DIR=$MY_DIR/..
+fi
+DM_ENV_FILE=${DM_ROOT_DIR}/setup.sh
+if [ ! -f ${DM_ENV_FILE} ]; then
+    echo "Environment file ${DM_ENV_FILE} does not exist." 
+    exit 2
+fi
+. ${DM_ENV_FILE} > /dev/null
+
+# Use first argument as db name, if provided
+DM_DB_NAME=${DM_DB_NAME:=dm}
+if [ ! -z "$1" ]; then
+    DM_DB_NAME=$1
+fi
+echo "Using DB name: $DM_DB_NAME"
+
+# Look for deployment file in etc directory, and use it to override
+# default entries
+deployConfigFile=$DM_ROOT_DIR/etc/${DM_DB_NAME}.deploy.conf
+if [ -f $deployConfigFile ]; then
+    echo "Using deployment config file: $deployConfigFile"
+    . $deployConfigFile
+else
+    echo "Deployment config file $deployConfigFile not found, using defaults"
+fi
+
+DM_HOST_ARCH=`uname | tr [A-Z] [a-z]`-`uname -m`
+DM_DATE=`date +%Y.%m.%d`
+DM_HOSTNAME=`hostname -f`
+
+DM_CONTEXT_ROOT=${DM_CONTEXT_ROOT:=dm}
+DM_DATA_DIR=${DM_DATA_DIR:=/dm}
+DM_INSTALL_DIR=${DM_INSTALL_DIR:=$DM_ROOT_DIR/..}
+DM_ETC_DIR=${DM_INSTALL_DIR}/etc
+DM_SSL_DIR=${DM_ETC_DIR}/ssl
+DM_LOG_DIR=${DM_INSTALL_DIR}/var/log
+DM_CA_DIR=${DM_ETC_DIR}/CA
+DM_CA_CERT_FILE=${DM_SSL_DIR}/dm-ca-cert.pem
+DM_WEB_SERVICE_DAEMON=ds-web-service
+DM_WEB_SERVICE_CERT_FILE=${DM_SSL_DIR}/$DM_DB_NAME.$DM_WEB_SERVICE_DAEMON.crt
+DM_WEB_SERVICE_KEY_FILE=${DM_SSL_DIR}/$DM_DB_NAME.$DM_WEB_SERVICE_DAEMON.key
+DM_WEB_SERVICE_CONFIG_FILE=${DM_ETC_DIR}/$DM_DB_NAME.$DM_WEB_SERVICE_DAEMON.conf
+DM_WEB_SERVICE_LOG_FILE=${DM_LOG_DIR}/$DM_DB_NAME.$DM_WEB_SERVICE_DAEMON.log
+DM_WEB_SERVICE_INIT_CMD=${DM_ROOT_DIR}/etc/init.d/dm-$DM_WEB_SERVICE_DAEMON
+DM_DB_PASSWORD_FILE=${DM_ETC_DIR}/${DM_DB_NAME}.db.passwd 
+DM_SYSTEM_PASSWORD_FILE=${DM_INSTALL_DIR}/etc/${DM_SYSTEM_USER}.system.passwd
+DM_USER_SETUP_FILE=${DM_ETC_DIR}/${DM_DB_NAME}.setup.sh
+
+cmd="echo $DM_DS_WEB_SERVICE_HOST | sed 's?DM_HOSTNAME?$DM_HOSTNAME?'"
+DM_WEB_SERVICE_HOST=`eval $cmd`
+DM_WEB_SERVICE_PORT=$DM_DS_WEB_SERVICE_PORT
+
+echo "DM web service host: $DM_WEB_SERVICE_HOST"
+echo "DM install directory: $DM_INSTALL_DIR"
+
+mkdir -p $DM_ETC_DIR
+mkdir -p $DM_SSL_DIR
+mkdir -p $DM_LOG_DIR
+chmod 700 $DM_SSL_DIR
+
+echo "Stopping web service for $DM_DB_NAME"
+$DM_WEB_SERVICE_INIT_CMD stop $DM_DB_NAME
+
+if [ ! -f $DM_ETC_DIR/$DM_DB_NAME.db.passwd ]; then
+    echo "DB passsword file not found"
+    exit 1
+fi
+
+echo "Checking CA certificate"
+if [ ! -f $DM_CA_CERT_FILE ]; then
+    echo "Creating DM CA"
+    $MY_DIR/dm_create_ca.sh || exit 1
+    rsync -ar $DM_CA_DIR/cacert.pem $DM_CA_CERT_FILE
+else
+    echo "DM CA certificate exists"
+fi
+
+echo "Checking service certificates"
+if [ ! -f $DM_WEB_SERVICE_CERT_FILE -o ! -f $DM_WEB_SERVICE_KEY_FILE ]; then
+    echo "Creating DM $DM_WEB_SERVICE_DAEMON certificate"
+    if [ ! -f $DM_CA_DIR/certs/$DM_SERVICE_HOST.crt ]; then
+        $MY_DIR/dm_create_server_cert.sh $DM_WEB_SERVICE_HOST $DM_WEB_SERVICE_HOST dm@aps.anl.gov || exit 1
+    fi
+    rsync -ar $DM_CA_DIR/certs/$DM_WEB_SERVICE_HOST.crt $DM_WEB_SERVICE_CERT_FILE
+    rsync -ar $DM_CA_DIR/certs/$DM_WEB_SERVICE_HOST.key $DM_WEB_SERVICE_KEY_FILE
+else
+    echo "DM service certificate exists"
+fi
+
+echo "Checking service configuration file"
+if [ ! -f $DM_WEB_SERVICE_CONFIG_FILE ]; then
+    echo "Generating service config file"
+    cmd="cat $DM_ROOT_DIR/etc/$DM_WEB_SERVICE_DAEMON.conf.template \
+        | sed 's?servicePort=.*?servicePort=$DM_WEB_SERVICE_PORT?g' \
+        | sed 's?sslCaCertFile=.*?sslCaCertFile=$DM_CA_CERT_FILE?g' \
+        | sed 's?sslCertFile=.*?sslCertFile=$DM_WEB_SERVICE_CERT_FILE?g' \
+        | sed 's?sslKeyFile=.*?sslKeyFile=$DM_WEB_SERVICE_KEY_FILE?g' \
+        | sed 's?handler=TimedRotatingFileLoggingHandler.*?handler=TimedRotatingFileLoggingHandler(\"$DM_WEB_SERVICE_LOG_FILE\")?g' \
+        | sed 's?DM_STORAGE_DIR?$DM_STORAGE_DIR?g' \
+        | sed 's?DM_INSTALL_DIR?$DM_INSTALL_DIR?g' \
+        | sed 's?DM_DATA_DIR?$DM_DATA_DIR?g' \
+        | sed 's?DM_HOSTNAME?$DM_HOSTNAME?g' \
+        | sed 's?DM_DB_NAME?$DM_DB_NAME?g' \
+        > $DM_WEB_SERVICE_CONFIG_FILE"
+    eval $cmd || exit 1
+else
+    echo "Service config file exists"
+fi
+
+# Get system account password
+if [ ! -f "$DM_SYSTEM_PASSWORD_FILE" ]; then
+    sttyOrig=`stty -g`
+    stty -echo
+    read -p "Enter system password for the $DM_SYSTEM_USER user: " DM_SYSTEM_PASSWORD
+    echo
+    stty $sttyOrig
+    echo $DM_SYSTEM_PASSWORD > $DM_SYSTEM_PASSWORD_FILE
+    chmod 600 $DM_SYSTEM_PASSWORD_FILE
+fi
+
+# Modify version
+echo "Modifying python module version"
+versionFile=$DM_ROOT_DIR/src/python/dm/__init__.py
+cmd="cat $versionFile | sed 's?__version__ =.*?__version__ = \"${DM_SOFTWARE_VERSION}\"?g' | sed 's?DM_DATE?$DM_DATE?g' > $versionFile.2
+&& mv $versionFile.2 $versionFile"
+eval $cmd
+
+# Prepare setup file
+echo "Preparing setup file"
+cmd="cat $DM_ROOT_DIR/etc/setup.sh.template \
+        | sed 's?DM_ROOT_DIR=.*?DM_ROOT_DIR=$DM_ROOT_DIR?g' \
+        | sed 's?DM_WEB_SERVICE_PROTOCOL=.*?DM_WEB_SERVICE_PROTOCOL=$DM_WEB_SERVICE_PROTOCOL?g' \
+        | sed 's?DM_DS_WEB_SERVICE_HOST=.*?DM_DS_WEB_SERVICE_HOST=$DM_DS_WEB_SERVICE_HOST?g' \
+        | sed 's?DM_DS_WEB_SERVICE_PORT=.*?DM_DS_WEB_SERVICE_PORT=$DM_DS_WEB_SERVICE_PORT?g' \
+        | sed 's?DM_DAQ_WEB_SERVICE_HOST=.*?DM_DAQ_WEB_SERVICE_HOST=$DM_DAQ_WEB_SERVICE_HOST?g' \
+        | sed 's?DM_DAQ_WEB_SERVICE_PORT=.*?DM_DAQ_WEB_SERVICE_PORT=$DM_DAQ_WEB_SERVICE_PORT?g' \
+        | sed 's?DM_HOSTNAME?$DM_HOSTNAME?g' \
+        > $DM_USER_SETUP_FILE"
+eval $cmd || exit 1
+
+echo "Starting web service for $DM_DB_NAME"
+$DM_WEB_SERVICE_INIT_CMD start $DM_DB_NAME
+
+echo "Done deploying $DM_WEB_SERVICE_DAEMON for $DM_DB_NAME"
+
diff --git a/sbin/dm_undeploy_daq_web_service.sh b/sbin/dm_undeploy_daq_web_service.sh
new file mode 100755
index 00000000..3a56299d
--- /dev/null
+++ b/sbin/dm_undeploy_daq_web_service.sh
@@ -0,0 +1,63 @@
+#!/bin/sh
+
+#
+# Script used for undeploying DM DAQ web service
+# Deployment configuration can be set in etc/$DM_DB_NAME.deploy.conf file
+#
+# Usage:
+#
+# $0 [DM_DB_NAME]
+#
+
+MY_DIR=`dirname $0` && cd $MY_DIR && MY_DIR=`pwd`
+if [ -z "${DM_ROOT_DIR}" ]; then
+    DM_ROOT_DIR=$MY_DIR/..
+fi
+DM_ENV_FILE=${DM_ROOT_DIR}/setup.sh
+if [ ! -f ${DM_ENV_FILE} ]; then
+    echo "Environment file ${DM_ENV_FILE} does not exist." 
+    exit 2
+fi
+. ${DM_ENV_FILE} > /dev/null
+
+# Use first argument as db name, if provided
+DM_DB_NAME=${DM_DB_NAME:=dm}
+if [ ! -z "$1" ]; then
+    DM_DB_NAME=$1
+fi
+echo "Using DB name: $DM_DB_NAME"
+
+# Look for deployment file in etc directory, and use it to override
+# default entries
+deployConfigFile=$DM_ROOT_DIR/etc/${DM_DB_NAME}.deploy.conf
+if [ -f $deployConfigFile ]; then
+    echo "Using deployment config file: $deployConfigFile"
+    . $deployConfigFile
+else
+    echo "Deployment config file $deployConfigFile not found, using defaults"
+fi
+
+DM_HOST_ARCH=`uname | tr [A-Z] [a-z]`-`uname -m`
+DM_CONTEXT_ROOT=${DM_CONTEXT_ROOT:=dm}
+DM_DATA_DIR=${DM_DATA_DIR:=/dm}
+DM_INSTALL_DIR=${DM_INSTALL_DIR:=$DM_ROOT_DIR/..}
+DM_ETC_DIR=${DM_INSTALL_DIR}/etc
+DM_SSL_DIR=${DM_ETC_DIR}/ssl
+DM_CA_DIR=${DM_ETC_DIR}/CA
+DM_CA_CERT_FILE=${DM_SSL_DIR}/dm-ca-cert.pem
+DM_WEB_SERVICE_DAEMON=daq-web-service
+DM_WEB_SERVICE_CERT_FILE=${DM_SSL_DIR}/$DM_WEB_SERVICE_DAEMON.$DM_DB_NAME.crt
+DM_WEB_SERVICE_KEY_FILE=${DM_SSL_DIR}/$DM_WEB_SERVICE_DAEMON.$DM_DB_NAME.key
+DM_WEB_SERVICE_CONFIG_FILE=${DM_ETC_DIR}/$DM_WEB_SERVICE_DAEMON.$DM_DB_NAME.conf
+DM_WEB_SERVICE_LOG_FILE=${DM_INSTALL_DIR}/var/log/$DM_WEB_SERVICE_DAEMON.$DM_DB_NAME.log
+DM_WEB_SERVICE_INIT_CMD=${DM_ROOT_DIR}/etc/init.d/dm-$DM_WEB_SERVICE_DAEMON
+DM_DB_PASSWORD_FILE=${DM_ETC_DIR}/${DM_DB_NAME}.db.passwd
+
+echo "DM install directory: $DM_INSTALL_DIR"
+
+echo "Stopping web service for $DM_DB_NAME"
+$DM_WEB_SERVICE_INIT_CMD stop $DM_DB_NAME
+
+rm -f $DM_WEB_SERVICE_CONFIG_FILE
+rm -f $DM_DB_PASSWORD_FILE
+echo "Done undeploying web service for $DM_DB_NAME"
diff --git a/sbin/dm_undeploy_ds_web_service.sh b/sbin/dm_undeploy_ds_web_service.sh
new file mode 100755
index 00000000..1488a045
--- /dev/null
+++ b/sbin/dm_undeploy_ds_web_service.sh
@@ -0,0 +1,63 @@
+#!/bin/sh
+
+#
+# Script used for undeploying DM DS web service
+# Deployment configuration can be set in etc/$DM_DB_NAME.deploy.conf file
+#
+# Usage:
+#
+# $0 [DM_DB_NAME]
+#
+
+MY_DIR=`dirname $0` && cd $MY_DIR && MY_DIR=`pwd`
+if [ -z "${DM_ROOT_DIR}" ]; then
+    DM_ROOT_DIR=$MY_DIR/..
+fi
+DM_ENV_FILE=${DM_ROOT_DIR}/setup.sh
+if [ ! -f ${DM_ENV_FILE} ]; then
+    echo "Environment file ${DM_ENV_FILE} does not exist." 
+    exit 2
+fi
+. ${DM_ENV_FILE} > /dev/null
+
+# Use first argument as db name, if provided
+DM_DB_NAME=${DM_DB_NAME:=dm}
+if [ ! -z "$1" ]; then
+    DM_DB_NAME=$1
+fi
+echo "Using DB name: $DM_DB_NAME"
+
+# Look for deployment file in etc directory, and use it to override
+# default entries
+deployConfigFile=$DM_ROOT_DIR/etc/${DM_DB_NAME}.deploy.conf
+if [ -f $deployConfigFile ]; then
+    echo "Using deployment config file: $deployConfigFile"
+    . $deployConfigFile
+else
+    echo "Deployment config file $deployConfigFile not found, using defaults"
+fi
+
+DM_HOST_ARCH=`uname | tr [A-Z] [a-z]`-`uname -m`
+DM_CONTEXT_ROOT=${DM_CONTEXT_ROOT:=dm}
+DM_DATA_DIR=${DM_DATA_DIR:=/dm}
+DM_INSTALL_DIR=${DM_INSTALL_DIR:=$DM_ROOT_DIR/..}
+DM_ETC_DIR=${DM_INSTALL_DIR}/etc
+DM_SSL_DIR=${DM_ETC_DIR}/ssl
+DM_CA_DIR=${DM_ETC_DIR}/CA
+DM_CA_CERT_FILE=${DM_SSL_DIR}/dm-ca-cert.pem
+DM_WEB_SERVICE_DAEMON=ds-web-service
+DM_WEB_SERVICE_CERT_FILE=${DM_SSL_DIR}/$DM_WEB_SERVICE_DAEMON.$DM_DB_NAME.crt
+DM_WEB_SERVICE_KEY_FILE=${DM_SSL_DIR}/$DM_WEB_SERVICE_DAEMON.$DM_DB_NAME.key
+DM_WEB_SERVICE_CONFIG_FILE=${DM_ETC_DIR}/$DM_WEB_SERVICE_DAEMON.$DM_DB_NAME.conf
+DM_WEB_SERVICE_LOG_FILE=${DM_INSTALL_DIR}/var/log/$DM_WEB_SERVICE_DAEMON.$DM_DB_NAME.log
+DM_WEB_SERVICE_INIT_CMD=${DM_ROOT_DIR}/etc/init.d/dm-$DM_WEB_SERVICE_DAEMON
+DM_DB_PASSWORD_FILE=${DM_ETC_DIR}/${DM_DB_NAME}.db.passwd
+
+echo "DM install directory: $DM_INSTALL_DIR"
+
+echo "Stopping web service for $DM_DB_NAME"
+$DM_WEB_SERVICE_INIT_CMD stop $DM_DB_NAME
+
+rm -f $DM_WEB_SERVICE_CONFIG_FILE
+rm -f $DM_DB_PASSWORD_FILE
+echo "Done undeploying web service for $DM_DB_NAME"
-- 
GitLab