96 lines
1.8 KiB
Bash
96 lines
1.8 KiB
Bash
#!/bin/sh -e
|
|
# SPDX-License-Identifier: AGPL-3.0-or-later
|
|
# Copyright 2021 sysmocom s.f.m.c GmbH <info@sysmocom.de>
|
|
#
|
|
# Packagers are supposed to call this script in post-upgrade, so it can safely
|
|
# upgrade the database scheme if required.
|
|
|
|
DB="/var/lib/osmocom/hlr.db"
|
|
IS_ACTIVE=0
|
|
|
|
msg() {
|
|
echo "osmo-hlr-post-upgrade: $@"
|
|
}
|
|
|
|
err() {
|
|
msg "ERROR: $@"
|
|
}
|
|
|
|
open_db() {
|
|
# Attempt to open the database with osmo-hlr-db-tool, it will fail if
|
|
# upgrading the schema is required
|
|
osmo-hlr-db-tool -s -l "$DB" create
|
|
}
|
|
|
|
check_upgrade_required() {
|
|
if ! [ -e "$DB" ]; then
|
|
msg "nothing to do (no existing database)"
|
|
exit 0
|
|
fi
|
|
|
|
if open_db 2>/dev/null; then
|
|
msg "nothing to do (database version is up to date)"
|
|
exit 0
|
|
fi
|
|
|
|
msg "database upgrade is required"
|
|
}
|
|
|
|
stop_service() {
|
|
if systemctl is-active -q osmo-hlr; then
|
|
IS_ACTIVE=1
|
|
msg "stopping osmo-hlr service"
|
|
systemctl stop osmo-hlr
|
|
|
|
# Verify that it stopped
|
|
for i in $(seq 1 100); do
|
|
if ! systemctl is-active -q osmo-hlr; then
|
|
return
|
|
fi
|
|
sleep 0.1
|
|
done
|
|
|
|
err "failed to stop osmo-hlr service"
|
|
exit 1
|
|
else
|
|
msg "osmo-hlr service is not running"
|
|
fi
|
|
}
|
|
|
|
create_backup() {
|
|
backup="$DB.$(date +%Y%m%d%H%M%S).bak"
|
|
msg "creating backup: $backup"
|
|
if [ -e "$backup" ]; then
|
|
err "backup already exists: $backup"
|
|
exit 1
|
|
fi
|
|
cp "$DB" "$backup"
|
|
}
|
|
|
|
upgrade() {
|
|
msg "performing database upgrade"
|
|
osmo-hlr-db-tool -s -U -l "$DB" create
|
|
|
|
if ! open_db 2>/dev/null; then
|
|
err "failed to open the database after upgrade"
|
|
err "osmo-hlr-db-tool output:"
|
|
open_db
|
|
# exit because of "set -e"
|
|
fi
|
|
|
|
msg "database upgrade successful"
|
|
}
|
|
|
|
start_service() {
|
|
if [ "$IS_ACTIVE" = "1" ]; then
|
|
msg "starting osmo-hlr service"
|
|
systemctl start osmo-hlr
|
|
fi
|
|
}
|
|
|
|
check_upgrade_required
|
|
stop_service
|
|
create_backup
|
|
upgrade
|
|
start_service
|