From 679fa5fb3445870ad29953c606ab5e26f44e4e22 Mon Sep 17 00:00:00 2001 From: Corey Farrell <git@cfware.com> Date: Thu, 18 Jan 2018 10:01:26 -0500 Subject: [PATCH] Add missing OPTIONAL_API and ARI dependences. I've audited all modules that include any header which includes asterisk/optional_api.h. All modules which use OPTIONAL_API now declare those dependencies in AST_MODULE_INFO using requires or optional_modules as appropriate. In addition ARI dependency declarations have been reworked. Instead of declaring additional required modules in res/ari/resource_*.c we now add them to an optional array "requiresModules" in api-docs for each module. This allows the AST_MODULE_INFO dependencies to include those missing modules. Change-Id: Ia0c70571f5566784f63605e78e1ceccb4f79c606 --- apps/app_mixmonitor.c | 7 ++++++- apps/app_statsd.c | 7 ++++++- bridges/bridge_builtin_features.c | 7 ++++++- res/ari/resource_bridges.c | 2 -- res/ari/resource_channels.c | 4 ---- res/ari/resource_device_states.c | 1 - res/ari/resource_events.c | 1 - res/ari/resource_mailboxes.c | 1 - res/ari/resource_playbacks.c | 1 - res/ari/resource_recordings.c | 1 - res/res_ari_bridges.c | 4 +++- res/res_ari_channels.c | 6 +++++- res/res_ari_device_states.c | 3 ++- res/res_ari_events.c | 3 ++- res/res_ari_mailboxes.c | 3 ++- res/res_ari_playbacks.c | 3 ++- res/res_ari_recordings.c | 3 ++- res/res_monitor.c | 1 + res/res_pjsip.c | 1 + res/res_pjsip/config_transport.c | 1 + res/res_pjsip_outbound_registration.c | 1 + res/res_statsd.c | 6 +++--- rest-api-templates/res_ari_resource.c.mustache | 5 ++++- rest-api-templates/swagger_model.py | 1 + rest-api/api-docs/bridges.json | 4 ++++ rest-api/api-docs/channels.json | 6 ++++++ rest-api/api-docs/deviceStates.json | 3 +++ rest-api/api-docs/events.json | 3 +++ rest-api/api-docs/mailboxes.json | 3 +++ rest-api/api-docs/playbacks.json | 3 +++ rest-api/api-docs/recordings.json | 3 +++ tests/test_utils.c | 7 ++++++- tests/test_websocket_client.c | 7 ++++++- 33 files changed, 85 insertions(+), 27 deletions(-) diff --git a/apps/app_mixmonitor.c b/apps/app_mixmonitor.c index bb47cfc340..af29492090 100644 --- a/apps/app_mixmonitor.c +++ b/apps/app_mixmonitor.c @@ -1556,4 +1556,9 @@ static int load_module(void) return res; } -AST_MODULE_INFO_STANDARD(ASTERISK_GPL_KEY, "Mixed Audio Monitoring Application"); +AST_MODULE_INFO(ASTERISK_GPL_KEY, AST_MODFLAG_DEFAULT, "Mixed Audio Monitoring Application", + .support_level = AST_MODULE_SUPPORT_CORE, + .load = load_module, + .unload = unload_module, + .optional_modules = "func_periodic_hook", +); diff --git a/apps/app_statsd.c b/apps/app_statsd.c index 54f9511a8b..a4ca233ea2 100644 --- a/apps/app_statsd.c +++ b/apps/app_statsd.c @@ -420,4 +420,9 @@ static int load_module(void) return ast_register_application_xml(app, statsd_exec); } -AST_MODULE_INFO_STANDARD_EXTENDED(ASTERISK_GPL_KEY, "StatsD Dialplan Application"); +AST_MODULE_INFO(ASTERISK_GPL_KEY, AST_MODFLAG_DEFAULT, "StatsD Dialplan Application", + .support_level = AST_MODULE_SUPPORT_EXTENDED, + .load = load_module, + .unload = unload_module, + .requires = "res_statsd", +); diff --git a/bridges/bridge_builtin_features.c b/bridges/bridge_builtin_features.c index e6cacbf7ea..e9efb916cc 100644 --- a/bridges/bridge_builtin_features.c +++ b/bridges/bridge_builtin_features.c @@ -519,4 +519,9 @@ static int load_module(void) return AST_MODULE_LOAD_SUCCESS; } -AST_MODULE_INFO_STANDARD(ASTERISK_GPL_KEY, "Built in bridging features"); +AST_MODULE_INFO(ASTERISK_GPL_KEY, AST_MODFLAG_DEFAULT, "Built in bridging features", + .support_level = AST_MODULE_SUPPORT_CORE, + .load = load_module, + .unload = unload_module, + .optional_modules = "res_monitor", +); diff --git a/res/ari/resource_bridges.c b/res/ari/resource_bridges.c index a320c29872..9808288e9c 100644 --- a/res/ari/resource_bridges.c +++ b/res/ari/resource_bridges.c @@ -24,8 +24,6 @@ */ /*** MODULEINFO - <depend type="module">res_stasis_recording</depend> - <depend type="module">res_stasis_playback</depend> <support_level>core</support_level> ***/ diff --git a/res/ari/resource_channels.c b/res/ari/resource_channels.c index 6b4f26c25a..cdf0f88207 100644 --- a/res/ari/resource_channels.c +++ b/res/ari/resource_channels.c @@ -24,10 +24,6 @@ */ /*** MODULEINFO - <depend type="module">res_stasis_answer</depend> - <depend type="module">res_stasis_playback</depend> - <depend type="module">res_stasis_recording</depend> - <depend type="module">res_stasis_snoop</depend> <support_level>core</support_level> ***/ diff --git a/res/ari/resource_device_states.c b/res/ari/resource_device_states.c index 020d9301f2..c442fa51b3 100644 --- a/res/ari/resource_device_states.c +++ b/res/ari/resource_device_states.c @@ -24,7 +24,6 @@ */ /*** MODULEINFO - <depend type="module">res_stasis_device_state</depend> <support_level>core</support_level> ***/ diff --git a/res/ari/resource_events.c b/res/ari/resource_events.c index d81067f151..5a8e898585 100644 --- a/res/ari/resource_events.c +++ b/res/ari/resource_events.c @@ -24,7 +24,6 @@ */ /*** MODULEINFO - <depend type="module">res_http_websocket</depend> <support_level>core</support_level> ***/ diff --git a/res/ari/resource_mailboxes.c b/res/ari/resource_mailboxes.c index 3577e65153..ae0f249784 100644 --- a/res/ari/resource_mailboxes.c +++ b/res/ari/resource_mailboxes.c @@ -24,7 +24,6 @@ */ /*** MODULEINFO - <depend type="module">res_stasis_mailbox</depend> <support_level>core</support_level> ***/ diff --git a/res/ari/resource_playbacks.c b/res/ari/resource_playbacks.c index 57f424c016..fc05a8d03a 100644 --- a/res/ari/resource_playbacks.c +++ b/res/ari/resource_playbacks.c @@ -24,7 +24,6 @@ */ /*** MODULEINFO - <depend type="module">res_stasis_playback</depend> <support_level>core</support_level> ***/ diff --git a/res/ari/resource_recordings.c b/res/ari/resource_recordings.c index 39ef65ce34..090f263700 100644 --- a/res/ari/resource_recordings.c +++ b/res/ari/resource_recordings.c @@ -24,7 +24,6 @@ */ /*** MODULEINFO - <depend type="module">res_stasis_recording</depend> <support_level>core</support_level> ***/ diff --git a/res/res_ari_bridges.c b/res/res_ari_bridges.c index 34b9d898cc..93cf7c49bf 100644 --- a/res/res_ari_bridges.c +++ b/res/res_ari_bridges.c @@ -35,6 +35,8 @@ <depend type="module">res_ari</depend> <depend type="module">res_ari_model</depend> <depend type="module">res_stasis</depend> + <depend type="module">res_stasis_recording</depend> + <depend type="module">res_stasis_playback</depend> <support_level>core</support_level> ***/ @@ -1579,5 +1581,5 @@ AST_MODULE_INFO(ASTERISK_GPL_KEY, AST_MODFLAG_DEFAULT, "RESTful API module - Bri .support_level = AST_MODULE_SUPPORT_CORE, .load = load_module, .unload = unload_module, - .requires = "res_ari,res_ari_model,res_stasis", + .requires = "res_ari,res_ari_model,res_stasis,res_stasis_recording,res_stasis_playback", ); diff --git a/res/res_ari_channels.c b/res/res_ari_channels.c index 7862c10069..7ca7e2e4d3 100644 --- a/res/res_ari_channels.c +++ b/res/res_ari_channels.c @@ -35,6 +35,10 @@ <depend type="module">res_ari</depend> <depend type="module">res_ari_model</depend> <depend type="module">res_stasis</depend> + <depend type="module">res_stasis_answer</depend> + <depend type="module">res_stasis_playback</depend> + <depend type="module">res_stasis_recording</depend> + <depend type="module">res_stasis_snoop</depend> <support_level>core</support_level> ***/ @@ -2869,5 +2873,5 @@ AST_MODULE_INFO(ASTERISK_GPL_KEY, AST_MODFLAG_DEFAULT, "RESTful API module - Cha .support_level = AST_MODULE_SUPPORT_CORE, .load = load_module, .unload = unload_module, - .requires = "res_ari,res_ari_model,res_stasis", + .requires = "res_ari,res_ari_model,res_stasis,res_stasis_answer,res_stasis_playback,res_stasis_recording,res_stasis_snoop", ); diff --git a/res/res_ari_device_states.c b/res/res_ari_device_states.c index ec8890b1e9..04479e6ace 100644 --- a/res/res_ari_device_states.c +++ b/res/res_ari_device_states.c @@ -35,6 +35,7 @@ <depend type="module">res_ari</depend> <depend type="module">res_ari_model</depend> <depend type="module">res_stasis</depend> + <depend type="module">res_stasis_device_state</depend> <support_level>core</support_level> ***/ @@ -349,5 +350,5 @@ AST_MODULE_INFO(ASTERISK_GPL_KEY, AST_MODFLAG_DEFAULT, "RESTful API module - Dev .support_level = AST_MODULE_SUPPORT_CORE, .load = load_module, .unload = unload_module, - .requires = "res_ari,res_ari_model,res_stasis", + .requires = "res_ari,res_ari_model,res_stasis,res_stasis_device_state", ); diff --git a/res/res_ari_events.c b/res/res_ari_events.c index f750a5454d..06eb77a380 100644 --- a/res/res_ari_events.c +++ b/res/res_ari_events.c @@ -35,6 +35,7 @@ <depend type="module">res_ari</depend> <depend type="module">res_ari_model</depend> <depend type="module">res_stasis</depend> + <depend type="module">res_http_websocket</depend> <support_level>core</support_level> ***/ @@ -473,5 +474,5 @@ AST_MODULE_INFO(ASTERISK_GPL_KEY, AST_MODFLAG_DEFAULT, "RESTful API module - Web .support_level = AST_MODULE_SUPPORT_CORE, .load = load_module, .unload = unload_module, - .requires = "res_ari,res_ari_model,res_stasis", + .requires = "res_ari,res_ari_model,res_stasis,res_http_websocket", ); diff --git a/res/res_ari_mailboxes.c b/res/res_ari_mailboxes.c index 6469f936ee..123664e46e 100644 --- a/res/res_ari_mailboxes.c +++ b/res/res_ari_mailboxes.c @@ -35,6 +35,7 @@ <depend type="module">res_ari</depend> <depend type="module">res_ari_model</depend> <depend type="module">res_stasis</depend> + <depend type="module">res_stasis_mailbox</depend> <support_level>core</support_level> ***/ @@ -355,5 +356,5 @@ AST_MODULE_INFO(ASTERISK_GPL_KEY, AST_MODFLAG_DEFAULT, "RESTful API module - Mai .support_level = AST_MODULE_SUPPORT_CORE, .load = load_module, .unload = unload_module, - .requires = "res_ari,res_ari_model,res_stasis", + .requires = "res_ari,res_ari_model,res_stasis,res_stasis_mailbox", ); diff --git a/res/res_ari_playbacks.c b/res/res_ari_playbacks.c index 0148a74009..547b39e391 100644 --- a/res/res_ari_playbacks.c +++ b/res/res_ari_playbacks.c @@ -35,6 +35,7 @@ <depend type="module">res_ari</depend> <depend type="module">res_ari_model</depend> <depend type="module">res_stasis</depend> + <depend type="module">res_stasis_playback</depend> <support_level>core</support_level> ***/ @@ -307,5 +308,5 @@ AST_MODULE_INFO(ASTERISK_GPL_KEY, AST_MODFLAG_DEFAULT, "RESTful API module - Pla .support_level = AST_MODULE_SUPPORT_CORE, .load = load_module, .unload = unload_module, - .requires = "res_ari,res_ari_model,res_stasis", + .requires = "res_ari,res_ari_model,res_stasis,res_stasis_playback", ); diff --git a/res/res_ari_recordings.c b/res/res_ari_recordings.c index 531ff6574d..45c789c2d4 100644 --- a/res/res_ari_recordings.c +++ b/res/res_ari_recordings.c @@ -35,6 +35,7 @@ <depend type="module">res_ari</depend> <depend type="module">res_ari_model</depend> <depend type="module">res_stasis</depend> + <depend type="module">res_stasis_recording</depend> <support_level>core</support_level> ***/ @@ -891,5 +892,5 @@ AST_MODULE_INFO(ASTERISK_GPL_KEY, AST_MODFLAG_DEFAULT, "RESTful API module - Rec .support_level = AST_MODULE_SUPPORT_CORE, .load = load_module, .unload = unload_module, - .requires = "res_ari,res_ari_model,res_stasis", + .requires = "res_ari,res_ari_model,res_stasis,res_stasis_recording", ); diff --git a/res/res_monitor.c b/res/res_monitor.c index 9dcbdbe62f..e2b5fb2521 100644 --- a/res/res_monitor.c +++ b/res/res_monitor.c @@ -1013,4 +1013,5 @@ AST_MODULE_INFO(ASTERISK_GPL_KEY, AST_MODFLAG_GLOBAL_SYMBOLS | AST_MODFLAG_LOAD_ .load = load_module, .unload = unload_module, .load_pri = AST_MODPRI_CHANNEL_DEPEND, + .optional_modules = "func_periodic_hook", ); diff --git a/res/res_pjsip.c b/res/res_pjsip.c index ff262c9dc5..6a6ba0f75f 100644 --- a/res/res_pjsip.c +++ b/res/res_pjsip.c @@ -5139,4 +5139,5 @@ AST_MODULE_INFO(ASTERISK_GPL_KEY, AST_MODFLAG_GLOBAL_SYMBOLS | AST_MODFLAG_LOAD_ .reload = reload_module, .load_pri = AST_MODPRI_CHANNEL_DEPEND - 5, .requires = "res_pjproject", + .optional_modules = "res_statsd", ); diff --git a/res/res_pjsip/config_transport.c b/res/res_pjsip/config_transport.c index 63bf11812f..713ab024be 100644 --- a/res/res_pjsip/config_transport.c +++ b/res/res_pjsip/config_transport.c @@ -30,6 +30,7 @@ #include "asterisk/acl.h" #include "asterisk/utils.h" #include "include/res_pjsip_private.h" +/* We're only using a #define from http_websocket.h, no OPTIONAL_API symbols are used. */ #include "asterisk/http_websocket.h" #define MAX_POINTER_STRING 33 diff --git a/res/res_pjsip_outbound_registration.c b/res/res_pjsip_outbound_registration.c index 79bea482bd..80b885fb43 100644 --- a/res/res_pjsip_outbound_registration.c +++ b/res/res_pjsip_outbound_registration.c @@ -2290,4 +2290,5 @@ AST_MODULE_INFO(ASTERISK_GPL_KEY, AST_MODFLAG_LOAD_ORDER, "PJSIP Outbound Regist .unload = unload_module, .load_pri = AST_MODPRI_APP_DEPEND, .requires = "res_pjsip", + .optional_modules = "res_statsd", ); diff --git a/res/res_statsd.c b/res/res_statsd.c index 221b359c9e..8565e41cb4 100644 --- a/res/res_statsd.c +++ b/res/res_statsd.c @@ -381,13 +381,13 @@ static int reload_module(void) } } -/* The priority of this module is set to be as low as possible, since it could - * be used by any other sort of module. +/* The priority of this module is set just after realtime, since it loads + * configuration and could be used by any other sort of module. */ AST_MODULE_INFO(ASTERISK_GPL_KEY, AST_MODFLAG_GLOBAL_SYMBOLS | AST_MODFLAG_LOAD_ORDER, "Statsd client support", .support_level = AST_MODULE_SUPPORT_EXTENDED, .load = load_module, .unload = unload_module, .reload = reload_module, - .load_pri = 0, + .load_pri = AST_MODPRI_REALTIME_DRIVER + 5, ); diff --git a/rest-api-templates/res_ari_resource.c.mustache b/rest-api-templates/res_ari_resource.c.mustache index c1f680f21d..c697345390 100644 --- a/rest-api-templates/res_ari_resource.c.mustache +++ b/rest-api-templates/res_ari_resource.c.mustache @@ -40,6 +40,9 @@ <depend type="module">res_ari</depend> <depend type="module">res_ari_model</depend> <depend type="module">res_stasis</depend> +{{#requires_modules}} + <depend type="module">{{.}}</depend> +{{/requires_modules}} <support_level>core</support_level> ***/ @@ -324,6 +327,6 @@ AST_MODULE_INFO(ASTERISK_GPL_KEY, AST_MODFLAG_DEFAULT, "RESTful API module - {{{ .support_level = AST_MODULE_SUPPORT_CORE, .load = load_module, .unload = unload_module, - .requires = "res_ari,res_ari_model,res_stasis", + .requires = "res_ari,res_ari_model,res_stasis{{#requires_modules}},{{.}}{{/requires_modules}}", ); {{/api_declaration}} diff --git a/rest-api-templates/swagger_model.py b/rest-api-templates/swagger_model.py index 08852415c0..3f729d8b52 100644 --- a/rest-api-templates/swagger_model.py +++ b/rest-api-templates/swagger_model.py @@ -647,6 +647,7 @@ class ApiDeclaration(Stringify): self.api_version = api_decl_json.get('apiVersion') self.base_path = api_decl_json.get('basePath') self.resource_path = api_decl_json.get('resourcePath') + self.requires_modules = api_decl_json.get('requiresModules') or [] api_json = api_decl_json.get('apis') or [] self.apis = [ Api().load(j, processor, context) for j in api_json] diff --git a/rest-api/api-docs/bridges.json b/rest-api/api-docs/bridges.json index cf8ee3156b..04416c1236 100644 --- a/rest-api/api-docs/bridges.json +++ b/rest-api/api-docs/bridges.json @@ -6,6 +6,10 @@ "swaggerVersion": "1.1", "basePath": "http://localhost:8088/ari", "resourcePath": "/api-docs/bridges.{format}", + "requiresModules": [ + "res_stasis_recording", + "res_stasis_playback" + ], "apis": [ { "path": "/bridges", diff --git a/rest-api/api-docs/channels.json b/rest-api/api-docs/channels.json index 602606cfe7..ec8bae235d 100644 --- a/rest-api/api-docs/channels.json +++ b/rest-api/api-docs/channels.json @@ -6,6 +6,12 @@ "swaggerVersion": "1.1", "basePath": "http://localhost:8088/ari", "resourcePath": "/api-docs/channels.{format}", + "requiresModules": [ + "res_stasis_answer", + "res_stasis_playback", + "res_stasis_recording", + "res_stasis_snoop" + ], "apis": [ { "path": "/channels", diff --git a/rest-api/api-docs/deviceStates.json b/rest-api/api-docs/deviceStates.json index 94d5b93ce0..bd389355c4 100644 --- a/rest-api/api-docs/deviceStates.json +++ b/rest-api/api-docs/deviceStates.json @@ -6,6 +6,9 @@ "swaggerVersion": "1.1", "basePath": "http://localhost:8088/ari", "resourcePath": "/api-docs/deviceStates.{format}", + "requiresModules": [ + "res_stasis_device_state" + ], "apis": [ { "path": "/deviceStates", diff --git a/rest-api/api-docs/events.json b/rest-api/api-docs/events.json index e1b31bb976..d85d8d9fe4 100644 --- a/rest-api/api-docs/events.json +++ b/rest-api/api-docs/events.json @@ -6,6 +6,9 @@ "swaggerVersion": "1.2", "basePath": "http://localhost:8088/ari", "resourcePath": "/api-docs/events.{format}", + "requiresModules": [ + "res_http_websocket" + ], "apis": [ { "path": "/events", diff --git a/rest-api/api-docs/mailboxes.json b/rest-api/api-docs/mailboxes.json index ed50019f50..8f5941b817 100644 --- a/rest-api/api-docs/mailboxes.json +++ b/rest-api/api-docs/mailboxes.json @@ -6,6 +6,9 @@ "swaggerVersion": "1.1", "basePath": "http://localhost:8088/ari", "resourcePath": "/api-docs/mailboxes.{format}", + "requiresModules": [ + "res_stasis_mailbox" + ], "apis": [ { "path": "/mailboxes", diff --git a/rest-api/api-docs/playbacks.json b/rest-api/api-docs/playbacks.json index 3dc4e1da5a..a78dcae710 100644 --- a/rest-api/api-docs/playbacks.json +++ b/rest-api/api-docs/playbacks.json @@ -6,6 +6,9 @@ "swaggerVersion": "1.1", "basePath": "http://localhost:8088/ari", "resourcePath": "/api-docs/playbacks.{format}", + "requiresModules": [ + "res_stasis_playback" + ], "apis": [ { "path": "/playbacks/{playbackId}", diff --git a/rest-api/api-docs/recordings.json b/rest-api/api-docs/recordings.json index d0b9630da2..6ffd6d8e9c 100644 --- a/rest-api/api-docs/recordings.json +++ b/rest-api/api-docs/recordings.json @@ -6,6 +6,9 @@ "swaggerVersion": "1.1", "basePath": "http://localhost:8088/ari", "resourcePath": "/api-docs/recordings.{format}", + "requiresModules": [ + "res_stasis_recording" + ], "apis": [ { "path": "/recordings/stored", diff --git a/tests/test_utils.c b/tests/test_utils.c index 68a285727b..bcb2df3758 100644 --- a/tests/test_utils.c +++ b/tests/test_utils.c @@ -646,4 +646,9 @@ static int load_module(void) return AST_MODULE_LOAD_SUCCESS; } -AST_MODULE_INFO_STANDARD(ASTERISK_GPL_KEY, "Utils test module"); +AST_MODULE_INFO(ASTERISK_GPL_KEY, AST_MODFLAG_DEFAULT, "Utils test module", + .support_level = AST_MODULE_SUPPORT_CORE, + .load = load_module, + .unload = unload_module, + .requires = "res_agi,res_crypto", +); diff --git a/tests/test_websocket_client.c b/tests/test_websocket_client.c index 6743b53693..e33f3f930d 100644 --- a/tests/test_websocket_client.c +++ b/tests/test_websocket_client.c @@ -156,4 +156,9 @@ static int unload_module(void) return 0; } -AST_MODULE_INFO_STANDARD(ASTERISK_GPL_KEY, "Websocket client test module"); +AST_MODULE_INFO(ASTERISK_GPL_KEY, AST_MODFLAG_DEFAULT, "Websocket client test module", + .support_level = AST_MODULE_SUPPORT_CORE, + .load = load_module, + .unload = unload_module, + .requires = "res_http_websocket", +); -- GitLab