Upgraden naar DSMR-reader v3.x

DSMR-reader v3.x is niet backwards-compatible met v2.x. Je zult hierdoor dus handmatig moeten upgraden om er zeker van te zijn dat alles blijft werken.

Notitie

Mocht je Docker gebruiken, dan kun je waarschijnlijk gewoon de v3.x versie van de betreffende Docker-container installeren, zonder onderstaande stappen te hoeven uitvoeren.

2. Python versie check

DSMR-reader 3.x vereist Python 3.6 of hoger.

Voer het volgende uit:

sudo su - dsmr
python3 --version

Het zou de Python-versie moeten tonen. Wanneer je al de versie Python 3.6 (of hoger) draait, kun je de volgende sectie negeren.

3. Python versie upgrade (deel 1/2)

Waarschuwing

Voer deze sectie alleen uit wanneer je DSMR-reader draait met Python 3.5 of lager!

Er zijn diverse handleidingen, afhankelijk van je OS. We gaan hier uit van Raspbian OS.

Voer het volgende uit:

# Credits to Jeroen Peters @ issue #624
sudo apt-get install python3-dev libffi-dev libssl-dev -y
wget https://www.python.org/ftp/python/3.6.9/Python-3.6.9.tar.xz
tar xJf Python-3.6.9.tar.xz
cd Python-3.6.9
./configure
make
sudo make install
sudo pip3 install --upgrade pip

Probeer om python3.6 --version uit te voeren om te controleren of het gelukt is. Wanneer je foutmeldingen krijgt, ga dan niet verder met de upgrade.

De Python-upgrade gaat later verder, na het maken van een back-up.

4. Back-up

Het volgende wat je absoluut moet doen, is het maken van een verse database back-up en deze op een veilige plek opslaan.

Voer het volgende uit:

sudo su - dsmr
./manage.py dsmr_backup_create --full

Wanneer alles OK is, zie je een melding in de trend van:

Created full backup: /home/dsmr/dsmr-reader/backups/manually/dsmrreader-postgresql-backup-Wednesday.sql.gz

Voer het volgende uit (bestandsnaam kan afwijken in jouw situatie!):

ls -lh /home/dsmr/dsmr-reader/backups/manually/dsmrreader-postgresql-backup-Wednesday.sql.gz

Controleer of het bestand een (aannemelijke) grootte heeft:

-rw-rw-r-- 1 dsmr dsmr 7.5M Dec 18 20:59 /home/dsmr/dsmr-reader/backups/manually/dsmrreader-postgresql-backup-Wednesday.sql.gz

Voer het volgende uit (bestandsnaam kan afwijken in jouw situatie!):

zcat /home/dsmr/dsmr-reader/backups/manually/dsmrreader-postgresql-backup-Wednesday.sql.gz | tail

Controleer dat het eindigt met deze output:

--
-- PostgreSQL database dump complete
--

5. Python versie upgrade (deel 2/2)

Waarschuwing

Voer deze sectie alleen uit wanneer je DSMR-reader draait met Python 3.5 of lager!

Nu zijn we klaar om de omgeving te verwijderen waarin DSMR-reader werkt.

Voer het volgende uit:

sudo supervisorctl stop all

sudo su - dsmr
deactivate
cd ~
mv .virtualenvs/dsmrreader .virtualenvs/v2-dsmrreader

virtualenv /home/dsmr/.virtualenvs/dsmrreader --no-site-packages --python python3.6
source ~/.virtualenvs/dsmrreader/bin/activate
logout

Notitie

Mocht je fouten krijgen, hiermee kun je weer terug naar de oude versie:

sudo su - dsmr

# One of these checkouts might fail, but it's okay:
git checkout -b v2 origin/v2
git checkout v2

# Just make sure you're at v2 now:
git branch

deactivate
cd ~
mv .virtualenvs/dsmrreader .virtualenvs/v3-dsmrreader
mv .virtualenvs/v2-dsmrreader .virtualenvs/dsmrreader

# Now redeploy
logout
sudo su - dsmr
./deploy.sh

# (Re)start all processes
logout
sudo supervisorctl restart all

Alles OK? Tijd om DSMR-reader te upgraden naar v3.x.

6. Wisselen naar DSMR-reader v3.x

DSMR-reader v3.x leeft in een andere branch, om te voorkomen dat gebruikers onbedoeld upgraden naar v3.x.

Voer het volgende uit:

sudo supervisorctl stop all

sudo su - dsmr
git fetch
git checkout -b v3 origin/v3

# Make sure you're at v3 now:
git branch

git pull
pip3 install -r dsmrreader/provisioning/requirements/base.txt
pip3 install -r dsmrreader/provisioning/requirements/postgresql.txt

# Now redeploy
./deploy.sh

# (Re)start all processes
logout
sudo supervisorctl restart all

Mooi! Je zou nu op v3.x moeten zitten!