--- a/components/openstack/ironic/patches/mysql_cluster_support.patch Wed Apr 13 10:14:18 2016 -0700
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,92 +0,0 @@
-This patchset is for bug:
-
-22726240 - Ironic needs to support MySQL Cluster
-
-This fixes the following aspects of Ironic:
-1. Implementation of an oslo.db configuration parameter to specify the MySQL
- storage engine (mysql_storage_engine).
-2. Replacement of hardcoded SQL statements that set the engine to "InnoDB"
- to the above configuration value.
-3. Logic to handle SQL differences between MySQL InnoDB and MySQL Cluster (NDB).
- This includes column lengths, constraints, foreign keys, and indexes.
-
-This has not been committed upstream, but has been filed in launchpad:
-
-https://bugs.launchpad.net/ironic/+bug/1564110
-
-
---- ironic-2015.1.2/ironic/db/sqlalchemy/alembic/versions/2581ebaf0cb2_initial_migration.py.orig 2016-03-21 16:12:03.214356068 -0600
-+++ ironic-2015.1.2/ironic/db/sqlalchemy/alembic/versions/2581ebaf0cb2_initial_migration.py 2016-03-21 16:33:15.312722952 -0600
-@@ -26,6 +26,8 @@ down_revision = None
- from alembic import op
- import sqlalchemy as sa
-
-+from oslo_config import cfg
-+CONF = cfg.CONF
-
- def upgrade():
- # commands auto generated by Alembic - please adjust!
-@@ -38,7 +40,7 @@ def upgrade():
- sa.Column('drivers', sa.Text(), nullable=True),
- sa.PrimaryKeyConstraint('id'),
- sa.UniqueConstraint('hostname', name='uniq_conductors0hostname'),
-- mysql_ENGINE='InnoDB',
-+ mysql_ENGINE=CONF.database.mysql_storage_engine,
- mysql_DEFAULT_CHARSET='UTF8'
- )
- op.create_table(
-@@ -51,7 +53,7 @@ def upgrade():
- sa.Column('description', sa.String(length=255), nullable=True),
- sa.PrimaryKeyConstraint('id'),
- sa.UniqueConstraint('uuid', name='uniq_chassis0uuid'),
-- mysql_ENGINE='InnoDB',
-+ mysql_ENGINE=CONF.database.mysql_storage_engine,
- mysql_DEFAULT_CHARSET='UTF8'
- )
- op.create_table(
-@@ -77,7 +79,7 @@ def upgrade():
- sa.ForeignKeyConstraint(['chassis_id'], ['chassis.id'], ),
- sa.PrimaryKeyConstraint('id'),
- sa.UniqueConstraint('uuid', name='uniq_nodes0uuid'),
-- mysql_ENGINE='InnoDB',
-+ mysql_ENGINE=CONF.database.mysql_storage_engine,
- mysql_DEFAULT_CHARSET='UTF8'
- )
- op.create_index('node_instance_uuid', 'nodes', ['instance_uuid'],
-@@ -95,7 +97,7 @@ def upgrade():
- sa.PrimaryKeyConstraint('id'),
- sa.UniqueConstraint('address', name='uniq_ports0address'),
- sa.UniqueConstraint('uuid', name='uniq_ports0uuid'),
-- mysql_ENGINE='InnoDB',
-+ mysql_ENGINE=CONF.database.mysql_storage_engine,
- mysql_DEFAULT_CHARSET='UTF8'
- )
- # end Alembic commands
---- ironic-2015.1.2/ironic/db/sqlalchemy/alembic/versions/487deb87cc9d_add_conductor_affinity_and_online.py.orig 2016-03-21 17:24:03.913800383 -0600
-+++ ironic-2015.1.2/ironic/db/sqlalchemy/alembic/versions/487deb87cc9d_add_conductor_affinity_and_online.py 2016-03-22 10:35:08.185257998 -0600
-@@ -29,7 +29,7 @@ import sqlalchemy as sa
- def upgrade():
- op.add_column(
- 'conductors',
-- sa.Column('online', sa.Boolean(), default=True))
-+ sa.Column('online', sa.Boolean(), default=True, quote=True))
- op.add_column(
- 'nodes',
- sa.Column('conductor_affinity', sa.Integer(),
---- ironic-2015.1.2/ironic/db/sqlalchemy/models.py.orig 2016-03-21 16:12:03.216554516 -0600
-+++ ironic-2015.1.2/ironic/db/sqlalchemy/models.py 2016-03-21 17:13:13.683753382 -0600
-@@ -49,8 +49,12 @@ db_options.set_defaults(cfg.CONF, _DEFAU
- def table_args():
- engine_name = urlparse.urlparse(cfg.CONF.database.connection).scheme
- if engine_name == 'mysql':
-- return {'mysql_engine': cfg.CONF.database.mysql_engine,
-- 'mysql_charset': "utf8"}
-+ if cfg.CONF.database.mysql_storage_engine == "NDBCLUSTER":
-+ return {'mysql_engine': cfg.CONF.database.mysql_storage_engine,
-+ 'mysql_charset': "utf8"}
-+ else:
-+ return {'mysql_engine': cfg.CONF.database.mysql_engine,
-+ 'mysql_charset': "utf8"}
- return None
-
-