Migrate data from cap_port_filter to vif_details
There was introduced a new column vif_details for ml2_port_binding table and dropped cap_port_filter column. Data was lost during the migration causing no data in vif_details. This patch transforms data from cap_port_filter to vif_details column as a part of db migration. MigrationContext.execute() calls underlaying methods depending whether migration is online or offline therefore data are migrated in offline migration too. Partial-bug: #1235149 Change-Id: Icc5dc6e8221a542f5190d0222ac4d10197d15ac1
This commit is contained in:
parent
90b7a37490
commit
bbf268ff54
@ -33,6 +33,7 @@ migration_for_plugins = [
|
|||||||
'neutron.plugins.ml2.plugin.Ml2Plugin'
|
'neutron.plugins.ml2.plugin.Ml2Plugin'
|
||||||
]
|
]
|
||||||
|
|
||||||
|
from alembic import context
|
||||||
from alembic import op
|
from alembic import op
|
||||||
import sqlalchemy as sa
|
import sqlalchemy as sa
|
||||||
|
|
||||||
@ -46,6 +47,13 @@ def upgrade(active_plugins=None, options=None):
|
|||||||
op.add_column('ml2_port_bindings',
|
op.add_column('ml2_port_bindings',
|
||||||
sa.Column('vif_details', sa.String(length=4095),
|
sa.Column('vif_details', sa.String(length=4095),
|
||||||
nullable=False, server_default=''))
|
nullable=False, server_default=''))
|
||||||
|
migr_context = context.get_context()
|
||||||
|
with context.begin_transaction():
|
||||||
|
for value in ('true', 'false'):
|
||||||
|
migr_context.execute(
|
||||||
|
"UPDATE ml2_port_bindings SET"
|
||||||
|
" vif_details = '{\"port_filter\": %(value)s}'"
|
||||||
|
" WHERE cap_port_filter = %(value)s" % {'value': value})
|
||||||
op.drop_column('ml2_port_bindings', 'cap_port_filter')
|
op.drop_column('ml2_port_bindings', 'cap_port_filter')
|
||||||
|
|
||||||
|
|
||||||
@ -55,5 +63,11 @@ def downgrade(active_plugins=None, options=None):
|
|||||||
|
|
||||||
op.add_column('ml2_port_bindings',
|
op.add_column('ml2_port_bindings',
|
||||||
sa.Column('cap_port_filter', sa.Boolean(),
|
sa.Column('cap_port_filter', sa.Boolean(),
|
||||||
nullable=False, server_default=False))
|
nullable=False, default=False))
|
||||||
|
migr_context = context.get_context()
|
||||||
|
with context.begin_transaction():
|
||||||
|
migr_context.execute(
|
||||||
|
"UPDATE ml2_port_bindings SET"
|
||||||
|
" cap_port_filter = true"
|
||||||
|
" WHERE vif_details LIKE '%\"port_filter\": true%'")
|
||||||
op.drop_column('ml2_port_bindings', 'vif_details')
|
op.drop_column('ml2_port_bindings', 'vif_details')
|
||||||
|
Loading…
Reference in New Issue
Block a user