Skip to content
This repository was archived by the owner on Feb 25, 2025. It is now read-only.

Commit 6ccad32

Browse files
committed
Test upgrade of 2023.06
LAVA from 2023.01 to 2023.05 miss a migration script which is generated by lava-docker but with a "automatic" name. LAVA 2023.06 has the correct migration script but you cannot have both at the same time. Add a detection of this situation to rollback automatic migration. In the same time replace all migration action via the postinst.py which do the correct action. Signed-off-by: Corentin LABBE <[email protected]>
1 parent aeca7df commit 6ccad32

File tree

4 files changed

+112
-5
lines changed

4 files changed

+112
-5
lines changed

.github/workflows/basic.yml

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -80,3 +80,21 @@ jobs:
8080
run: cd output/local && docker-compose up -d
8181
- name: Wait for LAVA to be started
8282
run: sh .github/workflows/wait-for-docker.sh
83+
84+
- name: Run backup of 2023.01
85+
run: ./backup.sh
86+
- name: stop docker
87+
run: cd output/local && docker-compose down
88+
89+
- name: Clean old install
90+
run: rm -r output
91+
- name: Copy backup
92+
run: cp -v backup-latest/* lava-master/backup/
93+
- name: Run lavalab-gen
94+
run: ./lavalab-gen.py boards-ci-2023.06.yaml
95+
- name: Build lava-docker 2023.06
96+
run: cd output/local && docker-compose build
97+
- name: Launch lava-docker 2023.06
98+
run: cd output/local && docker-compose up -d
99+
- name: Wait for LAVA 2023.06 to be started
100+
run: sh .github/workflows/wait-for-docker.sh

.github/workflows/wait-for-docker.sh

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,17 @@ do
2222
fi
2323
fi
2424
fi
25-
docker-compose logs --tail=50
25+
docker-compose logs --tail=60
26+
docker ps > /tmp/alldocker
27+
grep -q master /tmp/alldocker
28+
if [ $? -ne 0 ];then
29+
echo "=========================================="
30+
echo "=========================================="
31+
echo "=========================================="
32+
echo "ERROR: master died"
33+
docker-compose logs
34+
exit 1
35+
fi
2636
sleep 10
2737
TIMEOUT=$((TIMEOUT+10))
2838
done

boards-ci-2023.06.yaml

Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
---
2+
masters:
3+
- name: masterci1
4+
version: "2023.06"
5+
host: local
6+
healthcheck_url: http://healthcheck
7+
users:
8+
- name: admin
9+
token: tokenforci
10+
password: passwordforci
11+
superuser: true
12+
staff: true
13+
tokens:
14+
- username: admin
15+
token: dfjdfkfkdjfkdsjfslforci
16+
description: no description
17+
slaves:
18+
- name: lab-ci-0
19+
version: "2023.06"
20+
host: local
21+
remote_master: masterci1
22+
remote_user: admin
23+
use_overlay_server: false
24+
use_tftp: false
25+
host_healthcheck: true
26+
27+
boards:
28+
- name: qemu-01
29+
type: qemu

lava-master/entrypoint.d/01_setup.sh

Lines changed: 54 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@ else
1717
fi
1818

1919
cd /root/
20-
lava-server manage makemigrations || exit $?
20+
#lava-server manage makemigrations || exit $?
2121

2222
# verify that the backup was not already applied in case of persistent_db
2323
if [ ! -e "/var/lib/postgresql/lava-docker.backup_done" ];then
@@ -28,7 +28,7 @@ if [ ! -e "/var/lib/postgresql/lava-docker.backup_done" ];then
2828
if [ -e /root/backup/db_lavaserver ];then
2929
echo "Restore database from backup"
3030
sudo -u postgres psql < /root/backup/db_lavaserver || exit $?
31-
yes yes | lava-server manage migrate || exit $?
31+
#yes yes | lava-server manage migrate || exit $?
3232
echo "Restore jobs output from backup"
3333
rm -r /var/lib/lava-server/default/media/job-output/*
3434

@@ -51,8 +51,58 @@ else
5151
echo "DEBUG: backup already applied"
5252
fi
5353

54-
lava-server manage makemigrations
55-
yes yes | lava-server manage migrate || exit $?
54+
# check current LAVA version
55+
# not very good way, but no real choice
56+
echo "DEBUG: check LAVA version from DB"
57+
su - postgres -c 'psql --tuples-only lavaserver -c "SELECT DISTINCT version from lava_scheduler_app_worker" | sort -V' > /tmp/workerversions
58+
sed -i 's,^[[:space:]]*,,' /tmp/workerversions
59+
echo "======"
60+
cat /tmp/workerversions
61+
echo "======"
62+
63+
echo "DEBUG: check LAVA version from file"
64+
cat /usr/lib/python3/dist-packages/lava_common/VERSION
65+
# hack
66+
grep -q '2023.01' /usr/lib/python3/dist-packages/lava_common/VERSION
67+
if [ $? -eq 0 ];then
68+
echo "DEBUG: 2023.01 need to do an old migration"
69+
lava-server manage makemigrations
70+
yes yes | lava-server manage migrate || exit $?
71+
fi
72+
# if we came from 2023.01 to 2023.05, we need to handle the migration bug
73+
grep -q '2023.0[1-5]' /tmp/workerversions
74+
if [ $? -eq 0 ];then
75+
grep -q 2023.06 /usr/lib/python3/dist-packages/lava_common/VERSION
76+
if [ $? -eq 0 ];then
77+
echo "============================="
78+
echo "DEBUG: handle DB migration BUG"
79+
sudo -u postgres psql lavaserver -c "SELECT * from django_migrations where app = 'lava_scheduler_app';"
80+
echo "============================="
81+
sudo -u postgres psql lavaserver -c "SELECT * from django_migrations where app = 'lava_results_app';"
82+
echo "============================="
83+
lava-server manage migrate --fake lava_results_app 0019_update_query_contenttype || exit $?
84+
echo "============================="
85+
lava-server manage migrate --fake lava_scheduler_app 0057_dt_permissions_worker_master_version || exit $?
86+
echo "============================="
87+
lava-server manage migrate lava_results_app 0018_drop_buglink || exit $?
88+
echo "============================="
89+
lava-server manage migrate lava_scheduler_app 0056_testjob_queue_timeout || exit $?
90+
echo "============================="
91+
sudo -u postgres psql lavaserver -c "SELECT * from django_migrations where app = 'lava_scheduler_app';"
92+
echo "============================="
93+
sudo -u postgres psql lavaserver -c "SELECT * from django_migrations where app = 'lava_results_app';"
94+
echo "============================="
95+
else
96+
echo "DEBUG: no spetial handling for DB"
97+
fi
98+
else
99+
echo "DEBUG: no spetial handling for DB"
100+
fi
101+
102+
echo "DEBUG: call postinst for managing migrations"
103+
/usr/share/lava-server/postinst.py || exit $?
104+
#lava-server manage makemigrations
105+
#yes yes | lava-server manage migrate || exit $?
56106

57107
# default site is set as example.com
58108
if [ -e /root/lava_http_fqdn ];then

0 commit comments

Comments
 (0)