<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>