diff --git a/share/pkgs/services/supervisor/centos8/scripts/lib/functions.sh b/share/pkgs/services/supervisor/centos8/scripts/lib/functions.sh index 4d1409321a..bd27bd11b9 100644 --- a/share/pkgs/services/supervisor/centos8/scripts/lib/functions.sh +++ b/share/pkgs/services/supervisor/centos8/scripts/lib/functions.sh @@ -147,3 +147,15 @@ wait_for_file() return 1 ) +is_true() +( + _value=$(echo "$1" | tr '[:upper:]' '[:lower:]') + + case "$_value" in + yes|true|1) + return 0 + ;; + esac + + return 1 +) diff --git a/share/pkgs/services/supervisor/centos8/scripts/opennebula.sh b/share/pkgs/services/supervisor/centos8/scripts/opennebula.sh index e15e14c433..7e8761ea06 100755 --- a/share/pkgs/services/supervisor/centos8/scripts/opennebula.sh +++ b/share/pkgs/services/supervisor/centos8/scripts/opennebula.sh @@ -53,6 +53,43 @@ fi msg "Database is running - continue" +# upgrade database if needed +msg "Check database version" + +# to avoid script termination on non-zero code from command - we wrap the +# command in if-else construct +if onedb version -v ; then + _status=0 +else + _status=$? +fi + +case "$_status" in + 0) + msg "Database is up-to-date - continue" + ;; + 1) + msg "Database was not created yet - continue" + ;; + 2) + msg "Upgrading database..." + if is_true "${ONED_DB_BACKUP_ENABLED:-yes}" ; then + _mysqldump="/var/lib/one/backups/db/opennebula-$(date +%Y-%m-%d-%s).sql" + onedb upgrade --backup "${_mysqldump}" + else + onedb upgrade --no-backup + fi + ;; + 3) + err "Database is newer than this opennebula version - ABORT" + exit 1 + ;; + *) + err "Returned unknown error by onedb - ABORT" + exit 1 + ;; +esac + # TODO: remove this once oned fix this: # https://github.com/OpenNebula/one/issues/5189 #