Ofer Schreiber has uploaded a new change for review. Change subject: packaging: engine-upgrade - check for free space before upgrade ......................................................................
packaging: engine-upgrade - check for free space before upgrade Add pre-run check to engine-upgrade, so it will verify that enough free space is available for future database backup Change-Id: I90eae48aea70187dc88c79044a353089f69350a0 Signed-off-by: Ofer Schreiber <oschr...@redhat.com> --- M packaging/fedora/setup/common_utils.py M packaging/fedora/setup/engine-upgrade.py M packaging/fedora/setup/output_messages.py 3 files changed, 36 insertions(+), 1 deletion(-) git pull ssh://gerrit.ovirt.org:29418/ovirt-engine refs/changes/44/9744/1 diff --git a/packaging/fedora/setup/common_utils.py b/packaging/fedora/setup/common_utils.py index 84468aa..10fc32f 100755 --- a/packaging/fedora/setup/common_utils.py +++ b/packaging/fedora/setup/common_utils.py @@ -1312,6 +1312,7 @@ # Check that it is an OpenJDK: match = re.search(r'^OpenJDK .*$', str(javaOut), re.MULTILINE) + if not match: logging.debug("The Java launcher \"%s\" is not OpenJDK." % javaLauncher) return False @@ -1410,3 +1411,17 @@ def restoreEngineFromMaintenance(): if os.path.exists(basedefs.FILE_ENGINE_SYSCONFIG_MAINTENANCE): os.remove(basedefs.FILE_ENGINE_SYSCONFIG_MAINTENANCE) + +# Returns db size in MB +def getDbSize(dbname): + sql = "SELECT pg_database_size(\'%s\')" % (dbname) + out, rc = execRemoteSqlCommand(getDbUser(), + getDbHostName(), + getDbPort(), + basedefs.DB_POSTGRES, + sql, + True, + output_messages.ERR_DB_GET_SPACE % (dbname)) + size = int(out.splitlines()[2].strip()) + size = size / 1024 / 1024 # Get size in MB + return size diff --git a/packaging/fedora/setup/engine-upgrade.py b/packaging/fedora/setup/engine-upgrade.py index f9467a9..252c7c9 100755 --- a/packaging/fedora/setup/engine-upgrade.py +++ b/packaging/fedora/setup/engine-upgrade.py @@ -201,6 +201,9 @@ action="store_true", dest="ignore_tasks", default=False, help=SUPPRESS_HELP) + parser.add_option("-n", "--no-space-check", help="Disable spacecheck", action="store_true", default=False) + + (options, args) = parser.parse_args() return (options, args) @@ -1097,6 +1100,18 @@ print "\n%s\n" % MSG_INFO_UPGRADE_OK printMessages() +def _checkAvailableSpace(): + # Get Engine DB Size + engineSize = utils.getDbSize(basedefs.DB_NAME) + + # Check available space in backup location + freeSpace = utils.getAvailableSpace(BACKUP_DIR) + if freeSpace < (engineSize * 0.95): + logging.error("Availble disk space at %s (%s) is lower then the minimum requirments for database backup (%s)" + % (BACKUP_DIR, freeSpace, engineSize)) + print output_messages.ERR_EXP_NO_SPACE % (BACKUP_DIR, freeSpace, engineSize) + raise Exception(output_messages.ERR_EXP_NO_SPACE % (BACKUP_DIR, freeSpace, engineSize)) + if __name__ == '__main__': try: # Must run as root @@ -1110,9 +1125,12 @@ SERVER_PORT = utils.getDbPort() SERVER_ADMIN = utils.getDbUser() - # get iso and domain from user arguments + # get user arguments (options, args) = getOptions() + if not options.no_space_check: + _checkAvailableSpace() + main(options) except SystemExit: diff --git a/packaging/fedora/setup/output_messages.py b/packaging/fedora/setup/output_messages.py index 2714ead..16e9c1a 100644 --- a/packaging/fedora/setup/output_messages.py +++ b/packaging/fedora/setup/output_messages.py @@ -232,6 +232,7 @@ ERR_DB_RESTORE="Database restore failed" ERR_DB_DROP="Database drop failed" ERR_DB_RENAME = "Failed to rename DB '%s' to '%s'. Check that there are no active connections and try again." +ERR_DB_GET_SPACE = "Error: Failed to get %s database size." ERR_DB_CONNECTION = "Could not connect to host %s with provided credentials. Check that your settings are correct." ERR_DB_CREATE_PRIV = "Couldn't create temp database on server %s. Check provided credentials." ERR_DB_DROP_PRIV = "Couldn't drop temp database on server %s. Check provided credentials." @@ -393,6 +394,7 @@ #error running free ERR_EXP_FREE_MEM="Internal error occurred when trying to determine the amount of available memory.\nPlease make that there is at least %s MB of memory on the Host" % basedefs.CONST_MIN_MEMORY_MB ERR_EXP_NOT_EMOUGH_MEMORY="Error: Not enough available memory on the Host\n(the minimum requirement is %s MB and the recommended is %s MB)." % (basedefs.CONST_MIN_MEMORY_MB, basedefs.CONST_WARN_MEMORY_MB) +ERR_EXP_NO_SPACE="Not enough available space on the Host\n(Current available space at %s is %s MB and %s MB is needed)." #import iso files ERR_FAILED_TO_COPY_FILE_TO_ISO_DOMAIN="Failed to copy files to iso domain" -- To view, visit http://gerrit.ovirt.org/9744 To unsubscribe, visit http://gerrit.ovirt.org/settings Gerrit-MessageType: newchange Gerrit-Change-Id: I90eae48aea70187dc88c79044a353089f69350a0 Gerrit-PatchSet: 1 Gerrit-Project: ovirt-engine Gerrit-Branch: master Gerrit-Owner: Ofer Schreiber <oschr...@redhat.com> _______________________________________________ Engine-patches mailing list Engine-patches@ovirt.org http://lists.ovirt.org/mailman/listinfo/engine-patches