Yedidyah Bar David has uploaded a new change for review.

Change subject: packaging: setup: Use constants for db env keys
......................................................................

packaging: setup: Use constants for db env keys

Change-Id: I271b1c7c3682a3d0bcc69ae6ea6c9e717ed029d1
Signed-off-by: Yedidyah Bar David <[email protected]>
---
M packaging/setup/ovirt_engine_setup/engine/constants.py
M packaging/setup/ovirt_engine_setup/engine_common/constants.py
M packaging/setup/ovirt_engine_setup/engine_common/database.py
M packaging/setup/ovirt_engine_setup/engine_common/postgres.py
4 files changed, 151 insertions(+), 95 deletions(-)


  git pull ssh://gerrit.ovirt.org:29418/ovirt-engine refs/changes/61/39061/1

diff --git a/packaging/setup/ovirt_engine_setup/engine/constants.py 
b/packaging/setup/ovirt_engine_setup/engine/constants.py
index a400d88..3a69fc3 100644
--- a/packaging/setup/ovirt_engine_setup/engine/constants.py
+++ b/packaging/setup/ovirt_engine_setup/engine/constants.py
@@ -29,6 +29,7 @@
 from ovirt_engine_setup.constants import osetupattrs
 from ovirt_engine_setup.constants import osetupattrsclass
 from ovirt_engine_setup.engine_common import constants as oengcommcons
+dek = oengcommcons.DBEnvKeysConst
 
 from . import config
 
@@ -364,28 +365,28 @@
     @classproperty
     def ENGINE_DB_ENV_KEYS(self):
         return {
-            'host': EngineDBEnv.HOST,
-            'port': EngineDBEnv.PORT,
-            'secured': EngineDBEnv.SECURED,
-            'hostValidation': EngineDBEnv.SECURED_HOST_VALIDATION,
-            'user': EngineDBEnv.USER,
-            'password': EngineDBEnv.PASSWORD,
-            'database': EngineDBEnv.DATABASE,
-            'connection': EngineDBEnv.CONNECTION,
-            'pgpassfile': EngineDBEnv.PGPASS_FILE,
-            'newDatabase': EngineDBEnv.NEW_DATABASE,
+            dek.HOST: EngineDBEnv.HOST,
+            dek.PORT: EngineDBEnv.PORT,
+            dek.SECURED: EngineDBEnv.SECURED,
+            dek.HOST_VALIDATION: EngineDBEnv.SECURED_HOST_VALIDATION,
+            dek.USER: EngineDBEnv.USER,
+            dek.PASSWORD: EngineDBEnv.PASSWORD,
+            dek.DATABASE: EngineDBEnv.DATABASE,
+            dek.CONNECTION: EngineDBEnv.CONNECTION,
+            dek.PGPASSFILE: EngineDBEnv.PGPASS_FILE,
+            dek.NEW_DATABASE: EngineDBEnv.NEW_DATABASE,
         }
 
     @classproperty
     def DEFAULT_ENGINE_DB_ENV_KEYS(self):
         return {
-            'host': Defaults.DEFAULT_DB_HOST,
-            'port': Defaults.DEFAULT_DB_PORT,
-            'secured': Defaults.DEFAULT_DB_SECURED,
-            'hostValidation': Defaults.DEFAULT_DB_SECURED_HOST_VALIDATION,
-            'user': Defaults.DEFAULT_DB_USER,
-            'password': Defaults.DEFAULT_DB_PASSWORD,
-            'database': Defaults.DEFAULT_DB_DATABASE,
+            dek.HOST: Defaults.DEFAULT_DB_HOST,
+            dek.PORT: Defaults.DEFAULT_DB_PORT,
+            dek.SECURED: Defaults.DEFAULT_DB_SECURED,
+            dek.HOST_VALIDATION: Defaults.DEFAULT_DB_SECURED_HOST_VALIDATION,
+            dek.USER: Defaults.DEFAULT_DB_USER,
+            dek.PASSWORD: Defaults.DEFAULT_DB_PASSWORD,
+            dek.DATABASE: Defaults.DEFAULT_DB_DATABASE,
         }
 
 
