mirror of https://github.com/asterisk/asterisk
certified/13.21
commit
16f211c647
@ -0,0 +1,57 @@
|
||||
"""add pjsip identify by header
|
||||
|
||||
Revision ID: 52798ad97bdf
|
||||
Revises: 20abce6d1e3c
|
||||
Create Date: 2018-01-08 12:16:02.782277
|
||||
|
||||
"""
|
||||
|
||||
# revision identifiers, used by Alembic.
|
||||
revision = '52798ad97bdf'
|
||||
down_revision = '20abce6d1e3c'
|
||||
|
||||
from alembic import op
|
||||
import sqlalchemy as sa
|
||||
|
||||
|
||||
def column_upgrade(table_name, column_name, enum_name):
|
||||
if op.get_context().bind.dialect.name != 'postgresql':
|
||||
if op.get_context().bind.dialect.name == 'mssql':
|
||||
op.drop_constraint('ck_ps_endpoints_identify_by_pjsip_identify_by_values',
|
||||
table_name)
|
||||
op.alter_column(table_name, column_name, type_=sa.String(80))
|
||||
return
|
||||
|
||||
# Postgres requires a few more steps
|
||||
op.execute('ALTER TABLE ' + table_name + ' ALTER COLUMN ' + column_name +
|
||||
' TYPE varchar(80) USING identify_by::text::' + enum_name)
|
||||
|
||||
op.execute('DROP TYPE ' + enum_name)
|
||||
|
||||
|
||||
def column_downgrade(table_name, column_name, enum_name, enum_values):
|
||||
if op.get_context().bind.dialect.name != 'postgresql':
|
||||
op.alter_column(table_name, column_name,
|
||||
type_=sa.Enum(*enum_values, name=enum_name))
|
||||
return
|
||||
|
||||
# Postgres requires a few more steps
|
||||
updated = sa.Enum(*enum_values, name=enum_name)
|
||||
updated.create(op.get_bind(), checkfirst=False)
|
||||
|
||||
op.execute('ALTER TABLE ' + table_name + ' ALTER COLUMN ' + column_name +
|
||||
' TYPE ' + enum_name + ' USING identify_by::text::' + enum_name)
|
||||
|
||||
|
||||
def upgrade():
|
||||
# The ps_endpoints identify_by column has always been a comma separated
|
||||
# list of enum values. This is better represented as a string anyway to
|
||||
# avoid database compatibility issues. Also future changes are likely
|
||||
# to allow loadable endpoint identifier names and negating fixed enum
|
||||
# benefits.
|
||||
column_upgrade('ps_endpoints', 'identify_by', 'pjsip_identify_by_values')
|
||||
|
||||
|
||||
def downgrade():
|
||||
column_downgrade('ps_endpoints', 'identify_by', 'pjsip_identify_by_values',
|
||||
['username', 'auth_username', 'ip'])
|
Loading…
Reference in new issue