Asterisk - The Open Source Telephony Project GIT-master-abe0018
20abce6d1e3c_add_pjsip_identify_by_ip.py
Go to the documentation of this file.
1"""add pjsip identify by ip
2
3Revision ID: 20abce6d1e3c
4Revises: a1698e8bb9c5
5Create Date: 2017-10-24 15:44:06.404774
6
7"""
8
9# revision identifiers, used by Alembic.
10revision = '20abce6d1e3c'
11down_revision = 'a1698e8bb9c5'
12
13from alembic import op
14import sqlalchemy as sa
15
16
17def enum_update(table_name, column_name, enum_name, enum_values):
18 if op.get_context().bind.dialect.name != 'postgresql':
19 if op.get_context().bind.dialect.name == 'mssql':
20 op.drop_constraint('ck_ps_endpoints_identify_by_pjsip_identify_by_values', 'ps_endpoints')
21 op.alter_column(table_name, column_name,
22 type_=sa.Enum(*enum_values, name=enum_name))
23 return
24
25 # Postgres requires a few more steps
26 tmp = enum_name + '_tmp'
27
28 op.execute('ALTER TYPE ' + enum_name + ' RENAME TO ' + tmp)
29
30 updated = sa.Enum(*enum_values, name=enum_name)
31 updated.create(op.get_bind(), checkfirst=False)
32
33 op.execute('ALTER TABLE ' + table_name + ' ALTER COLUMN ' + column_name +
34 ' TYPE ' + enum_name + ' USING identify_by::text::' + enum_name)
35
36 op.execute('DROP TYPE ' + tmp)
37
38
39def upgrade():
40 enum_update('ps_endpoints', 'identify_by', 'pjsip_identify_by_values',
41 ['username', 'auth_username', 'ip'])
42
43
45 enum_update('ps_endpoints', 'identify_by', 'pjsip_identify_by_values',
46 ['username', 'auth_username'])
def enum_update(table_name, column_name, enum_name, enum_values)