diff --git a/packaging/setup/ovirt_engine_setup/engine_common/constants.py 
b/packaging/setup/ovirt_engine_setup/engine_common/constants.py
index 32eab30..89097f8 100644
--- a/packaging/setup/ovirt_engine_setup/engine_common/constants.py
+++ b/packaging/setup/ovirt_engine_setup/engine_common/constants.py
@@ -193,6 +193,43 @@
 @util.export
 @util.codegen
 @osetupattrsclass
+class DBEnvKeysConst(object):
+    HOST = 'host'
+    PORT = 'port'
+    SECURED = 'secured'
+    HOST_VALIDATION = 'hostValidation'
+    USER = 'user'
+    PASSWORD = 'password'
+    DATABASE = 'database'
+    CONNECTION = 'connection'
+    PGPASSFILE = 'pgpassfile'
+    NEW_DATABASE = 'newDatabase'
+
+    REQUIRED_KEYS = (
+        HOST,
+        PORT,
+        SECURED,
+        HOST_VALIDATION,
+        USER,
+        PASSWORD,
+        DATABASE,
+        CONNECTION,
+        PGPASSFILE,
+        NEW_DATABASE,
+    )
+
+    DEFAULTS_KEYS = (
+        USER,
+        DATABASE,
+        PORT,
+        SECURED,
+        HOST_VALIDATION,
+    )
+
+
[email protected]
[email protected]
+@osetupattrsclass
 class SystemEnv(object):
 
     USER_APACHE = 'OVESETUP_SYSTEM/userApache'
diff --git a/packaging/setup/ovirt_engine_setup/engine_common/database.py 
b/packaging/setup/ovirt_engine_setup/engine_common/database.py
index 298cb5b..b241168 100644
--- a/packaging/setup/ovirt_engine_setup/engine_common/database.py
+++ b/packaging/setup/ovirt_engine_setup/engine_common/database.py
@@ -31,6 +31,7 @@
 from ovirt_engine_setup import util as osetuputil
 from ovirt_engine_setup import dialog
 from ovirt_engine_setup.engine_common import constants as oengcommcons
+dek = oengcommcons.DBEnvKeysConst
 
 
 def _(m):
@@ -51,6 +52,12 @@
     ):
         super(Statement, self).__init__()
         self._environment = environment
+        if not set(dek.REQUIRED_KEYS) <= set(dbenvkeys.keys()):
+            raise RuntimeError(
+                _('Missing required db env keys: {keys}').format(
+                    keys=list(set(dek.REQUIRED_KEYS) - set(dbenvkeys.keys())),
+                )
+            )
         self._dbenvkeys = dbenvkeys
 
     def connect(
@@ -64,21 +71,21 @@
         database=None,
     ):
         if host is None:
-            host = self.environment[self._dbenvkeys['host']]
+            host = self.environment[self._dbenvkeys[dek.HOST]]
         if port is None:
-            port = self.environment[self._dbenvkeys['port']]
+            port = self.environment[self._dbenvkeys[dek.PORT]]
         if secured is None:
-            secured = self.environment[self._dbenvkeys['secured']]
+            secured = self.environment[self._dbenvkeys[dek.SECURED]]
         if securedHostValidation is None:
             securedHostValidation = self.environment[
-                self._dbenvkeys['hostValidation']
+                self._dbenvkeys[dek.HOST_VALIDATION]
             ]
         if user is None:
-            user = self.environment[self._dbenvkeys['user']]
+            user = self.environment[self._dbenvkeys[dek.USER]]
         if password is None:
-            password = self.environment[self._dbenvkeys['password']]
+            password = self.environment[self._dbenvkeys[dek.PASSWORD]]
         if database is None:
