hadoop/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-applications/hadoop-yarn-submarine/installation/scripts/utils.sh
Wangda Tan 46d6e00166 YARN-8870. [Submarine] Add submarine installation scripts. (Xun Liu via wangda)
Change-Id: I46e8d9fd32c7745c313030da62da41486a77b3ea
2018-10-16 13:51:02 -07:00

124 lines
3.3 KiB
Bash

#!/usr/bin/env bash
# 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.
## @description check install user
## @audience public
## @stability stable
function check_install_user()
{
if [[ $(id -u) -ne 0 ]];then
echo "This script must be run with a ROOT user!"
exit # don't call exit_install()
fi
}
## @description exit install
## @audience public
## @stability stable
function exit_install()
{
echo "Exit the installation!" | tee -a $LOG
exit $1
}
## @description Check if the IP address format is correct
## @audience public
## @stability stable
function valid_ip()
{
local ip=$1
local stat=1
if [[ $ip =~ ^[0-9]{1,3\}.[0-9]{1,3\}.[0-9]{1,3\}.[0-9]{1,3\}$ ]]; then
OIFS=$IFS
IFS='.'
ip=($ip)
IFS=$OIFS
if [[ ${ip[0]} -le 255 && ${ip[1]} -le 255 && ${ip[2]} -le 255 && ${ip[3]} -le 255 ]]; then
stat=$?
fi
fi
return $stat
}
## @description Check if the configuration file configuration is correct
## @audience public
## @stability stable
function check_install_conf()
{
echo "Check if the configuration file configuration is correct ..." | tee -a $LOG
# check etcd conf
hostCount=${#ETCD_HOSTS[@]}
if [[ $hostCount -lt 3 && hostCount -ne 0 ]]; then # <>2
echo "Number of nodes = [$hostCount], must be configured to be greater than or equal to 3 servers! " | tee -a $LOG
exit_install
fi
for ip in ${ETCD_HOSTS[@]}
do
if ! valid_ip $ip; then
echo "]ETCD_HOSTS=[$ip], IP address format is incorrect! " | tee -a $LOG
exit_install
fi
done
echo "Check if the configuration file configuration is correct [ Done ]" | tee -a $LOG
}
## @description index by EtcdHosts list
## @audience public
## @stability stable
function indexByEtcdHosts() {
index=0
while [ "$index" -lt "${#ETCD_HOSTS[@]}" ]; do
if [ "${ETCD_HOSTS[$index]}" = "$1" ]; then
echo $index
return
fi
let "index++"
done
echo ""
}
## @description get local IP
## @audience public
## @stability stable
function getLocalIP()
{
local _ip _myip _line _nl=$'\n'
while IFS=$': \t' read -a _line ;do
[ -z "${_line%inet}" ] &&
_ip=${_line[${#_line[1]}>4?1:2]} &&
[ "${_ip#127.0.0.1}" ] && _myip=$_ip
done< <(LANG=C /sbin/ifconfig)
printf ${1+-v} $1 "%s${_nl:0:$[${#1}>0?0:1]}" $_myip
}
## @description get ip list
## @audience public
## @stability stable
function get_ip_list()
{
array=$(ifconfig | grep inet | grep -v inet6 | grep -v 127 | sed 's/^[ \t]*//g' | cut -d ' ' -f2)
for ip in ${array[@]}
do
LOCAL_HOST_IP_LIST+=(${ip})
done
}