Sync latest changes for vagrant-onap

Given some internal procedures was not possible to submit all the
changes.  In the meantime, those changes were placed into an
non-official project. This change syncronizes the latest changes
into the official repository.

Issue-id: INT-17

Change-Id: Ia4125f4b70273401e4ed3cc1908d2e2ad7d1c2e9
Signed-off-by: Victor Morales <victor.morales@intel.com>
diff --git a/bootstrap/vagrant-onap/lib/functions b/bootstrap/vagrant-onap/lib/functions
index fddd49a..b0c6e97 100755
--- a/bootstrap/vagrant-onap/lib/functions
+++ b/bootstrap/vagrant-onap/lib/functions
@@ -3,6 +3,16 @@
 set -o xtrace
 
 source /var/onap/commons
+source /var/onap/_composed_functions
+source /var/onap/_onap_functions
+
+mvn_conf_file=/root/.m2/settings.xml
+git_src_folder=/opt
+
+# export_env_vars() - Export environment variables
+function export_env_vars {
+    export MTU=$(/sbin/ifconfig | grep MTU | sed 's/.*MTU://' | sed 's/ .*//' |sort -n | head -1)
+}
 
 # configure_dns() - DNS/GW IP address configuration
 function configure_dns {
@@ -10,35 +20,11 @@
     resolvconf -u
 }
 
-# create_configuration_files() -  Store credentials in files
-function create_configuration_files {
-    mkdir -p /opt/config
-    echo $nexus_docker_repo > /opt/config/nexus_docker_repo.txt
-    echo $nexus_username > /opt/config/nexus_username.txt
-    echo $nexus_password > /opt/config/nexus_password.txt
-    echo $openstack_username > /opt/config/openstack_username.txt
-    echo $openstack_tenant_id > /opt/config/tenant_id.txt
-    echo $dmaap_topic > /opt/config/dmaap_topic.txt
-    echo $docker_version > /opt/config/docker_version.txt
-}
-
-# pull_openecomp_image() - Pull Docker container image from a Docker Registry Hub
-function pull_openecomp_image {
-    install_docker
-    local image=$1
-    local tag=$2
-    docker login -u $nexus_username -p $nexus_password $nexus_docker_repo
-    docker pull $nexus_docker_repo/openecomp/${image}:$docker_version
-    if [ ${tag} ]; then
-        docker tag $nexus_docker_repo/openecomp/${image}:$docker_version $tag
-    fi
-}
-
-# git_timed() - git can sometimes get itself infinitely stuck with transient network
+# _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 {
+function _git_timed {
     local count=0
     local timeout=0
 
@@ -62,12 +48,12 @@
 function clone_repo {
     local repo_url=https://git.onap.org/
     local repo=$1
-    local dest_folder=$2
-    if [ ! -d $2 ]; then
-        git_timed clone -b $gerrit_branch --single-branch ${repo_url}${repo} $dest_folder
+    local dest_folder=${2:-$git_src_folder/$repo}
+    if [ ! -d $dest_folder ]; then
+        _git_timed clone -b $gerrit_branch --single-branch ${repo_url}${repo} $dest_folder
     else
         pushd $dest_folder
-        git_timed pull
+        _git_timed pull
         popd
     fi
 }
@@ -79,26 +65,12 @@
     install_package curl
 }
 