-            database = self.environment[self._dbenvkeys['database']]
+            database = self.environment[self._dbenvkeys[dek.DATABASE]]
 
         sslmode = 'allow'
         if secured:
@@ -162,7 +169,7 @@
                 args,
             )
             if not ownConnection:
-                connection = self.environment[self._dbenvkeys['connection']]
+                connection = self.environment[self._dbenvkeys[dek.CONNECTION]]
             else:
                 self.logger.debug('Creating own connection')
 
@@ -243,6 +250,12 @@
             if environment is None
             else environment
         )
+        if not set(dek.REQUIRED_KEYS) <= set(dbenvkeys.keys()):
+            raise RuntimeError(
+                _('Missing required db env keys: {keys}').format(
+                    keys=list(set(dek.REQUIRED_KEYS) - set(dbenvkeys.keys())),
+                )
+            )
         self._dbenvkeys = dbenvkeys
 
     def detectCommands(self):
@@ -277,21 +290,21 @@
                     '# DB USER credentials.\n'
                     '{host}:{port}:{database}:{user}:{password}\n'
                 ).format(
-                    host=self.environment[self._dbenvkeys['host']],
-                    port=self.environment[self._dbenvkeys['port']],
-                    database=self.environment[self._dbenvkeys['database']],
-                    user=self.environment[self._dbenvkeys['user']],
+                    host=self.environment[self._dbenvkeys[dek.HOST]],
+                    port=self.environment[self._dbenvkeys[dek.PORT]],
+                    database=self.environment[self._dbenvkeys[dek.DATABASE]],
+                    user=self.environment[self._dbenvkeys[dek.USER]],
                     password=(
-                        self.environment[self._dbenvkeys['password']]
+                        self.environment[self._dbenvkeys[dek.PASSWORD]]
                         if type(self)._plainPassword
                         else outil.escape(
-                            self.environment[self._dbenvkeys['password']],
+                            self.environment[self._dbenvkeys[dek.PASSWORD]],
                             ':\\',
                         )
                     ),
                 ),
             )
-        self.environment[self._dbenvkeys['pgpassfile']] = pgpass
+        self.environment[self._dbenvkeys[dek.PGPASSFILE]] = pgpass
 
     def tryDatabaseConnect(self, environment=None):
 
@@ -538,8 +551,8 @@
 
         self.logger.info(
             _("Backing up database {host}:{database} to '{file}'.").format(
-                host=self.environment[self._dbenvkeys['host']],
-                database=self.environment[self._dbenvkeys['database']],
+                host=self.environment[self._dbenvkeys[dek.HOST]],
+                database=self.environment[self._dbenvkeys[dek.DATABASE]],
                 file=backupFile,
             )
         )
@@ -550,15 +563,17 @@
                 '--disable-dollar-quoting',
                 '--disable-triggers',
                 '--format=c',
-                '-U', self.environment[self._dbenvkeys['user']],
-                '-h', self.environment[self._dbenvkeys['host']],
-                '-p', str(self.environment[self._dbenvkeys['port']]),
+                '-U', self.environment[self._dbenvkeys[dek.USER]],
+                '-h', self.environment[self._dbenvkeys[dek.HOST]],
+                '-p', str(self.environment[self._dbenvkeys[dek.PORT]]),
                 '-f', backupFile,
-                self.environment[self._dbenvkeys['database']],
+                self.environment[self._dbenvkeys[dek.DATABASE]],
             ),
             envAppend={
                 'PGPASSWORD': '',
-                'PGPASSFILE': self.environment[self._dbenvkeys['pgpassfile']],
+                'PGPASSFILE': self.environment[
+                    self._dbenvkeys[dek.PGPASSFILE]
+                ],
             },
         )
 
