Merge "Remove unused import from lib/aai"
[integration.git] / bootstrap / vagrant-onap / lib / aai
1 #!/bin/bash
2
3 set -o xtrace
4
5 source /var/onap/functions
6
7 hbase_version=1.2.3
8 src_folder=$git_src_folder/aai
9 aai_repos=("aai-common" "aai-config" "aai-data" "aai-service" "data-router" "logging-service" "model-loader" "resources" "rest-client" "router-core" "search-data-service" "test-config" "traversal" "sparky-fe" "sparky-be")
10
11 # install_hadoop() - Function that installs Hadoop
12 function install_hadoop {
13     local release=titan
14     local version=1.0.0
15     local filename=$release-$version-hadoop1
16     local dest_folder=/opt/hadoop/current
17
18     if [ ! -d $dest_folder ]; then
19         curl http://s3.thinkaurelius.com/downloads/$release/$filename.zip -o /tmp/${filename}.zip
20         install_package unzip
21         mkdir -p $dest_folder
22         unzip /tmp/${filename}.zip -d $dest_folder
23         pushd $dest_folder/${filename}
24         # Change commitlog_directory and data_file_directories values (https://stackoverflow.com/a/26856246/1707651)
25         sed -i "s|db/cassandra/data|/tmp/data|g" conf/cassandra/cassandra.yaml
26         sed -i "s|db/cassandra/commitlog|/tmp/commitlog|g" conf/cassandra/cassandra.yaml
27
28         install_java
29         ./bin/titan.sh start
30         popd
31     fi
32 }
33
34 # install_haproxy() - Function that install HAProxy
35 function install_haproxy {
36     install_package haproxy
37     sed -i "s|ENABLED=0|ENABLED=1|g" /etc/default/haproxy
38 #    cp /var/onap/files/haproxy.cfg /etc/haproxy/
39     cp /var/onap/files/aai.pem /etc/ssl/private/
40     chmod 640 /etc/ssl/private/aai.pem
41     chown root:ssl-cert /etc/ssl/private/aai.pem
42     mkdir /usr/local/etc/haproxy
43     echo "127.0.0.1 localhost aai-traversal.api.simpledemo.openecomp.org aai-resources.api.simpledemo.openecomp.org" >> /etc/hosts
44
45     service haproxy restart
46 }
47
48 # clone_all_aai_repos() - Function that clones AAI source repo.
49 function clone_all_aai_repos {
50     for dirc in ${aai_repos[@]}; do
51         clone_repo aai/$dirc $src_folder/$dirc
52     done
53 }
54
55 # compile_aai_repos() - Function that compiles AAI source repo.
56 function compile_aai_repos {
57     local repos=("aai-common" "resources" "logging-service" "traversal")
58     if [[ "$compile_repo" == "True" ]]; then
59         repos=("${aai_repos[@]}")
60     fi
61
62     for dirc in ${repos[@]}; do
63         compile_src $src_folder/$dirc
64     done
65 }
66
67 # setup_titan() - Function that configures AAI services to connect to Hadoop Titan
68 function setup_titan {
69     local $subdirectory=bundleconfig-local/etc/appprops
70     install_python_package crudini
71
72     for dirc in resources/aai-resources traversal/aai-travers; do
73         for file in titan-cached.properties titan-realtime.properties; do
74             crudini --set --existing $src_folder/$dirc/$subdirectory/$file "" storage.backend cassandra
75             crudini --set --existing $src_folder/$dirc/$subdirectory/$file "" storage.hostname localhost
76         done
77     done
78
79     # Addthe schema to the local isntance
80     pushd $src_folder
81     install_java
82     java -DAJSC_HOME=$src_folder/resources/aai-resources -DBUNDLECONFIG_DIR="bundleconfig-local" -cp aai-common/aai-core/target/aai-core-1.1.0-SNAPSHOT.jar:resources/aai-resources/target/aai-resources.jar:resources/aai-resources/target/userjars/* org.openecomp.aai.dbgen.GenTester
83     popd
84 }
85
86 # start_aai_microservices() - Function that starts AAI microservices
87 function start_aai_microservices {
88     MAVEN_OPTS="-Xms1024m -Xmx5120m -XX:PermSize=2024m -Xdebug -Xnoagent -Djava.compiler=NONE -Xrunjdwp:transport=dt_socket,address=9446,server=y,suspend=n"
89     for svc in resources traversal; do
90         pushd $src_folder/resources
91         mvn -P runAjsc
92         popd
93     done
94 }
95
96 # _pull_hbase_image() - Pull HBase container image from a Docker Registry Hub
97 function _pull_hbase_image {
98     docker_openecomp_login
99     docker pull $nexus_docker_repo/aaidocker/aai-hbase-${hbase_version}
100 }
101
102 # install_hbase() - Install HBase Service
103 function install_hbase {
104     docker rm -f hbase
105     _pull_hbase_image
106     docker run -d --net=host --name="hbase" $nexus_docker_repo/aaidocker/aai-hbase-${hbase_version}
107 }
108
109 # install_ajsc() - Install ASJC Java service container
110 function install_ajsc_aai {
111     cat <<EOL > /etc/ajsc-aai.conf
112 AAI_REPO_PATH=r/aai
113 AAI_CHEF_ENV=simpledemo
114 AAI_CHEF_LOC=/var/chef/aai-data/environments
115 docker_gitbranch=master
116 EOL
117     docker rm -f aai-service
118     if [[ "$build_image" == "True" ]]; then
119         build_docker_image $src_folder/aai-service/ajsc-aai
120     else
121         pull_openecomp_image ajsc-aai
122     fi
123
124     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
125 }
126
127 # install_model_loader() Install Model Loader 
128 function install_model_loader {
129     local src_folder=/opt/aai/model-loader/
130     cat <<EOL > /etc/model-loader.conf
131 DISTR_CLIENT_ASDC_ADDRESS=${SDC_ADDRESS:-c2.vm1.sdc.simpledemo.openecomp.org:8443}
132 DISTR_CLIENT_CONSUMER_GROUP=${UEB_CONSUMER_GROUP:-SDCGroup}
133 DISTR_CLIENT_CONSUMER_ID=${UEB_CONSUMER_GROUP_ID:-UEB}
134 DISTR_CLIENT_ENVIRONMENT_NAME=${dmaap_topic}
135 DISTR_CLIENT_PASSWORD=${SDC_PASSWORD:-OBF:1ks51l8d1o3i1pcc1r2r1e211r391kls1pyj1z7u1njf1lx51go21hnj1y0k1mli1sop1k8o1j651vu91mxw1vun1mze1vv11j8x1k5i1sp11mjc1y161hlr1gm41m111nkj1z781pw31kku1r4p1e391r571pbm1o741l4x1ksp}
136 DISTR_CLIENT_USER=${SDC_USER:-aai}
137                      
138 APP_SERVER_BASE_URL=${APP_SERVER_URL:-https://c1.vm1.aai.simpledemo.openecomp.org:8443}
139 APP_SERVER_AUTH_USER=${APP_USER:-ModelLoader}
140 APP_SERVER_KEYSTORE_PASSWORD=OBF:1i9a1u2a1unz1lr61wn51wn11lss1unz1u301i6o
141 APP_SERVER_AUTH_PASSWORD=${APP_PASSWORD:-OBF:1qvu1v2h1sov1sar1wfw1j7j1wg21saj1sov1v1x1qxw}
142 EOL
143
144     ARGS=""
145
146     docker rm -f model-loader-service
147     if [[ "$build_image" == "True" ]]; then
148         clone_repo aai/model-loader $src_folder
149         build_docker_image $src_folder
150         ARGS+="--env-file /etc/model-loader.conf model-loader"
151     else
152         pull_openecomp_image model-loader
153         ARGS+="--name=model-loader-service -it -d --env-file /etc/model-loader.conf $nexus_docker_repo/openecomp/model-loader:$docker_version"
154     fi
155     docker run ${ARGS}
156 }
157
158 # _wait_for_sdc() - Function that determines if SDC is up and running
159 function _wait_for_sdc {
160     if [[ -s "/opt/config/sdc_ip_addr.txt" ]]; then
161         SDC_IP_ADDR=$(cat /opt/config/sdc_ip_addr.txt)
162     else
163         SDC_IP_ADDR="10.0.3.1"
164     fi
165
166      # Run Health Check against SDC and verify that all five components are up
167     RES=$(curl http://$SDC_IP_ADDR:8181/sdc1/rest/healthCheck | grep -c "OK")
168     while [[ $RES -lt 5 ]]; do
169         RES=$(curl http://$SDC_IP_ADDR:8181/sdc1/rest/healthCheck | grep -c "OK")
170     done
171 }
172
173 # init_aai() - Function that initialize AAI services
174 function init_aai {
175     install_hadoop
176     install_haproxy
177
178     clone_all_aai_repos
179     compile_aai_repos
180
181     setup_titan
182     start_aai_microservices
183
184     mkdir -p /opt/openecomp/aai/logs
185     mkdir -p /opt/openecomp/aai/data
186
187     install_hbase
188
189     # Wait 3 minutes before instantiating the A&AI container
190     sleep 180
191
192     install_ajsc_aai
193     _wait_for_sdc
194     install_model_loader
195 }