@@ -4,45 +4,55 @@ set -o pipefail
44
55STARTUP_PATH=$( pwd)
66TMP_DIR_NAME=$( basename $0 )
7- USAGE_MESSAGE=" USAGE: $0 <CLUSTER_NAMESPACE> <SQL_MASTER_IP> <SQL_MASTER_SA_PASSWORD> <KNOX_IP> [<KNOX_PASSWORD>] [--install-extra-samples] [SQL_MASTER_PORT] [KNOX_PORT]"
7+ USAGE_MESSAGE=" USAGE: $0 <CLUSTER_NAMESPACE> <SQL_MASTER_ENDPOINT> <KNOX_ENDPOINT> [--install-extra-samples] [SQL_MASTER_PORT] [KNOX_PORT]
8+ To use basic authentication please set AZDATA_USERNAME and AZDATA_PASSWORD environment variables.
9+ To use integrated authentication provide the DNS names for the endpoints.
10+ Port can be specified separately if using non-default values."
811ERROR_MESSAGE=" Bootstrap of the sample database failed. Output and error files are in directory [/tmp/$TMP_DIR_NAME ]."
912
1013# Print usage if mandatory parameters are missing
1114: " ${1:? $USAGE_MESSAGE } "
1215: " ${2:? $USAGE_MESSAGE } "
1316: " ${3:? $USAGE_MESSAGE } "
14- : " ${4:? $USAGE_MESSAGE } "
1517: " ${DEBUG=} "
1618
1719# Save the input parameters
1820CLUSTER_NAMESPACE=$1
19- SQL_MASTER_IP=$2
20- SQL_MASTER_SA_PASSWORD=$3
21- KNOX_IP=$4
22- KNOX_PASSWORD=$5
23- AW_WWI_SAMPLES=$6
24- SQL_MASTER_PORT=$7
25- KNOX_PORT=$8
26-
27- # If Knox password is not supplied then default to SQL Master password
28- KNOX_PASSWORD=${KNOX_PASSWORD:= $SQL_MASTER_SA_PASSWORD }
21+ SQL_MASTER_ENDPOINT=$2
22+ KNOX_ENDPOINT=$3
23+ AW_WWI_SAMPLES=$4
24+ SQL_MASTER_PORT=$5
25+ KNOX_PORT=$6
2926
3027# Skip if extra samples doesn't need to be installed
3128AW_WWI_SAMPLES=${AW_WWI_SAMPLES:= no}
3229
3330# Use default ports if not specified
3431SQL_MASTER_PORT=${SQL_MASTER_PORT:= 31433}
3532KNOX_PORT=${KNOX_PORT:= 30443}
36- SQL_MASTER_INSTANCE=$SQL_MASTER_IP ,$SQL_MASTER_PORT
37- KNOX_ENDPOINT=$KNOX_IP :$KNOX_PORT
33+ SQL_MASTER_INSTANCE=$SQL_MASTER_ENDPOINT ,$SQL_MASTER_PORT
34+ KNOX_ENDPOINT=$KNOX_ENDPOINT :$KNOX_PORT
35+
36+ # Set username/password variables
37+ export SQLCMDSERVER=$SQL_MASTER_INSTANCE
38+ export SQLCMDUSER=$AZDATA_USERNAME
39+ export SQLCMDPASSWORD=$AZDATA_PASSWORD
40+ KNOX_PASSWORD=$AZDATA_PASSWORD
41+
42+ if [ -z SQLCMDUSER ]
43+ then
44+ BCP_CREDENTIALS=" -T"
45+ else
46+ BCP_CREDENTIALS=" -U$SQLCMDUSER -P$SQLCMDPASSWORD "
47+ fi
3848
3949for util in sqlcmd bcp kubectl curl
4050 do
4151 echo Verifying $util is in path & which $util 1> /dev/null 2> /dev/null || (echo Unable to locate $util && exit 1)
4252done
4353
4454# Copy the backup file, restore the database, create necessary objects and data file
45- pushd " /tmp"
55+ pushd " /tmp" > /dev/null
4656$DEBUG mkdir -p " $TMP_DIR_NAME "
4757$DEBUG cd " $TMP_DIR_NAME "
4858
5262 $DEBUG curl -G " https://sqlchoice.blob.core.windows.net/sqlchoice/static/tpcxbb_1gb.bak" -o tpcxbb_1gb.bak
5363fi
5464
55- read -r MASTER_POD_NAME HADR_ENABLED <<< $( sqlcmd -S $SQL_MASTER_INSTANCE -Usa -P$SQL_MASTER_SA_PASSWORD -I -b -h-1 -Q " SET NOCOUNT ON; SELECT @@SERVERNAME, SERVERPROPERTY('IsHadrEnabled');" ) || (echo $ERROR_MESSAGE && exit 1)
65+ read -r MASTER_POD_NAME HADR_ENABLED <<< $( sqlcmd -I -b -h-1 -W -Q " SET NOCOUNT ON; SELECT @@SERVERNAME, SERVERPROPERTY('IsHadrEnabled');" )
66+ if [ -z $MASTER_POD_NAME ]
67+ then
68+ echo $ERROR_MESSAGE
69+ exit 1
70+ fi
5671
5772echo Copying sales database backup file...
5873$DEBUG kubectl cp tpcxbb_1gb.bak $CLUSTER_NAMESPACE /$MASTER_POD_NAME :var/opt/mssql/data -c mssql-server || (echo $ERROR_MESSAGE && exit 1)
6883 fi
6984 echo Copying $file database backup file to SQL Master instance...
7085 $DEBUG kubectl cp $file $CLUSTER_NAMESPACE /$MASTER_POD_NAME :var/opt/mssql/data -c mssql-server || (echo $ERROR_MESSAGE && exit 1)
71-
72- echo Removing database backup file...
73- $DEBUG kubectl exec $MASTER_POD_NAME -n $CLUSTER_NAMESPACE -c mssql-server -i -t -- bash -c " rm -rvf /var/opt/mssql/data/$file "
7486 done
7587
7688
8395 fi
8496 echo Copying $file database backup file to SQL Master instance...
8597 $DEBUG kubectl cp $file $CLUSTER_NAMESPACE /$MASTER_POD_NAME :var/opt/mssql/data -c mssql-server || (echo $ERROR_MESSAGE && exit 1)
86-
87- echo Removing database backup file...
88- $DEBUG kubectl exec $MASTER_POD_NAME -n $CLUSTER_NAMESPACE -c mssql-server -i -t -- bash -c " rm -rvf /var/opt/mssql/data/$file "
8998 done
9099fi
91100
94103if [ " $HADR_ENABLED " == " 1" ]
95104then
96105 $DEBUG kubectl port-forward pods/$MASTER_POD_NAME 1533:1533 -n $CLUSTER_NAMESPACE &
97- SQL_MASTER_INSTANCE=127.0.0.1,1533
106+ PROC_ID=$!
107+ SQLCMDSERVER=127.0.0.1,1533
98108fi
99109
100110echo Configuring sample database...
101- # WSL ex: "/mnt/c/Program Files/Microsoft SQL Server/Client SDK/ODBC/130/Tools/Binn/SQLCMD.EXE"
102- export SA_PASSWORD=$KNOX_PASSWORD
103- $DEBUG sqlcmd -S $SQL_MASTER_INSTANCE -Usa -P$SQL_MASTER_SA_PASSWORD -I -b -i " $STARTUP_PATH /bootstrap-sample-db.sql" -o " bootstrap.out" || (echo $ERROR_MESSAGE && exit 2)
111+ $DEBUG sqlcmd -I -b -i " $STARTUP_PATH /bootstrap-sample-db.sql" -o " bootstrap.out" || (echo $ERROR_MESSAGE && kill -9 $PROC_ID > /dev/null && exit 2)
104112
105113# remove files copied into the pod:
106- echo Removing database backup file...
114+ echo " Removing database backup file(s) ..."
107115$DEBUG kubectl exec $MASTER_POD_NAME -n $CLUSTER_NAMESPACE -c mssql-server -i -t -- bash -c " rm -rvf /var/opt/mssql/data/tpcxbb_1gb.bak"
108116
117+ if [ " $AW_WWI_SAMPLES " == " --install-extra-samples" ]
118+ then
119+ for file in AdventureWorks2016_EXT.bak AdventureWorksDW2016_EXT.bak
120+ do
121+ $DEBUG kubectl exec $MASTER_POD_NAME -n $CLUSTER_NAMESPACE -c mssql-server -i -t -- bash -c " rm -rvf /var/opt/mssql/data/$file "
122+ done
123+
124+ for file in WideWorldImporters-Full.bak WideWorldImportersDW-Full.bak
125+ do
126+ $DEBUG kubectl exec $MASTER_POD_NAME -n $CLUSTER_NAMESPACE -c mssql-server -i -t -- bash -c " rm -rvf /var/opt/mssql/data/$file "
127+ done
128+ fi
129+
109130for table in web_clickstreams inventory customer
110131 do
111132 echo Exporting $table data...
@@ -118,31 +139,45 @@ for table in web_clickstreams inventory customer
118139 # WSL ex: "/mnt/c/Program Files/Microsoft SQL Server/Client SDK/ODBC/130/Tools/Binn/bcp.exe"
119140 if [ ! -f $table .csv ]
120141 then
121- $DEBUG bcp sales.dbo.$table out " $table .csv" -S $SQL_MASTER_INSTANCE -Usa -P $SQL_MASTER_SA_PASSWORD -c -t" $DELIMITER " -e " $table .err" > " $table .out" || (echo $ERROR_MESSAGE && exit 3)
142+ $DEBUG bcp sales.dbo.$table out " $table .csv" -S $SQLCMDSERVER $BCP_CREDENTIALS -c -t" $DELIMITER " -e " $table .err" > " $table .out" || (echo $ERROR_MESSAGE && kill -9 $PROC_ID > /dev/null && exit 3)
122143 fi
123144done
124145
125146if [ ! -f product_reviews.csv ]
126147then
127148 echo Exporting product_reviews data...
128- $DEBUG bcp " select pr_review_sk, replace(replace(pr_review_content, ',', ';'), char(34), '') as pr_review_content from sales.dbo.product_reviews" queryout " product_reviews.csv" -S $SQL_MASTER_INSTANCE -Usa -P$SQL_MASTER_SA_PASSWORD -c -t, -e " product_reviews.err" > " $table .out" || (echo $ERROR_MESSAGE && exit 3)
149+ $DEBUG bcp " select pr_review_sk, replace(replace(pr_review_content, ',', ';'), char(34), '') as pr_review_content from sales.dbo.product_reviews" queryout " product_reviews.csv" -S $SQLCMDSERVER $BCP_CREDENTIALS -c -t, -e " product_reviews.err" > " $table .out" || (echo $ERROR_MESSAGE && kill -9 $PROC_ID > /dev/null && exit 3)
150+ fi
151+
152+ if [[ $PROC_ID ]]
153+ then
154+ kill -9 $PROC_ID > /dev/null
129155fi
130156
131157# Copy the data file to HDFS
132158echo Uploading web_clickstreams data to HDFS...
133- $DEBUG curl -L -k -u root:$KNOX_PASSWORD -X PUT " https://$KNOX_ENDPOINT /gateway/default/webhdfs/v1/clickstream_data?op=MKDIRS" || (echo $ERROR_MESSAGE && exit 4)
134- $DEBUG curl -L -k -u root:$KNOX_PASSWORD -X PUT " https://$KNOX_ENDPOINT /gateway/default/webhdfs/v1/clickstream_data/web_clickstreams.csv?op=create&overwrite=true" -H ' Content-Type: application/octet-stream' -T " web_clickstreams.csv" || (echo $ERROR_MESSAGE && exit 5)
159+ if [[ $KNOX_PASSWORD ]]
160+ then
161+ $DEBUG curl -s -S -L -k -u root:$KNOX_PASSWORD -X PUT " https://$KNOX_ENDPOINT /gateway/default/webhdfs/v1/clickstream_data?op=MKDIRS" 1> /dev/null || (echo $ERROR_MESSAGE && exit 4)
162+ $DEBUG curl -s -S -L -k -u root:$KNOX_PASSWORD -X PUT " https://$KNOX_ENDPOINT /gateway/default/webhdfs/v1/clickstream_data/web_clickstreams.csv?op=create&overwrite=true" -H ' Content-Type: application/octet-stream' -T " web_clickstreams.csv" 1> /dev/null || (echo $ERROR_MESSAGE && exit 5)
163+ else
164+ $DEBUG curl -s -S -L -k -u : --negotiate -X PUT " https://$KNOX_ENDPOINT /gateway/default/webhdfs/v1/clickstream_data?op=MKDIRS" 1> /dev/null || (echo $ERROR_MESSAGE && exit 4)
165+ $DEBUG curl -s -S -L -k -u : --negotiate -X PUT " https://$KNOX_ENDPOINT /gateway/default/webhdfs/v1/clickstream_data/web_clickstreams.csv?op=create&overwrite=true" -H ' Content-Type: application/octet-stream' -T " web_clickstreams.csv" 1> /dev/null || (echo $ERROR_MESSAGE && exit 5)
166+ fi
135167# $DEBUG rm -f web_clickstreams.*
136168
137- echo
138169echo Uploading product_reviews data to HDFS...
139- $DEBUG curl -L -k -u root:$KNOX_PASSWORD -X PUT " https://$KNOX_ENDPOINT /gateway/default/webhdfs/v1/product_review_data?op=MKDIRS" || (echo $ERROR_MESSAGE && exit 6)
140- $DEBUG curl -L -k -u root:$KNOX_PASSWORD -X PUT " https://$KNOX_ENDPOINT /gateway/default/webhdfs/v1/product_review_data/product_reviews.csv?op=create&overwrite=true" -H " Content-Type: application/octet-stream" -T " product_reviews.csv" || (echo $ERROR_MESSAGE && exit 7)
170+ if [[ $KNOX_PASSWORD ]]
171+ then
172+ $DEBUG curl -s -S -L -k -u root:$KNOX_PASSWORD -X PUT " https://$KNOX_ENDPOINT /gateway/default/webhdfs/v1/product_review_data?op=MKDIRS" 1> /dev/null || (echo $ERROR_MESSAGE && exit 6)
173+ $DEBUG curl -s -S -L -k -u root:$KNOX_PASSWORD -X PUT " https://$KNOX_ENDPOINT /gateway/default/webhdfs/v1/product_review_data/product_reviews.csv?op=create&overwrite=true" -H " Content-Type: application/octet-stream" -T " product_reviews.csv" 1> /dev/null || (echo $ERROR_MESSAGE && exit 7)
174+ else
175+ $DEBUG curl -s -S -L -k -u : --negotiate -X PUT " https://$KNOX_ENDPOINT /gateway/default/webhdfs/v1/product_review_data?op=MKDIRS" 1> /dev/null || (echo $ERROR_MESSAGE && exit 6)
176+ $DEBUG curl -s -S -L -k -u : --negotiate -X PUT " https://$KNOX_ENDPOINT /gateway/default/webhdfs/v1/product_review_data/product_reviews.csv?op=create&overwrite=true" -H " Content-Type: application/octet-stream" -T " product_reviews.csv" 1> /dev/null || (echo $ERROR_MESSAGE && exit 7)
177+ fi
141178# $DEBUG rm -f product_reviews.*
142179
143- echo
144180echo Bootstrap of the sample database completed successfully.
145- echo You can now login using " root" and Knox password to get the unified experience in Azure Data Studio.
146181echo Data files for Oracle setup are located at [/tmp/$TMP_DIR_NAME ].
147182
148183# $DEBUG rm -f *.out *.err *.csv
0 commit comments