Alex Lourie has uploaded a new change for review.

Change subject: packaging: updated handling of pgpass file between versions
......................................................................

packaging: updated handling of pgpass file between versions

Change-Id: I1d44297725d7270982e8724e4aeefda8bc7a88e2
Signed-off-by: Alex Lourie <[email protected]>
---
M packaging/fedora/setup/common_utils.py
M packaging/fedora/setup/engine-upgrade.py
2 files changed, 30 insertions(+), 25 deletions(-)


  git pull ssh://gerrit.ovirt.org:29418/ovirt-engine refs/changes/35/8135/1

diff --git a/packaging/fedora/setup/common_utils.py 
b/packaging/fedora/setup/common_utils.py
index a9be291..17db4cd 100755
--- a/packaging/fedora/setup/common_utils.py
+++ b/packaging/fedora/setup/common_utils.py
@@ -304,9 +304,10 @@
 
     # Update os.environ with env if provided
     env = os.environ.copy()
+    env.update(envDict or {})
+    # if PGPASSFILE is still not defined, set to default
     if not "PGPASSFILE" in env.keys():
         env["PGPASSFILE"] = basedefs.DB_PASS_FILE
-    env.update(envDict or {})
 
     # We use close_fds to close any file descriptors we have so it won't be 
copied to forked childs
     proc = subprocess.Popen(
@@ -351,8 +352,7 @@
     return execCmd(cmdList=cmd, failOnError=failOnError, msg=errMsg, 
envDict=env)
 
 #TODO: refactor this and previous functions into same execution.
-def execRemoteSqlCommand(userName, dbHost, dbPort, dbName, sqlQuery, 
failOnError=False, errMsg=output_messages.ERR_SQL_CODE):
-    env = { "PGPASSFILE" : basedefs.DB_PASS_FILE }
+def execRemoteSqlCommand(userName, dbHost, dbPort, dbName, sqlQuery, 
failOnError=False, errMsg=output_messages.ERR_SQL_CODE, envDict=None):
     logging.debug("running sql query '%s' on db server: \'%s\'." % (sqlQuery, 
dbHost))
     cmd = [
         basedefs.EXEC_PSQL,
@@ -362,7 +362,7 @@
         "-d", dbName,
         "-c", sqlQuery,
     ]
-    return execCmd(cmdList=cmd, failOnError=failOnError, msg=errMsg, 
envDict=env)
+    return execCmd(cmdList=cmd, failOnError=failOnError, msg=errMsg, 
envDict=envDict)
 
 def replaceWithLink(target, link):
     """
diff --git a/packaging/fedora/setup/engine-upgrade.py 
b/packaging/fedora/setup/engine-upgrade.py
index 3bcc90a..8fab25b 100755
--- a/packaging/fedora/setup/engine-upgrade.py
+++ b/packaging/fedora/setup/engine-upgrade.py
@@ -443,6 +443,14 @@
         self.dbrenamed = False
         self.name = basedefs.DB_NAME
 
+        # .pgpass definition
+        if os.path.exists(basedefs.DB_PASS_FILE):
+            self.env = { "PGPASSFILE" : basedefs.DB_PASS_FILE }
+        elif os.path.exists(basedefs.ORIG_PASS_FILE):
+            self.env = { "PGPASSFILE" : basedefs.ORIG_PASS_FILE }
+        else:
+            raise Exception(MSG_ERROR_PGPASS)
+
     def __del__(self):
         if self.updated:
             logging.debug(MSG_INFO_DB_BACKUP_FILE + self.sqlfile)
@@ -466,7 +474,7 @@
             "-f", self.sqlfile,
             basedefs.DB_NAME,
         ]
-        output, rc = utils.execCmd(cmdList=cmd, failOnError=True, 
msg=MSG_ERROR_BACKUP_DB)
+        output, rc = utils.execCmd(cmdList=cmd, failOnError=True, 
msg=MSG_ERROR_BACKUP_DB, envDict=self.env)
         logging.debug("DB Backup completed successfully")
 
     def restore(self):
@@ -486,9 +494,6 @@
             ]
             output, rc = utils.execCmd(cmdList=cmd, failOnError=True, 
msg=MSG_ERROR_DROP_DB)
 
-            # .pgpass definition
-            env = { "PGPASSFILE" : basedefs.DB_PASS_FILE }
-
             # Restore
             cmd = [
                 basedefs.EXEC_PSQL,
@@ -498,7 +503,7 @@
                 "-d", basedefs.DB_TEMPLATE,
                 "-f", self.sqlfile,
             ]
-            output, rc = utils.execCmd(cmdList=cmd, failOnError=True, 
msg=MSG_ERROR_RESTORE_DB, envDict=env)
+            output, rc = utils.execCmd(cmdList=cmd, failOnError=True, 
msg=MSG_ERROR_RESTORE_DB, envDict=self.env)
             logging.debug("DB Restore completed successfully")
         else:
             logging.debug("No DB Restore needed")
@@ -538,7 +543,7 @@
         # run the rename query and raise Exception on error
         query = "ALTER DATABASE %s RENAME TO %s" % (self.name, newname)
         try:
-            utils.execRemoteSqlCommand(SERVER_ADMIN, SERVER_NAME, SERVER_PORT, 
basedefs.DB_TEMPLATE, query, True, MSG_ERROR_RENAME_DB)
+            utils.execRemoteSqlCommand(SERVER_ADMIN, SERVER_NAME, SERVER_PORT, 
basedefs.DB_TEMPLATE, query, True, MSG_ERROR_RENAME_DB, envDict=self.env)
             # set name to the newname
             self.name = newname
             # toggle dbrenamed value to TRUE
@@ -692,21 +697,6 @@
     db = DB()
     DB_NAME_TEMP = "%s_%s" % (basedefs.DB_NAME, utils.getCurrentDateTime())
 
-    # Handle pgpass
-    if not os.path.exists(basedefs.DB_PASS_FILE):
-        if not os.path.exists(basedefs.ORIG_PASS_FILE):
-            logging.error(MSG_ERROR_PGPASS)
-            print MSG_ERROR_PGPASS
-            sys.exit(1)
-        else:
-            logging.info("Info: Found .pgpass file at old location. Moving it 
to a new location.")
-            shutil.copy(basedefs.ORIG_PASS_FILE, basedefs.DB_PASS_FILE)
-
-            # File is copied/created by root, so no need to verify the owner.
-            os.chmod(basedefs.DB_PASS_FILE, 0600)
-    else:
-        logging.info("Info: %s file found. Continue.", basedefs.DB_PASS_FILE)
-
     # Functions/parameters definitions
     stopEngineService = [stopEngine]
     upgradeFunc = [rhyum.update]
@@ -773,6 +763,21 @@
         # If we're here, update/upgrade went fine, so
         rhyum.updated = True
 
+        # Handle pgpass
+        if not os.path.exists(basedefs.DB_PASS_FILE):
+            if not os.path.exists(basedefs.ORIG_PASS_FILE):
+                logging.error(MSG_ERROR_PGPASS)
+                print MSG_ERROR_PGPASS
+                sys.exit(1)
+            else:
+                logging.info("Info: Found .pgpass file at old location. Moving 
it to a new location.")
+                shutil.copy(basedefs.ORIG_PASS_FILE, basedefs.DB_PASS_FILE)
+
+                # File is copied/created by root, so no need to verify the 
owner.
+                os.chmod(basedefs.DB_PASS_FILE, 0600)
+        else:
+            logging.info("Info: %s file found. Continue.", 
basedefs.DB_PASS_FILE)
+
         # define db connections services
         etlService = utils.Service("ovirt-engine-etl")
         notificationService = utils.Service("ovirt-engine-notifierd")


--
To view, visit http://gerrit.ovirt.org/8135
To unsubscribe, visit http://gerrit.ovirt.org/settings

Gerrit-MessageType: newchange
Gerrit-Change-Id: I1d44297725d7270982e8724e4aeefda8bc7a88e2
Gerrit-PatchSet: 1
Gerrit-Project: ovirt-engine
Gerrit-Branch: master
Gerrit-Owner: Alex Lourie <[email protected]>
_______________________________________________
Engine-patches mailing list
[email protected]
http://lists.ovirt.org/mailman/listinfo/engine-patches

Reply via email to