From 7b82364b514db28e0c86e8e1d96fddb6eeacb0d5 Mon Sep 17 00:00:00 2001 From: Julien Danjou Date: Wed, 29 Jun 2016 15:51:12 +0200 Subject: [PATCH] sqlalchemy: allow to upgrade schema from Ceilometer Liberty This should allow to upgrade database schemas from Ceilometer Liberty without much trouble. Change-Id: Ie8c0873f0c3ceb2daa964417e19cfc7da5bea3e8 --- aodh/storage/impl_sqlalchemy.py | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/aodh/storage/impl_sqlalchemy.py b/aodh/storage/impl_sqlalchemy.py index 00cd7141a..53da0e61d 100644 --- a/aodh/storage/impl_sqlalchemy.py +++ b/aodh/storage/impl_sqlalchemy.py @@ -20,6 +20,7 @@ import os.path from alembic import command from alembic import config from alembic import migration +from oslo_db import exception from oslo_db.sqlalchemy import session as db_session from oslo_db.sqlalchemy import utils as oslo_sql_utils from oslo_log import log @@ -94,8 +95,15 @@ class Connection(base.Connection): ctxt = migration.MigrationContext.configure(engine.connect()) current_version = ctxt.get_current_revision() if current_version is None: - models.Base.metadata.create_all(engine) - command.stamp(cfg, "head") + try: + models.Base.metadata.create_all(engine, checkfirst=False) + except exception.DBError: + # Assume tables exist from Ceilometer, take control + # FIXME(jd) Remove in Ocata + command.stamp(cfg, "12fe8fac9fe4") + command.upgrade(cfg, "head") + else: + command.stamp(cfg, "head") else: command.upgrade(cfg, "head")