Skip to content

Commit 141a489

Browse files
committed
Make init script idempotent
1 parent 65b7d5d commit 141a489

1 file changed

Lines changed: 30 additions & 12 deletions

File tree

core/scripts/init.sh

Lines changed: 30 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -4,35 +4,53 @@ GREEN='\033[0;32m'
44
ORANGE='\033[0;33m'
55
BLUE='\033[0;34m'
66
NOCOLOR='\033[0m'
7+
VINKJE="${GREEN}${NOCOLOR}"
78
CWD=$(dirname $0)
89
manageurl=https://manage.dev.openconext.local/manage/api/internal/
910

1011
set -e
1112

1213
# Bootstrapping engineblock means initialising the database
1314
printf "\n"
14-
echo "Bring up the engineblock container to bootstrap the database"
15+
echo -e "${ORANGE}Bring up the engineblock container to bootstrap the database${NOCOLOR}"
16+
echo
17+
18+
# Wait for engine to come up; not health yet because we might nee to initialialize db
1519
docker compose up -d engine mariadb
16-
# Wait for engine to come up
17-
docker compose exec engine timeout 300 bash -c 'while [[ "$(curl -k -s -o /dev/null -w ''%{http_code}'' localhost/info)" != "200" ]]; do sleep 5; done' || false
20+
docker compose exec engine timeout 300 bash -c 'while [[ "$(curl -k -s -o /dev/null -w ''%{http_code}'' localhost/internal/info)" != "200" ]]; do sleep 5; done' || false
1821

19-
echo -e "${ORANGE}First, we will initialise the EB database$NOCOLOR ${GREEN}\xE2\x9C\x94${NOCOLOR}"
22+
echo
23+
echo -e "${ORANGE}Initializing EB database$NOCOLOR ${VINKJE}"
24+
echo
2025
echo "Checking if the database is already present"
21-
if ! docker compose exec engine /var/www/html/bin/console doctrine:schema:validate -q --skip-mapping --env=prod; then
26+
if ! docker compose exec engine /var/www/html/bin/console doctrine:schema:validate -q --skip-mapping --env=prod > /dev/null
27+
then
2228
echo creating the database schema
23-
echo "Executing docker compose exec engine /var/www/html/bin/console doctrine:schema:create --env prod"
24-
docker compose exec engine /var/www/html/bin/console doctrine:schema:create --env prod
25-
# TODO: Use migrations instead of schema:create. Not both. @see https://github.com/OpenConext/OpenConext-engineblock/issues/1861
29+
cmd='docker compose exec engine /var/www/html/bin/console doctrine:schema:update --force -q'
30+
#echo "Executing: ${cmd}"
31+
${cmd}
2632
fi
2733
echo "Clearing the cache"
28-
echo "Executing docker compose exec engine /var/www/html/bin/console cache:clear -n --env=prod"
2934
docker compose exec engine /var/www/html/bin/console cache:clear -n --env=prod
3035
docker compose exec engine chown -R www-data:www-data /var/www/html/var/cache/
3136

37+
echo -ne "Waiting for EB to be healthy..."
38+
until [ "$(docker inspect -f {{.State.Health.Status}} $(docker compose ps -q engine))" == "healthy" ]
39+
do
40+
echo -n "."
41+
sleep 0.5;
42+
done
43+
echo -e " ${VINKJE}"
44+
3245
# Now it's time to bootstrap manage
3346
# Bring up containers needed for bootstrapping manage
47+
echo
48+
echo -e "${ORANGE}Bring up the core containers${NOCOLOR} ${VINKJE}"
49+
echo
3450
docker compose --profile oidc up -d --wait
35-
echo -e "${ORANGE}Adding the manage entities${NOCOLOR}${GREEN} \xE2\x9C\x94${NOCOLOR}"
51+
echo
52+
53+
echo -e "${ORANGE}Adding the manage entities${NOCOLOR} ${VINKJE}"
3654
printf "\n"
3755
for i in "$CWD"/*.json; do
3856
entityid=$(grep '"entityid":' "$i" | awk -F'"' '{print $4}')
@@ -58,11 +76,11 @@ for i in "$CWD"/*.json; do
5876
fi
5977
done
6078
printf "\n"
61-
echo -e "${ORANGE}Send a PUSH in Manage, which pushes the entities to EngineBlock and OIDCNG${NOCOLOR}${GREEN} \xE2\x9C\x94${NOCOLOR}"
79+
echo -e "${ORANGE}Send a PUSH in Manage, which pushes the entities to EngineBlock and OIDCNG ${VINKJE}"
6280
docker compose exec managegui curl -q -s -k -u sysadmin:secret $manageurl/push >/dev/null
6381

6482
printf "\n"
65-
echo -e "${BLUE}Please add the following line to your /etc/hosts:${NOCOLOR}${GREEN} \xE2\x9C\x94${NOCOLOR}"
83+
echo -e "${BLUE}Please add the following line to your /etc/hosts: ${VINKJE}"
6684
printf "\n"
6785

6886
echo "127.0.0.1 engine.dev.openconext.local manage.dev.openconext.local profile.dev.openconext.local engine-api.dev.openconext.local mujina-idp.dev.openconext.local profile.dev.openconext.local connect.dev.openconext.local teams.dev.openconext.local voot.dev.openconext.local invite.dev.openconext.local welcome.dev.openconext.local"

0 commit comments

Comments
 (0)