alembic/res_pjsip: Add "webrtc" configuration option
authorKevin Harwell <kharwell@digium.com>
Wed, 2 Aug 2017 14:43:56 +0000 (09:43 -0500)
committerKevin Harwell <kharwell@digium.com>
Thu, 3 Aug 2017 16:44:28 +0000 (11:44 -0500)
When the "webrtc" option was added in res_pjsip it was not added to the alembic
scripts. This patch adds the option for alembic.

Also, changed the sorcery configuration type to an OPT_YESNO_T value instead of
an OPT_BOOL_T so if this field is ever written to a database it will write out
the correct value.

ASTERISK-27119 #close

Change-Id: I3e199f060aea25e193c439fc5cf96be4d3ed1c7b

contrib/ast-db-manage/config/versions/44ccced114ce_add_webrtc.py [new file with mode: 0644]
res/res_pjsip/pjsip_configuration.c

diff --git a/contrib/ast-db-manage/config/versions/44ccced114ce_add_webrtc.py b/contrib/ast-db-manage/config/versions/44ccced114ce_add_webrtc.py
new file mode 100644 (file)
index 0000000..fdeb058
--- /dev/null
@@ -0,0 +1,31 @@
+"""add webrtc option to ps_endpoints
+
+Revision ID: 44ccced114ce
+Revises: 164abbd708c
+Create Date: 2017-07-10 17:07:25.926150
+
+"""
+
+# revision identifiers, used by Alembic.
+revision = '44ccced114ce'
+down_revision = '164abbd708c'
+
+from alembic import op
+import sqlalchemy as sa
+from sqlalchemy.dialects.postgresql import ENUM
+
+YESNO_NAME = 'yesno_values'
+YESNO_VALUES = ['yes', 'no']
+
+def upgrade():
+    ############################# Enums ##############################
+
+    # yesno_values have already been created, so use postgres enum object
+    # type to get around "already created" issue - works okay with mysql
+    yesno_values = ENUM(*YESNO_VALUES, name=YESNO_NAME, create_type=False)
+
+    op.add_column('ps_endpoints', sa.Column('webrtc', yesno_values))
+
+
+def downgrade():
+    op.drop_column('ps_endpoints', 'webrtc')
index 4e12b04..d3ff1f3 100644 (file)
@@ -1994,7 +1994,7 @@ int ast_res_pjsip_initialize_configuration(void)
        ast_sorcery_object_field_register(sip_sorcery, "endpoint", "max_audio_streams", "1", OPT_UINT_T, 0, FLDSET(struct ast_sip_endpoint, media.max_audio_streams));
        ast_sorcery_object_field_register(sip_sorcery, "endpoint", "max_video_streams", "1", OPT_UINT_T, 0, FLDSET(struct ast_sip_endpoint, media.max_video_streams));
        ast_sorcery_object_field_register(sip_sorcery, "endpoint", "bundle", "no", OPT_BOOL_T, 1, FLDSET(struct ast_sip_endpoint, media.bundle));
-       ast_sorcery_object_field_register(sip_sorcery, "endpoint", "webrtc", "no", OPT_BOOL_T, 1, FLDSET(struct ast_sip_endpoint, media.webrtc));
+       ast_sorcery_object_field_register(sip_sorcery, "endpoint", "webrtc", "no", OPT_YESNO_T, 1, FLDSET(struct ast_sip_endpoint, media.webrtc));
 
        if (ast_sip_initialize_sorcery_transport()) {
                ast_log(LOG_ERROR, "Failed to register SIP transport support with sorcery\n");