<p>osmith has uploaded this change for <strong>review</strong>.</p><p><a href="https://gerrit.osmocom.org/c/osmo-hlr/+/24493">View Change</a></p><pre style="font-family: monospace,monospace; white-space: pre-wrap;">Add post-upgrade script for automatic db upgrade<br><br>Closes: OS#5138<br>Change-Id: I34e943e5020285f63a2162010eb42675af1520bf<br>---<br>M contrib/Makefile.am<br>A contrib/osmo-hlr-post-upgrade.sh<br>M contrib/osmo-hlr.spec.in<br>M debian/osmo-hlr.install<br>A debian/postinst<br>5 files changed, 116 insertions(+), 0 deletions(-)<br><br></pre><pre style="font-family: monospace,monospace; white-space: pre-wrap;">git pull ssh://gerrit.osmocom.org:29418/osmo-hlr refs/changes/93/24493/1</pre><pre style="font-family: monospace,monospace; white-space: pre-wrap;"><span>diff --git a/contrib/Makefile.am b/contrib/Makefile.am</span><br><span>index cfd0b15..37c4aa4 100644</span><br><span>--- a/contrib/Makefile.am</span><br><span>+++ b/contrib/Makefile.am</span><br><span>@@ -2,3 +2,13 @@</span><br><span> systemd \</span><br><span> dgsm \</span><br><span> $(NULL)</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+EXTRA_DIST = osmo-hlr-post-upgrade.sh</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+install-data-hook:</span><br><span style="color: hsl(120, 100%, 40%);">+ install -Dm755 $(srcdir)/osmo-hlr-post-upgrade.sh \</span><br><span style="color: hsl(120, 100%, 40%);">+ -t $(DESTDIR)$(datadir)/osmocom/</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+uninstall-hook:</span><br><span style="color: hsl(120, 100%, 40%);">+ @$(PRE_UNINSTALL)</span><br><span style="color: hsl(120, 100%, 40%);">+ $(RM) $(DESTDIR)$(datadir)/osmocom/osmo-hlr-post-upgrade.sh</span><br><span>diff --git a/contrib/osmo-hlr-post-upgrade.sh b/contrib/osmo-hlr-post-upgrade.sh</span><br><span>new file mode 100644</span><br><span>index 0000000..88416a1</span><br><span>--- /dev/null</span><br><span>+++ b/contrib/osmo-hlr-post-upgrade.sh</span><br><span>@@ -0,0 +1,95 @@</span><br><span style="color: hsl(120, 100%, 40%);">+#!/bin/sh -e</span><br><span style="color: hsl(120, 100%, 40%);">+# SPDX-License-Identifier: AGPL-3.0-or-later</span><br><span style="color: hsl(120, 100%, 40%);">+# Copyright 2021 sysmocom s.f.m.c GmbH <info@sysmocom.de></span><br><span style="color: hsl(120, 100%, 40%);">+#</span><br><span style="color: hsl(120, 100%, 40%);">+# Packagers are supposed to call this script in post-upgrade, so it can safely</span><br><span style="color: hsl(120, 100%, 40%);">+# upgrade the database scheme if required.</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+DB="/var/lib/osmocom/hlr.db"</span><br><span style="color: hsl(120, 100%, 40%);">+IS_ACTIVE=0</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+msg() {</span><br><span style="color: hsl(120, 100%, 40%);">+ echo "osmo-hlr-post-upgrade: $@"</span><br><span style="color: hsl(120, 100%, 40%);">+}</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+err() {</span><br><span style="color: hsl(120, 100%, 40%);">+ msg "ERROR: $@"</span><br><span style="color: hsl(120, 100%, 40%);">+}</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+open_db() {</span><br><span style="color: hsl(120, 100%, 40%);">+ # Attempt to open the database with osmo-hlr-db-tool, it will fail if</span><br><span style="color: hsl(120, 100%, 40%);">+ # upgrading the schema is required</span><br><span style="color: hsl(120, 100%, 40%);">+ osmo-hlr-db-tool -s -l "$DB" create</span><br><span style="color: hsl(120, 100%, 40%);">+}</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+check_upgrade_required() {</span><br><span style="color: hsl(120, 100%, 40%);">+ if ! [ -e "$DB" ]; then</span><br><span style="color: hsl(120, 100%, 40%);">+ msg "nothing to do (no existing database)"</span><br><span style="color: hsl(120, 100%, 40%);">+ exit 0</span><br><span style="color: hsl(120, 100%, 40%);">+ fi</span><br><span style="color: hsl(120, 100%, 40%);">+ </span><br><span style="color: hsl(120, 100%, 40%);">+ if open_db 2>/dev/null; then</span><br><span style="color: hsl(120, 100%, 40%);">+ msg "nothing to do (database version is up to date)"</span><br><span style="color: hsl(120, 100%, 40%);">+ exit 0</span><br><span style="color: hsl(120, 100%, 40%);">+ fi</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+ msg "database upgrade is required"</span><br><span style="color: hsl(120, 100%, 40%);">+}</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+stop_service() {</span><br><span style="color: hsl(120, 100%, 40%);">+ if systemctl is-active -q osmo-hlr; then</span><br><span style="color: hsl(120, 100%, 40%);">+ IS_ACTIVE=1</span><br><span style="color: hsl(120, 100%, 40%);">+ msg "stopping osmo-hlr service"</span><br><span style="color: hsl(120, 100%, 40%);">+ systemctl stop osmo-hlr</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+ # Verify that it stopped</span><br><span style="color: hsl(120, 100%, 40%);">+ for i in $(seq 1 100); do</span><br><span style="color: hsl(120, 100%, 40%);">+ if ! systemctl is-active -q osmo-hlr; then</span><br><span style="color: hsl(120, 100%, 40%);">+ return</span><br><span style="color: hsl(120, 100%, 40%);">+ fi</span><br><span style="color: hsl(120, 100%, 40%);">+ sleep 0.1</span><br><span style="color: hsl(120, 100%, 40%);">+ done</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+ err "failed to stop osmo-hlr service"</span><br><span style="color: hsl(120, 100%, 40%);">+ exit 1</span><br><span style="color: hsl(120, 100%, 40%);">+ else</span><br><span style="color: hsl(120, 100%, 40%);">+ msg "osmo-hlr service is not running"</span><br><span style="color: hsl(120, 100%, 40%);">+ fi</span><br><span style="color: hsl(120, 100%, 40%);">+}</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+create_backup() {</span><br><span style="color: hsl(120, 100%, 40%);">+ backup="$DB.$(date +%Y%m%d%H%M%S).bak"</span><br><span style="color: hsl(120, 100%, 40%);">+ msg "creating backup: $backup"</span><br><span style="color: hsl(120, 100%, 40%);">+ if [ -e "$backup" ]; then</span><br><span style="color: hsl(120, 100%, 40%);">+ err "backup already exists: $backup"</span><br><span style="color: hsl(120, 100%, 40%);">+ exit 1</span><br><span style="color: hsl(120, 100%, 40%);">+ fi</span><br><span style="color: hsl(120, 100%, 40%);">+ cp "$DB" "$backup"</span><br><span style="color: hsl(120, 100%, 40%);">+}</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+upgrade() {</span><br><span style="color: hsl(120, 100%, 40%);">+ msg "performing database upgrade"</span><br><span style="color: hsl(120, 100%, 40%);">+ osmo-hlr-db-tool -s -U -l "$DB" create</span><br><span style="color: hsl(120, 100%, 40%);">+ </span><br><span style="color: hsl(120, 100%, 40%);">+ if ! open_db 2>/dev/null; then</span><br><span style="color: hsl(120, 100%, 40%);">+ err "failed to open the database after upgrade"</span><br><span style="color: hsl(120, 100%, 40%);">+ err "osmo-hlr-db-tool output:"</span><br><span style="color: hsl(120, 100%, 40%);">+ open_db</span><br><span style="color: hsl(120, 100%, 40%);">+ # exit because of "set -e"</span><br><span style="color: hsl(120, 100%, 40%);">+ fi</span><br><span style="color: hsl(120, 100%, 40%);">+ </span><br><span style="color: hsl(120, 100%, 40%);">+ msg "database upgrade successful"</span><br><span style="color: hsl(120, 100%, 40%);">+}</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+start_service() {</span><br><span style="color: hsl(120, 100%, 40%);">+ if [ "$IS_ACTIVE" = "1" ]; then</span><br><span style="color: hsl(120, 100%, 40%);">+ msg "starting osmo-hlr service"</span><br><span style="color: hsl(120, 100%, 40%);">+ systemctl start osmo-hlr</span><br><span style="color: hsl(120, 100%, 40%);">+ fi</span><br><span style="color: hsl(120, 100%, 40%);">+}</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+check_upgrade_required</span><br><span style="color: hsl(120, 100%, 40%);">+stop_service</span><br><span style="color: hsl(120, 100%, 40%);">+create_backup</span><br><span style="color: hsl(120, 100%, 40%);">+upgrade</span><br><span style="color: hsl(120, 100%, 40%);">+start_service</span><br><span>diff --git a/contrib/osmo-hlr.spec.in b/contrib/osmo-hlr.spec.in</span><br><span>index c4029be..d0a1b57 100644</span><br><span>--- a/contrib/osmo-hlr.spec.in</span><br><span>+++ b/contrib/osmo-hlr.spec.in</span><br><span>@@ -136,10 +136,13 @@</span><br><span> </span><br><span> %pre</span><br><span> %service_add_pre %{name}.service</span><br><span style="color: hsl(120, 100%, 40%);">+%endif</span><br><span> </span><br><span> %post</span><br><span style="color: hsl(120, 100%, 40%);">+%if 0%{?suse_version}</span><br><span> %service_add_post %{name}.service</span><br><span> %endif</span><br><span style="color: hsl(120, 100%, 40%);">+/usr/share/osmocom/osmo-hlr-post-upgrade.sh</span><br><span> </span><br><span> %post -n libosmo-gsup-client0 -p /sbin/ldconfig</span><br><span> %postun -n libosmo-gsup-client0 -p /sbin/ldconfig</span><br><span>@@ -162,6 +165,8 @@</span><br><span> %dir %{_sysconfdir}/osmocom</span><br><span> %config %{_sysconfdir}/osmocom/osmo-hlr.cfg</span><br><span> %{_unitdir}/osmo-hlr.service</span><br><span style="color: hsl(120, 100%, 40%);">+%dir %{_datadir}/osmocom</span><br><span style="color: hsl(120, 100%, 40%);">+%{_datadir}/osmocom/osmo-hlr-post-upgrade.sh</span><br><span> </span><br><span> %files -n libosmo-gsup-client0</span><br><span> %{_libdir}/libosmo-gsup-client.so.0*</span><br><span>diff --git a/debian/osmo-hlr.install b/debian/osmo-hlr.install</span><br><span>index 1b2cb56..421d5f4 100644</span><br><span>--- a/debian/osmo-hlr.install</span><br><span>+++ b/debian/osmo-hlr.install</span><br><span>@@ -5,4 +5,5 @@</span><br><span> /usr/share/doc/osmo-hlr/sql/hlr.sql</span><br><span> /usr/share/doc/osmo-hlr/sql/hlr_data.sql</span><br><span> /usr/share/doc/osmo-hlr/examples/osmo-hlr.cfg</span><br><span style="color: hsl(120, 100%, 40%);">+/usr/share/osmocom/osmo-hlr-post-upgrade.sh</span><br><span> /var/lib/osmocom</span><br><span>diff --git a/debian/postinst b/debian/postinst</span><br><span>new file mode 100755</span><br><span>index 0000000..390d304</span><br><span>--- /dev/null</span><br><span>+++ b/debian/postinst</span><br><span>@@ -0,0 +1,5 @@</span><br><span style="color: hsl(120, 100%, 40%);">+#!/bin/sh -e</span><br><span style="color: hsl(120, 100%, 40%);">+# Debian's postinst script is called on both installation and upgrade. Call the</span><br><span style="color: hsl(120, 100%, 40%);">+# post-upgrade script in both cases, it won't do anything if there is nothing</span><br><span style="color: hsl(120, 100%, 40%);">+# to do.</span><br><span style="color: hsl(120, 100%, 40%);">+/usr/share/osmocom/osmo-hlr-post-upgrade.sh</span><br><span></span><br></pre><p>To view, visit <a href="https://gerrit.osmocom.org/c/osmo-hlr/+/24493">change 24493</a>. To unsubscribe, or for help writing mail filters, visit <a href="https://gerrit.osmocom.org/settings">settings</a>.</p><div itemscope itemtype="http://schema.org/EmailMessage"><div itemscope itemprop="action" itemtype="http://schema.org/ViewAction"><link itemprop="url" href="https://gerrit.osmocom.org/c/osmo-hlr/+/24493"/><meta itemprop="name" content="View Change"/></div></div>
<div style="display:none"> Gerrit-Project: osmo-hlr </div>
<div style="display:none"> Gerrit-Branch: master </div>
<div style="display:none"> Gerrit-Change-Id: I34e943e5020285f63a2162010eb42675af1520bf </div>
<div style="display:none"> Gerrit-Change-Number: 24493 </div>
<div style="display:none"> Gerrit-PatchSet: 1 </div>
<div style="display:none"> Gerrit-Owner: osmith <osmith@sysmocom.de> </div>
<div style="display:none"> Gerrit-MessageType: newchange </div>