#!/bin/sh -e # SPDX-License-Identifier: AGPL-3.0-or-later # Copyright 2021 sysmocom s.f.m.c GmbH # # 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