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/.gitignore b/bootstrap/vagrant-onap/.gitignore
new file mode 100644
index 0000000..130fcae
--- /dev/null
+++ b/bootstrap/vagrant-onap/.gitignore
@@ -0,0 +1,4 @@
+.vagrant/
+*.swp
+.tox/
+opt/
diff --git a/bootstrap/vagrant-onap/README.md b/bootstrap/vagrant-onap/README.md
new file mode 100644
index 0000000..86a5abd
--- /dev/null
+++ b/bootstrap/vagrant-onap/README.md
@@ -0,0 +1,20 @@
+# Vagrant ONAP
+
+[![Build Status](https://api.travis-ci.org/electrocucaracha/vagrant-onap.svg?branch=master)](https://api.travis-ci.org/electrocucaracha/vagrant-onap)
+
+This vagrant project pretends to collect information about a way to deploy [ONAP project](https://www.onap.org/) into a development environment. It was created only for didactic purposes.
+
+## Requirements:
+
+* Vagrant
+* VirtualBox or Libvirt
+
+## Steps for execution:
+
+ git clone https://github.com/electrocucaracha/vagrant-onap.git
+ cd vagrant-onap
+ vagrant up
+
+## Destroy:
+
+ vagrant destroy
diff --git a/bootstrap/vagrant-onap/Vagrantfile b/bootstrap/vagrant-onap/Vagrantfile
new file mode 100644
index 0000000..19c63cf
--- /dev/null
+++ b/bootstrap/vagrant-onap/Vagrantfile
@@ -0,0 +1,234 @@
+# -*- mode: ruby -*-
+# vi: set ft=ruby :
+
+conf = {
+# Generic parameters used across all ONAP components
+ 'public_net_id' => '00000000-0000-0000-0000-000000000000',
+ 'key_name' => 'ecomp_key',
+ 'pub_key' => '',
+ 'nexus_repo' => 'https://nexus.onap.org/content/sites/raw',
+ 'nexus_docker_repo' => 'nexus3.onap.org:10001',
+ 'nexus_username' => 'docker',
+ 'nexus_password' => 'docker',
+ 'dmaap_topic' => 'AUTO',
+ 'artifacts_version' => '1.0.0',
+ 'docker_version' => '1.0-STAGING-latest',
+ 'gerrit_branch' => 'master',
+# Parameters for DCAE instantiation
+ 'dcae_zone' => 'iad4',
+ 'dcae_state' => 'vi',
+ 'openstack_tenant_id' => '',
+ 'openstack_username' => '',
+ 'openstack_api_key' => '',
+ 'openstack_password' => '',
+ 'nexus_repo_root' => 'https://nexus.onap.org',
+ 'nexus_url_snapshot' => 'https://nexus.onap.org/content/repositories/snapshots',
+ 'gitlab_branch' => 'master',
+ 'build_image' => 'True'
+}
+
+vd_conf = ENV.fetch('VD_CONF', 'etc/settings.yaml')
+if File.exist?(vd_conf)
+ require 'yaml'
+ user_conf = YAML.load_file(vd_conf)
+ conf.update(user_conf)
+end
+
+deploy_mode = ENV.fetch('DEPLOY_MODE', 'individual')
+sdc_volume='vol1-sdc-data.vdi'
+
+Vagrant.configure("2") do |config|
+
+ if ENV['http_proxy'] != nil and ENV['https_proxy'] != nil and ENV['no_proxy'] != nil
+ if not Vagrant.has_plugin?('vagrant-proxyconf')
+ system 'vagrant plugin install vagrant-proxyconf'
+ raise 'vagrant-proxyconf was installed but it requires to execute again'
+ end
+ config.proxy.http = ENV['http_proxy']
+ config.proxy.https = ENV['https_proxy']
+ config.proxy.no_proxy = ENV['no_proxy']
+ end
+
+ #config.vm.box = 'sputnik13/trusty64'
+ config.vm.box = 'ubuntu/trusty64'
+ #config.vm.provision "docker"
+ config.vm.synced_folder './opt', '/opt/', create: true
+ config.vm.synced_folder './lib', '/var/onap/', create: true
+ config.vm.synced_folder '~/.m2', '/root/.m2/', create: true
+
+ config.vm.provider "virtualbox" do |v|
+ v.customize ["modifyvm", :id, "--memory", 4 * 1024]
+ end
+ config.vm.provider "libvirt" do |v|
+ v.memory = 4 * 1024
+ v.nested = true
+ end
+
+ case deploy_mode
+
+ when 'all-in-one'
+
+ config.vm.define :all_in_one do |all_in_one|
+ all_in_one.vm.hostname = 'all-in-one'
+ all_in_one.vm.network :private_network, ip: '192.168.50.3'
+ all_in_one.vm.provider "virtualbox" do |v|
+ v.customize ["modifyvm", :id, "--memory", 12 * 1024]
+ unless File.exist?(sdc_volume)
+ v.customize ['createhd', '--filename', sdc_volume, '--size', 20 * 1024]
+ end
+ v.customize ['storageattach', :id, '--storagectl', 'SATAController', '--port', 1, '--device', 0, '--type', 'hdd', '--medium', sdc_volume]
+ end
+ all_in_one.vm.provider "libvirt" do |v|
+ v.memory = 12 * 1024
+ v.nested = true
+ v.storage :file, path: sdc_volume, bus: 'sata', device: 'vdb', size: '2G'
+ end
+ all_in_one.vm.provision 'shell' do |s|
+ s.path = 'postinstall.sh'
+ s.args = ['mr', 'sdc', 'aai', 'mso', 'robot', 'vid', 'sdnc', 'portal', 'dcae', 'policy', 'appc']
+ s.env = conf
+ end
+ end
+
+ when 'individual'
+
+ config.vm.define :dns do |dns|
+ dns.vm.hostname = 'dns'
+ dns.vm.network :private_network, ip: '192.168.50.3'
+ dns.vm.provider "virtualbox" do |v|
+ v.customize ["modifyvm", :id, "--memory", 1 * 1024]
+ end
+ dns.vm.provider "libvirt" do |v|
+ v.memory = 1 * 1024
+ v.nested = true
+ end
+ dns.vm.provision 'shell' do |s|
+ s.path = 'postinstall.sh'
+ s.env = conf
+ end
+ end
+
+ config.vm.define :message_router do |message_router|
+ message_router.vm.hostname = 'message-router'
+ message_router.vm.network :private_network, ip: '192.168.50.4'
+ message_router.vm.provision 'shell' do |s|
+ s.path = 'postinstall.sh'
+ s.args = ['mr']
+ s.env = conf
+ end
+ end
+
+ config.vm.define :sdc do |sdc|
+ sdc.vm.hostname = 'sdc'
+ sdc.vm.network :private_network, ip: '192.168.50.5'
+ sdc.vm.provider "virtualbox" do |v|
+ v.customize ["modifyvm", :id, "--memory", 4 * 1024]
+ unless File.exist?(sdc_volume)
+ v.customize ['createhd', '--filename', sdc_volume, '--size', 20 * 1024]
+ end
+ v.customize ['storageattach', :id, '--storagectl', 'SATAController', '--port', 1, '--device', 0, '--type', 'hdd', '--medium', sdc_volume]
+ end
+ sdc.vm.provider "libvirt" do |v|
+ v.memory = 4 * 1024
+ v.nested = true
+ v.storage :file, path: sdc_volume, bus: 'sata', device: 'vdb', size: '2G'
+ end
+ sdc.vm.provision 'shell' do |s|
+ s.path = 'postinstall.sh'
+ s.args = ['sdc']
+ s.env = conf
+ end
+ end
+
+ config.vm.define :aai do |aai|
+ aai.vm.hostname = 'aai'
+ aai.vm.network :private_network, ip: '192.168.50.6'
+ aai.vm.provision 'shell' do |s|
+ s.path = 'postinstall.sh'
+ s.args = ['aai']
+ s.env = conf
+ end
+ end
+
+ config.vm.define :mso do |mso|
+ mso.vm.hostname = 'mso-server'
+ mso.vm.network :private_network, ip: '192.168.50.7'
+ mso.vm.provision 'shell' do |s|
+ s.path = 'postinstall.sh'
+ s.args = ['mso']
+ s.env = conf
+ end
+ end
+
+ config.vm.define :robot do |robot|
+ robot.vm.hostname = 'robot'
+ robot.vm.network :private_network, ip: '192.168.50.8'
+ robot.vm.provision 'shell' do |s|
+ s.path = 'postinstall.sh'
+ s.args = ['robot']
+ s.env = conf
+ end
+ end
+
+ config.vm.define :vid do |vid|
+ vid.vm.hostname = 'vid'
+ vid.vm.network :private_network, ip: '192.168.50.9'
+ vid.vm.provision 'shell' do |s|
+ s.path = 'postinstall.sh'
+ s.args = ['vid']
+ s.env = conf
+ end
+ end
+
+ config.vm.define :sdnc do |sdnc|
+ sdnc.vm.hostname = 'sdnc'
+ sdnc.vm.network :private_network, ip: '192.168.50.10'
+ sdnc.vm.provision 'shell' do |s|
+ s.path = 'postinstall.sh'
+ s.args = ['sdnc']
+ s.env = conf
+ end
+ end
+
+ config.vm.define :portal do |portal|
+ portal.vm.hostname = 'portal'
+ portal.vm.network :private_network, ip: '192.168.50.11'
+ portal.vm.provision 'shell' do |s|
+ s.path = 'postinstall.sh'
+ s.args = ['portal']
+ s.env = conf
+ end
+ end
+
+ config.vm.define :dcae do |dcae|
+ dcae.vm.hostname = 'dcae'
+ dcae.vm.network :private_network, ip: '192.168.50.12'
+ dcae.vm.provision 'shell' do |s|
+ s.path = 'postinstall.sh'
+ s.args = ['dcae']
+ s.env = conf
+ end
+ end
+
+ config.vm.define :policy do |policy|
+ policy.vm.hostname = 'policy'
+ policy.vm.network :private_network, ip: '192.168.50.13'
+ policy.vm.provision 'shell' do |s|
+ s.path = 'postinstall.sh'
+ s.args = ['policy']
+ s.env = conf
+ end
+ end
+
+ config.vm.define :appc do |appc|
+ appc.vm.hostname = 'appc'
+ appc.vm.network :private_network, ip: '192.168.50.14'
+ appc.vm.provision 'shell' do |s|
+ s.path = 'postinstall.sh'
+ s.args = ['appc']
+ s.env = conf
+ end
+ end
+
+ end
+end
diff --git a/bootstrap/vagrant-onap/get_repos.sh b/bootstrap/vagrant-onap/get_repos.sh
new file mode 100755
index 0000000..1a98f50
--- /dev/null
+++ b/bootstrap/vagrant-onap/get_repos.sh
@@ -0,0 +1,41 @@
+#!/bin/bash
+
+repos=(
+"aai/aai-data" "aai/aai-config" "aai/aai-service" "aai/data-router" "aai/logging-service" "aai/model-loader" "aai/resources" "aai/rest-client" "aai/router-core" "aai/search-data-service" "aai/sparky-be" "aai/sparky-fe" "aai/test-config" "aai/traversal"
+"appc" "appc/deployment"
+"ci-management"
+"dcae" "dcae/apod" "dcae/apod/analytics" "dcae/apod/buildtools" "dcae/apod/cdap" "dcae/collectors" "dcae/collectors/ves" "dcae/controller" "dcae/controller/analytics" "dcae/dcae-inventory" "dcae/demo" "dcae/demo/startup" "dcae/demo/startup/aaf" "dcae/demo/startup/controller" "dcae/demo/startup/message-router" "dcae/dmaapbc" "dcae/operation" "dcae/operation/utils" "dcae/orch-dispatcher" "dcae/pgaas" "dcae/utils" "dcae/utils/buildtools"
+"demo"
+"ecompsdkos"
+"mso" "mso/chef-repo" "mso/docker-config" "mso/libs" "mso/mso-config"
+"ncomp" "ncomp/cdap" "ncomp/core" "ncomp/docker" "ncomp/maven" "ncomp/openstack" "ncomp/sirius" "ncomp/sirius/manager" "ncomp/utils"
+"policy/common" "policy/docker" "policy/drools-applications" "policy/drools-pdp" "policy/engine"
+"portal"
+"sdc" "sdc/sdc-distribution-client" "sdc/sdc-titan-cassandra" "sdc/sdc_common"
+"sdnc/adaptors" "sdnc/core" "sdnc/northbound" "sdnc/oam" "sdnc/plugins"
+"testsuite" "testsuite/heatbridge" "testsuite/properties" "testsuite/python-testing-utils"
+"ui" "ui/dmaapbc"
+"vid" "vid/asdcclient")
+
+function git_clone_or_pull {
+ local repo=$1
+ local folder="opt/$1"
+ local mvn_build=$2
+ if [ ! -d $folder ]; then
+ git clone https://git.onap.org/$repo $folder
+ fi
+ pushd $folder > /dev/null
+ git pull -q
+ if [ -f .gitreview ]; then
+ git review -s
+ fi
+ #if [ -f pom.xml ] && [ -n ${mvn_build+x} ]; then
+ #mvn clean -q install -U -DskipTests=true -Dmaven.test.skip=true -Dadditionalparam=-Xdoclint:none
+ #fi
+ popd > /dev/null
+}
+
+for repo in ${repos[@]}; do
+ echo "Working on $repo repository..."
+ git_clone_or_pull $repo
+done
diff --git a/bootstrap/vagrant-onap/lib/aai b/bootstrap/vagrant-onap/lib/aai
new file mode 100755
index 0000000..1cb9e37
--- /dev/null
+++ b/bootstrap/vagrant-onap/lib/aai
@@ -0,0 +1,92 @@
+#!/bin/bash
+
+set -o xtrace
+
+source /var/onap/functions
+
+hbase_version=1.2.3
+
+# pull_hbase_image() - Pull HBase container image from a Docker Registry Hub
+function pull_hbase_image {
+ is_package_installed docker-ce || install_docker
+ docker login -u $nexus_username -p $nexus_password $nexus_docker_repo
+ docker pull $nexus_docker_repo/aaidocker/aai-hbase-${hbase_version}
+}
+
+# install_hbase() - Install HBase Service
+function install_hbase {
+ docker rm -f hbase
+ pull_hbase_image
+ docker run -d --net=host --name="hbase" $nexus_docker_repo/aaidocker/aai-hbase-${hbase_version}
+}
+
+# install_ajsc() - Install ASJC Java service container
+function install_ajsc_aai {
+ cat <<EOL > /etc/ajsc-aai.conf
+AAI_REPO_PATH=r/aai
+AAI_CHEF_ENV=simpledemo
+AAI_CHEF_LOC=/var/chef/aai-data/environments
+docker_gitbranch=master
+EOL
+ docker rm -f aai-service
+ pull_openecomp_image ajsc-aai
+ docker run --env-file /etc/ajsc-aai.conf --name=aai-service --net=host -v /etc/ssl/certs/ca-certificates.crt:/etc/ssl/certs/ca-certificates.crt -it -d $nexus_docker_repo/openecomp/ajsc-aai:$docker_version
+}
+
+# install_model_loader() Install Model Loader
+function install_model_loader {
+ local src_folder=/opt/aai/model-loader/
+ cat <<EOL > /etc/model-loader.conf
+DISTR_CLIENT_ASDC_ADDRESS=${SDC_ADDRESS:-c2.vm1.sdc.simpledemo.openecomp.org:8443}
+DISTR_CLIENT_CONSUMER_GROUP=${UEB_CONSUMER_GROUP:-SDCGroup}
+DISTR_CLIENT_CONSUMER_ID=${UEB_CONSUMER_GROUP_ID:-UEB}
+DISTR_CLIENT_ENVIRONMENT_NAME=${dmaap_topic}
+DISTR_CLIENT_PASSWORD=${SDC_PASSWORD:-OBF:1ks51l8d1o3i1pcc1r2r1e211r391kls1pyj1z7u1njf1lx51go21hnj1y0k1mli1sop1k8o1j651vu91mxw1vun1mze1vv11j8x1k5i1sp11mjc1y161hlr1gm41m111nkj1z781pw31kku1r4p1e391r571pbm1o741l4x1ksp}
+DISTR_CLIENT_USER=${SDC_USER:-aai}
+
+APP_SERVER_BASE_URL=${APP_SERVER_URL:-https://c1.vm1.aai.simpledemo.openecomp.org:8443}
+APP_SERVER_AUTH_USER=${APP_USER:-ModelLoader}
+APP_SERVER_KEYSTORE_PASSWORD=OBF:1i9a1u2a1unz1lr61wn51wn11lss1unz1u301i6o
+APP_SERVER_AUTH_PASSWORD=${APP_PASSWORD:-OBF:1qvu1v2h1sov1sar1wfw1j7j1wg21saj1sov1v1x1qxw}
+EOL
+
+ docker rm -f model-loader-service
+ if [[ "$build_image" == "True" ]]; then
+ clone_repo aai/model-loader $src_folder
+ build_docker_image $src_folder
+ docker run --env-file /etc/model-loader.conf model-loader
+ else
+ pull_openecomp_image model-loader
+ docker run --name=model-loader-service -it -d --env-file /etc/model-loader.conf $nexus_docker_repo/openecomp/model-loader:$docker_version
+ fi
+}
+
+# wait_for_sdc() - Function that determines if SDC is up and running
+function wait_for_sdc {
+ if [[ -s "/opt/config/sdc_ip_addr.txt" ]]; then
+ SDC_IP_ADDR=$(cat /opt/config/sdc_ip_addr.txt)
+ else
+ SDC_IP_ADDR="10.0.3.1"
+ fi
+
+ # Run Health Check against SDC and verify that all five components are up
+ RES=$(curl http://$SDC_IP_ADDR:8181/sdc1/rest/healthCheck | grep -c "OK")
+ while [[ $RES -lt 5 ]]; do
+ RES=$(curl http://$SDC_IP_ADDR:8181/sdc1/rest/healthCheck | grep -c "OK")
+ done
+}
+
+# init_aai() - Function that initialize AAI services
+function init_aai {
+ mkdir -p /opt/openecomp/aai/logs
+ mkdir -p /opt/openecomp/aai/data
+
+ install_hbase
+
+ # Wait 3 minutes before instantiating the A&AI container
+ sleep 180
+
+ install_ajsc_aai
+ wait_for_sdc
+ install_model_loader
+}
diff --git a/bootstrap/vagrant-onap/lib/appc b/bootstrap/vagrant-onap/lib/appc
new file mode 100755
index 0000000..ffec841
--- /dev/null
+++ b/bootstrap/vagrant-onap/lib/appc
@@ -0,0 +1,27 @@
+#!/bin/bash
+
+set -o xtrace
+
+source /var/onap/sdnc
+
+# install_appc() - Function that clones and installs the APPC services from source code
+function install_appc {
+ local src_folder=/opt/appc
+ clone_repo appc/deployment $src_folder
+ if [[ "$build_image" == "True" ]]; then
+ build_sdnc_images
+ build_docker_image $src_folder/deployment/installation/appc docker
+ else
+ pull_openecomp_image appc-image openecomp/appc-image:latest
+ pull_openecomp_image dgbuilder-sdnc-image openecomp/dgbuilder-sdnc-image:latest
+ fi
+ pushd $src_folder
+ install_docker_compose
+ /opt/docker/docker-compose up -d
+ popd
+}
+
+# init_appc() - Function that initialize APPC services
+function init_appc {
+ install_appc
+}
diff --git a/bootstrap/vagrant-onap/lib/asserts b/bootstrap/vagrant-onap/lib/asserts
new file mode 100755
index 0000000..0e45538
--- /dev/null
+++ b/bootstrap/vagrant-onap/lib/asserts
@@ -0,0 +1,11 @@
+#!/bin/bash
+
+set -o xtrace
+
+# asserts_image() - Function that verifies if a specific image was created
+function asserts_image {
+ if [[ "$(docker images -q $1 2> /dev/null)" == "" ]]; then
+ echo "There is no $1 image"
+ exit 1
+ fi
+}
diff --git a/bootstrap/vagrant-onap/lib/commons b/bootstrap/vagrant-onap/lib/commons
new file mode 100755
index 0000000..783dc0b
--- /dev/null
+++ b/bootstrap/vagrant-onap/lib/commons
@@ -0,0 +1,28 @@
+#!/bin/bash
+
+set -o xtrace
+
+# update_repos() - Function that updates linux repositories
+function update_repos {
+ if [ -f /var/onap/files/sources.list ]; then
+ cp /var/onap/files/sources.list /etc/apt/sources.list
+ fi
+ apt-get update -y
+}
+
+# is_package_installed() - Function to tell if a package is installed
+function is_package_installed {
+ if [[ -z "$@" ]]; then
+ return 1
+ fi
+ dpkg -s "$@" > /dev/null 2> /dev/null
+}
+
+# install_package() - Install specific package if doesn't exist
+function install_package {
+ local package=$1
+ if ! is_package_installed $package; then
+ update_repos
+ apt-get install -y $package
+ fi
+}
diff --git a/bootstrap/vagrant-onap/lib/dcae b/bootstrap/vagrant-onap/lib/dcae
new file mode 100755
index 0000000..0f6e275
--- /dev/null
+++ b/bootstrap/vagrant-onap/lib/dcae
@@ -0,0 +1,103 @@
+#!/bin/bash
+
+set -o xtrace
+
+source /var/onap/functions
+source /var/onap/asserts
+
+# create_config_file() - Creates a configuration yaml file for the controller
+function create_config_file {
+ mkdir -p /opt/app/dcae-controller
+ cat > /opt/app/dcae-controller/config.yaml << EOL
+ZONE: $dcae_zone
+STATE: $dcae_state
+DCAE-VERSION: $artifacts_version
+HORIZON-URL: https://mycloud.rackspace.com/cloud/$tenant_id
+KEYSTONE-URL: https://identity.api.rackspacecloud.com/v2.0
+OPENSTACK-TENANT-ID: $tenant_id
+OPENSTACK-TENANT-NAME: OPEN-ECOMP
+OPENSTACK-REGION: $openstack_region
+OPENSTACK-PRIVATE-NETWORK: $openstack_private_network_name
+OPENSTACK-USER: $openstack_user
+OPENSTACK-PASSWORD: $openstack_password
+OPENSTACK-KEYNAME: ${key_name}${rand_str}_dcae
+OPENSTACK-PUBKEY: $pub_key
+
+NEXUS-URL-ROOT: $nexus_repo_root
+NEXUS-USER: $nexus_username
+NEXUS-PASSWORD: $nexus_password
+NEXUS-URL-SNAPSHOTS: $nexus_url_snapshots
+NEXUS-RAWURL: $nexus_repo
+
+DOCKER-REGISTRY: $nexus_docker_repo
+
+GIT-MR-REPO: http://gerrit.onap.org/r/dcae/demo/startup/message-router.git
+EOL
+}
+
+# compile_docker_image() - Function that clones, compiles and build a Docker image
+function compile_docker_image {
+ local repo=$1
+ local src_folder=$2
+ local name=$3
+ clone_repo dcae/dmaapbc $src_folder
+ compile_src $src_folder
+ pushd $src_folder
+ # TODO(electrocucaracha) Workaround for dmmapb images
+ sed -i '/LocalKey/d' Dockerfile
+ local docker_build="docker build -t $name -f ./Dockerfile ."
+ if [ $http_proxy ]; then
+ docker_build+=" --build-arg http_proxy=$http_proxy"
+ fi
+ if [ $https_proxy ]; then
+ docker_build+=" --build-arg https_proxy=$https_proxy"
+ fi
+ eval $docker_build
+ asserts_image $name
+ popd
+}
+
+# install_dcae() - Function that clones and installs the DCAE controller services from source code
+function install_dcae {
+ export MTU=$(/sbin/ifconfig | grep MTU | sed 's/.*MTU://' | sed 's/ .*//' | sort -n | head -1)
+ local src_folder=/opt/dcae-startup-vm-controller
+ clone_repo dcae/demo/startup/controller $src_folder
+ pushd $src_folder
+ install_docker_compose
+ if [[ "$build_image" == "True" ]]; then
+ install_docker
+ src_folder=/opt/dcae
+
+ compile_docker_image dcae/dmaapb $src_folder/dmaapbc openecomp/dcae-dmaapbc
+ compile_docker_image dcae/orch-dispatcher $src_folder/orch-dispatcher dcae/orch-dispatcher
+
+ clone_repo dcae/demo $src_folder/demo
+ compile_src $src_folder/demo
+ pushd $src_folder/demo
+ bash dcae-demo-controller/src/main/docker-build/build.sh
+ asserts_image dcae-controller
+ popd
+
+ clone_repo dcae/dcae-inventory $src_folder/dcae-inventory
+ compile_src $src_folder/dcae-inventory
+ build_docker_image $src_folder/dcae-inventory
+ asserts_image dcae-inventory
+
+ dcae_image=`docker images | grep dcae-controller | awk '{print $1 ":" $2}'`
+ sed -i "s|DOCKER-REGISTRY/openecomp/dcae-controller:DCAE-VERSION|$dcae_image|g" docker-compose.yml
+ sed -i "s|MTU|$MTU|g" docker-compose.yml
+ /opt/docker/docker-compose up -d
+ else
+ bash init.sh
+ install_package make
+ make up
+ fi
+
+ popd
+}
+
+# init_dcae() - Function that initialize DCAE Controller services
+function init_dcae {
+ create_config_file
+ install_dcae
+}
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
+}
diff --git a/bootstrap/vagrant-onap/lib/mr b/bootstrap/vagrant-onap/lib/mr
new file mode 100755
index 0000000..8b92bc9
--- /dev/null
+++ b/bootstrap/vagrant-onap/lib/mr
@@ -0,0 +1,18 @@
+#!/bin/bash
+
+set -o xtrace
+
+# install_message_router() - Downloads and configure message router source code
+function install_message_router {
+ local src_folder=/opt/dcae/message-router
+ clone_repo dcae/demo/startup/message-router $src_folder
+ pushd $src_folder
+ is_package_installed docker-ce || install_docker
+ bash deploy.sh
+ popd
+}
+
+# init_mr() - Function that initialize Message Router services
+function init_mr {
+ install_message_router
+}
diff --git a/bootstrap/vagrant-onap/lib/mso b/bootstrap/vagrant-onap/lib/mso
new file mode 100755
index 0000000..0cffbf0
--- /dev/null
+++ b/bootstrap/vagrant-onap/lib/mso
@@ -0,0 +1,84 @@
+#!/bin/bash
+
+set -o xtrace
+
+source /var/onap/functions
+
+# install_mso() - Installation of mso images
+function install_mso {
+ local src_folder=/opt/mso
+ if [[ "$build_image" == "True" ]]; then
+ clone_repo mso $src_folder
+ export GIT_NO_PROJECT=/opt/
+ build_docker_image $src_folder/packages/docker
+ fi
+}
+
+# install_mso_docker_config() - Download and install MSO Docker configuration project
+function install_mso_docker_config {
+ local src_folder=/opt/mso/docker-config
+ clone_repo mso/docker-config $src_folder
+ MSO_ENCRYPTION_KEY=$(cat /opt/mso/docker-config/encryption.key)
+ echo -n "$openstack_api_key" | openssl aes-128-ecb -e -K $MSO_ENCRYPTION_KEY -nosalt | xxd -c 256 -p > /opt/config/api_key.txt
+
+ # Deployments in OpenStack require a keystone file
+ if [ -e /opt/config/keystone.txt ]; then
+ KEYSTONE_URL=$(cat /opt/config/keystone.txt)
+ DCP_CLLI="DEFAULT_KEYSTONE"
+ AUTH_TYPE="USERNAME_PASSWORD"
+ else
+ KEYSTONE_URL="https://identity.api.rackspacecloud.com/v2.0"
+ DCP_CLLI="RAX_KEYSTONE"
+ AUTH_TYPE="RACKSPACE_APIKEY"
+ fi
+
+ # Update the MSO configuration file.
+ read -d '' MSO_CONFIG_UPDATES <<-EOF
+{
+"default_attributes":
+ {
+ "asdc-connections":
+ {
+ "asdc-controller1":
+ {
+ "environmentName": "$dmaap_topic"
+ }
+ },
+ "mso-po-adapter-config":
+ {
+ "identity_services":
+ [
+ {
+ "dcp_clli": "$DCP_CLLI",
+ "identity_url": "$KEYSTONE_URL",
+ "mso_id": "$openstack_username",
+ "mso_pass": "$openstack_password",
+ "admin_tenant": "service",
+ "member_role": "admin",
+ "tenant_metadata": "true",
+ "identity_server_type": "KEYSTONE",
+ "identity_authentication_type": "$AUTH_TYPE"
+ }
+ ]
+ }
+ }
+}
+EOF
+ export MSO_CONFIG_UPDATES
+ export MSO_DOCKER_IMAGE_VERSION=$docker_version
+
+ # Deploy the environment
+ pushd $src_folder
+ chmod +x deploy.sh
+ is_package_installed docker-ce || install_docker
+ install_docker_compose
+ # This script takes in input 2 nexus repos (the first one for the MSO image, the second one for mariadb)
+ ./deploy.sh $nexus_docker_repo $nexus_username $nexus_password $nexus_docker_repo $nexus_username $nexus_password
+ popd
+}
+
+# init_mso() - Function that initialize MSO services
+function init_mso {
+ install_mso
+ install_mso_docker_config
+}
diff --git a/bootstrap/vagrant-onap/lib/policy b/bootstrap/vagrant-onap/lib/policy
new file mode 100755
index 0000000..270022d
--- /dev/null
+++ b/bootstrap/vagrant-onap/lib/policy
@@ -0,0 +1,25 @@
+#!/bin/bash
+
+set -o xtrace
+
+# install_policy() - Function that clones and installs the Policy services from source code
+function install_policy {
+ local src_folder=/opt/policy
+ clone_repo policy/docker $src_folder
+ pushd $src_folder
+ chmod +x config/drools/drools-tweaks.sh
+ IP_ADDRESS=$(ifconfig eth0 | grep "inet addr" | tr -s ' ' | cut -d' ' -f3 | cut -d':' -f2)
+ echo $IP_ADDRESS > config/pe/ip_addr.txt
+ install_docker_compose
+ /opt/docker/docker-compose up -d
+ popd
+}
+
+# init_policy() - Function that initialize Policy services
+function init_policy {
+ pull_onap_image policy/policy-db onap/policy/policy-db:latest
+ pull_onap_image policy/policy-pe onap/policy/policy-pe:latest
+ pull_onap_image policy/policy-drools onap/policy/policy-drools:latest
+ pull_onap_image policy/policy-nexus onap/policy/policy-nexus:latest
+ install_policy
+}
diff --git a/bootstrap/vagrant-onap/lib/portal b/bootstrap/vagrant-onap/lib/portal
new file mode 100755
index 0000000..bd95593
--- /dev/null
+++ b/bootstrap/vagrant-onap/lib/portal
@@ -0,0 +1,60 @@
+#!/bin/bash
+
+set -o xtrace
+
+source /var/onap/functions
+
+# install_mariadb() - Pull and create a MariaDB container
+function install_mariadb {
+ is_package_installed docker-ce || install_docker
+ docker pull mariadb
+ docker create --name data_vol_portal -v /var/lib/mysql mariadb
+}
+
+# install_portal() - Function that pulls and install the source code of Portal
+function install_portal {
+ local src_folder=/opt/portal
+ clone_repo portal $src_folder
+ install_docker
+ docker rm -f ecompdb_portal
+ docker rm -f 1610-1
+ if [[ "$build_image" == "True" ]]; then
+ # Build locally
+ install_maven
+
+ clone_repo ecompsdkos $src_folder/ecompsdkos
+ clone_repo "ui/dmaapbc" $src_folder/dmaapbc
+ pushd $src_folder/deliveries
+ chmod +x *.sh
+ bash run.sh
+ popd
+ else
+ pull_openecomp_image portaldb ecompdb:portal
+ pull_openecomp_image portalapps ep:1610-1
+
+ chmod +x $src_folder/deliveries/new_start.sh
+ chmod +x $src_folder/deliveries/new_stop.sh
+ chmod +x $src_folder/deliveries/dbstart.sh
+ mkdir -p /PROJECT/OpenSource/UbuntuEP/logs
+ install_package unzip
+ unzip -o $src_folder/deliveries/etc.zip -d /PROJECT/OpenSource/UbuntuEP/
+
+ bash $src_folder/deliveries/dbstart.sh
+ bash $src_folder/deliveries/new_start.sh
+
+ sleep 180
+
+ if [ ! -e /opt/config/boot.txt ]; then
+ IP_ADDRESS=$(ifconfig eth0 | grep "inet addr" | tr -s ' ' | cut -d' ' -f3 | cut -d':' -f2)
+ install_package mysql-client
+ mysql -u root -p'Aa123456' -h $IP_ADDRESS < $src_folder/deliveries/Apps_Users_OnBoarding_Script.sql
+ echo "yes" > /opt/config/boot.txt
+ fi
+ fi
+}
+
+# init_portal() - Function that initialize Portal services
+function init_portal {
+ install_mariadb
+ install_portal
+}
diff --git a/bootstrap/vagrant-onap/lib/robot b/bootstrap/vagrant-onap/lib/robot
new file mode 100755
index 0000000..75a361f
--- /dev/null
+++ b/bootstrap/vagrant-onap/lib/robot
@@ -0,0 +1,31 @@
+#!/bin/bash
+
+set -o xtrace
+
+# install_testsuite_properties() - Download and install testsuite properties
+function install_testsuite_properties {
+ mkdir -p /opt/eteshare/config
+
+ local $src_folder=/opt/testsuite/properties
+ clone_repo testsuite/properties $src_folder
+ cp $src_folder/integration_* /opt/eteshare/config
+ cp $src_folder/vm_config2robot.sh /opt/eteshare/config
+ cp $src_folder/ete.sh /opt
+ cp $src_folderdemo.sh /opt
+
+ chmod +x /opt/ete.sh
+ chmod +x /opt/demo.sh
+}
+
+# run_testsuite_image() - Pull and run testsuite docker image
+function run_testsuite_image {
+ pull_openecomp_image testsuite
+ docker rm -f openecompete_container
+ docker run -d --name openecompete_container -v /opt/eteshare:/share -p 88:88 $nexus_docker_repo/openecomp/testsuite:$docker_version
+}
+
+# init_robot() - Function that initialize Robot services
+function init_robot {
+ install_testsuite_properties
+ run_testsuite_image
+}
diff --git a/bootstrap/vagrant-onap/lib/sdc b/bootstrap/vagrant-onap/lib/sdc
new file mode 100755
index 0000000..15787b0
--- /dev/null
+++ b/bootstrap/vagrant-onap/lib/sdc
@@ -0,0 +1,79 @@
+#!/bin/bash
+
+set -o xtrace
+
+# mount_external_partition() - Create partition and mount the external volume
+function mount_external_partition {
+ cat <<EOL > /tmp/asdc_ext_volume_partitions.txt
+# partition table of /dev/sdb
+unit: sectors
+
+/dev/sdb1 : start= 2048, size=209713152, Id=83
+/dev/sdb2 : start= 0, size= 0, Id= 0
+/dev/sdb3 : start= 0, size= 0, Id= 0
+/dev/sdb4 : start= 0, size= 0, Id= 0
+EOL
+ sfdisk --force /dev/sdb < /tmp/asdc_ext_volume_partitions.txt
+ mkfs -t ext4 /dev/sdb1
+ mkdir -p /data
+ mount /dev/sdb1 /data
+ echo "/dev/sdb1 /data ext4 errors=remount-ro,noatime,barrier=0 0 1" >> /etc/fstab
+}
+
+# init_data_folders() - Function that initialize the data folders
+function init_data_folders {
+ mkdir -p /data/environments
+ mkdir -p /data/scripts
+ mkdir -p /data/logs/BE
+ mkdir -p /data/logs/FE
+ chmod 777 /data
+ chmod 777 /data/logs/BE
+ chmod 777 /data/logs/FE
+}
+
+# setup_docker_aliases() - Function that setups the aliases required by sdc scripts
+function setup_docker_aliases {
+ cat <<EOL > /root/.bash_aliases
+alias dcls='/data/scripts/docker_clean.sh \$1'
+alias dlog='/data/scripts/docker_login.sh \$1'
+alias rund='/data/scripts/docker_run.sh'
+alias health='/data/scripts/docker_health.sh'
+EOL
+}
+
+# install_sdc() - Function that pull templates and executes
+function install_sdc {
+ IP_ADDRESS=$(ifconfig eth0 | grep "inet addr" | tr -s ' ' | cut -d' ' -f3 | cut -d':' -f2)
+ local ENV_NAME=$dmaap_topic
+ local MR_IP_ADDR='10.0.11.1'
+ local RELEASE=$docker_version
+ NEXUS_DOCKER_PORT=$(echo $nexus_docker_repo | cut -d':' -f2)
+ local src_folder=/opt/sdc
+ clone_repo sdc $src_folder
+ if [[ "$build_image" == "True" ]]; then
+ compile_src $src_folder
+ build_docker_image $src_folder/sdc-os-chef
+ fi
+ cp $src_folder/sdc-os-chef/environments/Template.json /data/environments
+ cp $src_folder/sdc-os-chef/scripts/docker_run.sh /data/scripts
+ cp $src_folder/sdc-os-chef/scripts/docker_health.sh /data/scripts
+ chmod +x /data/scripts/docker_run.sh
+ chmod +x /data/scripts/docker_health.sh
+
+ cat /data/environments/Template.json | sed "s/yyy/"$IP_ADDRESS"/g" > /data/environments/$ENV_NAME.json
+ sed -i "s/xxx/"$ENV_NAME"/g" /data/environments/$ENV_NAME.json
+ sed -i "s/\"ueb_url_list\":.*/\"ueb_url_list\": \""$MR_IP_ADDR","$MR_IP_ADDR"\",/g" /data/environments/$ENV_NAME.json
+ sed -i "s/\"fqdn\":.*/\"fqdn\": [\""$MR_IP_ADDR"\", \""$MR_IP_ADDR"\"]/g" /data/environments/$ENV_NAME.json
+
+ is_package_installed docker-ce || install_docker
+ docker login -u $nexus_username -p $nexus_password $nexus_docker_repo
+ bash /data/scripts/docker_run.sh -e $ENV_NAME -r $RELEASE -p $NEXUS_DOCKER_PORT
+}
+
+# init_sdc() - Function that initialize SDC services
+function init_sdc {
+ mount_external_partition
+ init_data_folders
+ setup_docker_aliases
+ install_sdc
+}
diff --git a/bootstrap/vagrant-onap/lib/sdnc b/bootstrap/vagrant-onap/lib/sdnc
new file mode 100755
index 0000000..b3c64f9
--- /dev/null
+++ b/bootstrap/vagrant-onap/lib/sdnc
@@ -0,0 +1,38 @@
+#!/bin/bash
+
+set -o xtrace
+
+# build_sdnc_images() - Builds SDNC images from source code
+function build_sdnc_images {
+ local src_folder=/opt/sdnc/oam
+ clone_repo sdnc/oam $src_folder
+ build_docker_image $src_folder/installation/ubuntu
+ /var/lib/dpkg/info/ca-certificates-java.postinst configure
+ build_docker_image $src_folder/installation/sdnc
+ build_docker_image $src_folder/installation/admportal
+ build_docker_image $src_folder/installation/dgbuilder
+}
+
+# install_sdnc() - Download and install SDNC services from source code
+function install_sdnc {
+ install_package unzip
+ local src_folder=/opt/sdnc/oam
+ export MTU=$(/sbin/ifconfig | grep MTU | sed 's/.*MTU://' | sed 's/ .*//' | sort -n | head -1)
+ clone_repo sdnc/oam $src_folder
+ if [[ "$build_image" == "True" ]]; then
+ build_sdnc_images
+ else
+ pull_openecomp_image sdnc-image openecomp/sdnc-image:latest
+ pull_openecomp_image admportal-sdnc-image openecomp/admportal-sdnc-image:latest
+ pull_openecomp_image dgbuilder-sdnc-image openecomp/dgbuilder-sdnc-image:latest
+ fi
+ pushd $src_folder/installation/src/main/yaml
+ install_docker_compose
+ /opt/docker/docker-compose up -d
+ popd
+}
+
+# init_sdnc() - Function that initialize SDNC services
+function init_sdnc {
+ install_sdnc
+}
diff --git a/bootstrap/vagrant-onap/lib/vid b/bootstrap/vagrant-onap/lib/vid
new file mode 100755
index 0000000..25d2c68
--- /dev/null
+++ b/bootstrap/vagrant-onap/lib/vid
@@ -0,0 +1,29 @@
+#!/bin/bash
+
+set -o xtrace
+
+# pull_mariadb_image() - Pull MariaDB container image from a Docker Registry Hub
+function pull_mariadb_image {
+ is_package_installed docker-ce || install_docker
+ docker login -u $nexus_username -p $nexus_password $nexus_docker_repo
+ docker pull $nexus_docker_repo/library/mariadb:10
+}
+
+# install_vid() - Download and configure Vid source code
+function install_vid {
+ local src_folder=/opt/vid
+ clone_repo vid $src_folder
+ pull_openecomp_image vid
+ pull_mariadb_image
+
+ docker rm -f vid-mariadb
+ docker rm -f vid-server
+
+ docker run --name vid-mariadb -e MYSQL_DATABASE=vid_openecomp -e MYSQL_USER=vidadmin -e MYSQL_PASSWORD=Kp8bJ4SXszM0WXlhak3eHlcse2gAw84vaoGGmJvUy2U -e MYSQL_ROOT_PASSWORD=LF+tp_1WqgSY -v /opt/vid/lf_config/vid-my.cnf:/etc/mysql/my.cnf -v /opt/vid/lf_config/vid-pre-init.sql:/docker-entrypoint-initdb.d/vid-pre-init.sql -v /var/lib/mysql -d mariadb:10
+ docker run -e VID_MYSQL_DBNAME=vid_openecomp -e VID_MYSQL_PASS=Kp8bJ4SXszM0WXlhak3eHlcse2gAw84vaoGGmJvUy2U --name vid-server -p 8080:8080 --link vid-mariadb:vid-mariadb-docker-instance -d $nexus_docker_repo/openecomp/vid:$docker_version
+}
+
+# init_vid() - Function that initialize Vid services
+function init_vid {
+ install_vid
+}
diff --git a/bootstrap/vagrant-onap/postinstall.sh b/bootstrap/vagrant-onap/postinstall.sh
new file mode 100755
index 0000000..b0e64ad
--- /dev/null
+++ b/bootstrap/vagrant-onap/postinstall.sh
@@ -0,0 +1,16 @@
+#!/bin/bash
+
+set -o xtrace
+
+source /var/onap/functions
+
+create_configuration_files
+install_dev_tools
+install_java
+configure_bind
+
+for serv in $@; do
+ source /var/onap/${serv}
+ configure_service ${serv}_serv.sh
+ init_${serv}
+done
diff --git a/bootstrap/vagrant-onap/tox.ini b/bootstrap/vagrant-onap/tox.ini
new file mode 100644
index 0000000..141c151
--- /dev/null
+++ b/bootstrap/vagrant-onap/tox.ini
@@ -0,0 +1,26 @@
+[tox]
+minversion = 1.6
+skipsdist = True
+envlist = bashate
+
+[testenv]
+passenv = http_proxy HTTP_PROXY https_proxy HTTPS_PROXY no_proxy NO_PROXY
+usedevelop = False
+install_command = pip install {opts} {packages}
+
+[testenv:bashate]
+# if you want to test out some changes you have made to bashate
+# against devstack, just set BASHATE_INSTALL_PATH=/path/... to your
+# modified bashate tree
+deps =
+ {env:BASHATE_INSTALL_PATH:bashate==0.5.1}
+whitelist_externals = bash
+commands = bash -c "find {toxinidir}/{scripts,lib} \
+ -not \( -type f -name *.swp -prune \) \
+ -not \( -type f -name *.xml -prune \) \
+ -type f \
+# E005 file does not begin with #! or have a .sh prefix
+# E006 check for lines longer than 79 columns
+# E042 local declaration hides errors
+# E043 Arithmetic compound has inconsistent return semantics
+ -print0 | xargs -0 bashate -v -iE006 -eE005,E042,E043"