blob: 05302b0f4863e7749de9e7b0de3879dfa4eee027 [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 @@@
export TRAF_CONFIG="/etc/trafodion/trafodion_config"
export NODES=""
while [[ $# -gt 0 ]]; do
case "$1" in
--nodes)
NODES=$2
shift
;;
*)
echo "***ERROR: unknown parameter '$1'"
print_usage
exit -1
esac
shift
done
source $TRAF_CONFIG
function checkForHA {
source $TRAF_CONFIG
if [[ $ENALBE_HA == "true" ]]; then
echo -n "Enter extra backup nodes for HA (if needed): "
read answer
if [[ -z "$answer" ]]; then
echo "***INFO: Didn't enter any extra backup nodes, that's okay, but remember that!"
else
NEW_BACKUP_DCS_NODES="$answer"
for node in $NEW_BACKUP_DCS_NODES
do
BACKUP_DCS_NODES="$BACKUP_DCS_NODES $node"
done
sudo chmod 777 $TRAF_CONFIG
sed -i '/\<NEW_BACKUP_DCS_NODES\>/d' $TRAF_CONFIG
echo "export NEW_BACKUP_DCS_NODES=\"$NEW_BACKUP_DCS_NODES\"" >> $TRAF_CONFIG
sudo chmod 777 $TRAF_CONFIG
sed -i '/\<BACKUP_DCS_NODES\>/d' $TRAF_CONFIG
echo "export BACKUP_DCS_NODES=\"$BACKUP_DCS_NODES\"" >> $TRAF_CONFIG
sudo chmod 777 $TRAF_CONFIG
fi
fi
}
function addNewNodesConfig {
source $TRAF_CONFIG
MY_NEW_NODES=""
NEW_NODES=""
for node in $NODES
do
newNode=$(ssh -q -n $node hostname)
if [[ $? -ne "0" ]]; then
echo "***ERROR: UNABLE TO SSH to node $node"
echo "***ERROR: Passwordless ssh must be set up!"
exit -1
fi
NEW_NODES="$NEW_NODES $newNode"
done
for node in $NEW_NODES
do
MY_NEW_NODES="$MY_NEW_NODES -w $node"
done
echo $MY_NEW_NODES
export PDSH_SSH_CMD="ssh -q -n %h"
export TRAF_NEW_PDSH="pdsh -R exec $MY_NEW_NODES $PDSH_SSH_CMD"
export TRAF_NEW_PDCP="pdcp -R ssh $MY_NEW_NODES"
sudo chmod 777 $TRAF_CONFIG
sed -i '/NEW_NODES\=/d' $TRAF_CONFIG
echo "export NEW_NODES=\"$NEW_NODES\"" >> $TRAF_CONFIG
sudo chmod 777 $TRAF_CONFIG
sed -i '/MY_NEW_NODES\=/d' $TRAF_CONFIG
echo "export MY_NEW_NODES=\"$MY_NEW_NODES\"" >> $TRAF_CONFIG
sudo chmod 777 $TRAF_CONFIG
sed -i '/TRAF_NEW_PDSH\=/d' $TRAF_CONFIG
echo "export TRAF_NEW_PDSH=\"$TRAF_NEW_PDSH\"" >> $TRAF_CONFIG
sudo chmod 777 $TRAF_CONFIG
sed -i '/TRAF_NEW_PDCP\=/d' $TRAF_CONFIG
echo "export TRAF_NEW_PDCP=\"$TRAF_NEW_PDCP\"" >> $TRAF_CONFIG
sudo chmod 777 $TRAF_CONFIG
}
function copyHBaseTrx {
source $TRAF_CONFIG
cp $HADOOP_PATH/hbase-trx* $PWD
cp $HADOOP_PATH/trafodion-utility* $PWD
$TRAF_NEW_PDCP $PWD/hbase-trx* $HOME
$TRAF_NEW_PDCP $PWD/trafodion-utility* $HOME
$TRAF_NEW_PDSH sudo cp $HOME/hbase-trx* $HADOOP_PATH
$TRAF_NEW_PDSH sudo cp $HOME/trafodion-utility* $HADOOP_PATH
$TRAF_NEW_PDSH sudo chmod 644 $HADOOP_PATH/hbase-trx*
$TRAF_NEW_PDSH sudo chmod 644 $HADOOP_PATH/trafodion-utility*
}
function createNewNodes {
source $TRAF_CONFIG
for node in $NEW_NODES
do
if [[ ! $NODE_LIST =~ .*$node.* ]]; then
NODE_LIST="$NODE_LIST $node"
MY_NODES="$MY_NODES -w $node"
ALL_NODE_LIST="$ALL_NODE_LIST $node"
ALL_NODES="$ALL_NODES -w $node"
HADOOP_NODES="$HADOOP_NODES $node"
MY_HADOOP_NODES="$MY_HADOOP_NODES -w $node"
HDFS_NODES="$HDFS_NODES $node"
MY_HDFS_NODES="$MY_HDFS_NODES -w $node"
HBASE_NODES="$HBASE_NODES $node"
MY_HBASE_NODES="$MY_HBASE_NODES -w $node"
fi
done
hadoop_node_count=$(echo $HADOOP_NODES | wc -w)
export TRAF_PDSH="pdsh -R exec $ALL_NODES $PDSH_SSH_CMD"
export TRAF_PDCP="pdcp -R ssh $ALL_NODES"
sudo chmod 777 $TRAF_CONFIG
sed -i '/TRAF_PDSH\=/d' $TRAF_CONFIG
echo "export TRAF_PDSH=\"$TRAF_PDSH\"" >> $TRAF_CONFIG
sudo chmod 777 $TRAF_CONFIG
sed -i '/TRAF_PDCP\=/d' $TRAF_CONFIG
echo "export TRAF_PDCP=\"$TRAF_PDCP\"" >> $TRAF_CONFIG
sudo chmod 777 $TRAF_CONFIG
sed -i '/HADOOP_NODES\=/d' $TRAF_CONFIG
echo "export HADOOP_NODES=\"$HADOOP_NODES\"" >> $TRAF_CONFIG
sudo chmod 777 $TRAF_CONFIG
sed -i '/MY_HADOOP_NODES\=/d' $TRAF_CONFIG
echo "export MY_HADOOP_NODES=\"$MY_HADOOP_NODES\"" >> $TRAF_CONFIG
sudo chmod 777 $TRAF_CONFIG
sed -i '/HDFS_NODES\=/d' $TRAF_CONFIG
echo "export HDFS_NODES=\"$HDFS_NODES\"" >> $TRAF_CONFIG
sudo chmod 777 $TRAF_CONFIG
sed -i '/MY_HDFS_NODES\=/d' $TRAF_CONFIG
echo "export MY_HDFS_NODES=\"$MY_HDFS_NODES\"" >> $TRAF_CONFIG
sudo chmod 777 $TRAF_CONFIG
sed -i '/HBASE_NODES\=/d' $TRAF_CONFIG
echo "export HBASE_NODES=\"$HBASE_NODES\"" >> $TRAF_CONFIG
sudo chmod 777 $TRAF_CONFIG
sed -i '/MY_HBASE_NODES\=/d' $TRAF_CONFIG
echo "export MY_HBASE_NODES=\"$MY_HBASE_NODES\"" >> $TRAF_CONFIG
sudo chmod 777 $TRAF_CONFIG
sed -i '/ALL_NODES\=/d' $TRAF_CONFIG
echo "export ALL_NODES=\"$ALL_NODES\"" >> $TRAF_CONFIG
sudo chmod 777 $TRAF_CONFIG
sed -i '/ALL_NODE_LIST\=/d' $TRAF_CONFIG
echo "export ALL_NODE_LIST=\"$ALL_NODE_LIST\"" >> $TRAF_CONFIG
sudo chmod 777 $TRAF_CONFIG
sed -i '/MY_NODES\=/d' $TRAF_CONFIG
echo "export MY_NODES=\"$MY_NODES\"" >> $TRAF_CONFIG
sudo chmod 777 $TRAF_CONFIG
sed -i '/NODE_LIST\=/d' $TRAF_CONFIG
echo "export NODE_LIST=\"$NODE_LIST\"" >> $TRAF_CONFIG
sudo chmod 777 $TRAF_CONFIG
sed -i '/hadoop_node_count\=/d' $TRAF_CONFIG
echo "export hadoop_node_count=\"$hadoop_node_count\"" >> $TRAF_CONFIG
sudo chmod 777 $TRAF_CONFIG
}
function removeNodeExclude {
source $TRAF_CONFIG
temp=""
for node in $TRAF_EXCLUDE_LIST
do
if [[ ! $NODES =~ .*$node.* ]]; then
temp="$temp $node"
fi
done
excludeCount=$(echo $TRAF_EXCLUDE_LIST | wc -w)
tempCount=$(echo $temp | wc -w)
if [[ "$excludeCount" -eq "$tempCount" ]]; then
#New node name
changeNodeName
NAME_CHANGE="true"
sudo chmod 777 $TRAF_CONFIG
sed -i '/NAME_CHANGE\=/d' $TRAF_CONFIG
echo "export NAME_CHANGE=\"$NAME_CHANGE\"" >> $TRAF_CONFIG
sudo chmod 777 $TRAF_CONFIG
else
TRAF_EXCLUDE_LIST=$temp
sudo chmod 777 $TRAF_CONFIG
sed -i '/TRAF_EXCLUDE_LIST\=/d' $TRAF_CONFIG
echo "export TRAF_EXCLUDE_LIST=\"$TRAF_EXCLUDE_LIST\"" >> $TRAF_CONFIG
sudo chmod 777 $TRAF_CONFIG
fi
}
function changeNodeName {
source $TRAF_CONFIG
for node in $NODES
do
export oldNODENAME=$(echo $TRAF_EXCLUDE_LIST | head -n1 | awk '{print $1;}')
temp=""
for nodes in $TRAF_EXCLUDE_LIST
do
if [[ "$oldNODENAME" != $nodes ]]; then
temp="$temp $nodes"
fi
done
export TRAF_EXCLUDE_LIST=$temp
oldToNew="$oldNODENAME $node"
echo
echo "********************************************************************"
echo "***VERY IMPORTANT: User must change old user name to a new user name."
echo "***VERY IMPORTANT: open another session and sudo su trafodion"
echo "***VERY IMPORTANT: sqshell -a"
echo "***VERY IMPORTANT: node name $oldToNew"
sleep 5
echo -n "***VERY IMPORTANT: Press any key when complete."
read answer
echo
echo "********************************************************************"
sudo sed -i -e "s/\<$oldNODENAME\>/$node/g" $TRAF_HOME/tmp/cluster.conf
sudo sed -i -e "s/\<$oldNODENAME\>/$node/g" $TRAF_HOME/sql/scripts/sqconfig
sudo rm -rf $TRAF_HOME/tmp/se*
sudo rm -rf $TRAF_HOME/sql/scripts/se*
sudo chmod 777 $TRAF_CONFIG
sed -i '/TRAF_EXCLUDE_LIST\=/d' $TRAF_CONFIG
echo "export TRAF_EXCLUDE_LIST=\"$TRAF_EXCLUDE_LIST\"" >> $TRAF_CONFIG
sudo chmod 777 $TRAF_CONFIG
done
}
function createConfigDir {
$TRAF_NEW_PDSH sudo mkdir -p /etc/trafodion
}
function copyConfig {
source $TRAF_CONFIG
cp $TRAF_CONFIG $PWD
$TRAF_PDCP $PWD/trafodion_config $HOME
$TRAF_PDSH sudo cp $HOME/trafodion_config /etc/trafodion/
$TRAF_PDSH sudo chmod 777 $TRAF_CONFIG
}
function checkHBaseTrx {
source $TRAF_CONFIG
for node in $HBASE_NODES
do
copiedOver=$(ssh -q -n $node sudo ls $HADOOP_PATH/hbase-trx* | wc -l)
if [[ $copiedOver -ne "1" ]]; then
echo "***ERROR: $hbase_trx_jar was not copied on $node"
echo "***ERROR: Please investigate why this happened"
echo "***ERROR: Trafodion can not start without this. EXITING..."
exit -1
fi
done
echo "***INFO: hbase-trx file copied correctly! Huzzah."
}
function cleanUp {
$TRAF_NEW_PDSH rm -rf $HOME/hbase-trx*
$TRAF_NEW_PDSH rm -rf trafodion_config
$TRAF_NEW_PDSH rm -rf trafodion-util*
}
function printMessage {
source $TRAF_CONFIG
echo "***IMPORTANT: Go restart HBase on new nodes"
echo "***IMPORTANT: Wait until that is done... then..."
echo "***IMPORTANT: Ready to run addNode_step2"
echo
}
#Main
checkForHA
addNewNodesConfig
copyHBaseTrx
createNewNodes
removeNodeExclude
createConfigDir
copyConfig
checkHBaseTrx
cleanUp
printMessage