def execute(self, args, show_output=True): engine = self._get_engine(args) session = self._get_session(engine) if engine.dialect.has_table(engine.connect(), 'install_state'): if show_output: version = session.query(ZatoInstallState.version).one().version msg = ( 'The ODB (v. {}) already exists, not creating it. ' + "Use the 'zato delete odb' command first if you'd like to start afresh and " + 'recreate all ODB objects.').format(version) self.logger.error(msg) return self.SYS_ERROR.ODB_EXISTS else: Base.metadata.create_all(engine) state = ZatoInstallState(None, VERSION, datetime.now(), gethostname(), getuser()) alembic_rev = AlembicRevision(LATEST_ALEMBIC_REVISION) session.add(state) session.add(alembic_rev) session.commit() if show_output: if self.verbose: self.logger.debug('Successfully created the ODB') else: self.logger.info('OK')
def execute(self, args, show_output=True): engine = self._get_engine(args) session = self._get_session(engine) if engine.dialect.has_table(engine.connect(), 'install_state'): if is_arg_given(args, 'skip-if-exists'): if show_output: if self.verbose: self.logger.debug( 'ODB already exists, skipped its creation') else: self.logger.info('OK') else: if show_output: version = session.query( ZatoInstallState.version).one().version msg = ( 'The ODB (v. {}) already exists, not creating it. ' + \ "Use the 'zato delete odb' command first if you'd like to start afresh and " + \ 'recreate all ODB objects.').format(version) self.logger.error(msg) return self.SYS_ERROR.ODB_EXISTS else: # This is needed so that PubSubMessage.data can continue to use length # in the column's specification which in itself is needed for MySQL to use LONGTEXT. def _render_string_type(self, type_, name): text = name if type_.length and name != 'TEXT': text += "(%d)" % type_.length if type_.collation: text += ' COLLATE "%s"' % type_.collation return text PGTypeCompiler._render_string_type = _render_string_type Base.metadata.create_all(engine) state = ZatoInstallState(None, VERSION, datetime.now(), gethostname(), getuser()) alembic_rev = AlembicRevision(LATEST_ALEMBIC_REVISION) session.add(state) session.add(alembic_rev) session.commit() if show_output: if self.verbose: self.logger.debug('Successfully created the ODB') else: self.logger.info('OK')