Add charset and engine parameters to alembic create tables

This patch enforces utf8 and InnoDB when creating tables in
mariadb/mysql.

Closes-Bug: #2043701

Change-Id: I7afb533bd2d19dfaa900e3b946dc1e3563cc5198
This commit is contained in:
Brent Eagles 2023-11-16 09:33:53 -03:30
parent 4e185d4e26
commit 1f045ee64a
6 changed files with 92 additions and 21 deletions

View File

@ -60,7 +60,10 @@ def upgrade() -> None:
sa.Column('port', sa.Integer, nullable=False),
sa.Column('zone_id', UUID, nullable=False),
sa.UniqueConstraint('host', 'port', 'zone_id', name='unique_masters'),
sa.ForeignKeyConstraint(['zone_id'], ['zones.id'], ondelete='CASCADE'))
sa.ForeignKeyConstraint(['zone_id'], ['zones.id'], ondelete='CASCADE'),
mysql_engine='InnoDB',
mysql_charset='utf8',
)
zone_attr_sql = sa.text(
'SELECT id, version, created_at, updated_at, value, zone_id FROM '

View File

@ -56,4 +56,7 @@ def upgrade() -> None:
sa.Column('status', sa.Enum(name='service_statuses_enum',
*SERVICE_STATES), nullable=False),
sa.Column('stats', sa.Text, nullable=False),
sa.Column('capabilities', sa.Text, nullable=False))
sa.Column('capabilities', sa.Text, nullable=False),
mysql_engine='InnoDB',
mysql_charset='utf8',
)

View File

@ -45,4 +45,6 @@ def upgrade() -> None:
sa.UniqueConstraint('zone_id', 'project_id', 'target_project_id',
name='unique_shared_zone'),
sa.ForeignKeyConstraint(['zone_id'], ['zones.id'], ondelete='CASCADE'),
mysql_engine='InnoDB',
mysql_charset='utf8',
)

View File

@ -73,7 +73,10 @@ def upgrade() -> None:
sa.Column('provisioner', sa.Enum(name='pool_provisioner',
*POOL_PROVISIONERS),
nullable=False, server_default='UNMANAGED'),
sa.UniqueConstraint('name', name='unique_pool_name'))
sa.UniqueConstraint('name', name='unique_pool_name'),
mysql_engine='InnoDB',
mysql_charset='utf8',
)
op.bulk_insert(
pools_table,
@ -90,7 +93,10 @@ def upgrade() -> None:
sa.Column('pool_id', UUID, nullable=False),
sa.Column('priority', sa.Integer, nullable=False),
sa.Column('hostname', sa.String(255), nullable=False),
sa.ForeignKeyConstraint(['pool_id'], ['pools.id'], ondelete='CASCADE'))
sa.ForeignKeyConstraint(['pool_id'], ['pools.id'], ondelete='CASCADE'),
mysql_engine='InnoDB',
mysql_charset='utf8',
)
op.create_table(
'pool_attributes', metadata,
@ -103,7 +109,10 @@ def upgrade() -> None:
sa.Column('pool_id', UUID, nullable=False),
sa.UniqueConstraint('pool_id', 'key', 'value',
name='unique_pool_attribute'),
sa.ForeignKeyConstraint(['pool_id'], ['pools.id'], ondelete='CASCADE'))
sa.ForeignKeyConstraint(['pool_id'], ['pools.id'], ondelete='CASCADE'),
mysql_engine='InnoDB',
mysql_charset='utf8',
)
op.create_table(
'domains', metadata,
@ -145,7 +154,10 @@ def upgrade() -> None:
sa.Index('zone_deleted', 'deleted'),
sa.Index('zone_tenant_deleted', 'tenant_id', 'deleted'),
sa.Index('reverse_name_deleted', 'reverse_name', 'deleted'),
sa.Index('zone_created_at', 'created_at'))
sa.Index('zone_created_at', 'created_at'),
mysql_engine='InnoDB',
mysql_charset='utf8',
)
op.create_table(
'domain_attributes', metadata,
@ -159,7 +171,10 @@ def upgrade() -> None:
sa.UniqueConstraint('key', 'value', 'domain_id',
name='unique_attributes'),
sa.ForeignKeyConstraint(['domain_id'], ['domains.id'],
ondelete='CASCADE'))
ondelete='CASCADE'),
mysql_engine='InnoDB',
mysql_charset='utf8',
)
op.create_table(
'recordsets', metadata,
sa.Column('id', UUID, primary_key=True),
@ -183,7 +198,10 @@ def upgrade() -> None:
sa.Index('rrset_type_domainid', 'type', 'domain_id'),
sa.Index('recordset_type_name', 'type', 'name'),
sa.Index('reverse_name_dom_id', 'reverse_name', 'domain_id'),
sa.Index('recordset_created_at', 'created_at'))
sa.Index('recordset_created_at', 'created_at'),
mysql_engine='InnoDB',
mysql_charset='utf8',
)
op.create_table(
'records', metadata,
@ -232,7 +250,10 @@ def upgrade() -> None:
sa.Index('records_tenant', 'tenant_id'),
sa.Index('record_created_at', 'created_at'),
sa.Index('update_status_index', 'status', 'domain_id', 'tenant_id',
'created_at', 'serial'))
'created_at', 'serial'),
mysql_engine='InnoDB',
mysql_charset='utf8',
)
op.create_table(
'quotas', metadata,
@ -245,7 +266,10 @@ def upgrade() -> None:
sa.Column('tenant_id', sa.String(36), nullable=False),
sa.Column('resource', sa.String(32), nullable=False),
sa.Column('hard_limit', sa.Integer, nullable=False),
sa.UniqueConstraint('tenant_id', 'resource', name='unique_quota'))
sa.UniqueConstraint('tenant_id', 'resource', name='unique_quota'),
mysql_engine='InnoDB',
mysql_charset='utf8',
)
op.create_table(
'tsigkeys', metadata,
@ -261,7 +285,10 @@ def upgrade() -> None:
sa.Column('scope', sa.Enum(name='tsig_scopes', *TSIG_SCOPES),
nullable=False, server_default='POOL'),
sa.Column('resource_id', UUID, nullable=False),
sa.UniqueConstraint('name', name='unique_tsigkey_name'))
sa.UniqueConstraint('name', name='unique_tsigkey_name'),
mysql_engine='InnoDB',
mysql_charset='utf8',
)
op.create_table(
'tlds', metadata,
@ -273,7 +300,10 @@ def upgrade() -> None:
onupdate=lambda: timeutils.utcnow()),
sa.Column('name', sa.String(255), nullable=False),
sa.Column('description', sa.Unicode(160), nullable=True),
sa.UniqueConstraint('name', name='unique_tld_name'))
sa.UniqueConstraint('name', name='unique_tld_name'),
mysql_engine='InnoDB',
mysql_charset='utf8',
)
op.create_table(
'zone_transfer_requests', metadata,
@ -292,7 +322,10 @@ def upgrade() -> None:
*TASK_STATUSES),
nullable=False, server_default='ACTIVE', default='ACTIVE'),
sa.ForeignKeyConstraint(['domain_id'], ['domains.id'],
ondelete='CASCADE'))
ondelete='CASCADE'),
mysql_engine='InnoDB',
mysql_charset='utf8',
)
op.create_table(
'zone_transfer_accepts', metadata,
@ -311,7 +344,10 @@ def upgrade() -> None:
ondelete='CASCADE'),
sa.ForeignKeyConstraint(['zone_transfer_request_id'],
['zone_transfer_requests.id'],
ondelete='CASCADE'))
ondelete='CASCADE'),
mysql_engine='InnoDB',
mysql_charset='utf8',
)
op.create_table(
'zone_tasks', metadata,
@ -327,7 +363,10 @@ def upgrade() -> None:
sa.Column('status', sa.Enum(name='zone_tasks_resource_statuses',
*TASK_STATUSES),
nullable=False, server_default='ACTIVE', default='ACTIVE'),
sa.Column('location', sa.String(160), nullable=True))
sa.Column('location', sa.String(160), nullable=True),
mysql_engine='InnoDB',
mysql_charset='utf8',
)
op.create_table(
'blacklists', metadata,
@ -337,4 +376,7 @@ def upgrade() -> None:
sa.Column('created_at', sa.DateTime),
sa.Column('pattern', sa.String(255), nullable=False),
sa.Column('description', sa.Unicode(160), nullable=True),
sa.UniqueConstraint('pattern', name='pattern'))
sa.UniqueConstraint('pattern', name='pattern'),
mysql_engine='InnoDB',
mysql_charset='utf8',
)

