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