Add vagrant-onap project
This commit contains the current state of the files and folders
imported from github repository[1]. Fixes and features are expected to
be implemented in this project.
[1] https://github.com/electrocucaracha/vagrant-onap
Change-Id: Ib1e8d264e9566c5e44454f5475b5da4638879cb7
Signed-off-by: Victor Morales <victor.morales@intel.com>
Issue-id: CIMAN-28
diff --git a/bootstrap/vagrant-onap/lib/functions b/bootstrap/vagrant-onap/lib/functions
new file mode 100755
index 0000000..fddd49a
--- /dev/null
+++ b/bootstrap/vagrant-onap/lib/functions
@@ -0,0 +1,204 @@
+#!/bin/bash
+
+set -o xtrace
+
+source /var/onap/commons
+
+# configure_dns() - DNS/GW IP address configuration
+function configure_dns {
+ echo "nameserver 10.0.0.1" >> /etc/resolvconf/resolv.conf.d/head
+ 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
+# 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=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
+ else
+ pushd $dest_folder
+ git_timed pull
+ popd
+ fi
+}
+
+# install_dev_tools() - Install basic dependencies
+function install_dev_tools {
+ install_package apt-transport-https
+ install_package ca-certificates
+ install_package curl
+}
+
+# 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
+ add-apt-repository -y ppa:openjdk-r/ppa
+ install_package openjdk-8-jdk
+}
+
+# install_maven() - Install maven binaries
+function install_maven {
+ if is_package_installed maven; then
+ return
+ fi
+ if ! is_package_installed openjdk-8-jdk; then
+ install_java
+ fi
+ install_package software-properties-common
+ add-apt-repository -y ppa:andrei-pozolotin/maven3
+ install_package maven3
+
+ # Force Maven3 to use jdk8
+ apt-get purge openjdk-7-jdk -y
+}
+
+# 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
+ if [ $https_proxy ]; then
+ echo "export https_proxy=$https_proxy" >> /etc/default/docker
+ fi
+}
+
+# build_docker_image() - Build Docker container image from source code
+function build_docker_image {
+ local src_folder=$1
+ local profile=$2
+ install_maven
+ install_docker
+ pushd $src_folder
+
+ # Cleanup external repo
+ sed -i 's|${docker.push.registry}/||g' pom.xml
+ local mvn_docker="mvn clean package docker:build"
+ if [ $profile ]; then
+ 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"
+ fi
+ if [ $https_proxy ]; then
+ mvn_docker+=" -Ddocker.buildArg.https_proxy=$https_proxy"
+ mvn_docker+=" -Ddocker.buildArg.HTTPS_PROXY=$https_proxy"
+ 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
+}