@@ -598,16 +613,18 @@
             (
                 self.command.get('pg_restore'),
                 '-w',
-                '-h', self.environment[self._dbenvkeys['host']],
-                '-p', str(self.environment[self._dbenvkeys['port']]),
-                '-U', self.environment[self._dbenvkeys['user']],
-                '-d', self.environment[self._dbenvkeys['database']],
+                '-h', self.environment[self._dbenvkeys[dek.HOST]],
+                '-p', str(self.environment[self._dbenvkeys[dek.PORT]]),
+                '-U', self.environment[self._dbenvkeys[dek.USER]],
+                '-d', self.environment[self._dbenvkeys[dek.DATABASE]],
                 '-j', '2',
                 backupFile,
             ),
             envAppend={
                 'PGPASSWORD': '',
-                'PGPASSFILE': self.environment[self._dbenvkeys['pgpassfile']],
+                'PGPASSFILE': self.environment[
+                    self._dbenvkeys[dek.PGPASSFILE]
+                ],
             },
             raiseOnError=False,
         )
@@ -622,7 +639,7 @@
                         'Errors while restoring {name} database, please check '
                         'the log file for details'
                     ).format(
-                        name=self.environment[self._dbenvkeys['database']],
+                        name=self.environment[self._dbenvkeys[dek.DATABASE]],
                     )
                 )
                 self.logger.debug(
@@ -784,11 +801,11 @@
         credsfile=None,
     ):
         interactive = None in (
-            self.environment[self._dbenvkeys['host']],
-            self.environment[self._dbenvkeys['port']],
-            self.environment[self._dbenvkeys['database']],
-            self.environment[self._dbenvkeys['user']],
-            self.environment[self._dbenvkeys['password']],
+            self.environment[self._dbenvkeys[dek.HOST]],
+            self.environment[self._dbenvkeys[dek.PORT]],
+            self.environment[self._dbenvkeys[dek.DATABASE]],
+            self.environment[self._dbenvkeys[dek.USER]],
+            self.environment[self._dbenvkeys[dek.PASSWORD]],
         )
 
         if interactive:
@@ -825,22 +842,22 @@
                         "Make sure that database can be accessed remotely.\n"
                         "\n"
                     ).format(
-                        user=defaultdbenvkeys['user'],
-                        database=defaultdbenvkeys['database'],
+                        user=defaultdbenvkeys[dek.USER],
+                        database=defaultdbenvkeys[dek.DATABASE],
                     ),
                 )
 
         connectionValid = False
         while not connectionValid:
-            host = self.environment[self._dbenvkeys['host']]
-            port = self.environment[self._dbenvkeys['port']]
-            secured = self.environment[self._dbenvkeys['secured']]
+            host = self.environment[self._dbenvkeys[dek.HOST]]
+            port = self.environment[self._dbenvkeys[dek.PORT]]
+            secured = self.environment[self._dbenvkeys[dek.SECURED]]
             securedHostValidation = self.environment[
-                self._dbenvkeys['hostValidation']
+                self._dbenvkeys[dek.HOST_VALIDATION]
             ]
-            db = self.environment[self._dbenvkeys['database']]
-            user = self.environment[self._dbenvkeys['user']]
-            password = self.environment[self._dbenvkeys['password']]
+            db = self.environment[self._dbenvkeys[dek.DATABASE]]
+            user = self.environment[self._dbenvkeys[dek.USER]]
+            password = self.environment[self._dbenvkeys[dek.PASSWORD]]
 
             if host is None:
                 while True:
@@ -852,7 +869,7 @@
                             name=name,
                         ),
                         prompt=True,
-                        default=defaultdbenvkeys['host'],
+                        default=defaultdbenvkeys[dek.HOST],
                     )
                     try:
                         socket.getaddrinfo(host, None)
@@ -876,7 +893,7 @@
                                     name=name,
                                 ),
                                 prompt=True,
