diff options
author | Jenkins <jenkins@review.openstack.org> | 2016-07-20 08:59:58 +0000 |
---|---|---|
committer | Gerrit Code Review <review@openstack.org> | 2016-07-20 08:59:58 +0000 |
commit | fd9ee40216b445115f3d828df81c4163ad80cc75 (patch) | |
tree | 40ccf3dd55f97c6639b65424f4eecb26717b9273 | |
parent | 51d5a8e9f3549efbea5ae85c099cc3d5b45920b8 (diff) | |
parent | 7f4f983ea8478514ebc4117f58d0506c55d66285 (diff) | |
download | ceilometer-fd9ee40216b445115f3d828df81c4163ad80cc75.tar.gz |
Merge "sqlalchemy: do not run upgrade on fresh install" into stable/mitaka6.1.3
-rw-r--r-- | ceilometer/event/storage/impl_sqlalchemy.py | 15 | ||||
-rw-r--r-- | ceilometer/storage/impl_sqlalchemy.py | 15 | ||||
-rw-r--r-- | ceilometer/storage/sqlalchemy/models.py | 22 |
3 files changed, 46 insertions, 6 deletions
diff --git a/ceilometer/event/storage/impl_sqlalchemy.py b/ceilometer/event/storage/impl_sqlalchemy.py index b53e0f18..0a350188 100644 --- a/ceilometer/event/storage/impl_sqlalchemy.py +++ b/ceilometer/event/storage/impl_sqlalchemy.py @@ -142,7 +142,20 @@ class Connection(base.Connection): path = os.path.join(os.path.abspath(os.path.dirname(__file__)), '..', '..', 'storage', 'sqlalchemy', 'migrate_repo') - migration.db_sync(self._engine_facade.get_engine(), path) + engine = self._engine_facade.get_engine() + + from migrate import exceptions as migrate_exc + from migrate.versioning import api + from migrate.versioning import repository + + repo = repository.Repository(path) + try: + api.db_version(engine, repo) + except migrate_exc.DatabaseNotControlledError: + models.Base.metadata.create_all(engine) + api.version_control(engine, repo, repo.latest) + else: + migration.db_sync(engine, path) def clear(self): engine = self._engine_facade.get_engine() diff --git a/ceilometer/storage/impl_sqlalchemy.py b/ceilometer/storage/impl_sqlalchemy.py index ec9f8044..e70cc6c1 100644 --- a/ceilometer/storage/impl_sqlalchemy.py +++ b/ceilometer/storage/impl_sqlalchemy.py @@ -237,7 +237,20 @@ class Connection(base.Connection): from oslo_db.sqlalchemy import migration path = os.path.join(os.path.abspath(os.path.dirname(__file__)), 'sqlalchemy', 'migrate_repo') - migration.db_sync(self._engine_facade.get_engine(), path) + engine = self._engine_facade.get_engine() + + from migrate import exceptions as migrate_exc + from migrate.versioning import api + from migrate.versioning import repository + + repo = repository.Repository(path) + try: + api.db_version(engine, repo) + except migrate_exc.DatabaseNotControlledError: + models.Base.metadata.create_all(engine) + api.version_control(engine, repo, repo.latest) + else: + migration.db_sync(engine, path) def clear(self): engine = self._engine_facade.get_engine() diff --git a/ceilometer/storage/sqlalchemy/models.py b/ceilometer/storage/sqlalchemy/models.py index 2721845d..3667d5d8 100644 --- a/ceilometer/storage/sqlalchemy/models.py +++ b/ceilometer/storage/sqlalchemy/models.py @@ -78,10 +78,12 @@ class PreciseTimestamp(TypeDecorator): return value +_COMMON_TABLE_ARGS = {'mysql_charset': "utf8", 'mysql_engine': "InnoDB"} + + class CeilometerBase(object): """Base class for Ceilometer Models.""" - __table_args__ = {'mysql_charset': "utf8", - 'mysql_engine': "InnoDB"} + __table_args__ = _COMMON_TABLE_ARGS __table_initialized__ = False def __setitem__(self, key, value): @@ -105,6 +107,7 @@ class MetaText(Base): __tablename__ = 'metadata_text' __table_args__ = ( Index('ix_meta_text_key', 'meta_key'), + _COMMON_TABLE_ARGS, ) id = Column(Integer, ForeignKey('resource.internal_id'), primary_key=True) meta_key = Column(String(255), primary_key=True) @@ -117,6 +120,7 @@ class MetaBool(Base): __tablename__ = 'metadata_bool' __table_args__ = ( Index('ix_meta_bool_key', 'meta_key'), + _COMMON_TABLE_ARGS, ) id = Column(Integer, ForeignKey('resource.internal_id'), primary_key=True) meta_key = Column(String(255), primary_key=True) @@ -129,6 +133,7 @@ class MetaBigInt(Base): __tablename__ = 'metadata_int' __table_args__ = ( Index('ix_meta_int_key', 'meta_key'), + _COMMON_TABLE_ARGS, ) id = Column(Integer, ForeignKey('resource.internal_id'), primary_key=True) meta_key = Column(String(255), primary_key=True) @@ -141,6 +146,7 @@ class MetaFloat(Base): __tablename__ = 'metadata_float' __table_args__ = ( Index('ix_meta_float_key', 'meta_key'), + _COMMON_TABLE_ARGS, ) id = Column(Integer, ForeignKey('resource.internal_id'), primary_key=True) meta_key = Column(String(255), primary_key=True) @@ -154,6 +160,7 @@ class Meter(Base): __table_args__ = ( UniqueConstraint('name', 'type', 'unit', name='def_unique'), Index('ix_meter_name', 'name'), + _COMMON_TABLE_ARGS, ) id = Column(Integer, primary_key=True) name = Column(String(255), nullable=False) @@ -175,6 +182,7 @@ class Resource(Base): # name='res_def_unique'), Index('ix_resource_resource_id', 'resource_id'), Index('ix_resource_metadata_hash', 'metadata_hash'), + _COMMON_TABLE_ARGS, ) internal_id = Column(Integer, primary_key=True) @@ -209,7 +217,8 @@ class Sample(Base): Index('ix_sample_timestamp', 'timestamp'), Index('ix_sample_resource_id', 'resource_id'), Index('ix_sample_meter_id', 'meter_id'), - Index('ix_sample_meter_id_resource_id', 'meter_id', 'resource_id') + Index('ix_sample_meter_id_resource_id', 'meter_id', 'resource_id'), + _COMMON_TABLE_ARGS, ) id = Column(Integer, primary_key=True) meter_id = Column(Integer, ForeignKey('meter.id')) @@ -260,7 +269,8 @@ class Event(Base): __table_args__ = ( Index('ix_event_message_id', 'message_id'), Index('ix_event_type_id', 'event_type_id'), - Index('ix_event_generated', 'generated') + Index('ix_event_generated', 'generated'), + _COMMON_TABLE_ARGS, ) id = Column(Integer, primary_key=True) message_id = Column(String(50), unique=True) @@ -289,6 +299,7 @@ class TraitText(Base): __tablename__ = 'trait_text' __table_args__ = ( Index('ix_trait_text_event_id_key', 'event_id', 'key'), + _COMMON_TABLE_ARGS, ) event_id = Column(Integer, ForeignKey('event.id'), primary_key=True) key = Column(String(255), primary_key=True) @@ -301,6 +312,7 @@ class TraitInt(Base): __tablename__ = 'trait_int' __table_args__ = ( Index('ix_trait_int_event_id_key', 'event_id', 'key'), + _COMMON_TABLE_ARGS, ) event_id = Column(Integer, ForeignKey('event.id'), primary_key=True) key = Column(String(255), primary_key=True) @@ -313,6 +325,7 @@ class TraitFloat(Base): __tablename__ = 'trait_float' __table_args__ = ( Index('ix_trait_float_event_id_key', 'event_id', 'key'), + _COMMON_TABLE_ARGS, ) event_id = Column(Integer, ForeignKey('event.id'), primary_key=True) key = Column(String(255), primary_key=True) @@ -325,6 +338,7 @@ class TraitDatetime(Base): __tablename__ = 'trait_datetime' __table_args__ = ( Index('ix_trait_datetime_event_id_key', 'event_id', 'key'), + _COMMON_TABLE_ARGS, ) event_id = Column(Integer, ForeignKey('event.id'), primary_key=True) key = Column(String(255), primary_key=True) |