View File

@ -57,7 +57,10 @@ def upgrade() -> None:
sa.Column('port', sa.Integer, nullable=False),
sa.ForeignKeyConstraint(['pool_id'], ['pools.id'], ondelete='CASCADE'),
sa.UniqueConstraint('pool_id', 'host', 'port',
name='unique_pool_host_port'))
name='unique_pool_host_port'),
mysql_engine='InnoDB',
mysql_charset='utf8',
)
op.create_table(
'pool_targets', metadata,
@ -71,7 +74,10 @@ def upgrade() -> None:
sa.Column('type', sa.String(50), nullable=False),
sa.Column('tsigkey_id', UUID, nullable=True),
sa.Column('description', sa.Unicode(160), nullable=True),
sa.ForeignKeyConstraint(['pool_id'], ['pools.id'], ondelete='CASCADE'))
sa.ForeignKeyConstraint(['pool_id'], ['pools.id'], ondelete='CASCADE'),
mysql_engine='InnoDB',
mysql_charset='utf8',
)
op.create_table(
'pool_target_masters', metadata,
@ -87,7 +93,10 @@ def upgrade() -> None:
sa.ForeignKeyConstraint(['pool_target_id'], ['pool_targets.id'],
ondelete='CASCADE'),
sa.UniqueConstraint('pool_target_id', 'host', 'port',
name='unique_pool_target_host_port'))
name='unique_pool_target_host_port'),
mysql_engine='InnoDB',
mysql_charset='utf8',
)
op.create_table(
'pool_target_options', metadata,
@ -103,7 +112,10 @@ def upgrade() -> None:
sa.ForeignKeyConstraint(['pool_target_id'], ['pool_targets.id'],
ondelete='CASCADE'),
sa.UniqueConstraint('pool_target_id', 'key',
name='unique_pool_target_key'))
name='unique_pool_target_key'),
mysql_engine='InnoDB',
mysql_charset='utf8',
)
op.create_table(
'pool_also_notifies', metadata,
@ -118,4 +130,7 @@ def upgrade() -> None:
sa.Column('port', sa.Integer, nullable=False),
sa.ForeignKeyConstraint(['pool_id'], ['pools.id'], ondelete='CASCADE'),
sa.UniqueConstraint('pool_id', 'host', 'port',
name='unique_pool_also_notifies_pool0host0port'))
name='unique_pool_also_notifies_pool0host0port'),
mysql_engine='InnoDB',
mysql_charset='utf8',
)

View File

@ -0,0 +1,6 @@
---
fixes:
- |
Database tables are now explicitly created with charset=utf8. This resolves
an issue running ``designate-manage database sync`` when the designate
database was not created with the default charset set to utf8.