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

Reply via email to