[Asterisk-code-review] Add missing OPTIONAL API and ARI dependences. (asterisk[master])

Jenkins2 asteriskteam at digium.com
Fri Jan 26 17:40:57 CST 2018


Jenkins2 has submitted this change and it was merged. ( https://gerrit.asterisk.org/8007 )

Change subject: Add missing OPTIONAL_API and ARI dependences.
......................................................................

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
---
M apps/app_mixmonitor.c
M apps/app_statsd.c
M bridges/bridge_builtin_features.c
M res/ari/resource_bridges.c
M res/ari/resource_channels.c
M res/ari/resource_device_states.c
M res/ari/resource_events.c
M res/ari/resource_mailboxes.c
M res/ari/resource_playbacks.c
M res/ari/resource_recordings.c
M res/res_ari_bridges.c
M res/res_ari_channels.c
M res/res_ari_device_states.c
M res/res_ari_events.c
M res/res_ari_mailboxes.c
M res/res_ari_playbacks.c
M res/res_ari_recordings.c
M res/res_monitor.c
M res/res_pjsip.c
M res/res_pjsip/config_transport.c
M res/res_pjsip_outbound_registration.c
M res/res_statsd.c
M rest-api-templates/res_ari_resource.c.mustache
M rest-api-templates/swagger_model.py
M rest-api/api-docs/bridges.json
M rest-api/api-docs/channels.json
M rest-api/api-docs/deviceStates.json
M rest-api/api-docs/events.json
M rest-api/api-docs/mailboxes.json
M rest-api/api-docs/playbacks.json
M rest-api/api-docs/recordings.json
M tests/test_utils.c
M tests/test_websocket_client.c
33 files changed, 85 insertions(+), 27 deletions(-)

Approvals:
  Joshua Colp: Looks good to me, but someone else must approve
  Richard Mudgett: Looks good to me, approved
  Jenkins2: Approved for Submit



diff --git a/apps/app_mixmonitor.c b/apps/app_mixmonitor.c
index bb47cfc..af29492 100644
--- a/apps/app_mixmonitor.c
+++ b/apps/app_mixmonitor.c
@@ -1556,4 +1556,9 @@
 	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 54f9511..a4ca233 100644
--- a/apps/app_statsd.c
+++ b/apps/app_statsd.c
@@ -420,4 +420,9 @@
 	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 e6cacbf..e9efb91 100644
--- a/bridges/bridge_builtin_features.c
+++ b/bridges/bridge_builtin_features.c
@@ -519,4 +519,9 @@
 	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 a320c29..9808288 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 6b4f26c..cdf0f88 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 020d930..c442fa5 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 d81067f..5a8e898 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 3577e65..ae0f249 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 57f424c..fc05a8d 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 39ef65c..090f263 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 34b9d89..93cf7c4 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 @@
 	.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 7862c10..7ca7e2e 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 @@
 	.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 ec8890b..04479e6 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 @@
 	.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 f750a54..06eb77a 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 @@
 	.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 6469f93..123664e 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 @@
 	.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 0148a74..547b39e 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 @@
 	.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 531ff65..45c789c 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 @@
 	.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 9dcbdbe..e2b5fb2 100644
--- a/res/res_monitor.c
+++ b/res/res_monitor.c
@@ -1013,4 +1013,5 @@
 	.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 ff262c9..6a6ba0f 100644
--- a/res/res_pjsip.c
+++ b/res/res_pjsip.c
@@ -5139,4 +5139,5 @@
 	.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 63bf118..713ab02 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 79bea48..80b885f 100644
--- a/res/res_pjsip_outbound_registration.c
+++ b/res/res_pjsip_outbound_registration.c
@@ -2290,4 +2290,5 @@
 	.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 221b359..8565e41 100644
--- a/res/res_statsd.c
+++ b/res/res_statsd.c
@@ -381,13 +381,13 @@
 	}
 }
 
-/* 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 c1f680f..c697345 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 @@
 	.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 0885241..3f729d8 100644
--- a/rest-api-templates/swagger_model.py
+++ b/rest-api-templates/swagger_model.py
@@ -647,6 +647,7 @@
         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 cf8ee31..04416c1 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 602606c..ec8bae2 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 94d5b93..bd38935 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 e1b31bb..d85d8d9 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 ed50019..8f5941b 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 3dc4e1d..a78dcae 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 d0b9630..6ffd6d8 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 68a2857..bcb2df3 100644
--- a/tests/test_utils.c
+++ b/tests/test_utils.c
@@ -646,4 +646,9 @@
 	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 6743b53..e33f3f9 100644
--- a/tests/test_websocket_client.c
+++ b/tests/test_websocket_client.c
@@ -156,4 +156,9 @@
 	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",
+);

-- 
To view, visit https://gerrit.asterisk.org/8007
To unsubscribe, visit https://gerrit.asterisk.org/settings

Gerrit-Project: asterisk
Gerrit-Branch: master
Gerrit-MessageType: merged
Gerrit-Change-Id: Ia0c70571f5566784f63605e78e1ceccb4f79c606
Gerrit-Change-Number: 8007
Gerrit-PatchSet: 2
Gerrit-Owner: Corey Farrell <git at cfware.com>
Gerrit-Reviewer: Corey Farrell <git at cfware.com>
Gerrit-Reviewer: Jenkins2
Gerrit-Reviewer: Joshua Colp <jcolp at digium.com>
Gerrit-Reviewer: Richard Mudgett <rmudgett at digium.com>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.digium.com/pipermail/asterisk-code-review/attachments/20180126/327b949c/attachment-0001.html>


More information about the asterisk-code-review mailing list