From 01581a23c2ac4f057e68a08ebbc3f79b9d837e3b Mon Sep 17 00:00:00 2001
From: Matthew Wild <mwild1@gmail.com>
Date: Wed, 20 Jun 2018 10:41:02 +0100
Subject: modulemanager: Expose function to get the list of modules that should
 be loaded on a host

---
 core/modulemanager.lua | 17 +++++++++++++----
 1 file changed, 13 insertions(+), 4 deletions(-)

diff --git a/core/modulemanager.lua b/core/modulemanager.lua
index 60af8d79..81c28aa0 100644
--- a/core/modulemanager.lua
+++ b/core/modulemanager.lua
@@ -46,8 +46,8 @@ local get_modules, is_loaded, module_has_method, call_module_method;
 -- [host] = { [module] = module_env }
 local modulemap = { ["*"] = {} };
 
--- Load modules when a host is activated
-function load_modules_for_host(host)
+-- Get the list of modules to be loaded on a host
+local function get_modules_for_host(host)
 	local component = config.get(host, "component_module");
 
 	local global_modules_enabled = config.get("*", "modules_enabled");
@@ -71,8 +71,16 @@ function load_modules_for_host(host)
 		modules:add("admin_telnet");
 	end
 
-	if component then
-		load(host, component);
+	return modules, component;
+end
+
+-- Load modules when a host is activated
+function load_modules_for_host(host)
+	local modules, component_module = get_modules_for_host(host);
+
+	-- Ensure component module is loaded first
+	if component_module then
+		load(host, component_module);
 	end
 	for module in modules do
 		load(host, module);
@@ -324,6 +332,7 @@ function call_module_method(module, method, ...)
 end
 
 return {
+	get_modules_for_host = get_modules_for_host;
 	load_modules_for_host = load_modules_for_host;
 	load = load;
 	unload = unload;
-- 
cgit v1.2.3