@@ -15,30 +15,20 @@ printf "\n[[[[[ deploy_blockchain_incremental_onprem.sh ]]]]]\n\n"
15
15
16
16
if [[ " $1 " = ' dev' ]] || [[ " $1 " = ' staging' ]] || [[ " $1 " = ' sandbox' ]] || [[ " $1 " = ' exp' ]] || [[ " $1 " = ' spring' ]] || [[ " $1 " = ' summer' ]] || [[ " $1 " = ' mainnet' ]]; then
17
17
SEASON=" $1 "
18
- if [[ " $1 " = ' mainnet' ]]; then
19
- PROJECT_ID=" mainnet-prod-ground"
20
- elif [[ " $1 " = ' spring' ]] || [[ " $1 " = ' summer' ]]; then
21
- PROJECT_ID=" testnet-prod-ground"
22
- else
23
- PROJECT_ID=" testnet-$1 -ground"
24
- fi
25
18
else
26
19
printf " Invalid <Project/Season> argument: $1 \n"
27
20
exit
28
21
fi
29
22
printf " SEASON=$SEASON \n"
30
- printf " PROJECT_ID=$PROJECT_ID \n"
31
23
32
- GCP_USER= " runner "
33
- printf " GCP_USER= $GCP_USER \n"
24
+ ONPREM_USER= " nvidia "
25
+ printf " ONPREM_USER= $ONPREM_USER \n"
34
26
35
27
number_re=' ^[0-9]+$'
36
28
if [[ ! $2 =~ $number_re ]] ; then
37
29
printf " Invalid <# of Shards> argument: $2 \n"
38
30
exit
39
31
fi
40
- NUM_SHARDS=$2
41
- printf " NUM_SHARDS=$NUM_SHARDS \n"
42
32
PARENT_NODE_INDEX_BEGIN=$3
43
33
printf " PARENT_NODE_INDEX_BEGIN=$PARENT_NODE_INDEX_BEGIN \n"
44
34
PARENT_NODE_INDEX_END=$4
@@ -153,43 +143,33 @@ else
153
143
fi
154
144
fi
155
145
156
- # Read node urls
157
- IFS=$' \n ' read -d ' ' -r -a NODE_URL_LIST < ./ip_addresses/$SEASON .txt
158
- if [[ $ACCOUNT_INJECTION_OPTION = " --keystore" ]]; then
159
- # Get keystore password
160
- printf " Enter keystore password: "
161
- read -s KEYSTORE_PW
162
- printf " \n\n"
163
- if [[ $SEASON = " mainnet" ]]; then
164
- KEYSTORE_DIR=" mainnet_prod_keys"
165
- elif [[ $SEASON = " spring" ]] || [[ $SEASON = " summer" ]]; then
166
- KEYSTORE_DIR=" testnet_prod_keys"
167
- else
168
- KEYSTORE_DIR=" testnet_dev_staging_keys"
146
+ # Read node ip addresses and passwords
147
+ IFS=$' \n ' read -d ' ' -r -a NODE_IP_LIST < ./ip_addresses/${SEASON} _onprem_ip.txt
148
+ IFS=$' \n ' read -d ' ' -r -a NODE_PW_LIST < ./ip_addresses/${SEASON} _onprem_pw.txt
149
+
150
+ if [[ ! $KILL_OPTION = ' --kill-only' ]]; then
151
+ # Read node urls
152
+ IFS=$' \n ' read -d ' ' -r -a NODE_URL_LIST < ./ip_addresses/${SEASON} _onprem.txt
153
+ if [[ $ACCOUNT_INJECTION_OPTION = " --keystore" ]]; then
154
+ # Get keystore password
155
+ printf " Enter keystore password: "
156
+ read -s KEYSTORE_PW
157
+ printf " \n\n"
158
+ if [[ $SEASON = " mainnet" ]]; then
159
+ KEYSTORE_DIR=" mainnet_prod_keys"
160
+ elif [[ $SEASON = " spring" ]] || [[ $SEASON = " summer" ]]; then
161
+ KEYSTORE_DIR=" testnet_prod_keys"
162
+ else
163
+ KEYSTORE_DIR=" testnet_dev_staging_keys"
164
+ fi
165
+ elif [[ $ACCOUNT_INJECTION_OPTION = " --mnemonic" ]]; then
166
+ IFS=$' \n ' read -d ' ' -r -a MNEMONIC_LIST < ./testnet_mnemonics/$SEASON .txt
169
167
fi
170
- elif [[ $ACCOUNT_INJECTION_OPTION = " --mnemonic" ]]; then
171
- IFS=$' \n ' read -d ' ' -r -a MNEMONIC_LIST < ./testnet_mnemonics/$SEASON .txt
172
168
fi
173
169
174
170
# FILES_FOR_TRACKER="blockchain/ blockchain-configs/ block-pool/ client/ common/ consensus/ db/ logger/ tracker-server/ traffic/ package.json setup_blockchain_ubuntu_onprem.sh start_tracker_genesis_gcp.sh start_tracker_incremental_gcp.sh"
175
171
FILES_FOR_NODE=" blockchain/ blockchain-configs/ block-pool/ client/ common/ consensus/ db/ event-handler/ json_rpc/ logger/ node/ p2p/ tools/ traffic/ tx-pool/ package.json setup_blockchain_ubuntu_onprem.sh start_node_genesis_onprem.sh start_node_incremental_onprem.sh wait_until_node_sync_gcp.sh stop_local_blockchain.sh"
176
172
177
- NUM_SHARD_NODES=3
178
-
179
- TRACKER_ZONE=" asia-east1-b"
180
- NODE_ZONE_LIST=(
181
- " asia-east1-b" \
182
- " us-west1-b" \
183
- " asia-southeast1-b" \
184
- " us-central1-a" \
185
- " europe-west4-a" \
186
- " asia-east1-b" \
187
- " us-west1-b" \
188
- " asia-southeast1-b" \
189
- " us-central1-a" \
190
- " europe-west4-a" \
191
- )
192
-
193
173
# function deploy_tracker() {
194
174
# printf "\n* >> Deploying files for tracker ********************************************************\n\n"
195
175
#
@@ -220,41 +200,53 @@ NODE_ZONE_LIST=(
220
200
# printf "KEEP_CODE_OPTION=$KEEP_CODE_OPTION\n"
221
201
#
222
202
# printf "\n"
223
- # START_TRACKER_CMD="gcloud compute ssh $TRACKER_TARGET_ADDR --command '$START_TRACKER_CMD_BASE $GCP_USER $KEEP_CODE_OPTION' --project $PROJECT_ID --zone $TRACKER_ZONE"
203
+ # START_TRACKER_CMD="gcloud compute ssh $TRACKER_TARGET_ADDR --command '$START_TRACKER_CMD_BASE $ONPREM_USER $KEEP_CODE_OPTION' --project $PROJECT_ID --zone $TRACKER_ZONE"
224
204
# printf "START_TRACKER_CMD=$START_TRACKER_CMD\n\n"
225
205
# eval $START_TRACKER_CMD
226
206
# }
227
207
228
208
function deploy_node() {
229
209
local node_index=" $1 "
230
- local node_target_addr=${NODE_TARGET_ADDR_LIST [${node_index}]}
231
- local node_zone= ${NODE_ZONE_LIST [${node_index}]}
210
+ local node_target_addr=" ${ONPREM_USER} @ ${NODE_IP_LIST [${node_index}]}"
211
+ local node_login_pw= " ${NODE_PW_LIST [${node_index}]}"
232
212
233
213
printf " \n* >> Deploying files for node $node_index ($node_target_addr ) *********************************************************\n\n"
234
214
235
- printf " node_target_addr='$node_target_addr '\n"
236
- printf " node_zone='$node_zone '\n"
237
-
215
+ # 1. Copy files for node (if necessary)
238
216
if [[ $KEEP_CODE_OPTION = " --no-keep-code" ]]; then
239
- # 1. Copy files for node
240
- printf " \n\n<<< Copying files for node $node_index >>>\n\n"
241
- gcloud compute ssh $node_target_addr --command " sudo rm -rf ~/ain-blockchain; sudo mkdir ~/ain-blockchain; sudo chmod -R 777 ~/ain-blockchain" --project $PROJECT_ID --zone $node_zone
242
- SCP_CMD=" gcloud compute scp --recurse $FILES_FOR_NODE ${node_target_addr} :~/ain-blockchain --project $PROJECT_ID --zone $node_zone "
217
+ printf " \n<<< Copying files for node $node_index ($node_target_addr ) >>>\n\n"
218
+ printf " FILES_FOR_NODE=${FILES_FOR_NODE} \n\n"
219
+
220
+ echo ${node_login_pw} | sshpass -f <( printf ' %s\n' ${node_login_pw} ) ssh $node_target_addr " sudo -S rm -rf ~/ain-blockchain; mkdir ~/ain-blockchain; chmod -R 777 ~/ain-blockchain"
221
+ SCP_CMD=" scp -r $FILES_FOR_NODE ${node_target_addr} :~/ain-blockchain"
243
222
printf " SCP_CMD=$SCP_CMD \n\n"
244
- eval $ SCP_CMD
223
+ eval " sshpass -f <(printf '%s\n' ${node_login_pw} ) ${ SCP_CMD} "
245
224
fi
246
225
226
+ # 2. Set up node (if necessary)
247
227
# ssh into each instance, set up the ubuntu VM instance (ONLY NEEDED FOR THE FIRST TIME)
248
228
if [[ $SETUP_OPTION = " --setup" ]]; then
249
- # 2. Set up node
250
- printf " \n\n<<< Setting up node $node_index >>>\n\n "
251
- SETUP_CMD=" gcloud compute ssh $node_target_addr --command 'cd ./ain-blockchain; . setup_blockchain_ubuntu_onprem.sh' --project $PROJECT_ID --zone $node_zone "
229
+ printf " \n<<< Setting up node $node_index ( $node_target_addr ) >>>\n\n "
230
+
231
+ SETUP_CMD=" ssh $node_target_addr 'cd ./ain-blockchain; . setup_blockchain_ubuntu_onprem.sh'"
252
232
printf " SETUP_CMD=$SETUP_CMD \n\n"
253
- eval $ SETUP_CMD
233
+ eval " echo ${node_login_pw} | sshpass -f <(printf '%s\n' ${node_login_pw} ) ${ SETUP_CMD} "
254
234
fi
255
235
256
- # 3. Start node
257
- printf " \n\n<<< Starting node $node_index >>>\n\n"
236
+ # 3. Remove old data (if necessary)
237
+ if [[ $KEEP_DATA_OPTION = " --no-keep-data" ]]; then
238
+ printf " \n<<< Removing old data from node $node_index ($node_target_addr ) >>>\n\n"
239
+
240
+ # Remove chains, snapshots, and log files (but keep the keys)
241
+ CHAINS_DIR=/home/${SEASON} /ain_blockchain_data/chains
242
+ SNAPSHOTS_DIR=/home/${SEASON} /ain_blockchain_data/snapshots
243
+ LOGS_DIR=/home/${SEASON} /ain_blockchain_data/logs
244
+ RM_CMD=" ssh $node_target_addr 'sudo -S rm -rf $CHAINS_DIR $SNAPSHOTS_DIR $LOGS_DIR '"
245
+ eval " echo ${node_login_pw} | sshpass -f <(printf '%s\n' ${node_login_pw} ) ${RM_CMD} "
246
+ fi
247
+
248
+ # 4. Start node
249
+ printf " \n<<< Starting node $node_index ($node_target_addr ) >>>\n\n"
258
250
259
251
if [[ $node_index -ge $JSON_RPC_NODE_INDEX_GE ]] && [[ $node_index -le $JSON_RPC_NODE_INDEX_LE ]]; then
260
252
JSON_RPC_OPTION=" --json-rpc"
@@ -284,11 +276,11 @@ function deploy_node() {
284
276
printf " EVENT_HANDLER_OPTION=$EVENT_HANDLER_OPTION \n"
285
277
286
278
printf " \n"
287
- START_NODE_CMD=" gcloud compute ssh $node_target_addr --command '$START_NODE_CMD_BASE $SEASON $GCP_USER 0 $node_index $KEEP_CODE_OPTION $KEEP_DATA_OPTION $SYNC_MODE_OPTION $CHOWN_DATA_OPTION $ACCOUNT_INJECTION_OPTION $JSON_RPC_OPTION $UPDATE_FRONT_DB_OPTION $REST_FUNC_OPTION $EVENT_HANDLER_OPTION ' --project $PROJECT_ID --zone $node_zone "
279
+ START_NODE_CMD=" ssh $node_target_addr '$START_NODE_CMD_BASE $SEASON $ONPREM_USER 0 $node_index $KEEP_CODE_OPTION $KEEP_DATA_OPTION $SYNC_MODE_OPTION $CHOWN_DATA_OPTION $ACCOUNT_INJECTION_OPTION $JSON_RPC_OPTION $UPDATE_FRONT_DB_OPTION $REST_FUNC_OPTION $EVENT_HANDLER_OPTION '"
288
280
printf " START_NODE_CMD=$START_NODE_CMD \n\n"
289
- eval $ START_NODE_CMD
281
+ eval " echo ${node_login_pw} | sshpass -f <(printf '%s\n' ${node_login_pw} ) ${ START_NODE_CMD} "
290
282
291
- # 4 . Inject node account
283
+ # 5 . Inject node account
292
284
sleep 5
293
285
if [[ $ACCOUNT_INJECTION_OPTION = " --keystore" ]]; then
294
286
local node_url=${NODE_URL_LIST[${node_index}]}
@@ -316,6 +308,7 @@ function deploy_node() {
316
308
local node_url=${NODE_URL_LIST[${node_index}]}
317
309
printf " \n* >> Injecting an account for node $node_index ($node_target_addr ) ********************\n\n"
318
310
printf " node_url='$node_url '\n"
311
+
319
312
local GENESIS_ACCOUNTS_PATH=" blockchain-configs/base/genesis_accounts.json"
320
313
if [[ " $SEASON " = " spring" ]] || [[ " $SEASON " = " summer" ]]; then
321
314
GENESIS_ACCOUNTS_PATH=" blockchain-configs/testnet-prod/genesis_accounts.json"
@@ -324,50 +317,28 @@ function deploy_node() {
324
317
echo $PRIVATE_KEY | node inject_node_account.js $node_url $ACCOUNT_INJECTION_OPTION
325
318
fi
326
319
327
- # 5. Wait until node is synced
328
- printf " \n\n<<< Waiting until node $node_index is synced >>>\n\n"
329
- WAIT_CMD=" gcloud compute ssh $node_target_addr --command 'cd \$ (find /home/ain-blockchain* -maxdepth 0 -type d); . wait_until_node_sync_gcp.sh' --project $PROJECT_ID --zone $node_zone "
320
+ # 6. Wait until node is synced
321
+ printf " \n<<< Waiting until node $node_index ($node_target_addr ) is synced >>>\n\n"
322
+
323
+ WAIT_CMD=" ssh $node_target_addr 'cd \$ (find /home/${SEASON} /ain-blockchain* -maxdepth 0 -type d); . wait_until_node_sync_gcp.sh'"
330
324
printf " WAIT_CMD=$WAIT_CMD \n\n"
331
- eval $ WAIT_CMD
325
+ eval " echo ${node_login_pw} | sshpass -f <(printf '%s\n' ${node_login_pw} ) ${ WAIT_CMD} "
332
326
}
333
327
334
328
printf " ###############################################################################\n"
335
329
printf " # Deploying parent blockchain #\n"
336
330
printf " ###############################################################################\n\n"
337
331
338
- TRACKER_TARGET_ADDR=" ${GCP_USER} @${SEASON} -tracker-taiwan"
339
- NODE_TARGET_ADDR_LIST=(
340
- " ${GCP_USER} @${SEASON} -node-0-taiwan" \
341
- " ${GCP_USER} @${SEASON} -node-1-oregon" \
342
- " ${GCP_USER} @${SEASON} -node-2-singapore" \
343
- " ${GCP_USER} @${SEASON} -node-3-iowa" \
344
- " ${GCP_USER} @${SEASON} -node-4-netherlands" \
345
- " ${GCP_USER} @${SEASON} -node-5-taiwan" \
346
- " ${GCP_USER} @${SEASON} -node-6-oregon" \
347
- " ${GCP_USER} @${SEASON} -node-7-singapore" \
348
- " ${GCP_USER} @${SEASON} -node-8-iowa" \
349
- " ${GCP_USER} @${SEASON} -node-9-netherlands" \
350
- )
351
-
352
332
printf " \nStarting blockchain servers...\n\n"
353
333
if [[ $KEEP_CODE_OPTION = " --no-keep-code" ]]; then
354
334
GO_TO_PROJECT_ROOT_CMD=" cd ./ain-blockchain"
355
335
else
356
- GO_TO_PROJECT_ROOT_CMD=" cd \$ (find /home/ain-blockchain* -maxdepth 0 -type d)"
357
- fi
358
- if [[ $KEEP_DATA_OPTION = " --no-keep-data" ]]; then
359
- # restart after removing chains, snapshots, and log files (but keep the keys)
360
- CHAINS_DIR=/home/ain_blockchain_data/chains
361
- SNAPSHOTS_DIR=/home/ain_blockchain_data/snapshots
362
- LOGS_DIR=/home/ain_blockchain_data/logs
363
- # START_TRACKER_CMD_BASE="sudo rm -rf /home/ain_blockchain_data/ && $GO_TO_PROJECT_ROOT_CMD && . start_tracker_incremental_gcp.sh"
364
- START_NODE_CMD_BASE=" sudo rm -rf $CHAINS_DIR $SNAPSHOTS_DIR $LOGS_DIR && $GO_TO_PROJECT_ROOT_CMD && . start_node_incremental_onprem.sh"
365
- else
366
- # restart with existing chains, snapshots, and log files
367
- # START_TRACKER_CMD_BASE="$GO_TO_PROJECT_ROOT_CMD && . start_tracker_incremental_gcp.sh"
368
- START_NODE_CMD_BASE=" $GO_TO_PROJECT_ROOT_CMD && . start_node_incremental_onprem.sh"
336
+ GO_TO_PROJECT_ROOT_CMD=" cd \$ (find /home/${SEASON} /ain-blockchain* -maxdepth 0 -type d)"
369
337
fi
370
338
339
+ # START_TRACKER_CMD_BASE="$GO_TO_PROJECT_ROOT_CMD && . start_tracker_incremental_gcp.sh"
340
+ START_NODE_CMD_BASE=" $GO_TO_PROJECT_ROOT_CMD && . start_node_incremental_onprem.sh"
341
+
371
342
# # Tracker server is deployed with PARENT_NODE_INDEX_BEGIN = -1
372
343
# if [[ $PARENT_NODE_INDEX_BEGIN = -1 ]]; then
373
344
# deploy_tracker
0 commit comments