components/openstack/glance/patches/15-mysql_cluster_support.patch
changeset 6866 4c1935f5ec9a
equal deleted inserted replaced
6865:1cc50ab79b8c 6866:4c1935f5ec9a
       
     1 This patchset is for bug:
       
     2 
       
     3 24394534 Mitaka Glance should support MySQL Cluster
       
     4 
       
     5 This fixes the following aspects of Glance:
       
     6 1. Implementation of an oslo.db configuration parameter to specify the MySQL
       
     7    storage engine (mysql_storage_engine).
       
     8 2. Replacement of hardcoded SQL statements that set the engine to "InnoDB"
       
     9    to the above configuration value.
       
    10 3. Logic to handle SQL differences between MySQL InnoDB and MySQL Cluster (NDB).
       
    11    This includes column lengths, constraints, foreign keys, and indexes.
       
    12 
       
    13 This has not been committed upstream, but has been filed in launchpad:
       
    14 
       
    15 https://bugs.launchpad.net/glance/+bug/1564110
       
    16 
       
    17 
       
    18 --- glance-12.0.0/glance/db/sqlalchemy/migrate_repo/versions/001_add_images_table.py.orig	2016-08-10 09:36:22.622664972 -0700
       
    19 +++ glance-12.0.0/glance/db/sqlalchemy/migrate_repo/versions/001_add_images_table.py	2016-08-10 09:34:27.421171908 -0700
       
    20 @@ -13,11 +13,14 @@
       
    21  #    License for the specific language governing permissions and limitations
       
    22  #    under the License.
       
    23  
       
    24 +from oslo_config import cfg
       
    25  from sqlalchemy.schema import (Column, MetaData, Table)
       
    26  
       
    27  from glance.db.sqlalchemy.migrate_repo.schema import (
       
    28      Boolean, DateTime, Integer, String, Text, create_tables, drop_tables)  # noqa
       
    29  
       
    30 +CONF = cfg.CONF
       
    31 +
       
    32  
       
    33  def define_images_table(meta):
       
    34      images = Table('images',
       
    35 @@ -41,7 +44,7 @@ def define_images_table(meta):
       
    36                            nullable=False,
       
    37                            default=False,
       
    38                            index=True),
       
    39 -                   mysql_engine='InnoDB',
       
    40 +                   mysql_engine=CONF.database.mysql_storage_engine,
       
    41                     mysql_charset='utf8',
       
    42                     extend_existing=True)
       
    43  
       
    44 --- glance-12.0.0/glance/db/sqlalchemy/migrate_repo/versions/002_add_image_properties_table.py.orig	2016-08-10 09:36:22.630165670 -0700
       
    45 +++ glance-12.0.0/glance/db/sqlalchemy/migrate_repo/versions/002_add_image_properties_table.py	2016-08-10 09:34:27.422389893 -0700
       
    46 @@ -13,6 +13,7 @@
       
    47  #    License for the specific language governing permissions and limitations
       
    48  #    under the License.
       
    49  
       
    50 +from oslo_config import cfg
       
    51  from sqlalchemy.schema import (
       
    52      Column, ForeignKey, Index, MetaData, Table, UniqueConstraint)
       
    53  
       
    54 @@ -20,6 +21,8 @@ from glance.db.sqlalchemy.migrate_repo.s
       
    55      Boolean, DateTime, Integer, String, Text, create_tables, drop_tables,
       
    56      from_migration_import)  # noqa
       
    57  
       
    58 +CONF = cfg.CONF
       
    59 +
       
    60  
       
    61  def define_image_properties_table(meta):
       
    62      (define_images_table,) = from_migration_import(
       
    63 @@ -44,7 +47,8 @@ def define_image_properties_table(meta):
       
    64                                      nullable=False),
       
    65                               Column('image_id',
       
    66                                      Integer(),
       
    67 -                                    ForeignKey('images.id'),
       
    68 +                                    ForeignKey('images.id',
       
    69 +                                               name='image_properties_ibfk_1'),
       
    70                                      nullable=False,
       
    71                                      index=True),
       
    72                               Column('key', String(255), nullable=False),
       
    73 @@ -59,7 +63,7 @@ def define_image_properties_table(meta):
       
    74                                      index=True),
       
    75                               UniqueConstraint('image_id', 'key',
       
    76                                                **constr_kwargs),
       
    77 -                             mysql_engine='InnoDB',
       
    78 +                             mysql_engine=CONF.database.mysql_storage_engine,
       
    79                               mysql_charset='utf8',
       
    80                               extend_existing=True)
       
    81  
       
    82 --- glance-12.0.0/glance/db/sqlalchemy/migrate_repo/versions/003_add_disk_format.py.orig	2016-08-10 09:36:22.637028552 -0700
       
    83 +++ glance-12.0.0/glance/db/sqlalchemy/migrate_repo/versions/003_add_disk_format.py	2016-08-10 09:34:27.423147663 -0700
       
    84 @@ -14,11 +14,14 @@
       
    85  #    under the License.
       
    86  
       
    87  from migrate.changeset import *  # noqa
       
    88 +from oslo_config import cfg
       
    89  from sqlalchemy import *  # noqa
       
    90  
       
    91  from glance.db.sqlalchemy.migrate_repo.schema import (
       
    92      Boolean, DateTime, Integer, String, Text, from_migration_import)  # noqa
       
    93  
       
    94 +CONF = cfg.CONF
       
    95 +
       
    96  
       
    97  def get_images_table(meta):
       
    98      """
       
    99 @@ -47,7 +50,7 @@ def get_images_table(meta):
       
   100                            nullable=False,
       
   101                            default=False,
       
   102                            index=True),
       
   103 -                   mysql_engine='InnoDB',
       
   104 +                   mysql_engine=CONF.database.mysql_storage_engine,
       
   105                     extend_existing=True)
       
   106  
       
   107      return images
       
   108 --- glance-12.0.0/glance/db/sqlalchemy/migrate_repo/versions/004_add_checksum.py.orig	2016-08-10 09:36:22.643321775 -0700
       
   109 +++ glance-12.0.0/glance/db/sqlalchemy/migrate_repo/versions/004_add_checksum.py	2016-08-10 09:34:27.423839815 -0700
       
   110 @@ -14,11 +14,14 @@
       
   111  #    under the License.
       
   112  
       
   113  from migrate.changeset import *  # noqa
       
   114 +from oslo_config import cfg
       
   115  from sqlalchemy import *  # noqa
       
   116  
       
   117  from glance.db.sqlalchemy.migrate_repo.schema import (
       
   118      Boolean, DateTime, Integer, String, Text, from_migration_import)  # noqa
       
   119  
       
   120 +CONF = cfg.CONF
       
   121 +
       
   122  
       
   123  def get_images_table(meta):
       
   124      """
       
   125 @@ -48,7 +51,7 @@ def get_images_table(meta):
       
   126                            default=False,
       
   127                            index=True),
       
   128                     Column('checksum', String(32)),
       
   129 -                   mysql_engine='InnoDB',
       
   130 +                   mysql_engine=CONF.database.mysql_storage_engine,
       
   131                     extend_existing=True)
       
   132  
       
   133      return images
       
   134 --- glance-12.0.0/glance/db/sqlalchemy/migrate_repo/versions/005_size_big_integer.py.orig	2016-08-10 09:36:22.650608190 -0700
       
   135 +++ glance-12.0.0/glance/db/sqlalchemy/migrate_repo/versions/005_size_big_integer.py	2016-08-10 09:34:27.424528158 -0700
       
   136 @@ -14,12 +14,15 @@
       
   137  #    under the License.
       
   138  
       
   139  from migrate.changeset import *  # noqa
       
   140 +from oslo_config import cfg
       
   141  from sqlalchemy import *  # noqa
       
   142  
       
   143  from glance.db.sqlalchemy.migrate_repo.schema import (
       
   144      Boolean, DateTime, BigInteger, Integer, String,
       
   145      Text, from_migration_import)  # noqa
       
   146  
       
   147 +CONF = cfg.CONF
       
   148 +
       
   149  
       
   150  def get_images_table(meta):
       
   151      """
       
   152 @@ -48,7 +51,7 @@ def get_images_table(meta):
       
   153                            nullable=False,
       
   154                            default=False,
       
   155                            index=True),
       
   156 -                   mysql_engine='InnoDB',
       
   157 +                   mysql_engine=CONF.database.mysql_storage_engine,
       
   158                     extend_existing=True)
       
   159  
       
   160      return images
       
   161 --- glance-12.0.0/glance/db/sqlalchemy/migrate_repo/versions/006_key_to_name.py.orig	2016-08-10 09:36:22.657538722 -0700
       
   162 +++ glance-12.0.0/glance/db/sqlalchemy/migrate_repo/versions/006_key_to_name.py	2016-08-10 09:34:27.425360155 -0700
       
   163 @@ -14,11 +14,14 @@
       
   164  #    under the License.
       
   165  
       
   166  from migrate.changeset import *  # noqa
       
   167 +from oslo_config import cfg
       
   168  from sqlalchemy import *  # noqa
       
   169  
       
   170  from glance.db.sqlalchemy.migrate_repo.schema import (
       
   171      Boolean, DateTime, Integer, String, Text, from_migration_import)  # noqa
       
   172  
       
   173 +CONF = cfg.CONF
       
   174 +
       
   175  
       
   176  def get_images_table(meta):
       
   177      """
       
   178 @@ -49,7 +52,8 @@ def get_image_properties_table(meta):
       
   179                                      nullable=False),
       
   180                               Column('image_id',
       
   181                                      Integer(),
       
   182 -                                    ForeignKey('images.id'),
       
   183 +                                    ForeignKey('images.id',
       
   184 +                                               name='image_properties_ibfk_1'),
       
   185                                      nullable=False,
       
   186                                      index=True),
       
   187                               Column('name', String(255), nullable=False),
       
   188 @@ -63,7 +67,7 @@ def get_image_properties_table(meta):
       
   189                                      default=False,
       
   190                                      index=True),
       
   191                               UniqueConstraint('image_id', 'name'),
       
   192 -                             mysql_engine='InnoDB',
       
   193 +                             mysql_engine=CONF.database.mysql_storage_engine,
       
   194                               extend_existing=True)
       
   195  
       
   196      return image_properties
       
   197 --- glance-12.0.0/glance/db/sqlalchemy/migrate_repo/versions/007_add_owner.py.orig	2016-08-10 09:36:22.664818540 -0700
       
   198 +++ glance-12.0.0/glance/db/sqlalchemy/migrate_repo/versions/007_add_owner.py	2016-08-10 09:34:27.427318330 -0700
       
   199 @@ -14,12 +14,15 @@
       
   200  #    under the License.
       
   201  
       
   202  from migrate.changeset import *  # noqa
       
   203 +from oslo_config import cfg
       
   204  from sqlalchemy import *  # noqa
       
   205  
       
   206  from glance.db.sqlalchemy.migrate_repo.schema import (
       
   207      Boolean, DateTime, BigInteger, Integer, String,
       
   208      Text, from_migration_import)  # noqa
       
   209  
       
   210 +CONF = cfg.CONF
       
   211 +
       
   212  
       
   213  def get_images_table(meta):
       
   214      """
       
   215 @@ -50,7 +53,7 @@ def get_images_table(meta):
       
   216                            index=True),
       
   217                     Column('checksum', String(32)),
       
   218                     Column('owner', String(255)),
       
   219 -                   mysql_engine='InnoDB',
       
   220 +                   mysql_engine=CONF.database.mysql_storage_engine,
       
   221                     extend_existing=True)
       
   222  
       
   223      return images
       
   224 --- glance-12.0.0/glance/db/sqlalchemy/migrate_repo/versions/008_add_image_members_table.py.orig	2016-08-10 09:36:22.672154268 -0700
       
   225 +++ glance-12.0.0/glance/db/sqlalchemy/migrate_repo/versions/008_add_image_members_table.py	2016-08-10 09:34:27.428348883 -0700
       
   226 @@ -14,12 +14,15 @@
       
   227  #    under the License.
       
   228  
       
   229  from migrate.changeset import *  # noqa
       
   230 +from oslo_config import cfg
       
   231  from sqlalchemy import *  # noqa
       
   232  
       
   233  from glance.db.sqlalchemy.migrate_repo.schema import (
       
   234      Boolean, DateTime, Integer, String, create_tables,
       
   235      drop_tables, from_migration_import)  # noqa
       
   236  
       
   237 +CONF = cfg.CONF
       
   238 +
       
   239  
       
   240  def get_images_table(meta):
       
   241      """
       
   242 @@ -54,7 +57,8 @@ def get_image_members_table(meta):
       
   243                                   nullable=False),
       
   244                            Column('image_id',
       
   245                                   Integer(),
       
   246 -                                 ForeignKey('images.id'),
       
   247 +                                 ForeignKey('images.id',
       
   248 +                                            name='image_members_image_id_fkey'),
       
   249                                   nullable=False,
       
   250                                   index=True),
       
   251                            Column('member', String(255), nullable=False),
       
   252 @@ -72,7 +76,7 @@ def get_image_members_table(meta):
       
   253                                   index=True),
       
   254                            UniqueConstraint('image_id', 'member'),
       
   255                            mysql_charset='utf8',
       
   256 -                          mysql_engine='InnoDB',
       
   257 +                          mysql_engine=CONF.database.mysql_storage_engine,
       
   258                            extend_existing=True)
       
   259  
       
   260      # DB2: an index has already been created for the UniqueConstraint option
       
   261 --- glance-12.0.0/glance/db/sqlalchemy/migrate_repo/versions/009_add_mindisk_and_minram.py.orig	2016-08-10 09:36:22.678770092 -0700
       
   262 +++ glance-12.0.0/glance/db/sqlalchemy/migrate_repo/versions/009_add_mindisk_and_minram.py	2016-08-10 09:34:27.454363865 -0700
       
   263 @@ -14,11 +14,14 @@
       
   264  #    under the License.
       
   265  
       
   266  from migrate.changeset import *  # noqa
       
   267 +from oslo_config import cfg
       
   268  from sqlalchemy import *  # noqa
       
   269  
       
   270  from glance.db.sqlalchemy.migrate_repo.schema import (
       
   271      Boolean, DateTime, Integer, String, Text, from_migration_import)  # noqa
       
   272  
       
   273 +CONF = cfg.CONF
       
   274 +
       
   275  
       
   276  def get_images_table(meta):
       
   277      """
       
   278 @@ -51,7 +54,7 @@ def get_images_table(meta):
       
   279                     Column('owner', String(255)),
       
   280                     Column('min_disk', Integer(), default=0),
       
   281                     Column('min_ram', Integer(), default=0),
       
   282 -                   mysql_engine='InnoDB',
       
   283 +                   mysql_engine=CONF.database.mysql_storage_engine,
       
   284                     extend_existing=True)
       
   285  
       
   286      return images
       
   287 --- glance-12.0.0/glance/db/sqlalchemy/migrate_repo/versions/014_add_image_tags_table.py.orig	2016-08-10 09:36:22.685172827 -0700
       
   288 +++ glance-12.0.0/glance/db/sqlalchemy/migrate_repo/versions/014_add_image_tags_table.py	2016-08-10 09:34:27.456082973 -0700
       
   289 @@ -13,10 +13,13 @@
       
   290  #    License for the specific language governing permissions and limitations
       
   291  #    under the License.
       
   292  
       
   293 +from oslo_config import cfg
       
   294  from sqlalchemy import schema
       
   295  
       
   296  from glance.db.sqlalchemy.migrate_repo import schema as glance_schema
       
   297  
       
   298 +CONF = cfg.CONF
       
   299 +
       
   300  
       
   301  def define_image_tags_table(meta):
       
   302      # Load the images table so the foreign key can be set up properly
       
   303 @@ -30,7 +33,8 @@ def define_image_tags_table(meta):
       
   304                                              nullable=False),
       
   305                                schema.Column('image_id',
       
   306                                              glance_schema.String(36),
       
   307 -                                            schema.ForeignKey('images.id'),
       
   308 +                                            schema.ForeignKey('images.id',
       
   309 +                                                              name='image_tags_ibfk_1'),
       
   310                                              nullable=False),
       
   311                                schema.Column('value',
       
   312                                              glance_schema.String(255),
       
   313 @@ -46,7 +50,7 @@ def define_image_tags_table(meta):
       
   314                                              glance_schema.Boolean(),
       
   315                                              nullable=False,
       
   316                                              default=False),
       
   317 -                              mysql_engine='InnoDB',
       
   318 +                              mysql_engine=CONF.database.mysql_storage_engine,
       
   319                                mysql_charset='utf8')
       
   320  
       
   321      schema.Index('ix_image_tags_image_id',
       
   322 --- glance-12.0.0/glance/db/sqlalchemy/migrate_repo/versions/018_add_image_locations_table.py.orig	2016-08-10 09:36:22.691935092 -0700
       
   323 +++ glance-12.0.0/glance/db/sqlalchemy/migrate_repo/versions/018_add_image_locations_table.py	2016-08-10 09:34:27.457534530 -0700
       
   324 @@ -13,10 +13,13 @@
       
   325  #    License for the specific language governing permissions and limitations
       
   326  #    under the License.
       
   327  
       
   328 +from oslo_config import cfg
       
   329  import sqlalchemy
       
   330  
       
   331  from glance.db.sqlalchemy.migrate_repo import schema
       
   332  
       
   333 +CONF = cfg.CONF
       
   334 +
       
   335  
       
   336  def upgrade(migrate_engine):
       
   337      meta = sqlalchemy.schema.MetaData(migrate_engine)
       
   338 @@ -32,7 +35,8 @@ def upgrade(migrate_engine):
       
   339                            nullable=False),
       
   340          sqlalchemy.Column('image_id',
       
   341                            schema.String(36),
       
   342 -                          sqlalchemy.ForeignKey('images.id'),
       
   343 +                          sqlalchemy.ForeignKey('images.id',
       
   344 +                                                name='image_locations_ibfk_1'),
       
   345                            nullable=False,
       
   346                            index=True),
       
   347          sqlalchemy.Column('value',
       
   348 @@ -50,7 +54,7 @@ def upgrade(migrate_engine):
       
   349                            nullable=False,
       
   350                            default=False,
       
   351                            index=True),
       
   352 -        mysql_engine='InnoDB',
       
   353 +        mysql_engine=CONF.database.mysql_storage_engine,
       
   354          mysql_charset='utf8',
       
   355      )
       
   356  
       
   357 --- glance-12.0.0/glance/db/sqlalchemy/migrate_repo/versions/021_set_engine_mysql_innodb.py.orig	2016-08-10 09:36:22.698690410 -0700
       
   358 +++ glance-12.0.0/glance/db/sqlalchemy/migrate_repo/versions/021_set_engine_mysql_innodb.py	2016-08-10 09:34:27.458291445 -0700
       
   359 @@ -14,21 +14,24 @@
       
   360  #    License for the specific language governing permissions and limitations
       
   361  #    under the License.
       
   362  
       
   363 +from oslo_config import cfg
       
   364  from sqlalchemy import MetaData
       
   365  
       
   366  tables = ['image_locations']
       
   367 +CONF = cfg.CONF
       
   368  
       
   369  
       
   370  def upgrade(migrate_engine):
       
   371      meta = MetaData()
       
   372      meta.bind = migrate_engine
       
   373      if migrate_engine.name == "mysql":
       
   374 -        d = migrate_engine.execute("SHOW TABLE STATUS WHERE Engine!='InnoDB';")
       
   375 +        d = migrate_engine.execute("SHOW TABLE STATUS WHERE Engine!='%s';" %
       
   376 +                                   CONF.database.mysql_storage_engine)
       
   377          for row in d.fetchall():
       
   378              table_name = row[0]
       
   379              if table_name in tables:
       
   380 -                migrate_engine.execute("ALTER TABLE %s Engine=InnoDB" %
       
   381 -                                       table_name)
       
   382 +                migrate_engine.execute("ALTER TABLE %(db_table)s Engine=%(mysql_storage_engine)s" %
       
   383 +                                       dict(db_table=table_name, mysql_storage_engine=CONF.database.mysql_storage_engine))
       
   384  
       
   385  
       
   386  def downgrade(migrate_engine):
       
   387 --- glance-12.0.0/glance/db/sqlalchemy/migrate_repo/versions/022_image_member_index.py.orig	2016-08-10 09:36:22.705922240 -0700
       
   388 +++ glance-12.0.0/glance/db/sqlalchemy/migrate_repo/versions/022_image_member_index.py	2016-08-10 09:34:27.459101595 -0700
       
   389 @@ -15,6 +15,7 @@
       
   390  
       
   391  import re
       
   392  
       
   393 +from migrate.changeset.constraint import ForeignKeyConstraint
       
   394  from migrate.changeset import UniqueConstraint
       
   395  from oslo_db import exception as db_exception
       
   396  from sqlalchemy import and_, func, orm
       
   397 @@ -28,6 +29,12 @@ ORIGINAL_KEYNAME_RE = re.compile('image_
       
   398  
       
   399  def upgrade(migrate_engine):
       
   400      image_members = _get_image_members_table(migrate_engine)
       
   401 +    images = _get_images_table(migrate_engine)
       
   402 +    # Drop foreign key first
       
   403 +    fkc = ForeignKeyConstraint([image_members.c.image_id],
       
   404 +                               [images.c.id],
       
   405 +                               name='image_members_image_id_fkey')
       
   406 +    fkc.drop()
       
   407  
       
   408      if migrate_engine.name in ('mysql', 'postgresql'):
       
   409          try:
       
   410 @@ -44,6 +51,9 @@ def upgrade(migrate_engine):
       
   411                           name=NEW_KEYNAME,
       
   412                           table=image_members).create()
       
   413  
       
   414 +    # Add foreign key back
       
   415 +    fkc.create()
       
   416 +
       
   417  
       
   418  def downgrade(migrate_engine):
       
   419      image_members = _get_image_members_table(migrate_engine)
       
   420 @@ -65,6 +75,12 @@ def _get_image_members_table(migrate_eng
       
   421      return Table('image_members', meta, autoload=True)
       
   422  
       
   423  
       
   424 +def _get_images_table(migrate_engine):
       
   425 +    meta = MetaData()
       
   426 +    meta.bind = migrate_engine
       
   427 +    return Table('images', meta, autoload=True)
       
   428 +
       
   429 +
       
   430  def _get_original_keyname(db):
       
   431      return {'mysql': 'image_id',
       
   432              'postgresql': 'image_members_image_id_member_key'}[db]
       
   433 --- glance-12.0.0/glance/db/sqlalchemy/migrate_repo/versions/030_add_tasks_table.py.orig	2016-08-10 09:36:22.712553022 -0700
       
   434 +++ glance-12.0.0/glance/db/sqlalchemy/migrate_repo/versions/030_add_tasks_table.py	2016-08-10 09:34:27.460669890 -0700
       
   435 @@ -14,11 +14,14 @@
       
   436  #    License for the specific language governing permissions and limitations
       
   437  #    under the License.
       
   438  
       
   439 +from oslo_config import cfg
       
   440  from sqlalchemy.schema import (Column, MetaData, Table, Index)
       
   441  
       
   442  from glance.db.sqlalchemy.migrate_repo.schema import (
       
   443      Boolean, DateTime, String, Text, create_tables, drop_tables)  # noqa
       
   444  
       
   445 +CONF = cfg.CONF
       
   446 +
       
   447  
       
   448  def define_tasks_table(meta):
       
   449      tasks = Table('tasks',
       
   450 @@ -38,7 +41,7 @@ def define_tasks_table(meta):
       
   451                           Boolean(),
       
   452                           nullable=False,
       
   453                           default=False),
       
   454 -                  mysql_engine='InnoDB',
       
   455 +                  mysql_engine=CONF.database.mysql_storage_engine,
       
   456                    mysql_charset='utf8',
       
   457                    extend_existing=True)
       
   458  
       
   459 --- glance-12.0.0/glance/db/sqlalchemy/migrate_repo/versions/032_add_task_info_table.py.orig	2016-08-10 09:36:22.719716648 -0700
       
   460 +++ glance-12.0.0/glance/db/sqlalchemy/migrate_repo/versions/032_add_task_info_table.py	2016-08-10 09:34:27.471154455 -0700
       
   461 @@ -13,6 +13,7 @@
       
   462  #    License for the specific language governing permissions and limitations
       
   463  #    under the License.
       
   464  
       
   465 +from oslo_config import cfg
       
   466  from sqlalchemy.schema import (Column, ForeignKey, MetaData, Table)
       
   467  
       
   468  from glance.db.sqlalchemy.migrate_repo.schema import (String,
       
   469 @@ -21,6 +22,7 @@ from glance.db.sqlalchemy.migrate_repo.s
       
   470                                                        drop_tables)  # noqa
       
   471  
       
   472  TASKS_MIGRATE_COLUMNS = ['input', 'message', 'result']
       
   473 +CONF = cfg.CONF
       
   474  
       
   475  
       
   476  def define_task_info_table(meta):
       
   477 @@ -31,13 +33,14 @@ def define_task_info_table(meta):
       
   478      task_info = Table('task_info',
       
   479                        meta,
       
   480                        Column('task_id', String(36),
       
   481 -                             ForeignKey('tasks.id'),
       
   482 +                             ForeignKey('tasks.id',
       
   483 +                             name='task_info_ibfk_1'),
       
   484                               primary_key=True,
       
   485                               nullable=False),
       
   486                        Column('input', Text()),
       
   487                        Column('result', Text()),
       
   488                        Column('message', Text()),
       
   489 -                      mysql_engine='InnoDB',
       
   490 +                      mysql_engine=CONF.database.mysql_storage_engine,
       
   491                        mysql_charset='utf8')
       
   492  
       
   493      return task_info
       
   494 --- glance-12.0.0/glance/db/sqlalchemy/migrate_repo/versions/035_add_metadef_tables.py.orig	2016-08-10 09:36:22.726515825 -0700
       
   495 +++ glance-12.0.0/glance/db/sqlalchemy/migrate_repo/versions/035_add_metadef_tables.py	2016-08-10 09:34:27.472707375 -0700
       
   496 @@ -12,6 +12,7 @@
       
   497  #    License for the specific language governing permissions and limitations
       
   498  #    under the License.
       
   499  
       
   500 +from oslo_config import cfg
       
   501  import sqlalchemy
       
   502  from sqlalchemy.schema import (
       
   503      Column, ForeignKey, Index, MetaData, Table, UniqueConstraint)  # noqa
       
   504 @@ -25,6 +26,7 @@ from glance.db.sqlalchemy.migrate_repo.s
       
   505  RESOURCE_TYPES = [u'OS::Glance::Image', u'OS::Cinder::Volume',
       
   506                    u'OS::Nova::Flavor', u'OS::Nova::Aggregate',
       
   507                    u'OS::Nova::Server']
       
   508 +CONF = cfg.CONF
       
   509  
       
   510  
       
   511  def _get_metadef_resource_types_table(meta):
       
   512 @@ -65,7 +67,7 @@ def define_metadef_namespaces_table(meta
       
   513                         Column('created_at', DateTime(), nullable=False),
       
   514                         Column('updated_at', DateTime()),
       
   515                         UniqueConstraint('namespace', **_constr_kwargs),
       
   516 -                       mysql_engine='InnoDB',
       
   517 +                       mysql_engine=CONF.database.mysql_storage_engine,
       
   518                         mysql_charset='utf8',
       
   519                         extend_existing=True)
       
   520  
       
   521 @@ -85,7 +87,8 @@ def define_metadef_objects_table(meta):
       
   522                      meta,
       
   523                      Column('id', Integer(), primary_key=True, nullable=False),
       
   524                      Column('namespace_id', Integer(),
       
   525 -                           ForeignKey('metadef_namespaces.id'),
       
   526 +                           ForeignKey('metadef_namespaces.id',
       
   527 +                           name='metadef_objects_ibfk_1'),
       
   528                             nullable=False),
       
   529                      Column('name', String(80), nullable=False),
       
   530                      Column('description', Text()),
       
   531 @@ -95,7 +98,7 @@ def define_metadef_objects_table(meta):
       
   532                      Column('updated_at', DateTime()),
       
   533                      UniqueConstraint('namespace_id', 'name',
       
   534                                       **_constr_kwargs),
       
   535 -                    mysql_engine='InnoDB',
       
   536 +                    mysql_engine=CONF.database.mysql_storage_engine,
       
   537                      mysql_charset='utf8',
       
   538                      extend_existing=True)
       
   539  
       
   540 @@ -117,14 +120,15 @@ def define_metadef_properties_table(meta
       
   541          'metadef_properties',
       
   542          meta,
       
   543          Column('id', Integer(), primary_key=True, nullable=False),
       
   544 -        Column('namespace_id', Integer(), ForeignKey('metadef_namespaces.id'),
       
   545 +        Column('namespace_id', Integer(), ForeignKey('metadef_namespaces.id',
       
   546 +               name='metadef_properties_ibfk_1'),
       
   547                 nullable=False),
       
   548          Column('name', String(80), nullable=False),
       
   549          Column('schema', Text(), nullable=False),
       
   550          Column('created_at', DateTime(), nullable=False),
       
   551          Column('updated_at', DateTime()),
       
   552          UniqueConstraint('namespace_id', 'name', **_constr_kwargs),
       
   553 -        mysql_engine='InnoDB',
       
   554 +        mysql_engine=CONF.database.mysql_storage_engine,
       
   555          mysql_charset='utf8',
       
   556          extend_existing=True)
       
   557  
       
   558 @@ -151,7 +155,7 @@ def define_metadef_resource_types_table(
       
   559          Column('created_at', DateTime(), nullable=False),
       
   560          Column('updated_at', DateTime()),
       
   561          UniqueConstraint('name', **_constr_kwargs),
       
   562 -        mysql_engine='InnoDB',
       
   563 +        mysql_engine=CONF.database.mysql_storage_engine,
       
   564          mysql_charset='utf8',
       
   565          extend_existing=True)
       
   566  
       
   567 @@ -172,10 +176,12 @@ def define_metadef_namespace_resource_ty
       
   568          'metadef_namespace_resource_types',
       
   569          meta,
       
   570          Column('resource_type_id', Integer(),
       
   571 -               ForeignKey('metadef_resource_types.id'),
       
   572 +               ForeignKey('metadef_resource_types.id',
       
   573 +               name='metadef_namespace_resource_types_ibfk_1'),
       
   574                 primary_key=True, nullable=False),
       
   575          Column('namespace_id', Integer(),
       
   576 -               ForeignKey('metadef_namespaces.id'),
       
   577 +               ForeignKey('metadef_namespaces.id',
       
   578 +               name='metadef_namespace_resource_types_ibfk_2'),
       
   579                 primary_key=True, nullable=False),
       
   580          Column('properties_target', String(80)),
       
   581          Column('prefix', String(80)),
       
   582 @@ -183,7 +189,7 @@ def define_metadef_namespace_resource_ty
       
   583          Column('updated_at', DateTime()),
       
   584          UniqueConstraint('resource_type_id', 'namespace_id',
       
   585                           **_constr_kwargs),
       
   586 -        mysql_engine='InnoDB',
       
   587 +        mysql_engine=CONF.database.mysql_storage_engine,
       
   588          mysql_charset='utf8',
       
   589          extend_existing=True)
       
   590  
       
   591 --- glance-12.0.0/glance/db/sqlalchemy/migrate_repo/versions/037_add_changes_to_satisfy_models.py.orig	2016-08-10 09:36:22.732852195 -0700
       
   592 +++ glance-12.0.0/glance/db/sqlalchemy/migrate_repo/versions/037_add_changes_to_satisfy_models.py	2016-08-10 09:34:27.473457502 -0700
       
   593 @@ -81,7 +81,8 @@ def upgrade(migrate_engine):
       
   594          image_locations = Table('image_locations', meta, autoload=True)
       
   595          if len(image_locations.foreign_keys) == 0:
       
   596              migrate_engine.execute(AddConstraint(ForeignKeyConstraint(
       
   597 -                [image_locations.c.image_id], [images.c.id])))
       
   598 +                [image_locations.c.image_id], [images.c.id],
       
   599 +                name='image_locations_ibfk_1')))
       
   600  
       
   601  
       
   602  def downgrade(migrate_engine):
       
   603 --- glance-12.0.0/glance/db/sqlalchemy/migrate_repo/versions/038_add_metadef_tags_table.py.orig	2016-08-10 09:36:22.739351950 -0700
       
   604 +++ glance-12.0.0/glance/db/sqlalchemy/migrate_repo/versions/038_add_metadef_tags_table.py	2016-08-10 09:34:27.474322102 -0700
       
   605 @@ -12,12 +12,15 @@
       
   606  #    License for the specific language governing permissions and limitations
       
   607  #    under the License.
       
   608  
       
   609 +from oslo_config import cfg
       
   610  from sqlalchemy.schema import (
       
   611      Column, Index, MetaData, Table, UniqueConstraint)  # noqa
       
   612  
       
   613  from glance.db.sqlalchemy.migrate_repo.schema import (
       
   614      DateTime, Integer, String, create_tables, drop_tables)  # noqa
       
   615  
       
   616 +CONF = cfg.CONF
       
   617 +
       
   618  
       
   619  def define_metadef_tags_table(meta):
       
   620      _constr_kwargs = {}
       
   621 @@ -32,7 +35,7 @@ def define_metadef_tags_table(meta):
       
   622                           Column('updated_at', DateTime()),
       
   623                           UniqueConstraint('namespace_id', 'name',
       
   624                                            **_constr_kwargs),
       
   625 -                         mysql_engine='InnoDB',
       
   626 +                         mysql_engine=CONF.database.mysql_storage_engine,
       
   627                           mysql_charset='utf8',
       
   628                           extend_existing=False)
       
   629  
       
   630 --- glance-12.0.0/glance/db/sqlalchemy/migrate_repo/versions/039_add_changes_to_satisfy_models_metadef.py.orig	2016-08-10 09:36:22.745773757 -0700
       
   631 +++ glance-12.0.0/glance/db/sqlalchemy/migrate_repo/versions/039_add_changes_to_satisfy_models_metadef.py	2016-08-10 09:41:20.008006522 -0700
       
   632 @@ -63,15 +63,25 @@ def upgrade(migrate_engine):
       
   633      else:
       
   634          Index('ix_namespaces_namespace', metadef_namespaces.c.namespace).drop()
       
   635  
       
   636 +        # Drop foreign key first
       
   637 +        fkc = migrate.ForeignKeyConstraint([metadef_objects.c.namespace_id],
       
   638 +                                           [metadef_namespaces.c.id],
       
   639 +                                           name='metadef_objects_ibfk_1')
       
   640 +        fkc.drop()
       
   641 +
       
   642          Index('ix_objects_namespace_id_name', metadef_objects.c.namespace_id,
       
   643                metadef_objects.c.name).drop()
       
   644  
       
   645 +        # Add foreign key back
       
   646 +        fkc.create()
       
   647 +
       
   648          Index('ix_metadef_properties_namespace_id_name',
       
   649                metadef_properties.c.namespace_id,
       
   650                metadef_properties.c.name).drop()
       
   651  
       
   652      fkc = migrate.ForeignKeyConstraint([metadef_tags.c.namespace_id],
       
   653 -                                       [metadef_namespaces.c.id])
       
   654 +                                       [metadef_namespaces.c.id],
       
   655 +                                       name='metadef_tags_ibfk_1')
       
   656      fkc.create()
       
   657  
       
   658      # `migrate` module removes unique constraint after adding
       
   659 @@ -88,8 +98,13 @@ def upgrade(migrate_engine):
       
   660          uc.create()
       
   661  
       
   662      if meta.bind.name != "ibm_db_sa":
       
   663 +        fkc = migrate.ForeignKeyConstraint([metadef_tags.c.namespace_id],
       
   664 +                                           [metadef_namespaces.c.id],
       
   665 +                                           name='metadef_tags_ibfk_1')
       
   666 +        fkc.drop()
       
   667          Index('ix_tags_namespace_id_name', metadef_tags.c.namespace_id,
       
   668                metadef_tags.c.name).drop()
       
   669 +        fkc.create()
       
   670  
       
   671      Index('ix_metadef_tags_name', metadef_tags.c.name).create()
       
   672  
       
   673 @@ -120,10 +135,15 @@ def upgrade(migrate_engine):
       
   674          migrate_engine.execute(DropConstraint(constraint))
       
   675          fkc.create()
       
   676  
       
   677 +        fkc = migrate.ForeignKeyConstraint([metadef_ns_res_types.c.resource_type_id],
       
   678 +                                           [metadef_resource_types.c.id],
       
   679 +                                           name='metadef_namespace_resource_types_ibfk_1')
       
   680 +        fkc.drop()
       
   681          constraint = UniqueConstraint(metadef_ns_res_types.c.resource_type_id,
       
   682                                        metadef_ns_res_types.c.namespace_id,
       
   683                                        name='resource_type_id')
       
   684          migrate_engine.execute(DropConstraint(constraint))
       
   685 +        fkc.create()
       
   686  
       
   687          constraint = UniqueConstraint(metadef_namespaces.c.namespace,
       
   688                                        name='namespace')
       
   689 @@ -251,7 +271,8 @@ def downgrade(migrate_engine):
       
   690  
       
   691      if migrate_engine.name != 'sqlite':
       
   692          fkc = migrate.ForeignKeyConstraint([metadef_tags.c.namespace_id],
       
   693 -                                           [metadef_namespaces.c.id])
       
   694 +                                           [metadef_namespaces.c.id],
       
   695 +                                           name='metadef_tags_ibfk_1')
       
   696          fkc.drop()
       
   697  
       
   698          if meta.bind.name != "ibm_db_sa":
       
   699 @@ -332,8 +353,8 @@ def downgrade(migrate_engine):
       
   700      if migrate_engine.name == 'mysql':
       
   701          fkc = migrate.ForeignKeyConstraint(
       
   702              [metadef_ns_res_types.c.resource_type_id],
       
   703 -            [metadef_namespaces.c.id],
       
   704 -            name='metadef_namespace_resource_types_ibfk_2')
       
   705 +            [metadef_resource_types.c.id],
       
   706 +            name='metadef_namespace_resource_types_ibfk_1')
       
   707          fkc.drop()
       
   708  
       
   709          Index('ix_metadef_ns_res_types_namespace_id',
       
   710 --- glance-12.0.0/glance/db/sqlalchemy/migrate_repo/versions/040_add_changes_to_satisfy_metadefs_tags.py.orig	2016-08-10 09:42:23.016042269 -0700
       
   711 +++ glance-12.0.0/glance/db/sqlalchemy/migrate_repo/versions/040_add_changes_to_satisfy_metadefs_tags.py	2016-08-10 09:41:29.896233507 -0700
       
   712 @@ -10,7 +10,7 @@
       
   713  #    License for the specific language governing permissions and limitations
       
   714  #    under the License.
       
   715  
       
   716 -
       
   717 +import migrate
       
   718  import sqlalchemy
       
   719  from sqlalchemy import (Table, Index)
       
   720  
       
   721 @@ -20,5 +20,11 @@ def upgrade(migrate_engine):
       
   722          meta = sqlalchemy.MetaData()
       
   723          meta.bind = migrate_engine
       
   724          metadef_tags = Table('metadef_tags', meta, autoload=True)
       
   725 +        metadef_namespaces = Table('metadef_namespaces', meta, autoload=True)
       
   726 +        fkc = migrate.ForeignKeyConstraint([metadef_tags.c.namespace_id],
       
   727 +                                           [metadef_namespaces.c.id],
       
   728 +                                           name='metadef_tags_ibfk_1')
       
   729 +        fkc.drop()
       
   730          Index('namespace_id', metadef_tags.c.namespace_id,
       
   731                metadef_tags.c.name).drop()
       
   732 +        fkc.create()
       
   733 --- glance-12.0.0/glance/db/sqlalchemy/migrate_repo/versions/041_add_artifact_tables.py.orig	2016-08-10 09:36:22.752236945 -0700
       
   734 +++ glance-12.0.0/glance/db/sqlalchemy/migrate_repo/versions/041_add_artifact_tables.py	2016-08-10 09:34:27.477711872 -0700
       
   735 @@ -12,6 +12,7 @@
       
   736  # License for the specific language governing permissions and limitations
       
   737  # under the License.
       
   738  
       
   739 +from oslo_config import cfg
       
   740  from sqlalchemy.schema import (Column, ForeignKey, Index, MetaData, Table)
       
   741  
       
   742  
       
   743 @@ -19,6 +20,8 @@ from glance.db.sqlalchemy.migrate_repo.s
       
   744      BigInteger, Boolean, DateTime, Integer, Numeric, String, Text,
       
   745      create_tables)  # noqa
       
   746  
       
   747 +CONF = cfg.CONF
       
   748 +
       
   749  
       
   750  def define_artifacts_table(meta):
       
   751      artifacts = Table('artifacts',
       
   752 @@ -43,7 +46,7 @@ def define_artifacts_table(meta):
       
   753                               nullable=False),
       
   754                        Column('deleted_at', DateTime()),
       
   755                        Column('published_at', DateTime()),
       
   756 -                      mysql_engine='InnoDB',
       
   757 +                      mysql_engine=CONF.database.mysql_storage_engine,
       
   758                        mysql_charset='utf8',
       
   759                        extend_existing=True)
       
   760  
       
   761 @@ -64,12 +67,14 @@ def define_artifact_tags_table(meta):
       
   762                            Column('id', String(36), primary_key=True,
       
   763                                   nullable=False),
       
   764                            Column('artifact_id', String(36),
       
   765 -                                 ForeignKey('artifacts.id'), nullable=False),
       
   766 +                                 ForeignKey('artifacts.id',
       
   767 +                                 name='artifact_tags_ibfk_1'),
       
   768 +                                 nullable=False),
       
   769                            Column('value', String(255), nullable=False),
       
   770                            Column('created_at', DateTime(), nullable=False),
       
   771                            Column('updated_at', DateTime(),
       
   772                                   nullable=False),
       
   773 -                          mysql_engine='InnoDB',
       
   774 +                          mysql_engine=CONF.database.mysql_storage_engine,
       
   775                            mysql_charset='utf8',
       
   776                            extend_existing=True)
       
   777  
       
   778 @@ -86,13 +91,16 @@ def define_artifact_dependencies_table(m
       
   779                                    Column('id', String(36), primary_key=True,
       
   780                                           nullable=False),
       
   781                                    Column('artifact_source', String(36),
       
   782 -                                         ForeignKey('artifacts.id'),
       
   783 +                                         ForeignKey('artifacts.id',
       
   784 +                                         name='artifact_dependencies_ibfk_1'),
       
   785                                           nullable=False),
       
   786                                    Column('artifact_dest', String(36),
       
   787 -                                         ForeignKey('artifacts.id'),
       
   788 +                                         ForeignKey('artifacts.id',
       
   789 +                                         name='artifact_dependencies_ibfk_2'),
       
   790                                           nullable=False),
       
   791                                    Column('artifact_origin', String(36),
       
   792 -                                         ForeignKey('artifacts.id'),
       
   793 +                                         ForeignKey('artifacts.id',
       
   794 +                                         name='artifact_dependencies_ibfk_3'),
       
   795                                           nullable=False),
       
   796                                    Column('is_direct', Boolean(),
       
   797                                           nullable=False),
       
   798 @@ -102,7 +110,7 @@ def define_artifact_dependencies_table(m
       
   799                                           nullable=False),
       
   800                                    Column('updated_at', DateTime(),
       
   801                                           nullable=False),
       
   802 -                                  mysql_engine='InnoDB',
       
   803 +                                  mysql_engine=CONF.database.mysql_storage_engine,
       
   804                                    mysql_charset='utf8',
       
   805                                    extend_existing=True)
       
   806  
       
   807 @@ -124,7 +132,8 @@ def define_artifact_blobs_table(meta):
       
   808                             Column('id', String(36), primary_key=True,
       
   809                                    nullable=False),
       
   810                             Column('artifact_id', String(36),
       
   811 -                                  ForeignKey('artifacts.id'),
       
   812 +                                  ForeignKey('artifacts.id',
       
   813 +                                  name='artifact_blobs_ibfk_1'),
       
   814                                    nullable=False),
       
   815                             Column('size', BigInteger(), nullable=False),
       
   816                             Column('checksum', String(32)),
       
   817 @@ -134,7 +143,7 @@ def define_artifact_blobs_table(meta):
       
   818                             Column('created_at', DateTime(), nullable=False),
       
   819                             Column('updated_at', DateTime(),
       
   820                                    nullable=False),
       
   821 -                           mysql_engine='InnoDB',
       
   822 +                           mysql_engine=CONF.database.mysql_storage_engine,
       
   823                             mysql_charset='utf8',
       
   824                             extend_existing=True)
       
   825      Index('ix_artifact_blobs_artifact_id',
       
   826 @@ -151,7 +160,8 @@ def define_artifact_properties_table(met
       
   827                                         primary_key=True,
       
   828                                         nullable=False),
       
   829                                  Column('artifact_id', String(36),
       
   830 -                                       ForeignKey('artifacts.id'),
       
   831 +                                       ForeignKey('artifacts.id',
       
   832 +                                       name='artifact_properties_ibfk_1'),
       
   833                                         nullable=False),
       
   834                                  Column('name', String(255),
       
   835                                         nullable=False),
       
   836 @@ -165,7 +175,7 @@ def define_artifact_properties_table(met
       
   837                                  Column('updated_at', DateTime(),
       
   838                                         nullable=False),
       
   839                                  Column('position', Integer()),
       
   840 -                                mysql_engine='InnoDB',
       
   841 +                                mysql_engine=CONF.database.mysql_storage_engine,
       
   842                                  mysql_charset='utf8',
       
   843                                  extend_existing=True)
       
   844      Index('ix_artifact_properties_artifact_id',
       
   845 @@ -181,7 +191,8 @@ def define_artifact_blob_locations_table
       
   846                                             primary_key=True,
       
   847                                             nullable=False),
       
   848                                      Column('blob_id', String(36),
       
   849 -                                           ForeignKey('artifact_blobs.id'),
       
   850 +                                           ForeignKey('artifact_blobs.id',
       
   851 +                                                      name='artifact_blob_locations_ibfk_1'),
       
   852                                             nullable=False),
       
   853                                      Column('value', Text(), nullable=False),
       
   854                                      Column('created_at', DateTime(),
       
   855 @@ -191,7 +202,7 @@ def define_artifact_blob_locations_table
       
   856                                      Column('position', Integer()),
       
   857                                      Column('status', String(36),
       
   858                                             nullable=True),
       
   859 -                                    mysql_engine='InnoDB',
       
   860 +                                    mysql_engine=CONF.database.mysql_storage_engine,
       
   861                                      mysql_charset='utf8',
       
   862                                      extend_existing=True)
       
   863      Index('ix_artifact_blob_locations_blob_id',
       
   864 --- glance-12.0.0/glance/db/sqlalchemy/models_glare.py.orig	2016-08-10 09:36:22.759461763 -0700
       
   865 +++ glance-12.0.0/glance/db/sqlalchemy/models_glare.py	2016-08-10 09:34:27.479493197 -0700
       
   866 @@ -14,6 +14,8 @@
       
   867  
       
   868  import uuid
       
   869  
       
   870 +from oslo_config import cfg
       
   871 +from oslo_db import options
       
   872  from oslo_db.sqlalchemy import models
       
   873  from sqlalchemy import BigInteger
       
   874  from sqlalchemy import Boolean
       
   875 @@ -35,12 +37,15 @@ from glance.common import timeutils
       
   876  import glance.glare as ga
       
   877  
       
   878  BASE = declarative.declarative_base()
       
   879 +CONF = cfg.CONF
       
   880 +options.set_defaults(cfg.CONF)
       
   881  
       
   882  
       
   883  class ArtifactBase(models.ModelBase, models.TimestampMixin):
       
   884      """Base class for Artifact Models."""
       
   885  
       
   886 -    __table_args__ = {'mysql_engine': 'InnoDB', 'mysql_charset': 'utf8'}
       
   887 +    __table_args__ = {'mysql_engine': CONF.database.mysql_storage_engine,
       
   888 +                      'mysql_charset': 'utf8'}
       
   889      __table_initialized__ = False
       
   890      __protected_attributes__ = set([
       
   891          "created_at", "updated_at"])
       
   892 @@ -98,7 +103,8 @@ class Artifact(BASE, ArtifactBase):
       
   893          Index('ix_artifact_state', 'state'),
       
   894          Index('ix_artifact_owner', 'owner'),
       
   895          Index('ix_artifact_visibility', 'visibility'),
       
   896 -        {'mysql_engine': 'InnoDB', 'mysql_charset': 'utf8'})
       
   897 +        {'mysql_engine': CONF.database.mysql_storage_engine,
       
   898 +         'mysql_charset': 'utf8'})
       
   899  
       
   900      __protected_attributes__ = ArtifactBase.__protected_attributes__.union(
       
   901          set(['published_at', 'deleted_at']))
       
   902 @@ -219,7 +225,8 @@ class ArtifactDependency(BASE, ArtifactB
       
   903                              'artifact_dest'),
       
   904                        Index('ix_artifact_dependencies_direct_dependencies',
       
   905                              'artifact_source', 'is_direct'),
       
   906 -                      {'mysql_engine': 'InnoDB', 'mysql_charset': 'utf8'})
       
   907 +                      {'mysql_engine': CONF.database.mysql_storage_engine,
       
   908 +                       'mysql_charset': 'utf8'})
       
   909  
       
   910      id = Column(String(36), primary_key=True, nullable=False,
       
   911                  default=lambda: str(uuid.uuid4()))
       
   912 @@ -248,7 +255,8 @@ class ArtifactTag(BASE, ArtifactBase):
       
   913      __table_args__ = (Index('ix_artifact_tags_artifact_id', 'artifact_id'),
       
   914                        Index('ix_artifact_tags_artifact_id_tag_value',
       
   915                              'artifact_id', 'value'),
       
   916 -                      {'mysql_engine': 'InnoDB', 'mysql_charset': 'utf8'},)
       
   917 +                      {'mysql_engine': CONF.database.mysql_storage_engine,
       
   918 +                       'mysql_charset': 'utf8'},)
       
   919  
       
   920      id = Column(String(36), primary_key=True, nullable=False,
       
   921                  default=lambda: str(uuid.uuid4()))
       
   922 @@ -265,7 +273,8 @@ class ArtifactProperty(BASE, ArtifactBas
       
   923      __table_args__ = (
       
   924          Index('ix_artifact_properties_artifact_id', 'artifact_id'),
       
   925          Index('ix_artifact_properties_name', 'name'),
       
   926 -        {'mysql_engine': 'InnoDB', 'mysql_charset': 'utf8'},)
       
   927 +        {'mysql_engine': CONF.database.mysql_storage_engine,
       
   928 +         'mysql_charset': 'utf8'},)
       
   929      id = Column(String(36), primary_key=True, nullable=False,
       
   930                  default=lambda: str(uuid.uuid4()))
       
   931      artifact_id = Column(String(36), ForeignKey('artifacts.id'),
       
   932 @@ -287,7 +296,8 @@ class ArtifactBlob(BASE, ArtifactBase):
       
   933      __table_args__ = (
       
   934          Index('ix_artifact_blobs_artifact_id', 'artifact_id'),
       
   935          Index('ix_artifact_blobs_name', 'name'),
       
   936 -        {'mysql_engine': 'InnoDB', 'mysql_charset': 'utf8'},)
       
   937 +        {'mysql_engine': CONF.database.mysql_storage_engine,
       
   938 +         'mysql_charset': 'utf8'},)
       
   939      id = Column(String(36), primary_key=True, nullable=False,
       
   940                  default=lambda: str(uuid.uuid4()))
       
   941      artifact_id = Column(String(36), ForeignKey('artifacts.id'),
       
   942 @@ -307,7 +317,8 @@ class ArtifactBlobLocation(BASE, Artifac
       
   943      __tablename__ = 'artifact_blob_locations'
       
   944      __table_args__ = (Index('ix_artifact_blob_locations_blob_id',
       
   945                              'blob_id'),
       
   946 -                      {'mysql_engine': 'InnoDB', 'mysql_charset': 'utf8'})
       
   947 +                      {'mysql_engine': CONF.database.mysql_storage_engine,
       
   948 +                       'mysql_charset': 'utf8'})
       
   949  
       
   950      id = Column(String(36), primary_key=True, nullable=False,
       
   951                  default=lambda: str(uuid.uuid4()))
       
   952 --- glance-12.0.0/glance/db/sqlalchemy/models_metadef.py.orig	2016-08-10 09:36:22.766310320 -0700
       
   953 +++ glance-12.0.0/glance/db/sqlalchemy/models_metadef.py	2016-08-10 09:34:27.480397292 -0700
       
   954 @@ -16,6 +16,7 @@
       
   955  SQLAlchemy models for glance metadata schema
       
   956  """
       
   957  
       
   958 +from oslo_config import cfg
       
   959  from oslo_db.sqlalchemy import models
       
   960  from sqlalchemy import Boolean
       
   961  from sqlalchemy import Column
       
   962 @@ -32,6 +33,8 @@ from sqlalchemy import UniqueConstraint
       
   963  from glance.common import timeutils
       
   964  from glance.db.sqlalchemy.models import JSONEncodedDict
       
   965  
       
   966 +CONF = cfg.CONF
       
   967 +
       
   968  
       
   969  class DictionaryBase(models.ModelBase):
       
   970      metadata = None
       
   971 @@ -49,7 +52,8 @@ BASE_DICT = declarative_base(cls=Diction
       
   972  class GlanceMetadefBase(models.TimestampMixin):
       
   973      """Base class for Glance Metadef Models."""
       
   974  
       
   975 -    __table_args__ = {'mysql_engine': 'InnoDB', 'mysql_charset': 'utf8'}
       
   976 +    __table_args__ = {'mysql_engine': CONF.database.mysql_storage_engine,
       
   977 +                      'mysql_charset': 'utf8'}
       
   978      __table_initialized__ = False
       
   979      __protected_attributes__ = set(["created_at", "updated_at"])
       
   980  
       
   981 --- glance-12.0.0/glance/db/sqlalchemy/models.py.orig	2016-08-10 09:36:22.773221505 -0700
       
   982 +++ glance-12.0.0/glance/db/sqlalchemy/models.py	2016-08-10 09:34:27.481259927 -0700
       
   983 @@ -20,6 +20,7 @@ SQLAlchemy models for glance data
       
   984  
       
   985  import uuid
       
   986  
       
   987 +from oslo_config import cfg
       
   988  from oslo_db.sqlalchemy import models
       
   989  from oslo_serialization import jsonutils
       
   990  from sqlalchemy import BigInteger
       
   991 @@ -41,6 +42,7 @@ from glance.common import timeutils
       
   992  
       
   993  
       
   994  BASE = declarative_base()
       
   995 +CONF = cfg.CONF
       
   996  
       
   997  
       
   998  class JSONEncodedDict(TypeDecorator):
       
   999 @@ -62,7 +64,7 @@ class JSONEncodedDict(TypeDecorator):
       
  1000  class GlanceBase(models.ModelBase, models.TimestampMixin):
       
  1001      """Base class for Glance Models."""
       
  1002  
       
  1003 -    __table_args__ = {'mysql_engine': 'InnoDB', 'mysql_charset': 'utf8'}
       
  1004 +    __table_args__ = {'mysql_engine': CONF.database.mysql_storage_engine, 'mysql_charset': 'utf8'}
       
  1005      __table_initialized__ = False
       
  1006      __protected_attributes__ = set([
       
  1007          "created_at", "updated_at", "deleted_at", "deleted"])
       
  1008 --- glance-12.0.0/glance/tests/unit/test_migrations.py.orig	2016-08-10 09:36:22.780385325 -0700
       
  1009 +++ glance-12.0.0/glance/tests/unit/test_migrations.py	2016-08-10 09:34:27.483366399 -0700
       
  1010 @@ -122,7 +122,7 @@ class MigrationsMixin(test_migrations.Wa
       
  1011                                                          sqlalchemy.Boolean(),
       
  1012                                                          nullable=False,
       
  1013                                                          default=False),
       
  1014 -                                      mysql_engine='InnoDB',
       
  1015 +                                      mysql_engine=CONF.database.mysql_storage_engine,
       
  1016                                        mysql_charset='utf8')
       
  1017          images_001.create()
       
  1018  
       
  1019 @@ -1846,10 +1846,11 @@ class TestMysqlMigrations(test_base.MySQ
       
  1020          noninnodb = self.migrate_engine.execute(
       
  1021              "SELECT count(*) "
       
  1022              "FROM information_schema.TABLES "
       
  1023 -            "WHERE TABLE_SCHEMA='%s' "
       
  1024 -            "AND ENGINE!='InnoDB' "
       
  1025 +            "WHERE TABLE_SCHEMA='%(table_schema)s' "
       
  1026 +            "AND ENGINE!='%(mysql_storage_engine)s' "
       
  1027              "AND TABLE_NAME!='migrate_version'"
       
  1028 -            % self.migrate_engine.url.database)
       
  1029 +            % dict(table_schema=self.migrate_engine.url.database,
       
  1030 +                   mysql_storage_engine=CONF.database.mysql_storage_engine))
       
  1031          count = noninnodb.scalar()
       
  1032          self.assertEqual(0, count, "%d non InnoDB tables created" % count)
       
  1033