Merge "Upgrade failure for DB2 at ml2_binding_vif_details"
This commit is contained in:
commit
c484d600f5
@ -33,7 +33,6 @@ migration_for_plugins = [
|
||||
'neutron.plugins.ml2.plugin.Ml2Plugin'
|
||||
]
|
||||
|
||||
from alembic import context
|
||||
from alembic import op
|
||||
import sqlalchemy as sa
|
||||
|
||||
@ -47,13 +46,24 @@ def upgrade(active_plugins=None, options=None):
|
||||
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')
|
||||
|
||||
|
||||
@ -61,12 +71,24 @@ def downgrade(active_plugins=None, options=None):
|
||||
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%'")
|
||||
|
Loading…
x
Reference in New Issue
Block a user