mirror of
https://github.com/asterisk/asterisk.git
synced 2025-09-02 11:06:31 +00:00
res_pjsip: Change suppress_moh_on_sendonly to OPT_BOOL_T
The suppress_moh_on_sendonly endpoint option should have been defined as OPT_BOOL_T in pjsip_configuration.c and AST_BOOL_VALUES in the alembic script instead of OPT_YESNO_T and YESNO_VALUES. Also updated contrib/ast-db-manage/README.md to indicate that AST_BOOL_VALUES should always be used and provided an example. Resolves: #995
This commit is contained in:
@@ -1,5 +1,4 @@
|
|||||||
Asterisk Database Manager
|
# Asterisk Database Manager
|
||||||
=========================
|
|
||||||
|
|
||||||
Asterisk includes optional database integration for a variety of features.
|
Asterisk includes optional database integration for a variety of features.
|
||||||
The purpose of this effort is to assist in managing the database schema
|
The purpose of this effort is to assist in managing the database schema
|
||||||
@@ -17,11 +16,8 @@ repositories include:
|
|||||||
Alembic uses SQLAlchemy, which has support for
|
Alembic uses SQLAlchemy, which has support for
|
||||||
[many databases](http://docs.sqlalchemy.org/en/rel_0_8/dialects/index.html).
|
[many databases](http://docs.sqlalchemy.org/en/rel_0_8/dialects/index.html).
|
||||||
|
|
||||||
IMPORTANT NOTE: This is brand new and the initial migrations are still subject
|
|
||||||
to change. Only use this for testing purposes for now.
|
|
||||||
|
|
||||||
Example Usage
|
## Example Usage
|
||||||
-------------
|
|
||||||
|
|
||||||
First, create an ini file that contains database connection details. For help
|
First, create an ini file that contains database connection details. For help
|
||||||
with connection string details, see the
|
with connection string details, see the
|
||||||
@@ -50,16 +46,47 @@ to upgrade or downgrade to, as well.
|
|||||||
|
|
||||||
$ alembic -c config.ini upgrade 4da0c5f79a9c
|
$ alembic -c config.ini upgrade 4da0c5f79a9c
|
||||||
|
|
||||||
Offline Mode
|
## Offline Mode
|
||||||
------------
|
|
||||||
|
|
||||||
If you would like to just generate the SQL statements that would have been
|
If you would like to just generate the SQL statements that would have been
|
||||||
executed, you can use alembic's offline mode.
|
executed, you can use alembic's offline mode.
|
||||||
|
|
||||||
$ alembic -c config.ini upgrade head --sql
|
$ alembic -c config.ini upgrade head --sql
|
||||||
|
|
||||||
Adding Database Migrations
|
## Adding Database Migrations
|
||||||
--------------------------
|
|
||||||
|
|
||||||
The best way to learn about how to add additional database migrations is to
|
The best way to learn about how to add additional database migrations is to
|
||||||
refer to the [Alembic documentation](http://alembic.readthedocs.org).
|
refer to the [Alembic documentation](http://alembic.readthedocs.org).
|
||||||
|
|
||||||
|
### Notes
|
||||||
|
|
||||||
|
* For boolean columns, always use the AST_BOOL_VALUES type.
|
||||||
|
Example:
|
||||||
|
|
||||||
|
```
|
||||||
|
from alembic import op
|
||||||
|
import sqlalchemy as sa
|
||||||
|
# This works for MySQL/MariaDB and others as well
|
||||||
|
from sqlalchemy.dialects.postgresql import ENUM
|
||||||
|
|
||||||
|
AST_BOOL_NAME = 'ast_bool_values'
|
||||||
|
AST_BOOL_VALUES = [ '0', '1',
|
||||||
|
'off', 'on',
|
||||||
|
'false', 'true',
|
||||||
|
'no', 'yes' ]
|
||||||
|
|
||||||
|
def upgrade():
|
||||||
|
# ast_bool_values have already been created, so use postgres enum object type
|
||||||
|
# to get around "already created" issue - works okay with MySQL/MariaDB and others.
|
||||||
|
ast_bool_values = ENUM(*AST_BOOL_VALUES, name=AST_BOOL_NAME, create_type=False)
|
||||||
|
op.add_column('ps_endpoints', sa.Column('suppress_moh_on_sendonly', ast_bool_values))
|
||||||
|
|
||||||
|
def downgrade():
|
||||||
|
if op.get_context().bind.dialect.name == 'mssql':
|
||||||
|
op.drop_constraint('ck_ps_endpoints_suppress_moh_on_sendonly_ast_bool_values', 'ps_endpoints')
|
||||||
|
op.drop_column('ps_endpoints', 'suppress_moh_on_sendonly')
|
||||||
|
```
|
||||||
|
|
||||||
|
|
||||||
|
Older scripts used YESNO_VALUES but that is no longer supported.
|
||||||
|
|
||||||
|
@@ -14,17 +14,17 @@ from alembic import op
|
|||||||
import sqlalchemy as sa
|
import sqlalchemy as sa
|
||||||
from sqlalchemy.dialects.postgresql import ENUM
|
from sqlalchemy.dialects.postgresql import ENUM
|
||||||
|
|
||||||
YESNO_NAME = 'yesno_values'
|
AST_BOOL_NAME = 'ast_bool_values'
|
||||||
YESNO_VALUES = ['yes', 'no']
|
AST_BOOL_VALUES = [ '0', '1',
|
||||||
|
'off', 'on',
|
||||||
|
'false', 'true',
|
||||||
|
'no', 'yes' ]
|
||||||
|
|
||||||
def upgrade():
|
def upgrade():
|
||||||
yesno_values = ENUM(*YESNO_VALUES, name=YESNO_NAME, create_type=False)
|
ast_bool_values = ENUM(*AST_BOOL_VALUES, name=AST_BOOL_NAME, create_type=False)
|
||||||
|
op.add_column('ps_endpoints', sa.Column('suppress_moh_on_sendonly', ast_bool_values))
|
||||||
op.add_column('ps_endpoints', sa.Column('suppress_moh_on_sendonly', yesno_values))
|
|
||||||
|
|
||||||
|
|
||||||
def downgrade():
|
def downgrade():
|
||||||
if op.get_context().bind.dialect.name == 'mssql':
|
if op.get_context().bind.dialect.name == 'mssql':
|
||||||
op.drop_constraint('ck_ps_endpoints_suppress_moh_on_sendonly_yesno_values', 'ps_endpoints')
|
op.drop_constraint('ck_ps_endpoints_suppress_moh_on_sendonly_ast_bool_values', 'ps_endpoints')
|
||||||
op.drop_column('ps_endpoints', 'suppress_moh_on_sendonly')
|
op.drop_column('ps_endpoints', 'suppress_moh_on_sendonly')
|
||||||
|
@@ -2305,7 +2305,7 @@ int ast_res_pjsip_initialize_configuration(void)
|
|||||||
ast_sorcery_object_field_register(sip_sorcery, "endpoint", "send_aoc", "no", OPT_BOOL_T, 1, FLDSET(struct ast_sip_endpoint, send_aoc));
|
ast_sorcery_object_field_register(sip_sorcery, "endpoint", "send_aoc", "no", OPT_BOOL_T, 1, FLDSET(struct ast_sip_endpoint, send_aoc));
|
||||||
ast_sorcery_object_field_register(sip_sorcery, "endpoint", "tenantid", "", OPT_STRINGFIELD_T, 0, STRFLDSET(struct ast_sip_endpoint, tenantid));
|
ast_sorcery_object_field_register(sip_sorcery, "endpoint", "tenantid", "", OPT_STRINGFIELD_T, 0, STRFLDSET(struct ast_sip_endpoint, tenantid));
|
||||||
ast_sorcery_object_field_register(sip_sorcery, "endpoint", "suppress_moh_on_sendonly",
|
ast_sorcery_object_field_register(sip_sorcery, "endpoint", "suppress_moh_on_sendonly",
|
||||||
"no", OPT_YESNO_T, 1, FLDSET(struct ast_sip_endpoint, suppress_moh_on_sendonly));
|
"no", OPT_BOOL_T, 1, FLDSET(struct ast_sip_endpoint, suppress_moh_on_sendonly));
|
||||||
|
|
||||||
if (ast_sip_initialize_sorcery_transport()) {
|
if (ast_sip_initialize_sorcery_transport()) {
|
||||||
ast_log(LOG_ERROR, "Failed to register SIP transport support with sorcery\n");
|
ast_log(LOG_ERROR, "Failed to register SIP transport support with sorcery\n");
|
||||||
|
Reference in New Issue
Block a user