Add cli to pmdictionary validation
[vnfsdk/refrepo.git] / vnfmarket-be / deployment / install / vtp_install.sh
1 #!/bin/bash
2
3 #*******************************************************************************
4 # Copyright 2019 Huawei Technologies Co., Ltd.
5 #
6 # Licensed under the Apache License, Version 2.0 (the "License");
7 # you may not use this file except in compliance with the License.
8 # You may obtain a copy of the License at
9 #
10 #     http://www.apache.org/licenses/LICENSE-2.0
11 #
12 # Unless required by applicable law or agreed to in writing, software
13 # distributed under the License is distributed on an "AS IS" BASIS,
14 # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15 # See the License for the specific language governing permissions and
16 # limitations under the License.
17 #*******************************************************************************
18 # VTP Installation script supported on Ubuntu 16.04 64 bit
19 #
20 #./vtp_install.sh --download      : It will download all required artifacts into /opt/vtp_stage
21 #./vtp_install.sh --install       : It will install VTP (/opt/controller) and CLI (/opt/oclip)
22 #./vtp_install.sh --start         : It will start VTP controller as tomcat service and CLI as oclip service
23 #./vtp_install.sh --verify        : It will verify the setup is done properly by running some test cases.
24 #./vtp_install.sh --uninstall     : It will stop and uninstall the VTP
25 #./vtp_install.sh --clean         : It will remove the downloaded artifacts
26
27 #Customize the download URL as below
28 #export OCLIP_DOWNLOAD_URL="https://nexus.onap.org/content/repositories/snapshots/org/onap/cli/cli-zip/4.0.0-SNAPSHOT/cli-zip-4.0.0-20190904.095516-170.zip"
29 #export VTP_DOWNLOAD_URL="https://nexus.onap.org/content/repositories/snapshots/org/onap/vnfsdk/refrepo/vnf-sdk-marketplace/1.3.3-SNAPSHOT/vnf-sdk-marketplace-1.3.3-20190903.092849-18.war"
30 #export CSAR_VALIDATE_DOWNLOAD_URL="https://nexus.onap.org/content/repositories/snapshots/org/onap/vnfsdk/validation/csarvalidation-deployment/1.2.2-SNAPSHOT/csarvalidation-deployment-1.2.2-20190904.082836-6.zip"
31 #export CSAR_VALIDATE_JAR_DOWNLOAD_URL="https://nexus.onap.org/content/repositories/snapshots/org/onap/vnfsdk/validation/validation-csar/1.2.2-SNAPSHOT/validation-csar-1.2.2-20190904.082829-6.jar"
32
33 if [ -z "$OCLIP_DOWNLOAD_URL" ]
34 then
35     export OCLIP_DOWNLOAD_URL="https://nexus.onap.org/service/local/artifact/maven/redirect?r=releases&g=org.onap.cli&a=cli-zip&e=zip&v=LATEST"
36 fi
37
38 if [ -z "$VTP_DOWNLOAD_URL" ]
39 then
40     export VTP_DOWNLOAD_URL="https://nexus.onap.org/service/local/artifact/maven/redirect?r=releases&g=org.onap.vnfsdk.refrepo&a=vnf-sdk-marketplace&e=war&v=LATEST"
41 fi
42
43 if [ -z "$CSAR_VALIDATE_DOWNLOAD_URL" ]
44 then
45     export CSAR_VALIDATE_DOWNLOAD_URL="https://nexus.onap.org/service/local/artifact/maven/redirect?r=releases&g=org.onap.vnfsdk.validation&a=csarvalidation-deployment&e=zip&v=LATEST"
46 fi
47
48 if [ -z "$CSAR_VALIDATE_JAR_DOWNLOAD_URL" ]
49 then
50     export CSAR_VALIDATE_JAR_DOWNLOAD_URL="https://nexus.onap.org/service/local/artifact/maven/redirect?r=releases&g=org.onap.vnfsdk.validation&a=validation-csar&e=jar&v=LATEST"
51 fi
52
53 export TOMCAT8_DOWNLOAD_URL="https://archive.apache.org/dist/tomcat/tomcat-8/v8.5.30/bin/apache-tomcat-8.5.30.tar.gz"
54 export SAMPLE_VTP_CSAR="https://github.com/onap/vnfsdk-validation/raw/master/csarvalidation/src/test/resources/VoLTE.csar"
55 #export VVP_GITHUB="https://github.com/onap/vvp-validation-scripts"
56 #export SAMPLE_VTP_HOT="https://git.openstack.org/cgit/openstack/heat-templates/plain/hot/hello_world.yaml"
57
58 export VTP_STAGE_DIR=/opt/vtp_stage
59 export OPEN_CLI_HOME=/opt/oclip
60 export PATH=$OPEN_CLI_HOME/bin:$PATH
61 export CATALINA_HOME=/opt/controller
62 export JAVA_HOME=/usr/lib/jvm/java-11-openjdk-amd64/
63 #export ONAP_VVP_HOME=$VTP_STAGE_DIR/vvp-validation-scripts/ice_validator
64 export VTP_TRACK_MARK=+++++++++++++++++++++++++++++++++++
65
66 #init.d or systemd
67 if [ -z "$SERVICE_MODE" ]
68 then
69     export SERVICE_MODE=systemd
70 fi
71
72 function vtp_download() {
73     echo $VTP_TRACK_MARK Downloading VTP binaries and setup the dependencies ...
74
75     apt-get install -y tar wget unzip git python2.7 #python3 python3-pip
76     #pip3 install --upgrade pip
77
78     mkdir -p $VTP_STAGE_DIR
79
80     if [ ! -f $VTP_STAGE_DIR/CLI.zip ]
81     then
82         wget -O $VTP_STAGE_DIR/CLI.zip $OCLIP_DOWNLOAD_URL
83     else
84         echo $VTP_TRACK_MARK $OCLIP_DOWNLOAD_URL already downloded
85     fi
86
87     if [ ! -f $VTP_STAGE_DIR/CSAR-VALIDATE.zip ]
88     then
89         wget -O $VTP_STAGE_DIR/CSAR-VALIDATE.zip $CSAR_VALIDATE_DOWNLOAD_URL
90         wget -O $VTP_STAGE_DIR/CSAR.csar $SAMPLE_VTP_CSAR
91         wget -O $VTP_STAGE_DIR/csar-validate.jar $CSAR_VALIDATE_JAR_DOWNLOAD_URL
92     else
93         echo $VTP_TRACK_MARK $CSAR_VALIDATE_DOWNLOAD_URL already downloded
94     fi
95
96     if [ ! -f $VTP_STAGE_DIR/TOMCAT.tar.gz ]
97     then
98         wget -O $VTP_STAGE_DIR/TOMCAT.tar.gz $TOMCAT8_DOWNLOAD_URL
99     else
100         echo $VTP_TRACK_MARK $TOMCAT8_DOWNLOAD_URL already downloded
101     fi
102
103     if [ ! -f $VTP_STAGE_DIR/VTP.zip ]
104     then
105         wget -O $VTP_STAGE_DIR/VTP.zip $VTP_DOWNLOAD_URL
106     else
107         echo $VTP_TRACK_MARK $VTP_DOWNLOAD_URL already downloded
108     fi
109
110 #    if [ ! -d $VTP_STAGE_DIR/vvp-validation-scripts ]
111 #    then
112 #        git clone $VVP_GITHUB $VTP_STAGE_DIR/vvp-validation-scripts
113 #        git checkout casablanca
114 #        mkdir -p $VTP_STAGE_DIR/HOT
115 #        wget -O $VTP_STAGE_DIR/HOT/HOT.yaml $SAMPLE_VTP_HOT
116 #    else
117 #        echo $VTP_TRACK_MARK $VTP_DOWNLOAD_URL already cloned
118 #    fi
119
120     if [ ! -d $JAVA_HOME ]
121     then
122         apt-get install -y openjdk-11-jre
123     else
124         echo $VTP_TRACK_MARK JAVA already installed
125     fi
126 }
127
128 function vtp_backend_install() {
129     if [ ! -f $OPEN_CLI_HOME/bin/oclip.sh ]
130     then
131         echo $VTP_TRACK_MARK Installing VTP Backend...
132
133         mkdir -p $OPEN_CLI_HOME
134         unzip $VTP_STAGE_DIR/CLI.zip -d $OPEN_CLI_HOME
135         ln -s $OPEN_CLI_HOME/bin/oclip.sh /usr/bin/oclip
136
137         echo $VTP_TRACK_MARK Configuring VTP Backend...
138
139         if [[ $SERVICE_MODE == 'systemd' ]]
140         then
141             cp $OPEN_CLI_HOME/conf/oclip.service /etc/systemd/system
142             systemctl daemon-reload
143             systemctl status oclip | cat
144         else
145             echo export OPEN_CLI_HOME=$OPEN_CLI_HOME > $OPEN_CLI_HOME/bin/oclip-grpc-service.sh
146             echo  $OPEN_CLI_HOME/bin/oclip-grpc-server.sh>> $OPEN_CLI_HOME/bin/oclip-grpc-service.sh
147             chmod +x $OPEN_CLI_HOME/bin/oclip-grpc-service.sh
148             cp $OPEN_CLI_HOME/conf/oclip-service.sh /etc/init.d/oclip-grpc && update-rc.d oclip-grpc defaults
149         fi
150
151     else
152         echo "VTP Backend already installed"
153     fi
154 }
155
156 function vtp_csar_validation_install() {
157     if [ ! -f $OPEN_CLI_HOME/lib/csar-validate.jar ]
158     then
159         echo "$VTP_TRACK_MARK Installing CSAR Validation Test cases (TOSCA & HEAT)"
160         mkdir -p $VTP_STAGE_DIR/CSAR-VALIDATE
161         unzip $VTP_STAGE_DIR/CSAR-VALIDATE.zip -d $VTP_STAGE_DIR/CSAR-VALIDATE
162         cp $VTP_STAGE_DIR/csar-validate.jar $OPEN_CLI_HOME/lib
163         cp $VTP_STAGE_DIR/CSAR-VALIDATE/commons-lang3*.jar $OPEN_CLI_HOME/lib
164         cp $VTP_STAGE_DIR/CSAR-VALIDATE/bcpkix-jdk15on-1.61.jar $OPEN_CLI_HOME/lib
165         cp $VTP_STAGE_DIR/CSAR-VALIDATE/bcprov-jdk15on-1.61.jar $OPEN_CLI_HOME/lib
166         cp $VTP_STAGE_DIR/CSAR-VALIDATE/gson-*.jar $VTP_INSTALL_DIR/lib/
167         cp $VTP_STAGE_DIR/CSAR-VALIDATE/snakeyaml-*.jar $OPEN_CLI_HOME/lib
168         cp $VTP_STAGE_DIR/CSAR-VALIDATE/validation-csar*.jar $OPEN_CLI_HOME/lib
169         cp $VTP_STAGE_DIR/CSAR-VALIDATE/validation-pmdictionary*.jar $OPEN_CLI_HOME/lib
170     else
171         echo "CSAR Validation Test cases (TOSCA & HEAT) already installed"
172     fi
173 }
174
175 function vtp_controller_install() {
176     if [ ! -d $CATALINA_HOME ]
177     then
178         echo $VTP_TRACK_MARK Installing Tomcat 8.5.3 ...
179         mkdir -p $CATALINA_HOME
180         tar --strip-components=1 -xf $VTP_STAGE_DIR/TOMCAT.tar.gz -C $CATALINA_HOME
181         rm -rf $CATALINA_HOME/webapps
182         mkdir -p $CATALINA_HOME/webapps/ROOT
183
184         unzip $VTP_STAGE_DIR/VTP.zip -d $CATALINA_HOME/webapps/ROOT
185         echo 'export CATALINA_OPTS="$CATALINA_OPTS -Xms64m -Xmx256m -XX:MaxPermSize=64m"' > $CATALINA_HOME/bin/setenv.sh
186         echo 'export JAVA_OPTS="$JAVA_OPTS -Djava.security.egd=file:/dev/./urandom"' >> $CATALINA_HOME/bin/setenv.sh
187     else
188         echo "VTP Controller already installed"
189     fi
190 }
191
192 function vtp_start() {
193     echo $VTP_TRACK_MARK Starting VTP Backend...
194     if [[ $SERVICE_MODE == 'systemd' ]]
195     then
196         systemctl start oclip
197         systemctl status oclip | cat
198     else
199         service oclip-grpc start
200     fi
201
202     echo $VTP_TRACK_MARK Starting VTP Controller...
203     $CATALINA_HOME/bin/startup.sh
204 }
205
206 function vtp_stop() {
207     echo $VTP_TRACK_MARK Stoping VTP Backend...
208     if [[ $SERVICE_MODE == 'systemd' ]]
209     then
210        systemctl stop oclip | cat
211        systemctl status oclip | cat
212     else
213         service oclip-grpc stop
214     fi
215
216     for pid in `ps -aef | grep java | awk '{print $2}'`; do  kill -9 $pid; done
217
218     echo $VTP_TRACK_MARK Stoping VTP Controller...
219     $CATALINA_HOME/bin/shutdown.sh
220 }
221
222 function vtp_purge() {
223     #Stop services
224     vtp_stop
225
226     #Stop tracking
227     jobs -p | xargs kill -9
228
229     echo $VTP_TRACK_MARK Purging VTP...
230     rm -rf $OPEN_CLI_HOME
231     rm -rf $CATALINA_HOME
232     rm -rf $VTP_STAGE_DIR/CSAR-VALIDATE
233
234     rm -f /etc/systemd/system/oclip.service
235     systemctl daemon-reload | cat
236     rm -f /etc/init.d/oclip-grpc
237
238     #vtp_vvp_uninstall
239 }
240
241 function vtp_trace() {
242     tailf $CATALINA_HOME/logs/catalina.out &
243     tailf $OPEN_CLI_HOME/logs/open-cli.log &
244 }
245
246 function vtp_vvp_install() {
247     echo $VTP_TRACK_MARK Installing VVP scripts
248     _CWD=`pwd`
249     cd $VTP_STAGE_DIR/vvp-validation-scripts
250     pip install -r requirements.txt
251     cd $_CWD
252 }
253
254 function vtp_vvp_uninstall() {
255     echo $VTP_TRACK_MARK Uninstalling VVP scripts
256     _CWD=`pwd`
257     cd $VTP_STAGE_DIR/vvp-validation-scripts
258     pip uninstall -y -r requirements.txt
259     cd $_CWD
260 }
261
262 function vtp_sample_scenario_install() {
263     echo $VTP_TRACK_MARK Installing sample scenarios...
264     mkdir -p $OPEN_CLI_HOME/open-cli-schema/sample-scenarios
265     cp -r $CATALINA_HOME/webapps/ROOT/WEB-INF/classes/sample-vtp-scenarios/open-cli-schema/ $OPEN_CLI_HOME/open-cli-schema/sample-scenarios
266 }
267
268 function vtp_test() {
269     echo $VTP_TRACK_MARK Check the CSAR validation
270     oclip --product onap-dublin csar-validate --csar $VTP_STAGE_DIR/CSAR.csar
271     oclip --product onap-dublin vnf-tosca-provision --help
272     oclip --product onap-dublin --request-id test vnf-tosca-provision --mode checkup --vsp $VTP_STAGE_DIR/CSAR.csar --vnf-csar $VTP_STAGE_DIR/CSAR.csar --ns-csar $VTP_STAGE_DIR/CSAR.csar --vnfm-driver hwvnfmdriver --vnf-name test --vnf-vendor-name test
273
274     #echo $VTP_TRACK_MARK Check the HOT validation
275     #oclip --product onap-vtp hot-validate --hot-folder $VTP_STAGE_DIR/HOT --format json
276
277     echo $VTP_TRACK_MARK Check the VTP Controller
278     curl -X GET http://localhost:8080/onapapi/vnfsdk-marketplace/v1/vtp/scenarios
279     curl -X GET http://localhost:8080/onapapi/vnfsdk-marketplace/v1/vtp/scenarios/onap-dublin/testsuites
280     echo ..... Happy VTPing ......
281 }
282
283 function vtp_install() {
284     vtp_download
285     vtp_backend_install
286     vtp_controller_install
287     vtp_csar_validation_install
288     #vtp_vvp_install
289     vtp_sample_scenario_install
290 }
291
292 function vtp_setup() {
293     vtp_install
294     vtp_start
295     vtp_test
296 }
297
298 if [[ $1 == '--install' ]]
299 then
300     vtp_install
301 elif [[ $1 == '--download' ]]
302 then
303     vtp_download
304 elif [[ $1 == '--setup' ]]
305 then
306     vtp_setup
307 elif [[ $1 == '--uninstall' ]]
308 then
309     vtp_purge
310 elif [[ $1 == '--stop' ]]
311 then
312     vtp_stop
313 elif [[ $1 == '--start' ]]
314 then
315     vtp_start
316 elif [[ $1 == '--clean' ]]
317 then
318     rm -rf $VTP_STAGE_DIR
319 elif [[ $1 == '--verify' ]]
320 then
321     vtp_test
322 else
323     echo "$0 [ --install | --uninstall | --start | --stop | --verify | --download | --clean]"
324     echo "--download      : It will download all required artifacts into /opt/vtp_stage"
325     echo "--install       : It will install VTP (/opt/controller) and CLI (/opt/oclip)"
326     echo "--start         : It will start VTP controller as tomcat service and CLI as oclip service"
327     echo "--verify        : It will verify the setup is done properly by running some test cases"
328     echo "--uninstall     : It will stop and uninstall the VTP"
329     echo "--clean         : It will remove the downloaded artifacts"
330     echo
331     echo "Customize the download URL as below from latest snapshot or release onap repository"
332     echo "export OCLIP_DOWNLOAD_URL=\"https://nexus.onap.org/content/repositories/snapshots/org/onap/cli/cli-zip/4.0.0-SNAPSHOT/cli-zip-4.0.0-20190904.095516-170.zip\""
333     echo "export VTP_DOWNLOAD_URL=\"https://nexus.onap.org/content/repositories/snapshots/org/onap/vnfsdk/refrepo/vnf-sdk-marketplace/1.3.3-SNAPSHOT/vnf-sdk-marketplace-1.3.3-20190903.092849-18.war\""
334     echo "export CSAR_VALIDATE_DOWNLOAD_URL=\"https://nexus.onap.org/content/repositories/snapshots/org/onap/vnfsdk/validation/csarvalidation-deployment/1.2.2-SNAPSHOT/csarvalidation-deployment-1.2.2-20190904.082836-6.zip\""
335     echo "export CSAR_VALIDATE_JAR_DOWNLOAD_URL=\"https://nexus.onap.org/content/repositories/snapshots/org/onap/vnfsdk/validation/validation-csar/1.2.2-SNAPSHOT/validation-csar-1.2.2-20190904.082829-6.jar\""
336 fi