CSIT Support for ServiceLevel PNF Software Upgrade
[integration/csit.git] / plans / usecases-pnf-sw-upgrade / pnf-sw-upgrade / sorch / so_setup.sh
1 #!/bin/bash
2 #
3 # ============LICENSE_START=======================================================
4 #   Copyright (C) 2020 Nordix Foundation.
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 # @author Waqas Ikram (waqas.ikram@est.tech)
22
23 MAVEN_VERSION_DIR="apache-maven-3.3.9"
24 MAVEN_TAR_FILE="$MAVEN_VERSION_DIR-bin.tar.gz"
25 MAVEN_TAR_LOCATION="https://archive.apache.org/dist/maven/maven-3/3.3.9/binaries/$MAVEN_TAR_FILE"
26
27 SCRIPT_HOME="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
28 SCRIPT_NAME=$(basename $0)
29 CONFIG_DIR=$SCRIPT_HOME/config
30 ENV_FILE=$CONFIG_DIR/env
31 TEMP_DIR_PATH=$SCRIPT_HOME/temp
32 TEST_LAB_DIR_PATH=$TEMP_DIR_PATH/test_lab
33 DOCKER_COMPOSE_FILE_PATH=$SCRIPT_HOME/docker-compose.yml
34 DOCKER_COMPOSE_LOCAL_OVERRIDE_FILE=$SCRIPT_HOME/docker-compose.local.yml
35 TEAR_DOWN_SCRIPT=$SCRIPT_HOME/teardown.sh
36
37 MAVEN_DIR=$TEMP_DIR_PATH/maven
38 INSTALLED_MAVEN_DIR=$MAVEN_DIR/$MAVEN_VERSION_DIR
39 MVN=$INSTALLED_MAVEN_DIR/bin/mvn
40 MVN_VERSION="$MVN -v"
41 MVN_SETTINGS_XML="$SCRIPT_HOME/settings.xml"
42 MVN_CLEAN_INSTALL="$MVN clean install"
43 SIMULATOR_MAVEN_PROJECT_POM="$SCRIPT_HOME/simulator/pom.xml"
44 WAIT_FOR_WORKAROUND_SCRIPT=$CONFIG_DIR/"wait-for-workaround-job.sh"
45 WAIT_FOR_POPULATE_AAI_SCRIPT=$CONFIG_DIR/"wait-for-aai-config-job.sh"
46 WAIT_FOR_CONTAINER_SCRIPT=$CONFIG_DIR/"wait-for-container.sh"
47 PNF_PAYLOAD_PATH=$CONFIG_DIR/aai-simulator-populate-data/pnf.json
48 PNF2_PAYLOAD_PATH=$CONFIG_DIR/aai-simulator-populate-data/pnf2.json
49
50 echo "Running $SCRIPT_HOME/$SCRIPT_NAME ..."
51
52 export $(egrep -v '^#' $ENV_FILE | xargs)
53
54 MANDATORY_VARIABLES_NAMES=( "NEXUS_DOCKER_REPO_MSO" "DOCKER_ENVIRONMENT" "TAG" "TIME_OUT_DEFAULT_VALUE_SEC" "PROJECT_NAME" "DEFAULT_NETWORK_NAME")
55
56 for var in "${MANDATORY_VARIABLES_NAMES[@]}"
57  do
58    if [ -z "${!var}" ]; then
59      echo "Missing mandatory attribute $var in $ENV_FILE"
60      exit 1
61   fi
62 done
63
64 if [[ ! "$TEMP_DIR_PATH" || ! -d "$TEMP_DIR_PATH" ]]; then
65         echo "Creating temporary directory $TEMP_DIR_PATH"
66         mkdir $TEMP_DIR_PATH
67
68         if [ $? -ne 0 ]; then
69                 echo "Could not create $TEMP_DIR_PATH"
70                 exit 1
71         fi
72
73 fi
74 echo "Will use ${TEMP_DIR_PATH} directory"
75
76 if [[ ! "$MAVEN_DIR" || ! -d "$MAVEN_DIR" ]]; then
77         echo "Creating temporary maven directory $MAVEN_DIR"
78         mkdir $MAVEN_DIR
79
80         if [ $? -ne 0 ]; then
81                 echo "Could not create $MAVEN_DIR"
82                 exit 1
83         fi
84 fi
85 echo "Will use ${MAVEN_DIR} directory for maven install"
86
87 if [[ ! "$INSTALLED_MAVEN_DIR" || ! -d "$INSTALLED_MAVEN_DIR" ]]; then
88         echo "Installing maven ..."
89         cd $MAVEN_DIR
90
91         CURL=`which curl`
92         if [[ ! "$CURL" ]]; then
93                 echo "curl command is not installed"
94                 echo "Unable to execute test plan"
95                 exit 1
96         fi
97         curl -O $MAVEN_TAR_LOCATION
98
99         TAR=`which tar`
100         if [[ ! "$TAR" ]]; then
101                 echo "tar command is not installed"
102                 echo "Unable to execute test plan"
103                 exit 1
104         fi
105
106         tar -xzvf $MAVEN_TAR_FILE
107
108         echo "Finished installing maven ..."
109 fi
110
111 echo "Maven installed under directory $INSTALLED_MAVEN_DIR"
112
113 $MVN_VERSION
114
115 if [ $? -ne 0 ]; then
116         echo "Unable to run mvn -v command"
117         exit 1
118 fi
119
120 cd $SCRIPT_HOME
121
122 echo "Will build simulator project using $MVN_CLEAN_INSTALL -f $SIMULATOR_MAVEN_PROJECT_POM --settings $MVN_SETTINGS_XML"
123 $MVN_CLEAN_INSTALL -f $SIMULATOR_MAVEN_PROJECT_POM --settings $MVN_SETTINGS_XML
124
125 if [ $? -ne 0 ]; then
126         echo "Maven build failed"
127          exit 1
128 fi
129
130 echo "Will clone docker-config project ... "
131
132
133 if [[ -d "$TEST_LAB_DIR_PATH" ]]; then
134        echo "$TEST_LAB_DIR_PATH already exists"
135        echo "Removing $TEST_LAB_DIR_PATH directory ..."
136        rm -rf $TEST_LAB_DIR_PATH
137 fi
138
139 git clone http://gerrit.onap.org/r/so/docker-config.git $TEST_LAB_DIR_PATH
140
141 export TEST_LAB_DIR=$TEST_LAB_DIR_PATH
142 export CONFIG_DIR_PATH=$CONFIG_DIR
143
144 echo "updating PNF ip-address in pnf.json"
145 sed -i "s/pnfaddr/$LOCAL_IP/g" $PNF_PAYLOAD_PATH
146 sed -i "s/pnfaddr/$LOCAL_IP/g" $PNF2_PAYLOAD_PATH
147
148 if [ "$DOCKER_ENVIRONMENT" == "remote" ]; then
149   echo "Starting docker containers with remote images ..."
150   docker-compose -f $DOCKER_COMPOSE_FILE_PATH -p $PROJECT_NAME up -d mariadb
151   sleep 1m
152   docker-compose -f $DOCKER_COMPOSE_FILE_PATH -p $PROJECT_NAME up -d
153 elif [ "$DOCKER_ENVIRONMENT" == "local" ]; then
154   echo "Starting docker containers with local images ..."
155   docker-compose -f $DOCKER_COMPOSE_FILE_PATH -f $DOCKER_COMPOSE_LOCAL_OVERRIDE_FILE -p $PROJECT_NAME up -d mariadb
156   sleep 1m
157   docker-compose -f $DOCKER_COMPOSE_FILE_PATH -f $DOCKER_COMPOSE_LOCAL_OVERRIDE_FILE -p $PROJECT_NAME up -d
158 else
159   echo "DOCKER_ENVIRONMENT not set correctly in $ENV_FILE.  Allowed values: local | remote"
160   exit 1
161 fi
162
163 echo "Sleeping for 2m"
164 sleep 2m
165
166 echo "Will execute $WAIT_FOR_WORKAROUND_SCRIPT script"
167 $WAIT_FOR_WORKAROUND_SCRIPT
168
169 if [ $? -ne 0 ]; then
170    echo "ERROR: $WAIT_FOR_WORKAROUND_SCRIPT failed"
171    echo "Will stop running docker containers . . ."
172    $TEAR_DOWN_SCRIPT
173    exit 1
174 fi
175
176
177 echo "Will execute $WAIT_FOR_POPULATE_AAI_SCRIPT script"
178 $WAIT_FOR_POPULATE_AAI_SCRIPT
179
180 if [ $? -ne 0 ]; then
181    echo "ERROR: $WAIT_FOR_POPULATE_AAI_SCRIPT failed"
182    echo "Will stop running docker containers . . ."
183    $TEAR_DOWN_SCRIPT
184    exit 1
185 fi
186
187 API_INFRA_CONTAINER_NAME="api-handler-infra"
188 echo "Will execute $WAIT_FOR_CONTAINER_SCRIPT to wait for $API_INFRA_CONTAINER_NAME container to start up"
189 $WAIT_FOR_CONTAINER_SCRIPT -c "$API_INFRA_CONTAINER_NAME" -t "300" -n "$DEFAULT_NETWORK_NAME"
190
191 if [ $? -ne 0 ]; then
192    echo "ERROR: $WAIT_FOR_CONTAINER_SCRIPT failed"
193    echo "Will stop running docker containers . . ."
194    $TEAR_DOWN_SCRIPT
195    exit 1
196 fi
197
198 echo "Finished executing $SCRIPT_HOME/$SCRIPT_NAME"