diff options
Diffstat (limited to 'bootstrap/vagrant-onap/lib/functions')
-rwxr-xr-x | bootstrap/vagrant-onap/lib/functions | 450 |
1 files changed, 0 insertions, 450 deletions
diff --git a/bootstrap/vagrant-onap/lib/functions b/bootstrap/vagrant-onap/lib/functions deleted file mode 100755 index f40761f59..000000000 --- a/bootstrap/vagrant-onap/lib/functions +++ /dev/null @@ -1,450 +0,0 @@ -#!/bin/bash - -source /var/onap/commons -source /var/onap/config/env-vars -source /var/onap/_composed_functions -source /var/onap/_onap_functions - -export MTU=$(/sbin/ifconfig | grep MTU | sed 's/.*MTU://' | sed 's/ .*//' |sort -n | head -1) -export NIC=$(ip route get 8.8.8.8 | awk '{ print $5; exit }') -export IP_ADDRESS=$(ifconfig $NIC | grep "inet addr" | tr -s ' ' | cut -d' ' -f3 | cut -d':' -f2) - -mvn_conf_file=/root/.m2/settings.xml - -# configure_dns() - DNS/GW IP address configuration -function configure_dns { - echo "nameserver 10.0.0.1" >> /etc/resolvconf/resolv.conf.d/head - resolvconf -u -} - -# get_next_ip() - Function that provides the next ip -function get_next_ip { - local ip=${1:-$IP_ADDRESS} - ip_hex=$(printf '%.2X%.2X%.2X%.2X\n' `echo $ip | sed -e 's/\./ /g'`) - next_ip_hex=$(printf %.8X `echo $(( 0x$ip_hex + 1 ))`) - echo $(printf '%d.%d.%d.%d\n' `echo $next_ip_hex | sed -r 's/(..)/0x\1 /g'`) -} - -# _git_timed() - git can sometimes get itself infinitely stuck with transient network -# errors or other issues with the remote end. This wraps git in a -# timeout/retry loop and is intended to watch over non-local git -# processes that might hang. -function _git_timed { - local count=0 - local timeout=0 - - install_package git - until timeout -s SIGINT ${timeout} git "$@"; do - # 124 is timeout(1)'s special return code when it reached the - # timeout; otherwise assume fatal failure - if [[ $? -ne 124 ]]; then - exit 1 - fi - - count=$(($count + 1)) - if [ $count -eq 3 ]; then - exit 1 - fi - sleep 5 - done -} - -# clone_repo() - Clone Git repository into specific folder -function clone_repo { - local repo_url=${3:-"https://git.onap.org/"} - local repo=$1 - local dest_folder=${2:-$git_src_folder/$repo} - if [ ! -d $dest_folder ]; then - if [[ "$debug" == "False" ]]; then - _git_timed clone --quiet ${repo_url}${repo} $dest_folder - else - _git_timed clone ${repo_url}${repo} $dest_folder - fi - fi -} - -# clone_repos() - Function that clones source repositories for a given project -function clone_repos { - local project=$1 - local repo_name=${2:-$project} - - for repo in ${repos[$project]}; do - clone_repo $repo ${src_folders[$project]}${repo#*$repo_name} - done -} - -# _install_bind() - Install bind utils -function _install_bind { - install_packages bind9 bind9utils -} - -# install_java() - Install java binaries -function install_java { - if is_package_installed openjdk-8-jdk; then - return - fi - source /etc/os-release || source /usr/lib/os-release - case ${ID,,} in - *suse) - ;; - ubuntu|debian) - install_package software-properties-common - add-apt-repository -y ppa:openjdk-r/ppa - ;; - rhel|centos|fedora) - ;; - esac - update_repos - - # Remove Java 7 - uninstall_packages default-jre openjdk-7-jdk openjdk-7-jre openjdk-7-jre-headless - - install_package openjdk-8-jdk - # ca-certificates-java is not a dependency in the Oracle JDK/JRE so this must be explicitly installed. - /var/lib/dpkg/info/ca-certificates-java.postinst configure -} - -# install_maven() - Install maven binaries -function install_maven { - if is_package_installed maven3; then - return - fi - install_java - source /etc/os-release || source /usr/lib/os-release - case ${ID,,} in - *suse) - ;; - ubuntu|debian) - install_package software-properties-common - add-apt-repository -y ppa:andrei-pozolotin/maven3 - ;; - rhel|centos|fedora) - ;; - esac - update_repos - install_package maven3 - - # Remove Java 7 - uninstall_package openjdk-7-jdk - - _configure_maven -} - -# _configure_docker_settings() - Configures Docker settings -function _configure_docker_settings { - local docker_conf_backup=/tmp/docker.backup - local docker_conf=/etc/default/docker - local chameleonsocks_filename=chameleonsocks.sh - local max_concurrent_downloads=${1:-3} - - cp ${docker_conf} ${docker_conf_backup} - if [ $http_proxy ]; then - echo "export http_proxy=$http_proxy" >> $docker_conf - fi - if [ $https_proxy ]; then - echo "export https_proxy=$https_proxy" >> $docker_conf - #If you have a socks proxy, then use that to connect to the nexus repo - #via a redsocks container - if [ $socks_proxy ]; then - wget https://raw.githubusercontent.com/crops/chameleonsocks/master/$chameleonsocks_filename - chmod 755 $chameleonsocks_filename - socks=$(echo $socks_proxy | sed -e "s/^.*\///" | sed -e "s/:.*$//") - port=$(echo $socks_proxy | sed -e "s/^.*://") - PROXY=$socks PORT=$port ./$chameleonsocks_filename --install - rm $chameleonsocks_filename - cp ${docker_conf_backup} ${docker_conf} - fi - fi - rm ${docker_conf_backup} - - echo "DOCKER_OPTS=\"-H tcp://0.0.0.0:2375 -H unix:///var/run/docker.sock --max-concurrent-downloads $max_concurrent_downloads \"" >> $docker_conf - usermod -aG docker $USER - - source /etc/os-release || source /usr/lib/os-release - case ${ID,,} in - *suse) - ;; - ubuntu|debian) - service docker restart - sleep 10 - ;; - rhel|centos|fedora) - ;; - esac -} - -# install_nodejs() - Download and install NodeJS -function install_nodejs { - if is_package_installed nodejs; then - return - fi - curl -sL https://deb.nodesource.com/setup_6.x | sudo -E bash - - install_package nodejs - - # Update NPM to latest version - npm install npm -g -} - -# install_python() - Install Python 2.7 and other tools necessary for development. -function install_python { - install_packages python2.7 python-dev -} - -# _install_pip() - Install Python Package Manager -function _install_pip { - install_python - if ! which pip; then - curl -sL https://bootstrap.pypa.io/get-pip.py | python - fi -} - -# install_python_package() - Install python modules -function install_python_package { - local python_packages=$@ - - _install_pip - pip install $python_packages -} - -# install_python_requirements() - Install a list of python modules defined in requirement.txt file -function install_python_requirements { - local python_project_path=$1 - - _install_pip - pushd $python_project_path - pip install -r requirements.txt - popd -} - -# install_docker() - Download and install docker-engine -function install_docker { - if $(docker version &>/dev/null); then - return - fi - source /etc/os-release || source /usr/lib/os-release - case ${ID,,} in - *suse) - ;; - ubuntu|debian) - install_packages software-properties-common linux-image-extra-$(uname -r) linux-image-extra-virtual apt-transport-https ca-certificates curl - curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add - - add-apt-repository \ - "deb [arch=amd64] https://download.docker.com/linux/ubuntu \ - $(lsb_release -cs) stable" - ;; - rhel|centos|fedora) - ;; - esac - update_repos - - install_package docker-ce - _configure_docker_settings -} - -# pull_docker_image() - Pull Docker container image from the Public Docker Registry Hub -function pull_docker_image { - install_docker - local image=$1 - local tag=$2 - docker pull ${image} - if [ ${tag} ]; then - docker tag ${image} $tag - fi -} - -# wait_docker_pull() - Function that waits for all docker pull processes -function wait_docker_pull { - local counter=60 - local delay=${1:-60} - - sleep $delay - while [ $(ps -ef | grep "docker pull" | wc -l) -gt 1 ]; do - sleep $delay - counter=$((counter - 1)) - if [ "$counter" -eq 0 ]; then - break - fi - done -} - -# run_docker_image() - Starts a Docker instance -function run_docker_image { - install_docker - docker run $@ -} - -# run_docker_compose() - Ensures that docker compose is installed and run it in background -function run_docker_compose { - local folder=$1 - - install_docker_compose - pushd $folder - /opt/docker/docker-compose up -d - popd -} - -# install_docker_compose() - Download and install docker-engine -function install_docker_compose { - local docker_compose_version=${1:-1.12.0} - if [ ! -d /opt/docker ]; then - mkdir /opt/docker - curl -L https://github.com/docker/compose/releases/download/$docker_compose_version/docker-compose-`uname -s`-`uname -m` > /opt/docker/docker-compose - chmod +x /opt/docker/docker-compose - fi -} - -# install_chefdk() - Install ChefDK package -function install_chefdk { - local chefdk_version="2.4.17" - - if is_package_installed chefdk; then - return - fi - pushd $(mktemp -d) - source /etc/os-release || source /usr/lib/os-release - case ${ID,,} in - *suse) - ;; - ubuntu|debian) - chefdk_pkg="chefdk_$chefdk_version-1_amd64.deb" - chefdk_url="https://packages.chef.io/files/stable/chefdk/$chefdk_version/ubuntu/$VERSION_ID/$chefdk_pkg" - - wget $chefdk_url - dpkg -i $chefdk_pkg - apt-get install -f -y - ;; - rhel|centos|fedora) - rpm -Uvh "https://packages.chef.io/files/stable/chefdk/$chefdk_version/el/7/chefdk-$chefdk_version-1.el7.x86_64.rpm" - ;; - esac - popd -} - -# _install_ODL() - Download and Install OpenDayLight SDN controller -function _install_ODL { - if [ ! -d /opt/opendaylight/current ]; then - mkdir -p /opt/opendaylight/ - wget "https://nexus.opendaylight.org/content/repositories/public/org/opendaylight/integration/distribution-karaf/"$odl_version"/distribution-karaf-"$odl_version".tar.gz" -P /opt/ - tar xvf "/opt/distribution-karaf-"$odl_version".tar.gz" -C /tmp/ - mv "/tmp/distribution-karaf-"$odl_version /opt/opendaylight/current - rm -rf "/opt/distribution-karaf-"$odl_version".tar.gz" - fi -} - -# start_ODL() - Start OpenDayLight SDN controller -function start_ODL { - _install_ODL - if [ -d /opt/opendaylight ]; then - export JAVA_HOME=/usr/lib/jvm/java-8-openjdk-amd64/jre - /opt/opendaylight/current/bin/start - sleep 180 - /opt/opendaylight/current/bin/client feature:install odl-dlux-all - fi -} - -# compile_src() - Function that compiles the java source code thru maven -function compile_src { - local src_folder=$1 - pushd $src_folder - local mvn_build='mvn clean install -DskipTests=true -Dmaven.test.skip=true -Dmaven.javadoc.skip=true -Dadditionalparam=-Xdoclint:none' - if [[ "$debug" == "False" ]]; then - mvn_build+=" -q" - fi - if [ -f pom.xml ]; then - install_maven - echo "Compiling $src_folder folder..." - eval $mvn_build - fi - popd -} - -# compile_repos() - Function that compiles source repositories for a given project -function compile_repos { - local project=$1 - - for repo in ${repos[$project]}; do - compile_src ${src_folders[$project]}${repo#*$project} - done -} - -# build_docker_image() - Build Docker container image from source code -function build_docker_image { - local src_folder=$1 - local profile=$2 - install_docker - pushd $src_folder - - if [ -f pom.xml ]; then - install_maven - # Cleanup external repo - sed -i 's|${docker.push.registry}/||g' pom.xml - local docker_build="mvn clean package docker:build -DskipTests=true -Dmaven.test.skip=true -Dmaven.javadoc.skip=true" - if [ $profile ]; then - docker_build+=" -P $profile" - fi - if [[ "$debug" == "False" ]]; then - docker_build+=" -q" - fi - if [ $http_proxy ]; then - if ! grep -ql "docker.buildArg.http_proxy" pom.xml ; then - docker_build+=" -Ddocker.buildArg.http_proxy=$http_proxy" - fi - if ! grep -ql "docker.buildArg.HTTP_PROXY" pom.xml ; then - docker_build+=" -Ddocker.buildArg.HTTP_PROXY=$http_proxy" - fi - fi - if [ $https_proxy ]; then - if ! grep -ql "docker.buildArg.https_proxy" pom.xml ; then - docker_build+=" -Ddocker.buildArg.https_proxy=$https_proxy" - fi - if ! grep -ql "docker.buildArg.HTTPS_PROXY" pom.xml ; then - docker_build+=" -Ddocker.buildArg.HTTPS_PROXY=$https_proxy" - fi - fi - elif [ -f Dockerfile ]; then - # NOTE: Workaround for dmmapbc images - sed -i '/LocalKey/d' Dockerfile - sed -i "s/nexus3.onap.org\:10003\///g" Dockerfile - local docker_build="docker build -t $profile -f ./Dockerfile ." - if [ $http_proxy ]; then - docker_build+=" --build-arg http_proxy=$http_proxy" - docker_build+=" --build-arg HTTP_PROXY=$http_proxy" - fi - if [ $https_proxy ]; then - docker_build+=" --build-arg https_proxy=$https_proxy" - docker_build+=" --build-arg HTTPS_PROXY=$https_proxy" - fi - fi - echo $docker_build - eval $docker_build - popd -} - -# mount_external_partition() - Create partition and mount the external volume -function mount_external_partition { - local dev_name="/dev/$1" - local mount_dir=$2 - - sfdisk $dev_name << EOF -; -EOF - mkfs -t ext4 ${dev_name}1 - mkdir -p $mount_dir - mount ${dev_name}1 $mount_dir - echo "${dev_name}1 $mount_dir ext4 errors=remount-ro,noatime,barrier=0 0 1" >> /etc/fstab -} - -# add_no_proxy_value() - Add no_proxy values into environment file, used for internal IPs generated at deploy time -function add_no_proxy_value { - if [[ `grep "no_proxy" /etc/environment` ]]; then - sed -i.bak "s/^no_proxy.*$/&,$1/" /etc/environment - else - echo "no_proxy=$1" >> /etc/environment - fi - if [[ `grep "NO_PROXY" /etc/environment` ]]; then - sed -i.bak "s/^NO_PROXY.*$/&,$1/" /etc/environment - else - echo "NO_PROXY=$1" >> /etc/environment - fi -} - |