blob: 9d3a819c87da92dc4fa1392389dcd002204302ec [file] [log] [blame]
# 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.
alias atc-start="docker-compose up -d --build";
alias atc-build="docker-compose build";
alias atc-stop="docker-compose kill && docker-compose down -v --remove-orphans";
function atc-restart {
if ! atc-stop $@; then
return 1;
fi
atc-start $@;
return $?;
}
function atc-ready {
local usage url="https://localhost:6443/api/4.0/ping";
usage="$(<<-USAGE cat
Usage: ${0} [-h] [-w]
-h, --help
print usage information and exit
-w, --wait
wait for ATC to be ready, instead of just checking if it is ready
-d, --delivery-service
wait for the ATC delivery service to be ready
USAGE
)"
if [[ $# -gt 0 ]]; then
case "$1" in
-w|--wait)
until curl -skL "$url" >/dev/null 2>&1; do
sleep 1;
done
return 0;;
-d|--delivery-service)
local deliveryservice=cdn.dev-ds.ciab.test
until curl -4sfH "Host: ${deliveryservice}" localhost:3080 &&
<<<"$(dig +short -4 @localhost -p 3053 "$deliveryservice")" grep -q '^[0-9.]\+$';
do
sleep 1;
done
return 0;;
-h|--help)
echo "$usage";
return 0;;
*)
echo "$usage" >&2;
return 1;;
esac
fi
timeout 1s curl -skL "$url" >/dev/null 2>&1;
return $?;
}
function atc-exec {
if [[ $# -lt 2 ]]; then
echo "Usage: atc-exec SERVICE CMD" >&2;
return 1;
fi;
local service="trafficcontrol_$1_1";
shift;
docker exec "$service" $@;
return $?;
}
function atc-connect {
if [[ $# -ne 1 ]]; then
echo "Usage: atc-connect SERVICE" >&2;
return 1;
fi;
docker exec -it "trafficcontrol_$1_1" /bin/sh;
return $?;
}
function atc {
if [[ $# -lt 1 ]]; then
echo "Usage: atc OPERATION" >&2;
return 1;
fi
local arg="$1";
shift;
case "$arg" in
build)
atc-build $@;;
connect)
atc-connect $@;;
exec)
atc-exec $@;;
ready)
atc-ready $@;;
restart)
atc-restart $@;;
start)
atc-start $@;;
stop)
atc-stop $@;;
-h|--help|/\?)
echo "Usage: atc OPERATION";
echo "";
echo "Valid OPERATIONs:";
echo " build Build the images for the environment, but do not start it";
echo " connect Connect to a shell session inside a dev container";
echo " exec Run a command in a dev container";
echo " ready Check if the development environment is ready";
echo " restart Restart the development environment";
echo " start Start up the development environment";
echo " stop Stop the development environment";
;;
*)
echo "Usage: atc OPERATION" >&2;
echo "" >&2;
echo "Valid OPERATIONs:" >&2;
echo " build Build the images for the environment, but do not start it" >&2;
echo " connect Connect to a shell session inside a dev container" >&2;
echo " exec Run a command in a dev container" >&2;
echo " ready Check if the development environment is ready" >&2;
echo " restart Restart the development environment" >&2;
echo " start Start up the development environment" >&2;
echo " stop Stop the development environment" >&2;
return 2;;
esac
return "$?";
}
export t3cDir="/root/go/src/github.com/apache/trafficcontrol/cache-config";
function t3c {
trap 'atc-exec t3c ps | grep dlv | tr -s " " | cut -d " " -f1 | xargs docker exec trafficcontrol_t3c_1 kill' INT;
local dExec=(docker exec);
local dlv=();
if [[ ! -z "$TC_WAIT" ]]; then
dlv=(dlv --accept-multiclient --listen=:8081 --headless --api-version=2 debug --);
else
dlv=(dlv --accept-multiclient --continue --listen=:8081 --headless --api-version=2 debug --);
fi
if [[ $# -lt 2 ]]; then
$dExec -w "$t3cDir/t3c" trafficcontrol_t3c_1 $dlv;
return $?;
fi;
local pkg="t3c"
case "$1" in
apply|check|check-refs|check-reload|diff|generate|preprocess|request|update)
pkg="t3c-$1";;
esac;
shift;
$dExec -w "$t3cDir/$pkg" trafficcontrol_t3c_1 $dlv $@;
return "$?";
}
function tm-health-client {
trap 'atc-exec t3c ps | grep dlv | tr -s " " | cut -d " " -f1 | xargs docker exec trafficcontrol_t3c_1 kill' INT;
local dExec=(docker exec -w "$t3cDir/tm-health-client" trafficcontrol_t3c_1);
local dlv=();
if [[ ! -z "$TC_WAIT" ]]; then
dlv=(dlv --accept-multiclient --listen=:8081 --headless --api-version=2 debug --);
else
dlv=(dlv --accept-multiclient --continue --listen=:8081 --headless --api-version=2 debug --);
fi
$dExec $dlv $@ || atc-exec t3c 'ps | grep dlv | tr -s ' ' | cut -d -f1 | xargs kill';
return $?;
}
export TO_URL="https://localhost:6443"
export TO_USER="admin"
export TO_PASSWORD="twelve12"