'neutron.plugins.ml2.plugin.Ml2Plugin'
]
-from alembic import context
from alembic import op
import sqlalchemy as sa
op.add_column('ml2_port_bindings',
sa.Column('vif_details', sa.String(length=4095),
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})
+ if op.get_bind().engine.name == 'ibm_db_sa':
+ op.execute(
+ "UPDATE ml2_port_bindings SET"
+ " vif_details = '{\"port_filter\": true}'"
+ " WHERE cap_port_filter = 1")
+ op.execute(
+ "UPDATE ml2_port_bindings SET"
+ " vif_details = '{\"port_filter\": false}'"
+ " WHERE cap_port_filter = 0")
+ else:
+ op.execute(
+ "UPDATE ml2_port_bindings SET"
+ " vif_details = '{\"port_filter\": true}'"
+ " WHERE cap_port_filter = true")
+ op.execute(
+ "UPDATE ml2_port_bindings SET"
+ " vif_details = '{\"port_filter\": false}'"
+ " WHERE cap_port_filter = false")
op.drop_column('ml2_port_bindings', 'cap_port_filter')
if not migration.should_run(active_plugins, migration_for_plugins):
return
- op.add_column('ml2_port_bindings',
- sa.Column('cap_port_filter', sa.Boolean(),
- nullable=False, default=False))
- migr_context = context.get_context()
- with context.begin_transaction():
- migr_context.execute(
+ if op.get_bind().engine.name == 'ibm_db_sa':
+ # Note(xuhanp): DB2 doesn't allow nullable=False Column with
+ # "DEFAULT" clause not specified. So server_default is used.
+ # Using sa.text will result "DEFAULT 0" for cap_port_filter.
+ op.add_column('ml2_port_bindings',
+ sa.Column('cap_port_filter', sa.Boolean(),
+ nullable=False,
+ server_default=sa.text("0")))
+ op.execute(
+ "UPDATE ml2_port_bindings SET"
+ " cap_port_filter = 1"
+ " WHERE vif_details LIKE '%\"port_filter\": true%'")
+ else:
+ op.add_column('ml2_port_bindings',
+ sa.Column('cap_port_filter', sa.Boolean(),
+ nullable=False,
+ server_default=sa.text("false")))
+ op.execute(
"UPDATE ml2_port_bindings SET"
" cap_port_filter = true"
" WHERE vif_details LIKE '%\"port_filter\": true%'")