blob: 680612259b7a176bd9bfa4670c092a02926e3917 [file] [log] [blame]
#!/usr/bin/env bash
#
# Licensed to the Apache Software Foundation (ASF) under one or more
# contributor license agreements. See the NOTICE file distributed with
# this work for additional information regarding copyright ownership.
# The ASF licenses this file to You under the Apache License, Version 2.0
# (the "License"); you may not use this file except in compliance with
# the License. You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
#
#Executes commands from the intended directory "/api/test/docker".
cd "$(dirname "$0")"
main() {
#welcome message & check machine configuration
welcome
check
if [ $# -eq 0 ]; then
help
give_up "\nNo arguments provided."
fi
UPFLAG="-d"
UP=0
for arg in "$@"; do
case "$arg" in
up | -u | -U)
UP=1
;;
--non-detach)
UPFLAG=""
;;
down | -d | -D)
down
;;
build | -b | -B)
build
;;
help | -h | --help | -H)
help
;;
*)
echo -e "Invalid Argument.\n"
help
give_up
;;
esac
done
if [ $UP -eq 1 ]; then
up "$UPFLAG"
fi
echo "Execution complete."
}
check() {
set -e
if ! docker --version &>/dev/null; then
give_up "The script depends on docker. Please proceed after the installation."
fi
if ! docker-compose --version &>/dev/null; then
give_up "The script depends on docker-compose. Please proceed after the installation."
fi
if ! sed --version &>/dev/null; then
give_up "The script depends on sed (GNU Stream Editor). Please proceed after the installation."
fi
}
CONF_PATH=$(pwd | sed -e 's/test\/docker/conf\//g')
YAML_FILE="${CONF_PATH}conf.yaml"
BACKUP_FILE="${CONF_PATH}.backup.yaml"
up() {
set -e
#creating backup of current config
if [ ! -f "$BACKUP_FILE" ]; then
cp "$YAML_FILE" "$BACKUP_FILE"
#modifying config
sed -i 's/127.0.0.1:2379/172.16.238.10:2379/' "$YAML_FILE"
sed -i 's@127.0.0.1@0.0.0.0/0@' "$YAML_FILE"
sed -i '/172.16.238.10:2379/a\ - 172.16.238.11:2379' "$YAML_FILE"
sed -i '/172.16.238.10:2379/a\ - 172.16.238.12:2379' "$YAML_FILE"
sed -i 's@# - dubbo-proxy@- dubbo-proxy@' "$YAML_FILE"
fi
if [ ! -d "grpc-server-example" ]; then
wget https://github.com/api7/grpc_server_example/archive/refs/tags/20210819.tar.gz
mkdir grpc-server-example
tar -xzvf 20210819.tar.gz -C grpc-server-example
docker build -t grpc_server_example:latest ./grpc-server-example/grpc_server_example-20210819
fi
#Spinning up services
if [ -z "$1" ]; then
docker-compose up
else
docker-compose up "$1"
fi
../shell/wait_for_services.sh
}
down() {
#restoring old configuration.
mv "$BACKUP_FILE" "$YAML_FILE"
docker-compose down -v
}
build() {
docker-compose build
}
help() {
echo -e 'Usage: ./setup.sh [OPTIONS]...\n'
echo "Single argument is mandatory."
echo "Supported Command Arguments"
echo -e ' up,\t-u\t spins up all the services in detach mode.'
echo -e ' --non-detach\t pass the flag with "up / -u" to spin up in non-detach mode.'
echo -e ' down,\t-d\t stop containers & delete containers, networks, volumes.'
echo -e ' build,\t-b\t rebuild all the images from dockerfile.'
echo -e ' help,\t-h\t info about how to use this script.'
echo -e '\nFull documentation at <https://github.com/apache/apisix-dashboard/blob/master/docs/en/latest/back-end-tests.md>'
}
give_up() {
echo -e "$1"
exit 1
}
welcome() {
echo "WELCOME TO THE SETUP SCRIPT"
echo "It spins up a fleet of services required for local development."
echo "Capable of making the necessary changes in yaml file & revert back to original state."
echo "Services: "
echo "1. Three etcd nodes."
echo "2. Two apisix nodes."
echo -e "3. Single node of\n\t manager-api \n\t skywalking \n\t upstream-node \n\t upstream-grpc \n\t upstream-echo"
echo -e "=====================================================\n"
}
main "$@"