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
