blob: 7cc11f7b24db2ef109094ece3058c6f34f159670 [file] [log] [blame]
#!/bin/bash
# @@@ START COPYRIGHT @@@
#
# Licensed to the Apache Software Foundation (ASF) under one
# or more contributor license agreements. See the NOTICE file
# distributed with this work for additional information
# regarding copyright ownership. The ASF licenses this file
# to you under the Apache License, Version 2.0 (the
# "License"); you may not use this file except in compliance
# with the License. You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing,
# software distributed under the License is distributed on an
# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
# KIND, either express or implied. See the License for the
# specific language governing permissions and limitations
# under the License.
#
# @@@ END COPYRIGHT @@@
#
#------------------------------------------------------------------------------------
# @(#) config.sh
#
# PURPOSE:
# Configure tests for Python ODBC testing
#
# MODIFIED:
# 02/26/2014 A.C - Created
#
#------------------------------------------------------------------------------------
export BASE_DIR=`dirname $0`
export DRVR_TAR_LOC=""
export DSN=""
export ODBCHOME="/usr"
export ODBCHOME_LIB="/usr/lib64"
export ODBC_TRACE="Off"
export DB_CATALOG="TRAFODION"
export DB_SCHEMA="T2QA"
export DB_USER="SOMEUSER"
export DB_PASSWORD="SOMEPASSWORD"
export PRINT_FILE_CONTENTS="false"
if [ "$BASE_DIR" = "." ]; then BASE_DIR=$(pwd); fi
function Program_Help {
echo ""
echo "Description: Configure Python ODBC test suite(s)"
echo "Usage: $0 -d <dsn> [OPTIONS]"
echo ""
echo "NOTE: If the -t option is NOT used then it's assumed the directory $BASE_DIR/odbc_driver has the appropriate ODBC driver installed."
echo ""
echo "Options:"
echo " -t <tar_location> If tar file exists locally : /ABSOLUTE_PATH_TO/TRAF_ODBC_Linux_Driver_64.tar.gz"
echo " If tar file exists remotely : scp:jenkins@downloads.trafodion.org:/ABSOLUTE_PATH_TO/TRAF_ODBC_Linux_Driver_64.tar.gz"
echo " scp:downloads.trafodion.org:/ABSOLUTE_PATH_TO/TRAF_ODBC_Linux_Driver_64.tar.gz"
echo " http://downloads.trafodion.org/TRAF_ODBC_Linux_Driver_64.tar.gz"
echo " -d <dsn> DSN to connect to : <Fully_Qualified_Domain_Name_Of_Machine>:<Port>"
echo " -o <odbchome> Driver Manager Home directory. Sets environment variable ODBCHOME. (Default is /usr)"
echo " -L <odbchome_lib> Driver Manager library directory. (Default is /usr/lib64)"
echo " -r Set Driver Manager trace ON! (Default is OFF)"
echo " -c <catalog> Database catalog name to use. (Default is TRAFODION)"
echo " -s <schema> Database schema name to use. (Default is T2QA) "
echo " -u <user> Database user name. (Default is SOMEUSER)"
echo " -p <password> Database user password. (Default is SOMEPASSWORD)"
echo " -v Echo contents of configured files"
echo " -h Print this usage message"
echo ""
exit
}
function Download_Install_Driver {
# function expects driver to be installed @ $BASE_DIR/odbc_driver
cd "$BASE_DIR/odbc_driver"
mkdir tmp
cd tmp
# downloads and untars odbc driver installer to tmp directory
if [ -f "$DRVR_TAR_LOC" ]
then
# tar file is located locally
tar xvf "$DRVR_TAR_LOC"
elif [ $(echo "$DRVR_TAR_LOC" | egrep -c '^scp:') -eq 1 ]
then
# fetch tar file via scp
scp ${DRVR_TAR_LOC##scp:} .
tar xvf ${DRVR_TAR_LOC##*\/}
elif [ $(echo "$DRVR_TAR_LOC" | egrep -c '^http:') -eq 1 ]
then
# fetch file via wget
wget ${DRVR_TAR_LOC}
tar xvf ${DRVR_TAR_LOC##*\/}
else
# unknown option
echo ""
echo "ERROR: Do not know how to fetch driver from $DRVR_TAR_LOC. Please check to make sure you are using absolute paths."
echo ""
exit 1
fi
cd PkgTmp
# run odbc driver installer
./install.sh <<- EOF
YES
$BASE_DIR/odbc_driver
$BASE_DIR/odbc_driver
$BASE_DIR/odbc_driver
$BASE_DIR/odbc_driver
EOF
# list odbc_driver directory
echo ""
echo "INFO: ODBC Driver has been installed and configured"
if [ "$PRINT_FILE_CONTENTS" = "true" ]
then
echo "INFO: Contents of $BASE_DIR/odbc_driver"
echo ""
ls "$BASE_DIR/odbc_driver"
fi
echo ""
} # end Download_Install_Driver function
function Setup_ODBC_Config {
cd "$BASE_DIR"
# set up odbcinst.ini
sed -e "s%TEMPLATE_PATH_TO_DRIVER%$BASE_DIR/odbc_driver%g" -e "s%TEMPLATE_TRACE_FLAG%$ODBC_TRACE%g" .odbcinst.ini.tmpl > odbcinst.ini
echo ""
echo "INFO: File odbcinst.ini has been configured"
if [ "$PRINT_FILE_CONTENTS" = "true" ]
then
echo "INFO: Contents of odbcinst.ini"
echo ""
cat odbcinst.ini
fi
echo ""
# set up odbc.ini
sed -e "s/TEMPLATE_CATALOG/$DB_CATALOG/g" -e "s/TEMPLATE_SCHEMA/$DB_SCHEMA/g" -e "s/TEMPLATE_DSN/$DSN/g" .odbc.ini.tmpl > odbc.ini
echo ""
echo "INFO: File odbc.ini has been configured"
if [ "$PRINT_FILE_CONTENTS" = "true" ]
then
echo "INFO: Contents of odbc.ini"
echo ""
cat odbc.ini
fi
echo ""
} # end Setup_ODBC_Config function
function Setup_PyODBC_Config {
cd "$BASE_DIR"
# set up env.sh
sed -e "s%TEMPLATE_ODBC_LIB%$BASE_DIR/odbc_driver:$ODBCHOME_LIB%g" -e "s%TEMPLATE_ODBC_HOME%$ODBCHOME%g" -e "s%TEMPLATE_ODBC_SYS_INI%$BASE_DIR%g" .env.sh.tmpl > env.sh
echo ""
echo "INFO: File env.sh has been configured"
if [ "$PRINT_FILE_CONTENTS" = "true" ]
then
echo "INFO: Contents of env.sh"
echo ""
cat env.sh
fi
echo ""
# set up config.ini
sed -e "s/TEMPLATE_CATALOG/$DB_CATALOG/g" -e "s/TEMPLATE_SCHEMA/$DB_SCHEMA/g" -e "s/TEMPLATE_DSN/$DSN/g" -e "s/TEMPLATE_USER/$DB_USER/g" -e "s/TEMPLATE_PASSWORD/$DB_PASSWORD/g" .config.ini.tmpl > config.ini
echo ""
echo "INFO: File config.ini has been configured"
if [ "$PRINT_FILE_CONTENTS" = "true" ]
then
echo "INFO: Contents of config.ini"
echo ""
cat config.ini
fi
echo ""
# set up tox.ini
sed -e "s%TEMPLATE_ODBC_HOME%$ODBCHOME%g" -e "s%TEMPLATE_ODBC_LIB%$BASE_DIR/odbc_driver:$ODBCHOME_LIB%g" .tox.ini.tmpl > .tox.ini.tmpl2
# check to see if http_proxy set in the environment
PROXY_INFO=""
PROXY_INFO="$(env | egrep 'http_proxy=' | cut -d'=' -f2)"
if [ -z "$PROXY_INFO" ]
then
sed -e '/TEMPLATE_HTTP_PROXY/d' -e '/TEMPLATE_HTTPS_PROXY/d' -e '/TEMPLATE_FTP_PROXY/d' .tox.ini.tmpl2 > tox.ini
else
sed -e "s%TEMPLATE_HTTP_PROXY%http_proxy=$PROXY_INFO%g" -e "s%TEMPLATE_HTTPS_PROXY%https_proxy=$PROXY_INFO%g" -e "s%TEMPLATE_FTP_PROXY%ftp_proxy=$PROXY_INFO%g" .tox.ini.tmpl2 > tox.ini
echo "" >> env.sh
echo "export http_proxy=$PROXY_INFO" >> env.sh
echo "export https_proxy=$PROXY_INFO" >> env.sh
echo "export ftp_proxy=$PROXY_INFO" >> env.sh
fi
rm .tox.ini.tmpl2
echo "INFO: File tox.ini has been configured"
if [ "$PRINT_FILE_CONTENTS" = "true" ]
then
echo "INFO: Contents of tox.ini"
echo ""
cat tox.ini
fi
echo ""
} # end Setup_PyODBC_Config function
#----------
# Main
#----------
# Process command line arguments
if [ $# -eq 0 ]
then
Program_Help
exit 1
else
while getopts c:d:o:L:p:s:t:u:rv opt
do
case "$opt" in
c) # catalog
DB_CATALOG="$OPTARG"
;;
d) # DSN
DSN="$OPTARG"
;;
L) # ODBCHOME library
ODBCHOME_LIB="$OPTARG"
;;
o) # ODBCHOME
ODBCHOME="$OPTARG"
;;
p) # Database user's password
DB_PASSWORD="$OPTARG"
;;
r) # ODBC Driver trace ON
ODBC_TRACE="On"
;;
s) # Database Schema
DB_SCHEMA="$OPTARG"
;;
t) # ODBC Driver tar file location
DRVR_TAR_LOC="$OPTARG"
;;
u) # Database user
DB_USER="$OPTARG"
;;
v) # print contents of files configured
PRINT_FILE_CONTENTS="true"
;;
\?) # Unknown option
Program_Help
exit 1
;;
esac
done
fi
# Print out the options set
echo ""
echo "@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@"
echo "@ "
echo -n "@ Driver Tar File Location : "
if [ -z "$DRVR_TAR_LOC" ]; then echo "Not needed"; else echo "$DRVR_TAR_LOC"; fi
echo "@ Driver Manager Home Directory : $ODBCHOME"
echo "@ Driver Manager Library Directory : $ODBCHOME_LIB"
echo "@ DSN : $DSN"
echo "@ Database User : $DB_USER"
echo "@ Database Password : $DB_PASSWORD"
echo "@ "
echo "@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@"
echo ""
# check to see if odbc_driver directory exists
if [ ! -L "$BASE_DIR/odbc_driver/libtrafodbc_drvr64.so" -a -z "$DRVR_TAR_LOC" ]
then
echo ""
echo "ERROR: Directory $BASE_DIR/odbc_driver has to contain the Trafodion ODBC driver or the option -t <tar_location> has to be specified!"
echo ""
exit 1
elif [ ! -L "$BASE_DIR/odbc_driver/libtrafodbc_drvr64.so" ]
then
rm -rf "$BASE_DIR/odbc_driver"
mkdir "$BASE_DIR/odbc_driver"
Download_Install_Driver
fi
# clean up directory
rm "$BASE_DIR/*.ini" 2>/dev/null
rm "$BASE_DIR/env.sh" 2>/dev/null
rm "$BASE_DIR/*.pyc" 2>/dev/null
# run setup
Setup_ODBC_Config
Setup_PyODBC_Config