Alon Bar-Lev has uploaded a new change for review. Change subject: packaging: setup: move createPgPass to setup lib ......................................................................
packaging: setup: move createPgPass to setup lib Change-Id: I792a4f6155d3287a65120f6a87452f3920b33e67 Signed-off-by: Alon Bar-Lev <alo...@redhat.com> --- M packaging/setup/ovirt_engine_setup/database.py M packaging/setup/plugins/ovirt-engine-common/base/db/pgpass.py 2 files changed, 58 insertions(+), 59 deletions(-) git pull ssh://gerrit.ovirt.org:29418/ovirt-engine refs/changes/20/22920/1 diff --git a/packaging/setup/ovirt_engine_setup/database.py b/packaging/setup/ovirt_engine_setup/database.py index e7960da..f0fcc96 100644 --- a/packaging/setup/ovirt_engine_setup/database.py +++ b/packaging/setup/ovirt_engine_setup/database.py @@ -16,6 +16,7 @@ # +import atexit import os import base64 import tempfile @@ -33,6 +34,9 @@ from otopi import base from otopi import util + + +from ovirt_engine import util as outil from ovirt_engine_setup import constants as osetupcons @@ -256,6 +260,38 @@ @util.export +class Utils(base.Base): + + def createPgPass( + self, + host, + port, + database, + user, + password, + ): + fd, pgpass = tempfile.mkstemp() + atexit.register(os.unlink, pgpass) + with os.fdopen(fd, 'w') as f: + f.write( + ( + '# DB USER credentials.\n' + '{host}:{port}:{database}:{user}:{password}\n' + ).format( + host=host, + port=port, + database=database, + user=user, + password=outil.escape( + password, + ':\\', + ), + ), + ) + return pgpass + + +@util.export class OvirtUtils(base.Base): @property diff --git a/packaging/setup/plugins/ovirt-engine-common/base/db/pgpass.py b/packaging/setup/plugins/ovirt-engine-common/base/db/pgpass.py index 6ac350c..d23e201 100644 --- a/packaging/setup/plugins/ovirt-engine-common/base/db/pgpass.py +++ b/packaging/setup/plugins/ovirt-engine-common/base/db/pgpass.py @@ -19,8 +19,6 @@ """DB pgpass plugin.""" -import os -import tempfile import gettext _ = lambda m: gettext.dgettext(message=m, domain='ovirt-engine-setup') @@ -29,10 +27,8 @@ from otopi import plugin -from ovirt_engine import util as outil - - from ovirt_engine_setup import constants as osetupcons +from ovirt_engine_setup import database @util.export @@ -40,47 +36,6 @@ """DB pgpass plugin.""" def __init__(self, context): super(Plugin, self).__init__(context=context) - - def _createTempPgPass(self): - pgpass = None - if self.environment[ - osetupcons.DBEnv.PGPASS_FILE - ] is not None: - pgpass = self.environment[ - osetupcons.DBEnv.PGPASS_FILE - ] - else: - fd, pgpass = tempfile.mkstemp( - prefix='pgpass', - suffix='.tmp', - ) - os.close(fd) - os.chmod(pgpass, 0o600) - self.logger.debug( - 'Password==None %s', - self.environment[osetupcons.DBEnv.PASSWORD] is None, - ) - if self.environment[osetupcons.DBEnv.PASSWORD] is not None: - with open(pgpass, 'w') as f: - f.write( - ( - '# DB USER credentials.\n' - '{host}:{port}:{database}:{user}:{password}\n' - ).format( - host=self.environment[osetupcons.DBEnv.HOST], - port=self.environment[osetupcons.DBEnv.PORT], - database=self.environment[osetupcons.DBEnv.DATABASE], - user=self.environment[osetupcons.DBEnv.USER], - password=outil.escape( - self.environment[osetupcons.DBEnv.PASSWORD], - ':\\', - ), - ), - ) - - self.environment[ - osetupcons.DBEnv.PGPASS_FILE - ] = pgpass @plugin.event( stage=plugin.Stages.STAGE_INIT, @@ -93,25 +48,33 @@ name=osetupcons.Stages.DB_CREDENTIALS_AVAILABLE_EARLY, ) def _validation(self): - self._createTempPgPass() + # this required for dbvalidations + if self.environment[osetupcons.DBEnv.PASSWORD] is not None: + self.environment[ + osetupcons.DBEnv.PGPASS_FILE + ] = database.Utils().createPgPass( + host=self.environment[osetupcons.DBEnv.HOST], + port=self.environment[osetupcons.DBEnv.PORT], + database=self.environment[osetupcons.DBEnv.DATABASE], + user=self.environment[osetupcons.DBEnv.USER], + password=self.environment[osetupcons.DBEnv.PASSWORD], + ) @plugin.event( stage=plugin.Stages.STAGE_MISC, name=osetupcons.Stages.DB_CREDENTIALS_AVAILABLE_LATE, ) def _misc(self): - self._createTempPgPass() - - @plugin.event( - stage=plugin.Stages.STAGE_CLEANUP, - condition=lambda self: self.environment[ - osetupcons.DBEnv.PGPASS_FILE - ] is not None, - ) - def _cleanup(self): - f = self.environment[osetupcons.DBEnv.PGPASS_FILE] - if os.path.exists(f): - os.unlink(f) + if self.environment[osetupcons.DBEnv.PGPASS_FILE] is None: + self.environment[ + osetupcons.DBEnv.PGPASS_FILE + ] = database.Utils().createPgPass( + host=self.environment[osetupcons.DBEnv.HOST], + port=self.environment[osetupcons.DBEnv.PORT], + database=self.environment[osetupcons.DBEnv.DATABASE], + user=self.environment[osetupcons.DBEnv.USER], + password=self.environment[osetupcons.DBEnv.PASSWORD], + ) # vim: expandtab tabstop=4 shiftwidth=4 -- To view, visit http://gerrit.ovirt.org/22920 To unsubscribe, visit http://gerrit.ovirt.org/settings Gerrit-MessageType: newchange Gerrit-Change-Id: I792a4f6155d3287a65120f6a87452f3920b33e67 Gerrit-PatchSet: 1 Gerrit-Project: ovirt-engine Gerrit-Branch: master Gerrit-Owner: Alon Bar-Lev <alo...@redhat.com> _______________________________________________ Engine-patches mailing list Engine-patches@ovirt.org http://lists.ovirt.org/mailman/listinfo/engine-patches