31def upgrade():
   32    
   33 
   34    
   35    
   36    yesno_values = ENUM(*YESNO_VALUES, name=YESNO_NAME, create_type=False)
   37 
   38    
   39    
   40    pjsip_redirect_method_values = sa.Enum(
   41        *PJSIP_REDIRECT_METHOD_VALUES, name=PJSIP_REDIRECT_METHOD_NAME)
   42    check = False if context.is_offline_mode() else True
   43    pjsip_redirect_method_values.create(op.get_bind(), checkfirst=check)
   44 
   45    pjsip_transport_method_values = sa.Enum(
   46        *PJSIP_TRANSPORT_METHOD_VALUES, name=PJSIP_TRANSPORT_METHOD_NAME)
   47 
   48    pjsip_transport_protocol_values = sa.Enum(
   49        *PJSIP_TRANSPORT_PROTOCOL_VALUES, name=PJSIP_TRANSPORT_PROTOCOL_NAME)
   50 
   51    
   52 
   53    op.create_table(
   54        'ps_systems',
   55        sa.Column('id', sa.String(40), nullable=False, unique=True),
   56        sa.Column('timer_t1', sa.Integer),
   57        sa.Column('timer_b', sa.Integer),
   58        sa.Column('compact_headers', yesno_values),
   59        sa.Column('threadpool_initial_size', sa.Integer),
   60        sa.Column('threadpool_auto_increment', sa.Integer),
   61        sa.Column('threadpool_idle_timeout', sa.Integer),
   62        sa.Column('threadpool_max_size', sa.Integer),
   63    )
   64 
   65    op.create_index('ps_systems_id', 'ps_systems', ['id'])
   66 
   67    op.create_table(
   68        'ps_globals',
   69        sa.Column('id', sa.String(40), nullable=False, unique=True),
   70        sa.Column('max_forwards', sa.Integer),
   71        sa.Column('user_agent', sa.String(40)),
   72        sa.Column('default_outbound_endpoint', sa.String(40)),
   73    )
   74 
   75    op.create_index('ps_globals_id', 'ps_globals', ['id'])
   76 
   77    op.create_table(
   78        'ps_transports',
   79        sa.Column('id', sa.String(40), nullable=False, unique=True),
   80        sa.Column('async_operations', sa.Integer),
   81        sa.Column('bind', sa.String(40)),
   82        sa.Column('ca_list_file', sa.String(200)),
   83        sa.Column('cert_file', sa.String(200)),
   84        sa.Column('cipher', sa.String(200)),
   85        sa.Column('domain', sa.String(40)),
   86        sa.Column('external_media_address', sa.String(40)),
   87        sa.Column('external_signaling_address', sa.String(40)),
   88        sa.Column('external_signaling_port', sa.Integer),
   89        sa.Column('method', pjsip_transport_method_values),
   90        sa.Column('local_net', sa.String(40)),
   91        sa.Column('password', sa.String(40)),
   92        sa.Column('priv_key_file', sa.String(200)),
   93        sa.Column('protocol', pjsip_transport_protocol_values),
   94        sa.Column('require_client_cert', yesno_values),
   95        sa.Column('verify_client', yesno_values),
   96        sa.Column('verifiy_server', yesno_values),
   97        sa.Column('tos', yesno_values),
   98        sa.Column('cos', yesno_values),
   99    )
  100 
  101    op.create_index('ps_transports_id', 'ps_transports', ['id'])
  102 
  103    op.create_table(
  104        'ps_registrations',
  105        sa.Column('id', sa.String(40), nullable=False, unique=True),
  106        sa.Column('auth_rejection_permanent', yesno_values),
  107        sa.Column('client_uri', sa.String(40)),
  108        sa.Column('contact_user', sa.String(40)),
  109        sa.Column('expiration', sa.Integer),
  110        sa.Column('max_retries', sa.Integer),
  111        sa.Column('outbound_auth', sa.String(40)),
  112        sa.Column('outbound_proxy', sa.String(40)),
  113        sa.Column('retry_interval', sa.Integer),
  114        sa.Column('forbidden_retry_interval', sa.Integer),
  115        sa.Column('server_uri', sa.String(40)),
  116        sa.Column('transport', sa.String(40)),
  117        sa.Column('support_path', yesno_values),
  118    )
  119 
  120    op.create_index('ps_registrations_id', 'ps_registrations', ['id'])
  121 
  122    
  123
  124    op.add_column('ps_endpoints', sa.Column('media_address', sa.String(40)))
  125    op.add_column('ps_endpoints', sa.Column('redirect_method',
  126        pjsip_redirect_method_values))
  127    op.add_column('ps_endpoints', sa.Column('set_var', sa.Text()))
  128 
  129    
  130    op.alter_column('ps_endpoints', 'mwi_fromuser',
  131        new_column_name='mwi_from_user', existing_type=sa.String(40))
  132 
  133    
  134    op.add_column('ps_contacts', sa.Column('outbound_proxy', sa.String(40)))
  135    op.add_column('ps_contacts', sa.Column('path', sa.Text()))
  136 
  137    
  138    op.add_column('ps_aors', sa.Column('maximum_expiration', sa.Integer))
  139    op.add_column('ps_aors', sa.Column('outbound_proxy', sa.String(40)))
  140    op.add_column('ps_aors', sa.Column('support_path', yesno_values))
  141