56 lines
2.3 KiB
Bash
56 lines
2.3 KiB
Bash
#!/bin/bash
|
|
# Copyright (C) 2024 Intel Corporation
|
|
# SPDX-License-Identifier: Apache-2.0
|
|
|
|
# The test machine used by several opea projects, so the test scripts can't use `docker compose down` to clean up
|
|
# the all the containers, ports and networks directly.
|
|
# So we need to use the following script to minimize the impact of the clean up.
|
|
|
|
test_case=${test_case:-"test_compose_on_gaudi.sh"}
|
|
hardware=${hardware:-"gaudi"}
|
|
flag=${test_case%_on_*}
|
|
flag=${flag#test_}
|
|
yaml_file=$(find . -type f -wholename "*${hardware}/${flag}.yaml")
|
|
echo $yaml_file
|
|
|
|
case "$1" in
|
|
containers)
|
|
echo "Stop and remove all containers used by the services in $yaml_file ..."
|
|
containers=$(cat $yaml_file | grep container_name | cut -d':' -f2)
|
|
for container_name in $containers; do
|
|
cid=$(docker ps -aq --filter "name=$container_name")
|
|
if [[ ! -z "$cid" ]]; then docker stop $cid && docker rm $cid && sleep 1s; fi
|
|
done
|
|
;;
|
|
ports)
|
|
echo "Release all ports used by the services in $yaml_file ..."
|
|
pip install jq yq
|
|
ports=$(yq '.services[].ports[] | split(":")[0]' $yaml_file | grep -o '[0-9a-zA-Z_-]\+')
|
|
echo "All ports list..."
|
|
echo "$ports"
|
|
for port in $ports; do
|
|
if [[ $port =~ [a-zA-Z_-] ]]; then
|
|
echo "Search port value $port from the test case..."
|
|
port_fix=$(grep -E "export $port=" tests/$test_case | cut -d'=' -f2)
|
|
if [[ "$port_fix" == "" ]]; then
|
|
echo "Can't find the port value from the test case, use the default value in yaml..."
|
|
port_fix=$(yq '.services[].ports[]' $yaml_file | grep $port | cut -d':' -f2 | grep -o '[0-9a-zA-Z]\+')
|
|
fi
|
|
port=$port_fix
|
|
fi
|
|
if [[ $port =~ [0-9] ]]; then
|
|
if [[ $port == 5000 ]]; then
|
|
echo "Error: Port 5000 is used by local docker registry, please DO NOT use it in docker compose deployment!!!"
|
|
exit 1
|
|
fi
|
|
echo "Check port $port..."
|
|
cid=$(docker ps --filter "publish=${port}" --format "{{.ID}}")
|
|
if [[ ! -z "$cid" ]]; then docker stop $cid && docker rm $cid && echo "release $port"; fi
|
|
fi
|
|
done
|
|
;;
|
|
*)
|
|
echo "Unknown function: $1"
|
|
;;
|
|
esac
|