From 95db43cf5ffcc99595f4e7a709c207a8b50e660f Mon Sep 17 00:00:00 2001 From: Dmitry Tantsur Date: Thu, 15 Oct 2015 13:13:50 +0200 Subject: [PATCH] Always default to InnoDB for MySQL OpenStack CI uses MyISAM by default, which does not even support foreign keys. This change essentially mirrors what ironic is doing. Also sets the default charset to UTF-8. Closes-Bug: #1506160 Change-Id: I7caf0a2122f98c59f121f003ac092ecb0ce123c4 (cherry picked from commit fbfdf5ee694bad4ab22dfa52d601c74e899c8c1b) --- ironic_inspector/db.py | 7 ++++++- .../versions/578f84f38d_inital_db_schema.py | 12 +++++++++--- .../migrations/versions/d588418040d_add_rules.py | 10 ++++++++-- 3 files changed, 23 insertions(+), 6 deletions(-) diff --git a/ironic_inspector/db.py b/ironic_inspector/db.py index ff4a56830..0af56b01a 100644 --- a/ironic_inspector/db.py +++ b/ironic_inspector/db.py @@ -28,7 +28,12 @@ from sqlalchemy.ext.declarative import declarative_base from sqlalchemy import orm -Base = declarative_base(cls=models.ModelBase) +class ModelBase(models.ModelBase): + __table_args__ = {'mysql_engine': "InnoDB", + 'mysql_charset': "utf8"} + + +Base = declarative_base(cls=ModelBase) CONF = cfg.CONF _FACADE = None diff --git a/ironic_inspector/migrations/versions/578f84f38d_inital_db_schema.py b/ironic_inspector/migrations/versions/578f84f38d_inital_db_schema.py index caf132d79..b0fa92ebb 100644 --- a/ironic_inspector/migrations/versions/578f84f38d_inital_db_schema.py +++ b/ironic_inspector/migrations/versions/578f84f38d_inital_db_schema.py @@ -38,14 +38,18 @@ def upgrade(): sa.Column('uuid', sa.String(36), primary_key=True), sa.Column('started_at', sa.Float, nullable=True), sa.Column('finished_at', sa.Float, nullable=True), - sa.Column('error', sa.Text, nullable=True) + sa.Column('error', sa.Text, nullable=True), + mysql_ENGINE='InnoDB', + mysql_DEFAULT_CHARSET='UTF8' ) op.create_table( 'attributes', sa.Column('name', sa.String(255), primary_key=True), sa.Column('value', sa.String(255), primary_key=True), - sa.Column('uuid', sa.String(36), sa.ForeignKey('nodes.uuid')) + sa.Column('uuid', sa.String(36), sa.ForeignKey('nodes.uuid')), + mysql_ENGINE='InnoDB', + mysql_DEFAULT_CHARSET='UTF8' ) op.create_table( @@ -53,7 +57,9 @@ def upgrade(): sa.Column('uuid', sa.String(36), sa.ForeignKey('nodes.uuid'), primary_key=True), sa.Column('name', sa.String(255), primary_key=True), - sa.Column('value', sa.Text) + sa.Column('value', sa.Text), + mysql_ENGINE='InnoDB', + mysql_DEFAULT_CHARSET='UTF8' ) diff --git a/ironic_inspector/migrations/versions/d588418040d_add_rules.py b/ironic_inspector/migrations/versions/d588418040d_add_rules.py index 4b93cdd71..00ede8a5a 100644 --- a/ironic_inspector/migrations/versions/d588418040d_add_rules.py +++ b/ironic_inspector/migrations/versions/d588418040d_add_rules.py @@ -37,6 +37,8 @@ def upgrade(): sa.Column('created_at', sa.DateTime, nullable=False), sa.Column('description', sa.Text), sa.Column('disabled', sa.Boolean, default=False), + mysql_ENGINE='InnoDB', + mysql_DEFAULT_CHARSET='UTF8' ) op.create_table( @@ -46,7 +48,9 @@ def upgrade(): sa.Column('op', sa.String(255), nullable=False), sa.Column('multiple', sa.String(255), nullable=False), sa.Column('field', sa.Text), - sa.Column('params', types.JsonEncodedDict) + sa.Column('params', types.JsonEncodedDict), + mysql_ENGINE='InnoDB', + mysql_DEFAULT_CHARSET='UTF8' ) op.create_table( @@ -54,7 +58,9 @@ def upgrade(): sa.Column('id', sa.Integer, primary_key=True), sa.Column('rule', sa.String(36), sa.ForeignKey('rules.uuid')), sa.Column('action', sa.String(255), nullable=False), - sa.Column('params', types.JsonEncodedDict) + sa.Column('params', types.JsonEncodedDict), + mysql_ENGINE='InnoDB', + mysql_DEFAULT_CHARSET='UTF8' )