Alon Bar-Lev has uploaded a new change for review. Change subject: packaging: setup: move legacy connection handling to legacy plugin ......................................................................
packaging: setup: move legacy connection handling to legacy plugin Change-Id: Icfe88046644d86c520e4c530fe763c1b2cbec7cd Signed-off-by: Alon Bar-Lev <alo...@redhat.com> --- M packaging/setup/plugins/ovirt-engine-common/db/connection.py M packaging/setup/plugins/ovirt-engine-setup/legacy/__init__.py A packaging/setup/plugins/ovirt-engine-setup/legacy/database.py 3 files changed, 127 insertions(+), 55 deletions(-) git pull ssh://gerrit.ovirt.org:29418/ovirt-engine refs/changes/41/16541/1 diff --git a/packaging/setup/plugins/ovirt-engine-common/db/connection.py b/packaging/setup/plugins/ovirt-engine-common/db/connection.py index d99544b..0e36882 100644 --- a/packaging/setup/plugins/ovirt-engine-common/db/connection.py +++ b/packaging/setup/plugins/ovirt-engine-common/db/connection.py @@ -19,7 +19,6 @@ """Connection plugin.""" -import os import gettext _ = lambda m: gettext.dgettext(message=m, domain='ovirt-engine-setup') @@ -80,69 +79,47 @@ @plugin.event( stage=plugin.Stages.STAGE_SETUP, - name=osetupcons.Stages.DB_CONNECTION_SETUP, ) - def _setup(self): - + def _commands(self): dbovirtutils = database.OvirtUtils(plugin=self) dbovirtutils.detectCommands() - dbenv = None + @plugin.event( + stage=plugin.Stages.STAGE_SETUP, + name=osetupcons.Stages.DB_CONNECTION_SETUP, + condition=lambda self: self.environment[ + osetupcons.CoreEnv.ACTION + ] == osetupcons.Const.ACTION_UPGRADE, + ) + def _setup(self): config = osetuputil.ConfigFile([ osetupcons.FileLocations.OVIRT_ENGINE_SERVICE_CONFIG ]) if config.get('ENGINE_DB_PASSWORD') is not None: - dbenv = {} - for e, k in ( - (osetupcons.DBEnv.HOST, 'ENGINE_DB_HOST'), - (osetupcons.DBEnv.PORT, 'ENGINE_DB_PORT'), - (osetupcons.DBEnv.USER, 'ENGINE_DB_USER'), - (osetupcons.DBEnv.PASSWORD, 'ENGINE_DB_PASSWORD'), - (osetupcons.DBEnv.DATABASE, 'ENGINE_DB_DATABASE'), - ): - dbenv[e] = config.get(k) - for e, k in ( - (osetupcons.DBEnv.SECURED, 'ENGINE_DB_SECURED'), - ( - osetupcons.DBEnv.SECURED_HOST_VALIDATION, - 'ENGINE_DB_SECURED_VALIDATION' - ) - ): - dbenv[e] = config.getboolean(k) - - elif os.path.exists( - osetupcons.FileLocations.LEGACY_PSQL_PASS_FILE - ): - self.logger.info('Existing database pgpass found') - with open( - osetupcons.FileLocations.LEGACY_PSQL_PASS_FILE, - 'r', - ) as f: - for l in f: - l = l.rstrip('\n') - if ':%s:' % 'postgres' not in l: - d = l.split(':') - if len(d) == 5: - dbenv = { - osetupcons.DBEnv.HOST: d[0], - osetupcons.DBEnv.PORT: int(d[1]), - osetupcons.DBEnv.SECURED: None, - osetupcons.DBEnv.SECURED_HOST_VALIDATION: None, - osetupcons.DBEnv.DATABASE: ( - d[2] if d[2] != '*' - else - osetupcons.Defaults.DEFAULT_DB_DATABASE - ), - osetupcons.DBEnv.USER: d[3], - osetupcons.DBEnv.PASSWORD: d[4], - } - break - - if dbenv is not None: try: + dbenv = {} + for e, k in ( + (osetupcons.DBEnv.HOST, 'ENGINE_DB_HOST'), + (osetupcons.DBEnv.PORT, 'ENGINE_DB_PORT'), + (osetupcons.DBEnv.USER, 'ENGINE_DB_USER'), + (osetupcons.DBEnv.PASSWORD, 'ENGINE_DB_PASSWORD'), + (osetupcons.DBEnv.DATABASE, 'ENGINE_DB_DATABASE'), + ): + dbenv[e] = config.get(k) + for e, k in ( + (osetupcons.DBEnv.SECURED, 'ENGINE_DB_SECURED'), + ( + osetupcons.DBEnv.SECURED_HOST_VALIDATION, + 'ENGINE_DB_SECURED_VALIDATION' + ) + ): + dbenv[e] = config.getboolean(k) + self.environment[otopicons.CoreEnv.LOG_FILTER].append( dbenv[osetupcons.DBEnv.PASSWORD] ) + + dbovirtutils = database.OvirtUtils(plugin=self) dbovirtutils.tryDatabaseConnect(dbenv) self.environment.update(dbenv) self.environment[ @@ -150,17 +127,19 @@ ] = dbovirtutils.isNewDatabase() except RuntimeError as e: self.logger.debug( + 'Existing credential use failed', + exc_info=True, + ) + self.logger.warning( _( 'Cannot connect to database using existing ' - 'credentials: {user}@{host}:{port}, error: {error}' + 'credentials: {user}@{host}:{port}' ).format( host=dbenv[osetupcons.DBEnv.HOST], port=dbenv[osetupcons.DBEnv.PORT], database=dbenv[osetupcons.DBEnv.DATABASE], user=dbenv[osetupcons.DBEnv.USER], - error=e, ), - exc_info=True, ) diff --git a/packaging/setup/plugins/ovirt-engine-setup/legacy/__init__.py b/packaging/setup/plugins/ovirt-engine-setup/legacy/__init__.py index 0254764..fc7d425 100644 --- a/packaging/setup/plugins/ovirt-engine-setup/legacy/__init__.py +++ b/packaging/setup/plugins/ovirt-engine-setup/legacy/__init__.py @@ -28,6 +28,7 @@ from . import datadomain from . import firewall_manager from . import isodomain +from . import database @util.export @@ -38,6 +39,7 @@ datadomain.Plugin(context=context) firewall_manager.Plugin(context=context) isodomain.Plugin(context=context) + database.Plugin(context=context) # vim: expandtab tabstop=4 shiftwidth=4 diff --git a/packaging/setup/plugins/ovirt-engine-setup/legacy/database.py b/packaging/setup/plugins/ovirt-engine-setup/legacy/database.py new file mode 100644 index 0000000..8de87b8 --- /dev/null +++ b/packaging/setup/plugins/ovirt-engine-setup/legacy/database.py @@ -0,0 +1,91 @@ +# +# ovirt-engine-setup -- ovirt engine setup +# Copyright (C) 2013 Red Hat, Inc. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# + + +"""Database legacy migration.""" + + +import os +import gettext +_ = lambda m: gettext.dgettext(message=m, domain='ovirt-engine-setup') + + +from otopi import util +from otopi import plugin + + +from ovirt_engine_setup import constants as osetupcons +from ovirt_engine_setup import database + + +@util.export +class Plugin(plugin.PluginBase): + """Connection plugin.""" + + def __init__(self, context): + super(Plugin, self).__init__(context=context) + + @plugin.event( + stage=plugin.Stages.STAGE_SETUP, + before=[ + osetupcons.Stages.DB_CONNECTION_SETUP, + ], + condition=lambda self: self.environment[ + osetupcons.CoreEnv.UPGRADE_FROM_LEGACY + ], + ) + def _setup(self): + if os.path.exists( + osetupcons.FileLocations.LEGACY_PSQL_PASS_FILE + ): + self.logger.debug('Existing database pgpass found') + with open( + osetupcons.FileLocations.LEGACY_PSQL_PASS_FILE, + 'r', + ) as f: + for l in f: + l = l.rstrip('\n') + if ':%s:' % 'postgres' not in l: + d = l.split(':') + if len(d) == 5: + self.environment.update({ + osetupcons.DBEnv.HOST: d[0], + osetupcons.DBEnv.PORT: int(d[1]), + osetupcons.DBEnv.SECURED: None, + osetupcons.DBEnv.SECURED_HOST_VALIDATION: None, + osetupcons.DBEnv.DATABASE: ( + d[2] if d[2] != '*' + else + osetupcons.Defaults.DEFAULT_DB_DATABASE + ), + osetupcons.DBEnv.USER: d[3], + osetupcons.DBEnv.PASSWORD: d[4], + osetupcons.DBEnv.NEW_DATABASE: False, + }) + dbovirtutils = database.OvirtUtils(plugin=self) + dbovirtutils.tryDatabaseConnect() + if dbovirtutils.isNewDatabase(): + raise RuntimeError( + _( + 'Unexpected empty database ' + 'during upgrade' + ) + ) + break + + +# vim: expandtab tabstop=4 shiftwidth=4 -- To view, visit http://gerrit.ovirt.org/16541 To unsubscribe, visit http://gerrit.ovirt.org/settings Gerrit-MessageType: newchange Gerrit-Change-Id: Icfe88046644d86c520e4c530fe763c1b2cbec7cd 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