-                                default=defaultdbenvkeys['port'],
+                                default=defaultdbenvkeys[dek.PORT],
                             )
                         )
                         break  # do while missing in python
@@ -894,7 +911,7 @@
                         name=name,
                     ),
                     prompt=True,
-                    default=defaultdbenvkeys['secured'],
+                    default=defaultdbenvkeys[dek.SECURED],
                 )
 
             if not secured:
@@ -925,7 +942,7 @@
                         name=name,
                     ),
                     prompt=True,
-                    default=defaultdbenvkeys['database'],
+                    default=defaultdbenvkeys[dek.DATABASE],
                 )
 
             if user is None:
@@ -937,7 +954,7 @@
                         name=name,
                     ),
                     prompt=True,
-                    default=defaultdbenvkeys['user'],
+                    default=defaultdbenvkeys[dek.USER],
                 )
 
             if password is None:
@@ -953,13 +970,13 @@
                 )
 
             dbenv = {
-                self._dbenvkeys['host']: host,
-                self._dbenvkeys['port']: port,
-                self._dbenvkeys['secured']: secured,
-                self._dbenvkeys['hostValidation']: securedHostValidation,
-                self._dbenvkeys['user']: user,
-                self._dbenvkeys['password']: password,
-                self._dbenvkeys['database']: db,
+                self._dbenvkeys[dek.HOST]: host,
+                self._dbenvkeys[dek.PORT]: port,
+                self._dbenvkeys[dek.SECURED]: secured,
+                self._dbenvkeys[dek.HOST_VALIDATION]: securedHostValidation,
+                self._dbenvkeys[dek.USER]: user,
+                self._dbenvkeys[dek.PASSWORD]: password,
+                self._dbenvkeys[dek.DATABASE]: db,
             }
 
             if interactive:
@@ -983,12 +1000,12 @@
 
         try:
             self.environment[
-                self._dbenvkeys['newDatabase']
+                self._dbenvkeys[dek.NEW_DATABASE]
             ] = self.isNewDatabase()
         except:
             self.logger.debug('database connection failed', exc_info=True)
 
-        if not self.environment[self._dbenvkeys['newDatabase']]:
+        if not self.environment[self._dbenvkeys[dek.NEW_DATABASE]]:
             self._checkDbConf(environment=dbenv, name=name)
 
 
diff --git a/packaging/setup/ovirt_engine_setup/engine_common/postgres.py 
b/packaging/setup/ovirt_engine_setup/engine_common/postgres.py
index 897c977..77ad64a 100644
--- a/packaging/setup/ovirt_engine_setup/engine_common/postgres.py
+++ b/packaging/setup/ovirt_engine_setup/engine_common/postgres.py
@@ -30,6 +30,7 @@
 from ovirt_engine_setup import constants as osetupcons
 from ovirt_engine_setup import util as osetuputil
 from ovirt_engine_setup.engine_common import constants as oengcommcons
+dek = oengcommcons.DBEnvKeysConst
 from ovirt_engine_setup.engine_common import database
 
 
@@ -100,7 +101,7 @@
             """,
             args=dict(
                 database=self.environment[
-                    self._dbenvkeys['database']
+                    self._dbenvkeys[dek.DATABASE]
                 ],
             ),
             ownConnection=True,
@@ -114,7 +115,7 @@
             """,
             args=dict(
                 user=self.environment[
-                    self._dbenvkeys['user']
+                    self._dbenvkeys[dek.USER]
                 ],
             ),
             ownConnection=True,
@@ -132,7 +133,7 @@
             )
             if dbovirtutils.isNewDatabase(
                 database=self.environment[
-                    self._dbenvkeys['database']
+                    self._dbenvkeys[dek.DATABASE]
                 ],
             ):
                 self.logger.debug('Found empty database')
@@ -144,8 +145,8 @@
         if generate:
             self.logger.debug('Existing resources found, generating names')
             suffix = '_%s' % datetime.datetime.now().strftime('%Y%m%d%H%M%S')
