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

Reply via email to