summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSimon Rettberg2016-02-08 17:42:44 +0100
committerSimon Rettberg2016-02-08 17:42:44 +0100
commitc0dbebf88d3f26b5e39cf0e122a39c55a4f3537c (patch)
treec14bd599e23ad630720f4f96ad7f8181614cade8
parent[SSUS] Start work on the satellite server upgrade script (diff)
downloadsetup-scripts-c0dbebf88d3f26b5e39cf0e122a39c55a4f3537c.tar.gz
setup-scripts-c0dbebf88d3f26b5e39cf0e122a39c55a4f3537c.tar.xz
setup-scripts-c0dbebf88d3f26b5e39cf0e122a39c55a4f3537c.zip
[SSUS] Some progress, appending archive works, detecting slxadmin version works
-rw-r--r--.gitignore2
-rwxr-xr-xsatellit_upgrader/pack-update.sh41
-rw-r--r--[-rwxr-xr-x]satellit_upgrader/updater.template.sh (renamed from satellit_upgrader/installer.template.sh)3
3 files changed, 45 insertions, 1 deletions
diff --git a/.gitignore b/.gitignore
index 468f13f..9e865ab 100644
--- a/.gitignore
+++ b/.gitignore
@@ -3,3 +3,5 @@
*.so
/satellit_installer/config/
/satellit_installer/static_files/new_passwords.encrypted
+/satellit_upgrader/files/
+/satellit_upgrader/updater.sh
diff --git a/satellit_upgrader/pack-update.sh b/satellit_upgrader/pack-update.sh
new file mode 100755
index 0000000..71f24b6
--- /dev/null
+++ b/satellit_upgrader/pack-update.sh
@@ -0,0 +1,41 @@
+#!/bin/bash
+
+declare -rg SELFPID=$$
+perror () {
+ if [ -n "$IGNORE_ERRORS" ]; then
+ echo "[ERROR] $@"
+ return 0
+ fi
+ echo "[FATAL] $@"
+ [ "$$" != "$SELFPID" ] && kill "$SELFPID"
+ exit 1
+}
+
+#declare -rg TMPDIR=$(mktemp -d)
+#[ -d "$TMPDIR" ] || perror "TMPDIR fail."
+declare -rg UPDATER="updater.sh"
+
+cp "updater.template.sh" "$UPDATER" || perror "could not copy template"
+chmod +x "$UPDATER"
+
+# Replace variables
+# slxadmin version
+echo -n "Includes SLX-Admin: "
+if [ -e "files/slx-admin.tar.gz" ]; then
+ echo "yes"
+ VERS=$(tar -xOf "files/slx-admin.tar.gz" "inc/database.inc.php" | grep -A3 'function getExpectedSchemaVersion' | grep -o -E 'return [0-9]+' | grep -o -E '[0-9]+')
+ [ -n "$VERS" ] || perror "Could not extract slx-admin version!"
+ echo "Version: $VERS"
+ sed -i "s/%TARGET_WEBIF_VERSION%/${VERS}/" "$UPDATER" || perror "could not patch slxadmin version in updater"
+else
+ echo "no"
+fi
+# Last patch: Payload offset
+# Calc payload offset, which is tricky as the size changes as we patch
+SIZE=$(stat -c %s "$UPDATER")
+SIZE=$(( ( $SIZE / 1024 ) * 1024 + 1024 ))
+sed -i "s/%PAYLOAD_OFFSET%/${SIZE}/" "$UPDATER" || perror "could not patch payload variable in updater"
+# Truncate, append payload
+truncate --size="$SIZE" "$UPDATER" || perror "Could not truncate updater to $SIZE bytes"
+tar ckz files/* >> "$UPDATER" || perror "Could not append payload to updater"
+
diff --git a/satellit_upgrader/installer.template.sh b/satellit_upgrader/updater.template.sh
index e5bdd75..5f7a4b5 100755..100644
--- a/satellit_upgrader/installer.template.sh
+++ b/satellit_upgrader/updater.template.sh
@@ -49,7 +49,7 @@ fi
# **********************************************************
# Get current webif version
-declare -rg CURRENT_WEBIF_VERSION=$(mysql -e 'SELECT value FROM openslx.property WHERE name = "webif-version" LIMIT 1')
+declare -rg CURRENT_WEBIF_VERSION=$(mysql -e 'SELECT value FROM openslx.property WHERE name = "webif-version" LIMIT 1' | tail -n 1)
[ -z "$CURRENT_WEBIF_VERSION" ] && perror "Could not determine current webif version"
[ "$CURRENT_WEBIF_VERSION" -le "$TARGET_WEBIF_VERSION" ] || perror "This update seems to be older than the server version you're currently running"
@@ -60,6 +60,7 @@ dd "bs=$PAYLOAD_OFFSET" "if=$0" skip=1 | tar -z -x -C "$TMPDIR"
RET=$?
[ "$RET" -ne 0 ] && perror "Extracting installer payload failed with exit code $RET"
+echo "SLX-Admin: $CURRENT_WEBIF_VERSION -> $TARGET_WEBIF_VERSION"
# File end
exit 0