-# install_bind() - Install bind utils
-function install_bind {
+# _install_bind() - Install bind utils
+function _install_bind {
     install_package bind9
     install_package bind9utils
 }
 
-# configure_bind()- Configure bind utils
-function configure_bind {
-    install_bind
-    mkdir /etc/bind/zones
-
-    curl -k $nexus_repo/org.openecomp.demo/boot/$artifacts_version/db_simpledemo_openecomp_org -o /etc/bind/zones/db.simpledemo.openecomp.org
-    curl -k $nexus_repo/org.openecomp.demo/boot/$artifacts_version/named.conf.options -o /etc/bind/named.conf.options
-    curl -k $nexus_repo/org.openecomp.demo/boot/$artifacts_version/named.conf.local -o /etc/bind/named.conf.local
-
-    modprobe ip_gre
-    sed -i "s/OPTIONS=.*/OPTIONS=\"-4 -u bind\"/g" /etc/default/bind9
-    service bind9 restart
-}
-
 # install_java() - Install java binaries
 function install_java {
     install_package software-properties-common
@@ -108,7 +80,7 @@
 
 # install_maven() - Install maven binaries
 function install_maven {
-    if is_package_installed maven; then
+    if is_package_installed maven3; then
         return
     fi
     if ! is_package_installed openjdk-8-jdk; then
@@ -120,10 +92,12 @@
 
     # Force Maven3 to use jdk8
     apt-get purge openjdk-7-jdk -y
+
+    _configure_maven
 }
 
-# configure_docker_proxy() - Configures proxy in Docker from ENV
-function configure_docker_proxy {
+# _configure_docker_proxy() - Configures proxy in Docker from ENV
+function _configure_docker_proxy {
     if [ $http_proxy ]; then
         echo "export http_proxy=$http_proxy" >> /etc/default/docker
     fi
@@ -132,6 +106,97 @@
     fi
 }
 
+# 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_package python2.7
+    install_package python-dev
+    curl -sL https://bootstrap.pypa.io/get-pip.py | python
+    pip install tox
+}
+
+# install_docker() - Download and install docker-engine 
+function install_docker {
+    if is_package_installed docker-ce; then
+        return
+    fi
+    install_package software-properties-common
+    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"
+    install_package docker-ce
+    _configure_docker_proxy
+    service docker restart
+    sleep 10
+}
+
+# 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
+}
+
+# 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_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 /opt/
+        mv "/opt/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
+    if [ -f pom.xml ]; then
+        install_maven
+        mvn clean install -U -DskipTests=true -Dmaven.test.skip=true -Dmaven.javadoc.skip=true -Dadditionalparam=-Xdoclint:none
+    fi
+    popd
+}
+
 # build_docker_image() - Build Docker container image from source code
 function build_docker_image {
     local src_folder=$1
@@ -147,58 +212,21 @@
         mvn_docker+=" -P $profile"
     fi
     if [ $http_proxy ]; then
-        mvn_docker+=" -Ddocker.buildArg.http_proxy=$http_proxy"
-        mvn_docker+=" -Ddocker.buildArg.HTTP_PROXY=$http_proxy"
+        if ! grep -ql "docker.buildArg.http_proxy" pom.xml ; then
+            mvn_docker+=" -Ddocker.buildArg.http_proxy=$http_proxy"
+        fi
+        if ! grep -ql "docker.buildArg.HTTP_PROXY" pom.xml ; then
+            mvn_docker+=" -Ddocker.buildArg.HTTP_PROXY=$http_proxy"
+        fi
     fi
     if [ $https_proxy ]; then
-        mvn_docker+=" -Ddocker.buildArg.https_proxy=$https_proxy"
-        mvn_docker+=" -Ddocker.buildArg.HTTPS_PROXY=$https_proxy"
+        if ! grep -ql "docker.buildArg.https_proxy" pom.xml ; then
+            mvn_docker+=" -Ddocker.buildArg.https_proxy=$https_proxy"
+        fi
+        if ! grep -ql "docker.buildArg.HTTPS_PROXY" pom.xml ; then
+            mvn_docker+=" -Ddocker.buildArg.HTTPS_PROXY=$https_proxy"
+        fi
     fi
     eval $mvn_docker
     popd
 }
-
-# compile_src() - Function that compiles the java source code thru maven
-function compile_src {
-    local src_folder=$1
-    pushd $src_folder
-    if [ -f pom.xml ]; then
-        install_maven
-        mvn clean install -DskipTests=true -Dmaven.test.skip=true -Dadditionalparam=-Xdoclint:none
-    fi
-    popd
-}
-
-# install_docker() - Download and install docker-engine 
-function install_docker {
-    if is_package_installed docker-ce; then
-        return
-    fi
-    install_package software-properties-common
-    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"
-    install_package docker-ce
-    configure_docker_proxy
-    service docker restart
-}
-
-# 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
-}
-
-# configure_service() - Download and configure a specific service in upstart
-function configure_service {
-    local service_script=$1
-    curl -k $nexus_repo/org.openecomp.demo/boot/$artifacts_version/$service_script -o /etc/init.d/$service_script
-    chmod +x /etc/init.d/$service_script
-    update-rc.d $service_script defaults
-}