38def upgrade():
   39    op.create_table(
   40        'ps_endpoints',
   41        sa.Column('id', sa.String(40), nullable=False, unique=True),
   42        sa.Column('transport', sa.String(40)),
   43        sa.Column('aors', sa.String(200)),
   44        sa.Column('auth', sa.String(40)),
   45        sa.Column('context', sa.String(40)),
   46        sa.Column('disallow', sa.String(200)),
   47        sa.Column('allow', sa.String(200)),
   48        sa.Column('direct_media', sa.Enum(*YESNO_VALUES, name='yesno_values')),
   49        sa.Column('connected_line_method',
   50                  sa.Enum(*PJSIP_CONNECTED_LINE_METHOD_VALUES, name='pjsip_connected_line_method_values')),
   51        sa.Column('direct_media_method',
   52                  sa.Enum(*PJSIP_CONNECTED_LINE_METHOD_VALUES, name='pjsip_connected_line_method_values')),
   53        sa.Column('direct_media_glare_mitigation',
   54                  sa.Enum(*PJSIP_DIRECT_MEDIA_GLARE_MITIGATION_VALUES, name='pjsip_direct_media_glare_mitigation_values')),
   55        sa.Column('disable_direct_media_on_nat', sa.Enum(*YESNO_VALUES, name='yesno_values')),
   56        sa.Column('dtmf_mode', sa.Enum(*PJSIP_DTMF_MODE_VALUES, name='pjsip_dtmf_mode_values')),
   57        sa.Column('external_media_address', sa.String(40)),
   58        sa.Column('force_rport', sa.Enum(*YESNO_VALUES, name='yesno_values')),
   59        sa.Column('ice_support', sa.Enum(*YESNO_VALUES, name='yesno_values')),
   60        sa.Column('identify_by', sa.Enum(*PJSIP_IDENTIFY_BY_VALUES, name='pjsip_identify_by_values')),
   61        sa.Column('mailboxes', sa.String(40)),
   62        sa.Column('moh_suggest', sa.String(40)),
   63        sa.Column('outbound_auth', sa.String(40)),
   64        sa.Column('outbound_proxy', sa.String(40)),
   65        sa.Column('rewrite_contact', sa.Enum(*YESNO_VALUES, name='yesno_values')),
   66        sa.Column('rtp_ipv6', sa.Enum(*YESNO_VALUES, name='yesno_values')),
   67        sa.Column('rtp_symmetric', sa.Enum(*YESNO_VALUES, name='yesno_values')),
   68        sa.Column('send_diversion', sa.Enum(*YESNO_VALUES, name='yesno_values')),
   69        sa.Column('send_pai', sa.Enum(*YESNO_VALUES, name='yesno_values')),
   70        sa.Column('send_rpid', sa.Enum(*YESNO_VALUES, name='yesno_values')),
   71        sa.Column('timers_min_se', sa.Integer),
   72        sa.Column('timers', sa.Enum(*PJSIP_TIMERS_VALUES, name='pjsip_timer_values')),
   73        sa.Column('timers_sess_expires', sa.Integer),
   74        sa.Column('callerid', sa.String(40)),
   75        sa.Column('callerid_privacy', sa.Enum(*PJSIP_CID_PRIVACY_VALUES, name='pjsip_cid_privacy_values')),
   76        sa.Column('callerid_tag', sa.String(40)),
   77        sa.Column('100rel', sa.Enum(*PJSIP_100REL_VALUES, name='pjsip_100rel_values')),
   78        sa.Column('aggregate_mwi', sa.Enum(*YESNO_VALUES, name='yesno_values')),
   79        sa.Column('trust_id_inbound', sa.Enum(*YESNO_VALUES, name='yesno_values')),
   80        sa.Column('trust_id_outbound', sa.Enum(*YESNO_VALUES, name='yesno_values')),
   81        sa.Column('use_ptime', sa.Enum(*YESNO_VALUES, name='yesno_values')),
   82        sa.Column('use_avpf', sa.Enum(*YESNO_VALUES, name='yesno_values')),
   83        sa.Column('media_encryption', sa.Enum(*PJSIP_MEDIA_ENCRYPTION_VALUES, name='pjsip_media_encryption_values')),
   84        sa.Column('inband_progress', sa.Enum(*YESNO_VALUES, name='yesno_values')),
   85        sa.Column('call_group', sa.String(40)),
   86        sa.Column('pickup_group', sa.String(40)),
   87        sa.Column('named_call_group', sa.String(40)),
   88        sa.Column('named_pickup_group', sa.String(40)),
   89        sa.Column('device_state_busy_at', sa.Integer),
   90        sa.Column('fax_detect', sa.Enum(*YESNO_VALUES, name='yesno_values')),
   91        sa.Column('t38_udptl', sa.Enum(*YESNO_VALUES, name='yesno_values')),
   92        sa.Column('t38_udptl_ec', sa.Enum(*PJSIP_T38UDPTL_EC_VALUES, name='pjsip_t38udptl_ec_values')),
   93        sa.Column('t38_udptl_maxdatagram', sa.Integer),
   94        sa.Column('t38_udptl_nat', sa.Enum(*YESNO_VALUES, name='yesno_values')),
   95        sa.Column('t38_udptl_ipv6', sa.Enum(*YESNO_VALUES, name='yesno_values')),
   96        sa.Column('tone_zone', sa.String(40)),
   97        sa.Column('language', sa.String(40)),
   98        sa.Column('one_touch_recording', sa.Enum(*YESNO_VALUES, name='yesno_values')),
   99        sa.Column('record_on_feature', sa.String(40)),
  100        sa.Column('record_off_feature', sa.String(40)),
  101        sa.Column('rtp_engine', sa.String(40)),
  102        sa.Column('allow_transfer', sa.Enum(*YESNO_VALUES, name='yesno_values')),
  103        sa.Column('allow_subscribe', sa.Enum(*YESNO_VALUES, name='yesno_values')),
  104        sa.Column('sdp_owner', sa.String(40)),
  105        sa.Column('sdp_session', sa.String(40)),
  106        sa.Column('tos_audio', sa.Integer),
  107        sa.Column('tos_video', sa.Integer),
  108        sa.Column('cos_audio', sa.Integer),
  109        sa.Column('cos_video', sa.Integer),
  110        sa.Column('sub_min_expiry', sa.Integer),
  111        sa.Column('from_domain', sa.String(40)),
  112        sa.Column('from_user', sa.String(40)),
  113        sa.Column('mwi_fromuser', sa.String(40)),
  114        sa.Column('dtls_verify', sa.String(40)),
  115        sa.Column('dtls_rekey', sa.String(40)),
  116        sa.Column('dtls_cert_file', sa.String(200)),
  117        sa.Column('dtls_private_key', sa.String(200)),
  118        sa.Column('dtls_cipher', sa.String(200)),
  119        sa.Column('dtls_ca_file', sa.String(200)),
  120        sa.Column('dtls_ca_path', sa.String(200)),
  121        sa.Column('dtls_setup', sa.Enum(*PJSIP_DTLS_SETUP_VALUES, name='pjsip_dtls_setup_values')),
  122        sa.Column('srtp_tag_32', sa.Enum(*YESNO_VALUES, name='yesno_values')),
  123    )
  124 
  125    op.create_index('ps_endpoints_id', 'ps_endpoints', ['id'])
  126 
  127    op.create_table(
  128        'ps_auths',
  129        sa.Column('id', sa.String(40), nullable=False, unique=True),
  130        sa.Column('auth_type', sa.Enum(*PJSIP_AUTH_TYPE_VALUES, name='pjsip_auth_type_values')),
  131        sa.Column('nonce_lifetime', sa.Integer),
  132        sa.Column('md5_cred', sa.String(40)),
  133        sa.Column('password', sa.String(80)),
  134        sa.Column('realm', sa.String(40)),
  135        sa.Column('username', sa.String(40)),
  136    )
  137 
  138    op.create_index('ps_auths_id', 'ps_auths', ['id'])
  139 
  140    op.create_table(
  141        'ps_aors',
  142        sa.Column('id', sa.String(40), nullable=False, unique=True),
  143        sa.Column('contact', sa.String(40)),
  144        sa.Column('default_expiration', sa.Integer),
  145        sa.Column('mailboxes', sa.String(80)),
  146        sa.Column('max_contacts', sa.Integer),
  147        sa.Column('minimum_expiration', sa.Integer),
  148        sa.Column('remove_existing', sa.Enum(*YESNO_VALUES, name='yesno_values')),
  149        sa.Column('qualify_frequency', sa.Integer),
  150        sa.Column('authenticate_qualify', sa.Enum(*YESNO_VALUES, name='yesno_values')),
  151    )
  152 
  153    op.create_index('ps_aors_id', 'ps_aors', ['id'])
  154 
  155    op.create_table(
  156        'ps_contacts',
  157        sa.Column('id', sa.String(40), nullable=False, unique=True),
  158        sa.Column('uri', sa.String(40)),
  159        sa.Column('expiration_time', sa.String(40)),
  160        sa.Column('qualify_frequency', sa.Integer),
  161    )
  162 
  163    op.create_index('ps_contacts_id', 'ps_contacts', ['id'])
  164 
  165    op.create_table(
  166        'ps_domain_aliases',
  167        sa.Column('id', sa.String(40), nullable=False, unique=True),
  168        sa.Column('domain', sa.String(80)),
  169    )
  170 
  171    op.create_index('ps_domain_aliases_id', 'ps_domain_aliases', ['id'])
  172 
  173    op.create_table(
  174        'ps_endpoint_id_ips',
  175        sa.Column('id', sa.String(40), nullable=False, unique=True),
  176        sa.Column('endpoint', sa.String(40)),
  177        sa.Column('match', sa.String(80)),
  178    )
  179 
  180    op.create_index('ps_endpoint_id_ips_id',
  181                    'ps_endpoint_id_ips', ['id'])
  182 
  183