diff -r 52081f923019 -r ea44e7e0ca98 components/openstack/ironic/patches/05-mysql_cluster_support.patch --- a/components/openstack/ironic/patches/05-mysql_cluster_support.patch Wed Sep 07 14:48:42 2016 -0700 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,111 +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. -4. Changes the conductor table column "online" to "online_status" to make it - more portable. "online" is a reserved word in MySQL and other databases. - -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/models.py.orig 2016-07-29 12:25:49.797916170 -0600 -+++ ironic-2015.1.2/ironic/db/sqlalchemy/models.py 2016-07-28 14:06:28.682668208 -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 - - -@@ -135,7 +139,7 @@ class Conductor(Base): - id = Column(Integer, primary_key=True) - hostname = Column(String(255), nullable=False) - drivers = Column(JSONEncodedList) -- online = Column(Boolean, default=True) -+ online = Column('online', Boolean, default=True, quote=True) - - - class Node(Base): ---- ironic-2015.1.2/ironic/db/sqlalchemy/alembic/versions/2581ebaf0cb2_initial_migration.py.orig 2016-07-29 12:25:57.319572657 -0600 -+++ ironic-2015.1.2/ironic/db/sqlalchemy/alembic/versions/2581ebaf0cb2_initial_migration.py 2016-07-29 12:27:49.354646151 -0600 -@@ -24,8 +24,10 @@ revision = '2581ebaf0cb2' - down_revision = None - - from alembic import op -+from oslo_config import cfg - import sqlalchemy as sa - -+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-07-29 12:26:04.346647881 -0600 -+++ ironic-2015.1.2/ironic/db/sqlalchemy/alembic/versions/487deb87cc9d_add_conductor_affinity_and_online.py 2016-07-28 14:06:28.683182607 -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(), -@@ -42,4 +42,4 @@ def downgrade(): - op.drop_constraint('nodes_conductor_affinity_fk', 'nodes', - type_='foreignkey') - op.drop_column('nodes', 'conductor_affinity') -- op.drop_column('conductors', 'online') -+ op.drop_column('conductors', 'online', quote=True)