Skip to content
Snippets Groups Projects

Compare revisions

Changes are shown as if the source revision was being merged into the target revision. Learn more about comparing revisions.

Source

Select target project
No results found

Target

Select target project
  • DM/dm-docs
  • hammonds/dm-docs
  • hparraga/dm-docs
3 results
Show changes
Showing
with 1907 additions and 0 deletions
#!/bin/sh
#
# Script used for destroying all DM databases
# Deployment configuration can be set in etc/$DM_DB_NAME.deploy.conf file
#
# Usage:
#
# $0 [DM_DB_NAME [DM_DB_SCRIPTS_DIR]]
#
DM_DB_NAME=dm
DM_DB_USER=dm
DM_DB_PASSWORD=dm
DM_DB_HOST=127.0.0.1
DM_DB_PORT=11136
DM_DB_ADMIN_USER=postgres
DM_DB_ADMIN_HOSTS="127.0.0.1 bluegill1.aps.anl.gov visa%.aps.anl.gov"
DM_DB_ADMIN_PASSWORD=
DM_DB_CHARACTER_SET=utf8
CURRENT_DIR=`pwd`
MY_DIR=`dirname $0` && cd $MY_DIR && MY_DIR=`pwd`
cd $CURRENT_DIR
if [ -z "${DM_ROOT_DIR}" ]; then
DM_ROOT_DIR=$MY_DIR/..
fi
DM_SQL_DIR=$DM_ROOT_DIR/db
DM_RUN_DIR=$DM_ROOT_DIR/var/run
DM_ENV_FILE=${DM_ROOT_DIR}/setup.sh
if [ ! -f ${DM_ENV_FILE} ]; then
echo "Environment file ${DM_ENV_FILE} does not exist."
exit 1
fi
. ${DM_ENV_FILE} > /dev/null
# DM_SUPPORT_DIR should now be defined.
if [ -z "$DM_SUPPORT_DIR" ]; then
echo "Invalid environment file ${DM_ENV_FILE}: DM_SUPPORT_DIR is not defined."
exit 1
fi
PG_DIR=$DM_SUPPORT_DIR/postgresql/$DM_HOST_ARCH
PG_CONTROL_SCRIPT=$DM_ROOT_DIR/etc/init.d/dm-postgresql
PG_DATA_DIR=$PG_DIR/data
PG_HBA_CONF=$PG_DATA_DIR/pg_hba.conf
DB_LOCK_FILE=${DB_RUN_DIR}/${_db_name}.db.lock
DB_CREATE_SCRIPT=${DM_ROOT_DIR}/db/create_${DM_DB_NAME}_db.sql
# Use first argument as db name, if provided
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
# Second argument overrides directory with db population scripts
DM_DB_SCRIPTS_DIR=${DM_DB_SCRIPTS_DIR:=$DM_SQL_DIR}
if [ ! -z "$2" ]; then
DM_DB_SCRIPTS_DIR=$2
fi
if [ ! -d $DM_DB_SCRIPTS_DIR ]; then
echo "DB Scripts directory $DM_DB_SCRIPTS_DIR does not exist."
exit 1
fi
echo "Using DB scripts directory: $DM_DB_SCRIPTS_DIR"
execute() {
msg="$@"
if [ ! -z "$DM_DB_ADMIN_PASSWORD" ]; then
sedCmd="s?$DM_DB_ADMIN_PASSWORD?\\*\\*\\*\\*\\*\\*?g"
echo "Executing: $@" | sed -e $sedCmd
else
echo "Executing: $@"
fi
eval "$@"
}
createDb() {
if [ -f $DB_LOCK_FILE ]; then
echo "Database lock file $DB_LOCK_FILE already exists, will not proceed."
return 1
fi
execute ${PG_DIR}/bin/createdb -U $DM_DB_USER -h $DM_DB_HOST -p $DM_DB_PORT $DM_DB_NAME || return 1
execute ${PG_DIR}/bin/psql -U $DM_DB_USER -h $DM_DB_HOST -p $DM_DB_PORT -d $DM_DB_NAME -f $DM_DB_SCRIPT || return 1
touch $DB_LOCK_FILE
}
createDbUser() {
_dbUser=$1
_dbPassword=$2
shift 2
_dbFlags=$@
# create user
execute ${PG_DIR}/bin/createuser -h $DM_DB_HOST -p $DM_DB_PORT -E $_dbFlags $_dbUser || return 1
# modify password
_tmpFile=/tmp/$$.sql
echo "alter user $_dbUser with password '$_$dbPassword';" > $_tmpFile
$PG_DIR/bin/psql -h $DB_HOST -p $DB_PORT -d postgres -f $_tmpFile
rm -f $_tmpFile
}
# Check for failed earlier attempt
if [ -f $PG_HBA_CONF.orig ]; then
echo "File $PG_HBA_CONF.orig exists, refusing to proceed."
exit 1
fi
# create db tables
# Initialize db if needed
dbAction=restart
createDbUsers=false
if [ ! -f $PG_HBA_CONF ]; then
echo "PG_HBA_CONF: $PG_HBA_CONF"
echo "Initializing database"
$PG_CONTROL_SCRIPT initdb || exit 1
dbAction=start
createDbUsers=true
fi
# Modify db permissions, restart db.
echo "Modifying db access permissions"
mv $PG_HBA_CONF $PG_HBA_CONF.orig
cat $PG_HBA_CONF.orig | sed 's?host.*all.*all.*127.*?host all all 127.0.0.1/32 trust?g' | sed 's?host.*all.*all.*::1/128.*?host all all ::1/128 trust?g' > $PG_HBA_CONF || exit 1
echo "Restarting database server"
$PG_CONTROL_SCRIPT $dbAction
# Create db users if needed
if [ $createDbUsers = "true" ]; then
# Read db passwords
if [ -z "$DM_DB_ADMIN_PASSWORD" ]; then
sttyOrig=`stty -g`
stty -echo
read -p "Enter DB password for the $DM_DB_ADMIN_USER (DB root) user: " DM_DB_ADMIN_PASSWORD
read -p "Enter DB password for the $DM_DB_USER user:" DM_DB_PASSWORD
stty $sttyOrig
fi
# Add superuser flag for the DB root user
echo "Creating $DM_DB_ADMIN_USER"
createDbUser $DM_DB_ADMIN_USER $DB_DB_ADMIN_PASSWORD -s || exit 1
# Allow database creation for the DM user
echo "Creating $DM_DB_USER"
createDbUser $DM_DB_ADMIN_USER $DB_DB_ADMIN_PASSWORD -d || exit 1
fi
# Create db
echo "Creating database: $DM_DB_NAME"
createDb || exit 1
# populate db
cd $CURRENT_DIR && cd $DM_DB_SCRIPTS_DIR
DM_DB_TABLES="\
"
#for dbTable in $DM_DB_TABLES; do
# dbFile=populate_$dbTable.sql
# if [ -f $dbFile ]; then
# echo "Populating $dbTable using $dbFile script"
# execute $mysqlCmd $dbFile
# else
# echo "$dbFile not found, skipping $dbTable update"
# fi
#done
# cleanup
echo "Restoring db access permissions"
mv $PG_HBA_CONF.orig $PG_HBA_CONF
#!/bin/sh
#
# Script used for backing up DM database + web app
# Deployment configuration can be set in etc/$DM_DM_DB_NAME.deploy.conf file
#
# Usage:
#
# $0 [DM_DB_NAME [DM_BACKUP_DIR]]
#
DM_DB_NAME=dm
DM_DB_HOST=127.0.0.1
DM_DB_PORT=11136
DM_DB_ADMIN_USER=postgres
DM_DB_ADMIN_PASSWORD=
CURRENT_DIR=`pwd`
MY_DIR=`dirname $0` && cd $MY_DIR && MY_DIR=`pwd`
cd $CURRENT_DIR
if [ -z "${DM_ROOT_DIR}" ]; then
DM_ROOT_DIR=$MY_DIR/..
fi
DM_SQL_DIR=$DM_ROOT_DIR/db/sql/dm
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
if [ ! -z "$1" ]; then
DM_DB_NAME=$1
fi
echo "Backing up $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
# Determine run directory
if [ -z "${DM_INSTALL_DIR}" ]; then
DM_INSTALL_DIR=$DM_ROOT_DIR/..
fi
# Second argument overrides directory with db population scripts
#timestamp=`date +%Y%m%d.%H%M%S`
timestamp=`date +%Y%m%d`
DM_BACKUP_DIR=$2
if [ -z $DM_BACKUP_DIR ]; then
DM_BACKUP_DIR=$DM_INSTALL_DIR/backup/$DM_DB_NAME/$timestamp
fi
backupFile=${DM_DB_NAME}.backup.$timestamp.sql
fullBackupFilePath=$DM_BACKUP_DIR/$backupFile
# Read password
sttyOrig=`stty -g`
stty -echo
read -p "Enter $DM_DB_NAME user password: " DM_DB_USER_PASSWORD
stty $sttyOrig
echo
DM_DB_USER_PASSWORD_FILE=/tmp/${DM_DB_NAME}.${DM_DB_USER}.passwd
echo $DM_DB_HOST:$DM_DB_PORT:$DM_DB_NAME:$DM_DB_USER:$DM_DB_USER_PASSWORD > $DM_DB_USER_PASSWORD_FILE && chmod 600 $DM_DB_USER_PASSWORD_FILE || exit 1
pgDumpCmd="PGPASSFILE=$DM_DB_USER_PASSWORD_FILE pg_dump -C -c -w --column-inserts -p $DM_DB_PORT -h $DM_DB_HOST -U $DM_DB_USER -d $DM_DB_NAME"
cleanup() {
rm -f $DM_DB_USER_PASSWORD
}
execute() {
eval "$@"
}
echo
echo "Using DB backup directory: $DM_BACKUP_DIR"
mkdir -p $DM_BACKUP_DIR
eval $pgDumpCmd > $fullBackupFilePath || ( cleanup && exit 1 )
nTables=`grep -n "Data for Name" $fullBackupFilePath | grep TABLE | wc -l`
echo "Processing $nTables tables"
tableCnt=0
processingFile=$DM_BACKUP_DIR/process.txt
while [ $tableCnt -lt $nTables ]; do
tableCnt=`expr $tableCnt + 1`
headLine=$tableCnt
tailLine=2
echo "Working on table #: $tableCnt"
grep -n "TABLE DATA" $fullBackupFilePath | head -$headLine | tail -$tailLine > $processingFile
dbTable=`cat $processingFile | head -1 | awk '{print $5}' | sed 's?;??g'`
echo "Creating sql script for $dbTable"
targetFile=$DM_BACKUP_DIR/populate_$dbTable.sql
pgDumpCmd="PGPASSFILE=$DM_DB_USER_PASSWORD_FILE pg_dump -C -a -t $dbTable -w --column-inserts -p $DM_DB_PORT -h $DM_DB_HOST -U $DM_DB_USER -d $DM_DB_NAME"
eval $pgDumpCmd > $targetFile || ( cleanup && exit 1 )
done
rm -f $processingFile
# Backup web app
echo "Backing up $DM_DB_NAME web app"
rsync -arlvP $DM_SUPPORT_DIR/glassfish/linux-x86_64/glassfish/domains/domain1/autodeploy/$DM_DB_NAME.war $DM_BACKUP_DIR
cleanup
echo "Backup of $DM_DB_NAME is done."
#!/bin/sh
#
# Script used for configuring DM webapp
# 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_INSTALL_DIR=${DM_INSTALL_DIR:=$DM_ROOT_DIR/..}
DM_SYSTEM_PASSWORD_FILE=${DM_INSTALL_DIR}/etc/${DM_SYSTEM_USER}.system.passwd
DM_HOST_ARCH=`uname | tr [A-Z] [a-z]`-`uname -m`
JAVA_HOME=$DM_OPT_DIR/java/$DM_HOST_ARCH
GLASSFISH_DIR=$DM_OPT_DIR/glassfish
export AS_JAVA=$JAVA_HOME
ASADMIN_CMD=$GLASSFISH_DIR/bin/asadmin
DM_DB_HOST=${DM_DB_HOST:=localhost}
DM_DB_PORT=${DM_DB_PORT:=11136}
DM_DB_USER=${DM_DB_USER:=dm}
DM_DB_PASSWORD=${DM_DB_PASSWORD:=dm}
DM_DB_POOL=postgresql_${DM_DB_NAME}_DbPool
DM_DATA_SOURCE=${DM_DB_NAME}_DataSource
DM_DOMAIN=domain1
# copy db driver
echo "Copying db driver"
rsync -ar $DM_ROOT_DIR/src/java/DmWebPortal/lib/postgresql*.jdbc41.jar $GLASSFISH_DIR/glassfish/domains/${DM_DOMAIN}/lib/ext
# Check password from file
passwordFile=$DM_INSTALL_DIR/etc/$DM_DB_NAME.db.passwd
if [ -f $passwordFile ]; then
DM_DB_PASSWORD=`cat $passwordFile`
fi
# restart server
echo "Restarting glassfish"
$ASADMIN_CMD stop-domain ${DM_DOMAIN}
$ASADMIN_CMD start-domain ${DM_DOMAIN}
# create JDBC connection pool
echo "Creating JDBC connection pool $DM_DB_POOL"
$ASADMIN_CMD create-jdbc-connection-pool --datasourceclassname org.postgresql.ds.PGSimpleDataSource --restype javax.sql.DataSource --property user=${DM_DB_USER}:password=${DM_DB_PASSWORD}:driverClass="org.postgresql.Driver":portNumber=${DM_DB_PORT}:databaseName=${DM_DB_NAME}:serverName=${DM_DB_HOST}:url="jdbc\:postgresql\://${DM_DB_HOST}\:${DM_DB_PORT}/${DM_DB_NAME}" ${DM_DB_POOL}
# create JDBC resource associated with this connection pool
echo "Creating JDBC resource $DM_DATA_SOURCE"
$ASADMIN_CMD create-jdbc-resource --connectionpoolid ${DM_DB_POOL} ${DM_DATA_SOURCE}
# test the connection settings
echo "Testing connection"
$ASADMIN_CMD ping-connection-pool $DM_DB_POOL || exit 1
# 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
# Add dm system user to the DB
echo "Adding $DM_SYSTEM_USER system user to the database"
dm-add-user --username=$DM_SYSTEM_USER --first-name=System --last-name=Account --password-file=$DM_SYSTEM_PASSWORD_FILE || exit 1
dm-add-user-system-role --username=$DM_SYSTEM_USER --role-name=Administrator || exit 1
fi
#!/bin/bash
sbindir=`dirname $0`
# Set root/run directories
if [ -z $DM_ROOT_DIR ]; then
cd $sbindir/..
export DM_ROOT_DIR=`pwd`
fi
if [ -z $DM_INSTALL_DIR ]; then
cd $DM_ROOT_DIR/..
export DM_INSTALL_DIR=`pwd`
fi
CA_ROOT=$DM_INSTALL_DIR/etc/CA
CA_CONFIG=$DM_ROOT_DIR/etc/dm.openssl.conf
CA_DESC="DM Certificate Authority"
LOG_FILE=/tmp/dm-ca.log.$$
LOCKFILE=$CA_ROOT/dm-ca.lock
echo "Creating $CA_DESC"
# Check for lock file
if [ -f $LOCKFILE ]; then
if [ "x$1" != "x--force" ]; then
echo "$0 has already been run and there is no need to re-run it."
exit -1
else
# Clean up CA...
rm -rf $CA_ROOT
fi
fi
# Prep directory
HOSTNAME=`hostname`
mkdir -p $CA_ROOT/newcerts
mkdir -p $CA_ROOT/certs
mkdir -p $CA_ROOT/certreqs
mkdir -p $CA_ROOT/private
mkdir -p $CA_ROOT/crl
touch $CA_ROOT/index.txt
echo "01" > $CA_ROOT/serial
openssl req -days 3650 -nodes -new -x509 -keyout $CA_ROOT/private/cakey.pem -out $CA_ROOT/cacert.pem -config $CA_CONFIG >> $LOG_FILE 2>&1 << EOF
$CA_DESC
EOF
#Set the lockfile
if [ $? -eq 0 ]; then
echo "Created $CA_DESC"
touch $LOCKFILE
exit 0
else
echo "Error creating CA: check '$LOG_FILE'."
exit -2
fi
#!/bin/sh
#
# Script used for creating DM database
# Deployment configuration can be set in etc/$DM_DB_NAME.deploy.conf file
#
# Usage:
#
# $0 [DM_DB_NAME [DM_DB_SCRIPTS_DIR]]
#
DM_DB_NAME=dm
DM_DB_HOST=127.0.0.1
DM_DB_PORT=11136
DM_DB_ADMIN_USER=postgres
DM_DB_ADMIN_PASSWORD=
CURRENT_DIR=`pwd`
MY_DIR=`dirname $0` && cd $MY_DIR && MY_DIR=`pwd`
cd $CURRENT_DIR
if [ -z "${DM_ROOT_DIR}" ]; then
DM_ROOT_DIR=$MY_DIR/..
fi
DM_INSTALL_DIR=${DM_INSTALL_DIR:=$DM_ROOT_DIR/..}
DM_SQL_DIR=$DM_ROOT_DIR/db
DM_ETC_DIR=$DM_INSTALL_DIR/etc
DM_RUN_DIR=$DM_INSTALL_DIR/var/run
DM_ENV_FILE=${DM_ROOT_DIR}/setup.sh
if [ ! -f ${DM_ENV_FILE} ]; then
echo "Environment file ${DM_ENV_FILE} does not exist."
exit 1
fi
. ${DM_ENV_FILE} > /dev/null
# DM_SUPPORT_DIR should now be defined.
if [ -z "$DM_SUPPORT_DIR" ]; then
echo "Invalid environment file ${DM_ENV_FILE}: DM_SUPPORT_DIR is not defined."
exit 1
fi
# Use first argument as db name, if provided
if [ ! -z "$1" ]; then
DM_DB_NAME=$1
fi
DM_DB_USER=$DM_DB_NAME
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
# Second argument overrides directory with db population scripts
DM_DB_SCRIPTS_DIR=${DM_DB_SCRIPTS_DIR:=$DM_SQL_DIR}
if [ ! -z "$2" ]; then
DM_DB_SCRIPTS_DIR=$2
fi
if [ ! -d $DM_DB_SCRIPTS_DIR ]; then
echo "DB Scripts directory $DM_DB_SCRIPTS_DIR does not exist."
exit 1
fi
echo "Using DB scripts directory: $DM_DB_SCRIPTS_DIR"
PG_DIR=$DM_OPT_DIR/postgresql/$DM_HOST_ARCH
PG_CONTROL_SCRIPT=$DM_ROOT_DIR/etc/init.d/dm-postgresql
PG_DATA_DIR=$PG_DIR/data
PG_HBA_CONF=$PG_DATA_DIR/pg_hba.conf
DB_LOCK_FILE=${DM_RUN_DIR}/${DM_DB_NAME}.db.lock
DB_CREATE_SCRIPT=${DM_ROOT_DIR}/db/create_dm_db.sql
execute() {
msg="$@"
if [ ! -z "$DM_DB_ADMIN_PASSWORD" ]; then
sedCmd="s?$DM_DB_ADMIN_PASSWORD?\\*\\*\\*\\*\\*\\*?g"
echo "Executing: $@" | sed -e $sedCmd
else
echo "Executing: $@"
fi
eval "$@"
}
createDb() {
if [ -f $DB_LOCK_FILE ]; then
echo "Database lock file $DB_LOCK_FILE already exists, will not proceed."
return 1
fi
echo "Creating database $DM_DB_NAME"
${PG_DIR}/bin/createdb -U $DM_DB_USER -h $DM_DB_HOST -p $DM_DB_PORT $DM_DB_NAME || return 1
echo "Creating database schema for $DM_DB_NAME"
dbCreateScript=/tmp/`basename $DB_CREATE_SCRIPT.$$`
cmd="cat $DB_CREATE_SCRIPT | sed 's?OWNER TO.*?OWNER TO $DM_DB_USER;?g' > $dbCreateScript"
eval $cmd
${PG_DIR}/bin/psql -U $DM_DB_USER -h $DM_DB_HOST -p $DM_DB_PORT -d $DM_DB_NAME -f $dbCreateScript || return 1
rm -f $dbCreateScript
touch $DB_LOCK_FILE
}
createDbUser() {
_dbUser=$1
shift 1
_createFlags=$@
# create user
${PG_DIR}/bin/createuser -h $DM_DB_HOST -p $DM_DB_PORT $_createFlags $_dbUser || return 1
}
modifyDbUserPassword() {
_dbUser=$1
_dbPassword=$2
_tmpFile=/tmp/$$.sql
echo "alter user $_dbUser with password '$_dbPassword';" > $_tmpFile
$PG_DIR/bin/psql -h $DM_DB_HOST -p $DM_DB_PORT -d postgres -f $_tmpFile
rm -f $_tmpFile
}
# Check for failed earlier attempt
if [ -f $PG_HBA_CONF.orig ]; then
echo "File $PG_HBA_CONF.orig exists, refusing to proceed."
exit 1
fi
# Initialize db if needed
dbAction=restart
createDbRootUser=false
if [ ! -f $PG_HBA_CONF ]; then
$PG_CONTROL_SCRIPT initdb || exit 1
dbAction=start
createDbRootUser=true
fi
# Modify db permissions, restart db.
echo "Modifying db access permissions"
mv $PG_HBA_CONF $PG_HBA_CONF.orig
cat $PG_HBA_CONF.orig | sed 's?host.*all.*all.*127.*?host all all 127.0.0.1/32 trust?g' | sed 's?host.*all.*all.*::1/128.*?host all all ::1/128 trust?g' > $PG_HBA_CONF || exit 1
echo "Restarting database server"
$PG_CONTROL_SCRIPT $dbAction
# Create db root user if needed
sttyOrig=`stty -g`
if [ $createDbRootUser = "true" ]; then
# Read db password if needed
if [ -z "$DM_DB_ADMIN_PASSWORD" ]; then
stty -echo
read -p "Enter DB password for the $DM_DB_ADMIN_USER (DB root) user: " DM_DB_ADMIN_PASSWORD
echo
stty $sttyOrig
fi
# Create postgres user
echo "Creating $DM_DB_ADMIN_USER"
createDbUser $DM_DB_ADMIN_USER -E -s || exit 1
modifyDbUserPassword $DM_DB_ADMIN_USER $DM_DB_ADMIN_PASSWORD || exit 1
fi
# Read user db password if needed
if [ -z "$DM_DB_USER_PASSWORD" ]; then
stty -echo
read -p "Enter DB password for the $DM_DB_USER user: " DM_DB_USER_PASSWORD
echo
stty $sttyOrig
fi
# Create db user unless we are running this script under the same
# account, when user will be created
echo "Creating $DM_DB_USER"
if [ $DM_DB_USER != `whoami` ]; then
createDbUser $DM_DB_USER -E -d || exit 1
fi
modifyDbUserPassword $DM_DB_USER $DM_DB_USER_PASSWORD || exit 1
# Create db password file
mkdir -p $DM_ETC_DIR
mkdir -p $DM_RUN_DIR
passwordFile=$DM_ETC_DIR/$DM_DB_NAME.db.passwd
echo $DM_DB_USER_PASSWORD > $passwordFile
chmod 600 $passwordFile
# Create db
echo "Creating database: $DM_DB_NAME"
createDb || exit 1
# populate db
cd $CURRENT_DIR && cd $DM_DB_SCRIPTS_DIR
DM_DB_TABLES="\
experiment_type \
experiment_station \
allowed_experiment_station_experiment_type \
experiment \
storage \
endpoint \
data_folder \
user_info \
system_role_type \
experiment_role_type \
user_system_role \
user_experiment_role
"
for dbTable in $DM_DB_TABLES; do
dbFile=populate_$dbTable.sql
if [ -f $dbFile ]; then
echo "Populating $dbTable using $dbFile script"
execute ${PG_DIR}/bin/psql -U $DM_DB_USER -h $DM_DB_HOST -p $DM_DB_PORT -d $DM_DB_NAME -f $dbFile || exit 1
else
echo "$dbFile not found, skipping $dbTable update"
fi
done
# cleanup
echo "Restoring db access permissions"
if [ $createDbRootUser = "true" ]; then
# db was just created, enable password access
cat $PG_HBA_CONF.orig | sed 's?host.*all.*all.*127.*?host all all 127.0.0.1/32 md5?g' | sed 's?host.*all.*all.*::1/128.*?host all all ::1/128 md5?g' > $PG_HBA_CONF || exit 1
rm -f $PG_HBA_CONF.orig
else
# no changes needed to original hba file
mv $PG_HBA_CONF.orig $PG_HBA_CONF
fi
echo "Restarting database server"
$PG_CONTROL_SCRIPT restart
echo "Database $DM_DB_NAME created successfully"
echo
#!/bin/bash
sbindir=`dirname $0`
# Set root/run directories
if [ -z $DM_ROOT_DIR ]; then
cd $sbindir/..
export DM_ROOT_DIR=`pwd`
fi
if [ -z $DM_INSTALL_DIR ]; then
cd $DM_ROOT_DIR/..
export DM_INSTALL_DIR=`pwd`
fi
CA_ROOT=$DM_INSTALL_DIR/etc/CA
CA_CONFIG=$DM_ROOT_DIR/etc/dm.openssl.conf
LOG_FILE=/tmp/dm-server-cert.log.$$
SERVER_NAME=$1
SERVER_CN=$2
ADMIN_EMAIL=$3
if [ $# -ne 3 ]; then
echo "Usage: $0 <server type> <server description> <admin email>"
exit 1
fi
CERT_DIR=$CA_ROOT/certs
CERT_REQ_DIR=$CA_ROOT/certreqs
REQUEST_CMD="openssl req -days 3650 -nodes -new -keyout $CERT_DIR/$SERVER_NAME.key -out $CERT_REQ_DIR/$SERVER_NAME.csr -extensions server -config $CA_CONFIG"
SIGN_CMD="openssl ca -days 3650 -out $CERT_DIR/$SERVER_NAME.crt -in $CERT_REQ_DIR/$SERVER_NAME.csr -extensions server -config $CA_CONFIG"
$REQUEST_CMD >> $LOG_FILE 2>&1 << EOF
$SERVER_CN
$ADMIN_EMAIL
EOF
if [ $? -ne 0 ]; then
echo "Error creating server certificate, check '$LOG_FILE'."
exit -1
fi
$SIGN_CMD >> $LOG_FILE 2>&1 << EOF
y
y
EOF
if [ $? -eq 0 ]; then
chmod 400 $CERT_DIR/*
exit 0
else
echo "Error creating server certificate, check '$LOG_FILE'."
exit -1
fi
#!/bin/bash
# Set root/run directories
if [ -z $DM_ROOT_DIR ]; then
cd $sbindir/..
export DM_ROOT_DIR=`pwd`
fi
if [ -z $DM_INSTALL_DIR ]; then
cd $DM_ROOT_DIR/..
export DM_INSTALL_DIR=`pwd`
fi
CA_ROOT=$DM_INSTALL_DIR/etc/CA
CA_CONFIG=$DM_ROOT_DIR/etc/dm.openssl.conf
LOG_FILE=/tmp/dm-user-cert.log.$$
USERNAME=$1
USER_CN=$2
USER_EMAIL=$3
if [ $# -ne 3 ]; then
echo "Usage: $0 <username> <user cn> <user email>"
exit 1
fi
CERT_DIR=$CA_ROOT/certs
CERT_REQ_DIR=$CA_ROOT/certreqs
REQUEST_CMD="openssl req -days 3650 -nodes -new -keyout $CERT_DIR/$USERNAME.key -out $CERT_REQ_DIR/$USERNAME.csr -config $CA_CONFIG"
SIGN_CMD="openssl ca -days 3650 -out $CERT_DIR/$USERNAME.crt -in $CERT_REQ_DIR/$USERNAME.csr -config $CA_CONFIG"
$REQUEST_CMD >> $LOG_FILE 2>&1 << EOF
$USER_CN
$USER_EMAIL
EOF
if [ $? -ne 0 ]; then
echo "Error creating server certificate, check '$LOG_FILE'."
exit -1
fi
$SIGN_CMD >> $LOG_FILE 2>&1 << EOF
y
y
EOF
if [ $? -eq 0 ]; then
chmod 400 $CERT_DIR/*
exit 0
else
echo "Error creating server certificate, check '$LOG_FILE'."
exit -1
fi
#!/bin/sh
#
# Script used for deploying DM CAT 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_INSTALL_DIR=${DM_INSTALL_DIR:=$DM_ROOT_DIR/..}
if [ -d $DM_INSTALL_DIR ]; then
cd $DM_INSTALL_DIR && DM_INSTALL_DIR=`pwd` || exit 1
fi
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=cat-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
DM_MONGODB_SERVICE_INIT_CMD=${DM_ROOT_DIR}/etc/init.d/dm-mongodb
DM_STATION_NAME=${DM_STATION_NAME:=TEST}
cmd="echo $DM_CAT_WEB_SERVICE_HOST | sed 's?DM_HOSTNAME?$DM_HOSTNAME?'"
DM_WEB_SERVICE_HOST=`eval $cmd`
DM_CAT_WEB_SERVICE_HOST=$DM_WEB_SERVICE_HOST
DM_WEB_SERVICE_PORT=$DM_CAT_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
if [ -z "$DM_DS_WEB_SERVICE_HOST" ]; then
DM_DS_WEB_SERVICE_HOST=$DM_HOSTNAME
fi
read -p "Enter DM DS Web Service Installation Directory [$DM_INSTALL_DIR]: " DM_DS_INSTALL_DIR
if [ -z "$DM_DS_INSTALL_DIR" ]; then
DM_DS_INSTALL_DIR=$DM_INSTALL_DIR
fi
read -p "Enter DM DAQ station name [$DM_STATION_NAME]: " DM_CAT_STATION_NAME
if [ -z "$DM_CAT_STATION_NAME" ]; then
DM_CAT_STATION_NAME=$DM_STATION_NAME
fi
echo "DM CAT web service host: $DM_CAT_WEB_SERVICE_HOST"
echo "DM CAT web service install directory: $DM_INSTALL_DIR"
echo "DM CAT station name: $DM_CAT_STATION_NAME"
echo "DM DS web service host: $DM_DS_WEB_SERVICE_HOST"
echo "DM DS web service install directory: $DM_DS_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
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_WEB_SERVICE_HOST.crt ]; then
echo "Attempting to create DM $DM_WEB_SERVICE_DAEMON certificate"
ssh $DM_DS_WEB_SERVICE_HOST "$DM_DS_INSTALL_DIR/production/sbin/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_DS_INSTALL_DIR/etc/CA/certs/$DM_WEB_SERVICE_HOST.crt $DM_WEB_SERVICE_CERT_FILE || exit 1
rsync -ar $DM_DS_WEB_SERVICE_HOST:$DM_DS_INSTALL_DIR/etc/CA/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_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_HOSTNAME?$DM_HOSTNAME?g' \
| sed 's?DM_DB_NAME?$DM_DB_NAME?g' \
| sed 's?DM_STATION_NAME?$DM_CAT_STATION_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 template for user setup file $DM_USER_SETUP_FILE"
rsync -ar $DM_ROOT_DIR/etc/setup.sh.template $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_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_CAT_WEB_SERVICE_HOST=.*?DM_CAT_WEB_SERVICE_HOST=$DM_CAT_WEB_SERVICE_HOST?g' \
| sed 's?DM_CAT_WEB_SERVICE_PORT=.*?DM_CAT_WEB_SERVICE_PORT=$DM_CAT_WEB_SERVICE_PORT?g' \
| sed 's?DM_HOSTNAME?$DM_HOSTNAME?g' \
| sed 's?DM_STATION_NAME=.*?DM_STATION_NAME=$DM_CAT_STATION_NAME?g' \
> $DM_USER_SETUP_FILE.2 && mv $DM_USER_SETUP_FILE.2 $DM_USER_SETUP_FILE"
eval $cmd || exit 1
echo "Starting mongodb service"
$DM_MONGODB_SERVICE_INIT_CMD restart
echo "Starting cat 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"
#!/bin/sh
#
# Script used for deploying 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_DATE=`date +%Y.%m.%d`
DM_HOSTNAME=`hostname -f`
DM_CONTEXT_ROOT=${DM_CONTEXT_ROOT:=dm}
DM_INSTALL_DIR=${DM_INSTALL_DIR:=$DM_ROOT_DIR/..}
if [ -d $DM_INSTALL_DIR ]; then
cd $DM_INSTALL_DIR && DM_INSTALL_DIR=`pwd` || exit 1
fi
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
DM_STATION_NAME=${DM_STATION_NAME:=TEST}
cmd="echo $DM_DAQ_WEB_SERVICE_HOST | sed 's?DM_HOSTNAME?$DM_HOSTNAME?'"
DM_WEB_SERVICE_HOST=`eval $cmd`
DM_DAQ_WEB_SERVICE_HOST=$DM_WEB_SERVICE_HOST
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
if [ -z "$DM_DS_WEB_SERVICE_HOST" ]; then
DM_DS_WEB_SERVICE_HOST=$DM_HOSTNAME
fi
read -p "Enter DM DS Web Service Installation Directory [$DM_INSTALL_DIR]: " DM_DS_INSTALL_DIR
if [ -z "$DM_DS_INSTALL_DIR" ]; then
DM_DS_INSTALL_DIR=$DM_INSTALL_DIR
fi
read -p "Enter DM DAQ station name [$DM_STATION_NAME]: " DM_DAQ_STATION_NAME
if [ -z "$DM_DAQ_STATION_NAME" ]; then
DM_DAQ_STATION_NAME=$DM_STATION_NAME
fi
echo "DM DAQ web service host: $DM_DAQ_WEB_SERVICE_HOST"
echo "DM DAQ web service install directory: $DM_INSTALL_DIR"
echo "DM DAQ station name: $DM_DAQ_STATION_NAME"
echo "DM DS web service host: $DM_DS_WEB_SERVICE_HOST"
echo "DM DS web service install directory: $DM_DS_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
echo "Checking CA certificate"
if [ ! -f $DM_CA_CERT_FILE ]; then
echo "Copying DM CA cert"
echo $DM_SSL_DIR
rsync $DM_DS_WEB_SERVICE_HOST:$DM_DS_INSTALL_DIR/etc/ssl/dm-ca-cert.pem $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_WEB_SERVICE_HOST.crt ]; then
echo "Attempting to create DM $DM_WEB_SERVICE_DAEMON certificate"
ssh $DM_DS_WEB_SERVICE_HOST "$DM_DS_INSTALL_DIR/production/sbin/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_DS_INSTALL_DIR/etc/CA/certs/$DM_WEB_SERVICE_HOST.crt $DM_WEB_SERVICE_CERT_FILE || exit 1
rsync -ar $DM_DS_WEB_SERVICE_HOST:$DM_DS_INSTALL_DIR/etc/CA/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_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_HOSTNAME?$DM_HOSTNAME?g' \
| sed 's?DM_DB_NAME?$DM_DB_NAME?g' \
| sed 's?DM_STATION_NAME?$DM_DAQ_STATION_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_DS_INSTALL_DIR/etc/${DM_SYSTEM_USER}.system.passwd $DM_SYSTEM_PASSWORD_FILE || exit 1
fi
# Prepare setup file
if [ ! -f $DM_USER_SETUP_FILE ]; then
echo "Copying template for user setup file $DM_USER_SETUP_FILE"
rsync -ar $DM_ROOT_DIR/etc/setup.sh.template $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_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' \
| sed 's?DM_STATION_NAME=.*?DM_STATION_NAME=$DM_DAQ_STATION_NAME?g' \
> $DM_USER_SETUP_FILE.2 && mv $DM_USER_SETUP_FILE.2 $DM_USER_SETUP_FILE"
eval $cmd || exit 1
echo "Starting daq 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"
#!/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_SYSTEM_UNIX_ACCOUNT=`whoami`
DM_CONTEXT_ROOT=${DM_CONTEXT_ROOT:=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_SYSTEM_UNIX_PASSWORD_FILE=${DM_INSTALL_DIR}/etc/${DM_SYSTEM_UNIX_ACCOUNT}.ldap.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_WEB_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
if [ -z "$DM_STORAGE_DIR" ]; then
read -p "Enter full path to DM storage directory: " DM_STORAGE_DIR
fi
if [ -z "DM_STORAGE_DIR" ]; then
echo "DM storage directory directory cannot be empty."
exit 1
fi
echo "Verifying DM storage directory $DM_STORAGE_DIR"
mkdir -p $DM_STORAGE_DIR || exit 1
# Prepare setup file
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_HOSTNAME?$DM_HOSTNAME?g' \
| sed 's?DM_DB_NAME?$DM_DB_NAME?g' \
| sed 's?DM_SYSTEM_UNIX_ACCOUNT?$DM_SYSTEM_UNIX_ACCOUNT?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 (database) 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
# Add dm system user to the DB
echo "Adding $DM_SYSTEM_USER system user to the database"
dm-add-user --username=$DM_SYSTEM_USER --first-name=System --last-name=Account --password-file=$DM_SYSTEM_PASSWORD_FILE || exit 1
dm-add-user-system-role --username=$DM_SYSTEM_USER --role-name=Administrator || exit 1
fi
# Get unix account password
if [ ! -f "$DM_SYSTEM_UNIX_PASSWORD_FILE" ]; then
sttyOrig=`stty -g`
stty -echo
read -p "Enter UNIX (LDAP) password for the $DM_SYSTEM_UNIX_ACCOUNT user: " DM_SYSTEM_UNIX_PASSWORD
echo
stty $sttyOrig
echo $DM_SYSTEM_UNIX_PASSWORD > $DM_SYSTEM_UNIX_PASSWORD_FILE
chmod 600 $DM_SYSTEM_UNIX_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
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_CAT_WEB_SERVICE_HOST=.*?DM_CAT_WEB_SERVICE_HOST=$DM_CAT_WEB_SERVICE_HOST?g' \
| sed 's?DM_CAT_WEB_SERVICE_PORT=.*?DM_CAT_WEB_SERVICE_PORT=$DM_CAT_WEB_SERVICE_PORT?g' \
| sed 's?DM_HOSTNAME?$DM_HOSTNAME?g' \
> $DM_USER_SETUP_FILE"
eval $cmd || exit 1
# Prepare sudo rules
configureSudo="N"
read -p "Would you like to configure sudo rules (requires root password) in order to allow the $DM_SYSTEM_UNIX_ACCOUNT user to manage user groups and file system permissions? [y|N] " configureSudo
if [ "$configureSudo" = "y" -o "$configureSudo" = "Y" ]; then
sudoersFile=/etc/sudoers.d/$DM_SYSTEM_UNIX_ACCOUNT
echo "Preparing DM sudo rules file $sudoersFile"
cmd="su -c \"cat $DM_ROOT_DIR/etc/${DM_DB_NAME}.sudo-rules.template \
| sed 's?DM_STORAGE_DIR?$DM_STORAGE_DIR?g' \
| sed 's?DM_SYSTEM_UNIX_ACCOUNT?$DM_SYSTEM_UNIX_ACCOUNT?g' \
| sed 's?DM_HOSTNAME?$DM_HOSTNAME?g' \
> $sudoersFile\""
eval $cmd || exit 1
else
echo "Will not configure sudo access for $DM_SYSTEM_UNIX_ACCOUNT."
fi
echo "Starting ds 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"
#!/bin/sh
#
# Script used for deploying DM webapp
# 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
JAVA_HOME=$DM_OPT_DIR/java/$DM_HOST_ARCH
DM_HOST_ARCH=`uname | tr [A-Z] [a-z]`-`uname -m`
DM_HOSTNAME=`hostname -f`
DM_CONTEXT_ROOT=${DM_CONTEXT_ROOT:=dm}
GLASSFISH_DIR=$DM_OPT_DIR/glassfish
DM_DEPLOY_DIR=$GLASSFISH_DIR/glassfish/domains/domain1/autodeploy
DM_DIST_DIR=$DM_ROOT_DIR/src/java/DmWebPortal/dist
DM_BUILD_WAR_FILE=DmWebPortal.war
DM_WAR_FILE=$DM_CONTEXT_ROOT.war
DM_SYSTEM_PASSWORD_FILE=${DM_INSTALL_DIR}/etc/${DM_SYSTEM_USER}.system.passwd
cmd="echo $DM_DS_WEB_SERVICE_HOST | sed 's?DM_HOSTNAME?$DM_HOSTNAME?'"
DM_DS_WEB_SERVICE_HOST=`eval $cmd`
if [ ! -f $DM_DIST_DIR/$DM_BUILD_WAR_FILE ]; then
echo "$DM_BUILD_WAR_FILE not found in $DM_DIST_DIR."
exit 1
fi
# Modify war file for proper context/persistence settings and
# repackage it into new war
echo "Repackaging war file for context root $DM_CONTEXT_ROOT"
cd $DM_DIST_DIR
rm -rf $DM_CONTEXT_ROOT
mkdir -p $DM_CONTEXT_ROOT
cd $DM_CONTEXT_ROOT
jar xf ../$DM_BUILD_WAR_FILE
configFile=WEB-INF/glassfish-web.xml
cmd="cat $configFile | sed 's?<context-root.*?<context-root>${DM_CONTEXT_ROOT}</context-root>?g' > $configFile.2 && mv $configFile.2 $configFile"
eval $cmd
configFile=WEB-INF/classes/META-INF/persistence.xml
cmd="cat $configFile | sed 's?<jta-data-source.*?<jta-data-source>${DM_DB_NAME}_DataSource</jta-data-source>?g' > $configFile.2 && mv $configFile.2 $configFile"
eval $cmd
configFile=WEB-INF/classes/dm.portal.properties
cmd="cat $configFile | sed 's?dm.dsWebService.url=.*?dm.dsWebService.url=https://${DM_DS_WEB_SERVICE_HOST}:${DM_DS_WEB_SERVICE_PORT}/dm?g' > $configFile.2 && mv $configFile.2 $configFile"
eval $cmd
configFile=WEB-INF/classes/dm.portal.properties
cmd="cat $configFile | sed 's?dm.system.user=.*?dm.system.user=${DM_SYSTEM_USER}?g' > $configFile.2 && mv $configFile.2 $configFile"
eval $cmd
configFile=WEB-INF/classes/dm.portal.properties
cmd="cat $configFile | sed 's?dm.system.passwordFile=.*?dm.system.passwordFile=${DM_SYSTEM_PASSWORD_FILE}?g' > $configFile.2 && mv $configFile.2 $configFile"
eval $cmd
configFile=WEB-INF/classes/resources.properties
cmd="cat $configFile | sed 's?DmSoftwareVersion=.*?DmSoftwareVersion=${DM_SOFTWARE_VERSION}?g' | sed 's?DM_DATE?$DM_DATE?g' > $configFile.2 && mv $configFile.2 $configFile"
eval $cmd
jar cf ../$DM_WAR_FILE *
export AS_JAVA=$JAVA_HOME
ASADMIN_CMD=$GLASSFISH_DIR/bin/asadmin
# copy war file
echo "Copying war file $DM_DIST_DIR/$DM_WAR_FILE to $DM_DEPLOY_DIR"
rm -f $DM_DEPLOY_DIR/${DM_WAR_FILE}_*
cp $DM_DIST_DIR/$DM_WAR_FILE $DM_DEPLOY_DIR
# wait on deployment
echo "Waiting on war deployment..."
WAIT_TIME=60
cd $DM_DEPLOY_DIR
t=0
while [ $t -lt $WAIT_TIME ]; do
sleep 1
deploymentStatus=`ls -c1 ${DM_WAR_FILE}_* 2> /dev/null | sed 's?.*war_??g'`
if [ ! -z "$deploymentStatus" ]; then
break
fi
t=`expr $t + 1`
done
echo "Deployment Status: $deploymentStatus"
#!/bin/sh
#
# Script used for destroying all DM databases
#
# Usage:
#
# $0
#
CURRENT_DIR=`pwd`
MY_DIR=`dirname $0` && cd $MY_DIR && MY_DIR=`pwd`
cd $CURRENT_DIR
if [ -z "${DM_ROOT_DIR}" ]; then
DM_ROOT_DIR=$MY_DIR/..
fi
if [ -z "${DM_INSTALL_DIR}" ]; then
DM_INSTALL_DIR=$DM_ROOT_DIR/..
fi
DM_RUN_DIR=${DM_INSTALL_DIR}/var/run
DM_ENV_FILE=${DM_ROOT_DIR}/setup.sh
if [ ! -f ${DM_ENV_FILE} ]; then
echo "Environment file ${DM_ENV_FILE} does not exist."
exit 1
fi
. ${DM_ENV_FILE} > /dev/null
# DM_SUPPORT_DIR should now be defined.
if [ -z "$DM_SUPPORT_DIR" ]; then
echo "Invalid environment file ${DM_ENV_FILE}: DM_SUPPORT_DIR is not defined."
exit 1
fi
PG_DIR=$DM_SUPPORT_DIR/postgresql/$DM_HOST_ARCH
PG_CONTROL_SCRIPT=$DM_ROOT_DIR/etc/init.d/dm-postgresql
PG_DATA_DIR=$PG_DIR/data
# Ask user to verify this action
cd $DM_RUN_DIR
lockFileList=`ls -c1 *.db.lock 2> /dev/null`
if [ -z $lockFileList ]; then
echo "There are no active databases"
else
dbNamelist=""
for lockFile in $lockFileList; do
dbName=`echo $lockFile | cut -f1 -d'.'`
dbNameList="$dbNameList $dbName"
done
echo "Found active databases: $dbNameList"
read -p "Proceed [y/N]? " proceedFlag
if [ "$proceedFlag" != "y" ]; then
echo "Active databases were not destroyed."
exit 1
fi
fi
# Stop db.
$PG_CONTROL_SCRIPT stop
# Remove db data directory
echo "Removing database directory"
rm -rf $PG_DATA_DIR
# Remove lock files.
if [ ! -z "$lockFileList" ]; then
echo "Removing lock files"
rm -f $lockFileList
fi
echo "Cleanup done"
echo
#!/bin/sh
#
# Script used for creating DM database
# Deployment configuration can be set in etc/$DM_DB_NAME.deploy.conf file
#
# Usage:
#
# $0 [DM_DB_NAME]
#
DM_DB_NAME=dm
DM_DB_HOST=127.0.0.1
DM_DB_PORT=11136
DM_DB_ADMIN_USER=postgres
DM_DB_ADMIN_PASSWORD=
CURRENT_DIR=`pwd`
MY_DIR=`dirname $0` && cd $MY_DIR && MY_DIR=`pwd`
cd $CURRENT_DIR
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 1
fi
. ${DM_ENV_FILE} > /dev/null
# DM_SUPPORT_DIR should now be defined.
if [ -z "$DM_SUPPORT_DIR" ]; then
echo "Invalid environment file ${DM_ENV_FILE}: DM_SUPPORT_DIR is not defined."
exit 1
fi
PG_DIR=$DM_OPT_DIR/postgresql/$DM_HOST_ARCH
PG_CONTROL_SCRIPT=$DM_ROOT_DIR/etc/init.d/dm-postgresql
PG_DATA_DIR=$PG_DIR/data
PG_HBA_CONF=$PG_DATA_DIR/pg_hba.conf
DM_RUN_DIR=${DM_INSTALL_DIR}/var/run
DB_LOCK_FILE=${DM_RUN_DIR}/${DM_DB_NAME}.db.lock
# Use first argument as db name, if provided
if [ ! -z "$1" ]; then
DM_DB_NAME=$1
fi
DM_DB_USER=$DM_DB_NAME
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
execute() {
msg="$@"
if [ ! -z "$DM_DB_ADMIN_PASSWORD" ]; then
sedCmd="s?$DM_DB_ADMIN_PASSWORD?\\*\\*\\*\\*\\*\\*?g"
echo "Executing: $@" | sed -e $sedCmd
else
echo "Executing: $@"
fi
eval "$@"
}
destroyDb() {
echo "Destroying database $DM_DB_NAME (connecting to db using $DM_DB_ADMIN_USER admin account)"
${PG_DIR}/bin/dropdb -U $DM_DB_ADMIN_USER -h $DM_DB_HOST -p $DM_DB_PORT $DM_DB_NAME || return 1
rm -f $DB_LOCK_FILE
echo "Database $DM_DB_NAME destroyed"
}
destroyDbUser() {
echo "Dropping user $DM_DB_USER (connecting to db using $DM_DB_ADMIN_USER admin account)"
_dbUser=$1
shift 1
_destroyFlags=$@
# destroy user
${PG_DIR}/bin/dropuser -U $DM_DB_ADMIN_USER -h $DM_DB_HOST -p $DM_DB_PORT $_destroyFlags $_dbUser || return 1
echo "User $DM_DB_USER dropped"
}
# Check for failed earlier attempt
if [ -f $PG_HBA_CONF.orig ]; then
echo "File $PG_HBA_CONF.orig exists, refusing to proceed."
exit 1
fi
# Check lock file
if [ ! -f $DB_LOCK_FILE ]; then
echo "Database $DM_DB_NAME is not found."
exit 1
fi
read -p "Destroy DB $DM_DB_NAME [y/N]? " proceedFlag
if [ "$proceedFlag" != "y" ]; then
echo "Database $DM_DB_NAME was not destroyed."
exit 1
fi
# Destroy db
destroyDb || exit 1
# Destroy db user
destroyDbUser $DM_DB_USER || exit 1
#!/bin/sh
# Invoke this script either with "all" or "daq" arguments.
usage() {
echo "Usage: $0 all|daq"
}
DM_SVN_URL=https://subversion.xray.aps.anl.gov/DataManagement
supportType=all
if [ ! -z "$1" ]; then
supportType=$1
fi
if [ $supportType != "all" -a $supportType != "daq" ]; then
usage
exit 1
fi
MY_DIR=`dirname $0` && cd $MY_DIR && MY_DIR=`pwd`
if [ -z "${DM_ROOT_DIR}" ]; then
DM_ROOT_DIR=$MY_DIR/..
fi
DM_SUPPORT_DIR=$DM_ROOT_DIR/../support
execute() {
echo "Executing: $@"
eval "$@"
}
if [ ! -d $DM_SUPPORT_DIR ]; then
echo "Creating new DM support directory $DM_SUPPORT_DIR."
cd `dirname $DM_SUPPORT_DIR`
execute svn co $DM_SVN_URL/support
fi
cd $DM_SUPPORT_DIR
execute svn update
#execute $DM_SUPPORT_DIR/bin/clean_support_all.sh
execute $DM_SUPPORT_DIR/bin/install_support_${supportType}.sh
#!/bin/sh
SVN_ROOT=https://subversion.xray.aps.anl.gov/DataManagement
svn ls $SVN_ROOT/releases
#!/bin/sh
SVN_ROOT=https://subversion.xray.aps.anl.gov/DataManagement
svn ls $SVN_ROOT/tags
#!/bin/sh
#
# Script used for preparing DM development
#
# Usage:
#
# $0
#
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
DM_INSTALL_DIR=${DM_INSTALL_DIR:=$DM_ROOT_DIR/..}
DM_ETC_DIR=${DM_INSTALL_DIR}/etc
DM_LOG_DIR=${DM_INSTALL_DIR}/var/log
DM_DB_NAME=dm
DM_DB_USER=${DM_DB_NAME}
DM_DS_WEB_SERVICE_CONFIG_FILE=${DM_ETC_DIR}/${DM_DB_NAME}.ds-web-service.conf
DM_DS_WEB_SERVICE_LOG_FILE=${DM_LOG_DIR}/${DM_DB_NAME}.ds-web-service.log
DM_DAQ_WEB_SERVICE_CONFIG_FILE=${DM_ETC_DIR}/${DM_DB_NAME}.daq-web-service.conf
DM_DAQ_WEB_SERVICE_LOG_FILE=${DM_LOG_DIR}/${DM_DB_NAME}.daq-web-service.log
DM_CAT_WEB_SERVICE_CONFIG_FILE=${DM_ETC_DIR}/${DM_DB_NAME}.cat-web-service.conf
DM_CAT_WEB_SERVICE_LOG_FILE=${DM_LOG_DIR}/${DM_DB_NAME}.cat-web-service.log
DM_DB_PASSWORD_FILE=$DM_INSTALL_DIR/etc/${DM_DB_NAME}.db.passwd
DM_SYSTEM_USER=dm
DM_SYSTEM_PASSWORD_FILE=$DM_INSTALL_DIR/etc/$DM_SYSTEM_USER.system.passwd
DM_DS_WEB_SERVICE_PORT=22236
DM_DS_WEB_SERVICE_HOST=localhost
DM_STORAGE_DIR=${DM_STORAGE_DIR:=$DM_INSTALL_DIR/storage}
echo "Preparing development configuration"
mkdir -p $DM_ETC_DIR
mkdir -p $DM_LOG_DIR
#echo "Modifying glassfish-web config file"
portalSrcDir=$DM_ROOT_DIR/src/java/DmWebPortal
echo "Configuring glassfish db access"
if [ ! -f $DM_DB_PASSWORD_FILE ]; then
echo "File $DM_DB_PASSWORD_FILE does not exist."
exit 1
fi
DM_DB_PASSWORD=`cat $DM_DB_PASSWORD_FILE`
configFile=$portalSrcDir/setup/glassfish-resources.xml
cmd="cat $configFile.template | sed 's?DM_DB_PASSWORD?$DM_DB_PASSWORD?g' > $configFile"
eval $cmd || exit 1
# 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
# Add dm system user to the DB
echo "Adding $DM_SYSTEM_USER system user to the database"
dm-add-user --username=$DM_SYSTEM_USER --first-name=System --last-name=Account --password-file=$DM_SYSTEM_PASSWORD_FILE || exit 1
dm-add-user-system-role --username=$DM_SYSTEM_USER --role-name=Administrator || exit 1
fi
echo "Generating web service config files"
cmd="cat $DM_ROOT_DIR/etc/ds-web-service.conf.template \
| sed 's?sslCaCertFile=.*??g' \
| sed 's?sslCertFile=.*??g' \
| sed 's?sslKeyFile=.*??g' \
| sed 's?DM_STORAGE_DIR?$DM_STORAGE_DIR?g' \
| sed 's?DM_INSTALL_DIR?$DM_INSTALL_DIR?g' \
| sed 's?DM_DB_NAME?$DM_DB_NAME?g' \
| sed 's?handler=TimedRotatingFileLoggingHandler.*?handler=TimedRotatingFileLoggingHandler(\"$DM_DS_WEB_SERVICE_LOG_FILE\")?g' \
> $DM_DS_WEB_SERVICE_CONFIG_FILE"
eval $cmd || exit 1
cmd="cat $DM_ROOT_DIR/etc/daq-web-service.conf.template \
| sed 's?sslCaCertFile=.*??g' \
| sed 's?sslCertFile=.*??g' \
| sed 's?sslKeyFile=.*??g' \
| sed 's?DM_SYSTEM_USER?$DM_SYSTEM_USER?g' \
| sed 's?DM_SYSTEM_PASSWORD_FILE?$DM_SYSTEM_PASSWORD_FILE?g' \
| sed 's?DM_DS_WEB_SERVICE_PORT?$DM_DS_WEB_SERVICE_PORT?g' \
| sed 's?DM_DS_WEB_SERVICE_HOST?$DM_DS_WEB_SERVICE_HOST?g' \
| sed 's?DM_WEB_SERVICE_PROTOCOL?http?g' \
| sed 's?DM_INSTALL_DIR?$DM_INSTALL_DIR?g' \
| sed 's?DM_DB_NAME?$DM_DB_NAME?g' \
| sed 's?handler=TimedRotatingFileLoggingHandler.*?handler=TimedRotatingFileLoggingHandler(\"$DM_DAQ_WEB_SERVICE_LOG_FILE\")?g' \
> $DM_DAQ_WEB_SERVICE_CONFIG_FILE"
eval $cmd || exit 1
cmd="cat $DM_ROOT_DIR/etc/cat-web-service.conf.template \
| sed 's?sslCaCertFile=.*??g' \
| sed 's?sslCertFile=.*??g' \
| sed 's?sslKeyFile=.*??g' \
| sed 's?handler=TimedRotatingFileLoggingHandler.*?handler=TimedRotatingFileLoggingHandler(\"$DM_CAT_WEB_SERVICE_LOG_FILE\")?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_DS_WEB_SERVICE_PROTOCOL?http?g' \
| sed 's?DM_HOSTNAME?$DM_HOSTNAME?g' \
| sed 's?DM_DB_NAME?$DM_DB_NAME?g' \
> $DM_CAT_WEB_SERVICE_CONFIG_FILE"
eval $cmd || exit 1
echo "Done preparing development configuration"
#!/bin/sh
ACTION=$1
ACTION=${ACTION:=status}
echo $0: ACTION=$ACTION
echo
STATION_LIST="CentralStorage:apsgpfs08:ds 1ID:pinotnoir:daq 6IDD:s6iddm:daq 6BM:s6bmdm:daq 7ID:gremlin:daq 8IDI:amethyst:daq 33ID:sis:daq 34IDE:hpcs34:daq"
for s in $STATION_LIST ; do
stationName=`echo $s | cut -f1 -d':'`
nodeName=`echo $s | cut -f2 -d':'`
scriptName=`echo $s | cut -f3 -d':'`
echo "**********************************"
echo "Station: $stationName ($nodeName)"
ssh dmadmin@$nodeName "/home/dm/production/etc/init.d/dm-${scriptName}-services $ACTION"
echo
done
#!/bin/sh
SVN_ROOT=https://subversion.xray.aps.anl.gov/DataManagement
release=$1
tag=$2
if [ -z $release ]; then
echo "Usage: $0 <release> [$tag]"
exit 1
fi
if [ -z $tag ]; then
svn copy $SVN_ROOT/trunk $SVN_ROOT/releases/$release -m "Creating
release $release from current trunk"
else
svn copy $SVN_ROOT/tags/$tag $SVN_ROOT/releases/$release -m "Creating
release $release from tag $tag"
fi
#!/bin/sh
SVN_ROOT=https://subversion.xray.aps.anl.gov/DataManagement
version=$1
if [ -z $version ]; then
echo "Usage: $0 <version>"
exit 1
fi
svn copy $SVN_ROOT/trunk $SVN_ROOT/tags/$version -m "Creating tag $version"