components/openstack/ironic/patches/mysql_cluster_support.patch
changeset 5757 9c6a2daa1337
parent 5756 8233953c0160
child 5760 ae78071b3cad
--- 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
- 
-