160 lines
4.4 KiB
Bash
Executable File
160 lines
4.4 KiB
Bash
Executable File
#!/bin/bash
|
|
|
|
set -xeuo pipefail
|
|
|
|
CONFIG_PATH='/usr/lib/hetu/etc'
|
|
|
|
if [[ ! -d $CONFIG_PATH ]]; then
|
|
if [[ -d /etc/hetu ]]; then
|
|
ln -s /etc/hetu $CONFIG_PATH
|
|
else
|
|
ln -s /usr/lib/hetu/default/etc /usr/lib/hetu/etc
|
|
fi
|
|
fi
|
|
if [[ ! -d /etc/hetu/catalog ]]; then
|
|
if [[ -d $CONFIG_PATH/catalog ]]; then
|
|
[[ ! -d /etc/hetu ]] && sudo mkdir -p /etc/hetu
|
|
sudo ln -s $CONFIG_PATH/catalog /etc/hetu/catalog
|
|
fi
|
|
fi
|
|
if [[ ! -d /usr/lib/hetu/lib/plugin ]]; then
|
|
if [[ -d /usr/lib/hetu/plugin ]]; then
|
|
ln -s /usr/lib/hetu/plugin /usr/lib/hetu/lib/plugin
|
|
fi
|
|
fi
|
|
|
|
setConfig() {
|
|
i=0
|
|
unset attributes
|
|
declare -a attributes
|
|
while read line; do
|
|
attributes[$((i++))]=$line
|
|
done < $1
|
|
numPattern=${#patterns[@]}
|
|
for ((i=0; i<${#attributes[@]}; i++)); do
|
|
for ((k=0; k<$numPattern; k++)); do
|
|
attributes[$i]=$(echo ${attributes[$i]}| sed -e "s|${patterns[$k]}|${values[$k]}|m")
|
|
done
|
|
if [ "" != "${attributes[$i]}" ]; then
|
|
echo "${attributes[$i]}" >> "$1.tmp"
|
|
fi
|
|
done
|
|
mv "$1"{.tmp,}
|
|
unset patterns
|
|
unset values
|
|
}
|
|
|
|
declare -a patterns
|
|
declare -a values
|
|
|
|
type=coordinator
|
|
discoveryURI=
|
|
nodeEnv=
|
|
includeCoordinator=
|
|
|
|
# check if user specified node.id & node.environment
|
|
set +e
|
|
tmp=$(grep -s 'node.id' /usr/lib/hetu/etc/node.properties)
|
|
NODE_ID=${tmp:8}
|
|
[[ -n $NODE_ID ]] && NODE_ID_EXISTS=0
|
|
[[ -z $NODE_ID ]] && NODE_ID_EXISTS=1
|
|
grep -s -q 'node.environment' /usr/lib/hetu/etc/node.properties
|
|
NODE_ENV_EXISTS=$?
|
|
tmp=$(grep -s 'node.environment' /usr/lib/hetu/etc/node.properties)
|
|
nodeEnv=${tmp:17}
|
|
set -e
|
|
|
|
if [[ $# != 0 ]]; then
|
|
while [[ $# != 0 && -n "$1" ]]; do
|
|
case "$1" in
|
|
-t | --type)
|
|
type="$2"
|
|
shift
|
|
shift
|
|
;;
|
|
-discoveryURI)
|
|
discoveryURI="$2"
|
|
shift
|
|
shift
|
|
;;
|
|
-nodeEnv)
|
|
nodeEnv="$2"
|
|
shift
|
|
shift
|
|
;;
|
|
-includeCoordinator)
|
|
includeCoordinator="$2"
|
|
shift
|
|
shift
|
|
;;
|
|
*)
|
|
echo "not supported option $1"
|
|
exit 1
|
|
;;
|
|
esac
|
|
done
|
|
|
|
|
|
case "$type" in
|
|
worker)
|
|
patterns=("^discovery-server.enabled=.*" "^coordinator=.*")
|
|
values=("" "coordinator=false")
|
|
setConfig "$CONFIG_PATH/config.properties"
|
|
echo "Run Hetu engine as worker node"
|
|
;;
|
|
coordinator)
|
|
patterns=("^coordinator=.*" "^discovery-server.enabled=.*")
|
|
values=("coordinator=true" "discovery-server.enabled=true")
|
|
setConfig "$CONFIG_PATH/config.properties"
|
|
echo "Run Hetu engine as Coordinator node"
|
|
;;
|
|
*)
|
|
echo "no matching supported server type: \"$type\"; Please specify \"coordinator\" or \"worker\""
|
|
exit 1
|
|
esac
|
|
|
|
if [ -n "$discoveryURI" ]; then
|
|
echo "Use discovery.uri $discoveryURI"
|
|
patterns=("^discovery.uri=.*")
|
|
values=("discovery.uri=$discoveryURI")
|
|
setConfig "$CONFIG_PATH/config.properties"
|
|
else
|
|
echo "empty discoveryURI, using default \"http://localhost:8080\""
|
|
fi
|
|
|
|
if [ -n "$includeCoordinator" ] && [ "true" != $includeCoordinator ]; then
|
|
echo "Allow scheduling work on the coordinator"
|
|
patterns=("^node-scheduler.include-coordinator=.*")
|
|
values=("node-scheduler.include-coordinator=$includeCoordinator")
|
|
setConfig "$CONFIG_PATH/config.properties"
|
|
fi
|
|
|
|
fi
|
|
|
|
if [ $NODE_ID_EXISTS != 0 ]; then
|
|
if [ -n "$nodeEnv" ]; then
|
|
echo "Set node.environment as $nodeEnv"
|
|
NODE_ID="$nodeEnv-${HOSTNAME}"
|
|
else
|
|
nodeEnv="default"
|
|
echo "using default node.environment=test"
|
|
NODE_ID="default-${HOSTNAME}"
|
|
fi
|
|
patterns=("^node.environment=.*" "^node.id=.*")
|
|
values=("node.environment=$nodeEnv" "node.id=$NODE_ID")
|
|
setConfig "$CONFIG_PATH/node.properties"
|
|
NODE_ID="-Dnode.id=$NODE_ID"
|
|
else
|
|
if [ -n "$nodeEnv" ]; then
|
|
echo "Set node.environment as $nodeEnv"
|
|
else
|
|
nodeEnv="default"
|
|
echo "using default node.environment=test"
|
|
fi
|
|
patterns=("^node.environment=.*")
|
|
values=("node.environment=$nodeEnv")
|
|
setConfig "$CONFIG_PATH/node.properties"
|
|
fi
|
|
|
|
exec /usr/lib/hetu/bin/launcher run ${NODE_ID} "$@"
|