-            self.environment[self._dbenvkeys['database']] += suffix
-            self.environment[self._dbenvkeys['user']] += suffix
+            self.environment[self._dbenvkeys[dek.DATABASE]] += suffix
+            self.environment[self._dbenvkeys[dek.USER]] += suffix
             self._renamedDBResources = True
 
         return existing
@@ -166,7 +167,7 @@
             ).format(
                 op=op,
                 user=self.environment[
-                    self._dbenvkeys['user']
+                    self._dbenvkeys[dek.USER]
                 ],
             ),
 
@@ -180,10 +181,10 @@
                 op=op,
                 to='to' if op == 'alter' else '',
                 database=self.environment[
-                    self._dbenvkeys['database']
+                    self._dbenvkeys[dek.DATABASE]
                 ],
                 user=self.environment[
-                    self._dbenvkeys['user']
+                    self._dbenvkeys[dek.USER]
                 ],
                 encoding="""
                     template template0
@@ -203,7 +204,7 @@
                 statement=statement,
                 args=dict(
                     password=self.environment[
-                        self._dbenvkeys['password']
+                        self._dbenvkeys[dek.PASSWORD]
                     ],
                 ),
                 ownConnection=True,
@@ -328,10 +329,10 @@
             ).format(
                 host='host',
                 user=self.environment[
-                    self._dbenvkeys['user']
+                    self._dbenvkeys[dek.USER]
                 ],
                 database=self.environment[
-                    self._dbenvkeys['database']
+                    self._dbenvkeys[dek.DATABASE]
                 ],
                 address=address,
                 auth='md5',
@@ -445,12 +446,12 @@
         return ''.join([rand.choice(self._PASSWORD_CHARS) for i in range(22)])
 
     def applyEnvironment(self):
-        for k in ('user', 'database', 'port', 'secured', 'hostValidation'):
+        for k in dek.DEFAULTS_KEYS:
             if self.environment[self._dbenvkeys[k]] is None:
                 self.environment[self._dbenvkeys[k]] = self._defaults[k]
-        if self.environment[self._dbenvkeys['password']] is None:
+        if self.environment[self._dbenvkeys[dek.PASSWORD]] is None:
             self.environment[
-                self._dbenvkeys['password']
+                self._dbenvkeys[dek.PASSWORD]
             ] = self.generatePassword()
 
     def provision(self):
@@ -466,7 +467,7 @@
 
         self.logger.info(
             _("Creating PostgreSQL '{database}' database").format(
-                database=self.environment[self._dbenvkeys['database']],
+                database=self.environment[self._dbenvkeys[dek.DATABASE]],
             )
         )
         localtransaction = transaction.Transaction()
@@ -485,13 +486,13 @@
                 ],
             ):
                 usockenv = {
-                    self._dbenvkeys['host']: '',  # usock
-                    self._dbenvkeys['port']: '',
-                    self._dbenvkeys['secured']: False,
-                    self._dbenvkeys['hostValidation']: False,
-                    self._dbenvkeys['user']: 'postgres',
-                    self._dbenvkeys['password']: '',
-                    self._dbenvkeys['database']: 'template1',
+                    self._dbenvkeys[dek.HOST]: '',  # usock
+                    self._dbenvkeys[dek.PORT]: '',
+                    self._dbenvkeys[dek.SECURED]: False,
+                    self._dbenvkeys[dek.HOST_VALIDATION]: False,
+                    self._dbenvkeys[dek.USER]: 'postgres',
+                    self._dbenvkeys[dek.PASSWORD]: '',
+                    self._dbenvkeys[dek.DATABASE]: 'template1',
                 }
                 self._waitForDatabase(
                     environment=usockenv,


-- 
To view, visit https://gerrit.ovirt.org/39061
To unsubscribe, visit https://gerrit.ovirt.org/settings

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

Reply via email to