Update docker-compose for Macroflow with HEAT and small refactoring
[integration/csit.git] / plans / so / macroflow / setup.sh
1 #!/bin/bash
2 #
3 # ============LICENSE_START=======================================================
4 # Copyright 2021 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 #  SPDX-License-Identifier: Apache-2.0
19 # ============LICENSE_END=========================================================
20
21 MAVEN_VERSION_DIR="apache-maven-3.3.9"
22 MAVEN_TAR_FILE="$MAVEN_VERSION_DIR-bin.tar.gz"
23 MAVEN_TAR_LOCATION="https://archive.apache.org/dist/maven/maven-3/3.3.9/binaries/$MAVEN_TAR_FILE"
24
25 # Macroflow
26 SCRIPT_HOME="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
27 SCRIPT_NAME=$(basename $0)
28 CONFIG_DIR_MACRO=$SCRIPT_HOME/config
29 ENV_FILE=$CONFIG_DIR_MACRO/env
30 SQL_PATH=$SCRIPT_HOME/cloud_owner_sql
31 DOCKER_COMPOSE_FILE_PATH=$SCRIPT_HOME/docker-compose.yml
32 DOCKER_COMPOSE_LOCAL_OVERRIDE_FILE=$SCRIPT_HOME/docker-compose.local.yml
33 TEAR_DOWN_SCRIPT=$SCRIPT_HOME/teardown.sh
34 TEMP_DIR_PATH=$SCRIPT_HOME/temp
35 TEST_LAB_DIR_PATH=$TEMP_DIR_PATH/test_lab
36
37 #CAMUNDA SQL SCRIPTS
38 TEST_LAB_SQL_SCRIPTS_DIR=$TEST_LAB_DIR_PATH/volumes/mariadb/docker-entrypoint-initdb.d/db-sql-scripts
39 CAMUNDA_SQL_SCRIPT_NAME=mariadb_engine_7.10.0.sql
40
41 # INTEGRATION_ETSI
42 INTEGRATION_ETSI_TESTING_DIR=$WORKSPACE/plans/so/integration-etsi-testing
43 INTEGRATION_ETSI_TESTING_CONFIG_DIR=$INTEGRATION_ETSI_TESTING_DIR/config
44
45 MAVEN_DIR=$TEMP_DIR_PATH/maven
46 INSTALLED_MAVEN_DIR=$MAVEN_DIR/$MAVEN_VERSION_DIR
47 MVN=$INSTALLED_MAVEN_DIR/bin/mvn
48 MVN_VERSION="$MVN -v"
49 MVN_SETTINGS_XML="$INTEGRATION_ETSI_TESTING_DIR/settings.xml"
50 MVN_CLEAN_INSTALL="$MVN clean install"
51 SIMULATOR_MAVEN_PROJECT_POM="$INTEGRATION_ETSI_TESTING_DIR/so-simulators/pom.xml"
52 WAIT_FOR_WORKAROUND_SCRIPT=$INTEGRATION_ETSI_TESTING_CONFIG_DIR/"wait-for-workaround-job.sh"
53 WAIT_FOR_POPULATE_AAI_SCRIPT=$INTEGRATION_ETSI_TESTING_CONFIG_DIR/"wait-for-aai-config-job.sh"
54 WAIT_FOR_CONTAINER_SCRIPT=$INTEGRATION_ETSI_TESTING_CONFIG_DIR/"wait-for-container.sh"
55
56 echo "Running $SCRIPT_HOME/$SCRIPT_NAME ..."
57
58 export $(egrep -v '^#' $ENV_FILE | xargs)
59
60 MANDATORY_VARIABLES_NAMES=( "NEXUS_DOCKER_REPO_MSO" "DOCKER_ENVIRONMENT" "TAG" "TIME_OUT_DEFAULT_VALUE_SEC" "PROJECT_NAME" "DEFAULT_NETWORK_NAME")
61
62 for var in "${MANDATORY_VARIABLES_NAMES[@]}"
63  do
64    if [ -z "${!var}" ]; then
65      echo "Missing mandatory attribute $var in $ENV_FILE"
66      exit 1
67   fi
68 done
69
70 if [[ ! "$TEMP_DIR_PATH" || ! -d "$TEMP_DIR_PATH" ]]; then
71         echo "Creating temporary directory $TEMP_DIR_PATH"
72         mkdir $TEMP_DIR_PATH
73
74         if [ $? -ne 0 ]; then
75                 echo "Could not create $TEMP_DIR_PATH"
76                 exit 1
77         fi
78
79 fi
80 echo "Will use ${TEMP_DIR_PATH} directory"
81
82 if [[ ! "$MAVEN_DIR" || ! -d "$MAVEN_DIR" ]]; then
83         echo "Creating temporary maven directory $MAVEN_DIR"
84         mkdir $MAVEN_DIR
85
86         if [ $? -ne 0 ]; then
87                 echo "Could not create $MAVEN_DIR"
88                 exit 1
89         fi
90 fi
91 echo "Will use ${MAVEN_DIR} directory for maven install"
92
93 if [[ ! "$INSTALLED_MAVEN_DIR" || ! -d "$INSTALLED_MAVEN_DIR" ]]; then
94         echo "Installing maven ..."
95         cd $MAVEN_DIR
96
97         CURL=`which curl`
98         if [[ ! "$CURL" ]]; then
99                 echo "curl command is not installed"
100                 echo "Unable to execute test plan"
101                 exit 1
102         fi
103         curl -O $MAVEN_TAR_LOCATION
104
105         TAR=`which tar`
106         if [[ ! "$TAR" ]]; then
107                 echo "tar command is not installed"
108                 echo "Unable to execute test plan"
109                 exit 1
110         fi
111
112         tar -xzvf $MAVEN_TAR_FILE
113
114         echo "Finished installing maven ..."
115 fi
116
117 echo "Maven installed under directory $INSTALLED_MAVEN_DIR"
118
119 $MVN_VERSION
120
121 if [ $? -ne 0 ]; then
122         echo "Unable to run mvn -v command"
123         exit 1
124 fi
125
126 cd $SCRIPT_HOME
127
128 echo "Will build simulator project using $MVN_CLEAN_INSTALL -f $SIMULATOR_MAVEN_PROJECT_POM --settings $MVN_SETTINGS_XML"
129 $MVN_CLEAN_INSTALL -f $SIMULATOR_MAVEN_PROJECT_POM --settings $MVN_SETTINGS_XML
130
131 if [ $? -ne 0 ]; then
132         echo "Maven build failed"
133         exit 1
134 fi
135
136 echo "Will clone docker-config project ... "
137
138
139 if [[ -d "$TEST_LAB_DIR_PATH" ]]; then
140        echo "$TEST_LAB_DIR_PATH already exists"
141        echo "Removing $TEST_LAB_DIR_PATH directory ..."
142        rm -rf $TEST_LAB_DIR_PATH
143 fi
144
145 git clone http://gerrit.onap.org/r/so/docker-config.git $TEST_LAB_DIR_PATH
146
147 echo "Replacing $CAMUNDA_SQL_SCRIPT_NAME ..."
148 rm -rf $TEST_LAB_SQL_SCRIPTS_DIR/$CAMUNDA_SQL_SCRIPT_NAME
149 cp $CONFIG_DIR_MACRO/$CAMUNDA_SQL_SCRIPT_NAME $TEST_LAB_SQL_SCRIPTS_DIR
150
151 export TEST_LAB_DIR=$TEST_LAB_DIR_PATH
152 export CONFIG_DIR_PATH=$INTEGRATION_ETSI_TESTING_CONFIG_DIR
153 export CONFIG_DIR_PATH_MACRO=$CONFIG_DIR_MACRO
154
155 if [ "$DOCKER_ENVIRONMENT" == "remote" ]; then
156   echo "Starting docker containers with remote images ..."
157   docker-compose -f $DOCKER_COMPOSE_FILE_PATH -p $PROJECT_NAME up -d
158 elif [ "$DOCKER_ENVIRONMENT" == "local" ]; then
159   echo "Starting docker containers with local images ..."
160   docker-compose -f $DOCKER_COMPOSE_FILE_PATH -f $DOCKER_COMPOSE_LOCAL_OVERRIDE_FILE -p $PROJECT_NAME up -d
161 else
162   echo "DOCKER_ENVIRONMENT not set correctly in $ENV_FILE.  Allowed values: local | remote"
163   exit 1
164 fi
165
166 echo "Sleeping for 3m"
167 sleep 3m
168
169 echo "Will execute $WAIT_FOR_WORKAROUND_SCRIPT script"
170 $WAIT_FOR_WORKAROUND_SCRIPT
171
172 if [ $? -ne 0 ]; then
173    echo "ERROR: $WAIT_FOR_WORKAROUND_SCRIPT failed"
174    echo "Will stop running docker containers . . ."
175    $TEAR_DOWN_SCRIPT
176    exit 1
177 fi
178
179 echo "Will execute $WAIT_FOR_POPULATE_AAI_SCRIPT script"
180 $WAIT_FOR_POPULATE_AAI_SCRIPT
181
182 if [ $? -ne 0 ]; then
183    echo "ERROR: $WAIT_FOR_POPULATE_AAI_SCRIPT failed"
184    echo "Will stop running docker containers . . ."
185    $TEAR_DOWN_SCRIPT
186    exit 1
187 fi
188
189 PODS_NAMES=( "api-handler-infra" "bpmn-infra")
190
191 for pod in "${PODS_NAMES[@]}"
192  do
193      echo "Will execute $WAIT_FOR_CONTAINER_SCRIPT to wait for $pod container to start up"
194      $WAIT_FOR_CONTAINER_SCRIPT -c "$pod" -t "300" -n "$DEFAULT_NETWORK_NAME"
195
196      if [ $? -ne 0 ]; then
197         echo "ERROR: $WAIT_FOR_CONTAINER_SCRIPT for pod: $pod failed"
198         echo "Will stop running docker containers . . ."
199         $TEAR_DOWN_SCRIPT
200         exit 1
201      fi
202 done
203
204 REPO_IP='127.0.0.1'
205 ROBOT_VARIABLES="-v REPO_IP:${REPO_IP}"
206
207 echo "Finished executing $SCRIPT_HOME/$SCRIPT_NAME"