@@ -20,14 +20,28 @@ setup(Context) ->
20
20
21
21
% % TODO: Check if directories/files are inside Mnesia dir.
22
22
23
- % % TODO: Support glob patterns & directories in RABBITMQ_CONFIG_FILE.
24
- % % TODO: Always try parsing of both erlang and cuttlefish formats.
25
-
26
23
ok = set_default_config (),
27
24
25
+ AdditionalConfigFiles = find_additional_config_files (Context ),
28
26
AdvancedConfigFile = find_actual_advanced_config_file (Context ),
29
27
State = case find_actual_main_config_file (Context ) of
30
28
{MainConfigFile , erlang } ->
29
+ case AdditionalConfigFiles of
30
+ [] ->
31
+ ok ;
32
+ _ ->
33
+ rabbit_log_prelaunch :notice (
34
+ " The following additional configuration "
35
+ " files are not loaded when the main "
36
+ " configuration file uses the Erlang terms "
37
+ " based format" ),
38
+ lists :foreach (
39
+ fun (File ) ->
40
+ rabbit_log_prelaunch :notice (
41
+ " - ~ts " , [File ])
42
+ end ,
43
+ AdditionalConfigFiles )
44
+ end ,
31
45
Config = load_erlang_term_based_config_file (
32
46
MainConfigFile ),
33
47
Apps = [App || {App , _ } <- Config ],
@@ -36,7 +50,17 @@ setup(Context) ->
36
50
config_files => [MainConfigFile ],
37
51
config_advanced_file => undefined };
38
52
{MainConfigFile , cuttlefish } ->
39
- ConfigFiles = [MainConfigFile ],
53
+ ConfigFiles = [MainConfigFile | AdditionalConfigFiles ],
54
+ Config = load_cuttlefish_config_file (Context ,
55
+ ConfigFiles ,
56
+ AdvancedConfigFile ),
57
+ Apps = [App || {App , _ } <- Config ],
58
+ decrypt_config (Apps ),
59
+ #{config_type => cuttlefish ,
60
+ config_files => ConfigFiles ,
61
+ config_advanced_file => AdvancedConfigFile };
62
+ undefined when AdditionalConfigFiles =/= [] ->
63
+ ConfigFiles = AdditionalConfigFiles ,
40
64
Config = load_cuttlefish_config_file (Context ,
41
65
ConfigFiles ,
42
66
AdvancedConfigFile ),
@@ -134,6 +158,19 @@ find_actual_main_config_file(#{main_config_file := File}) ->
134
158
end
135
159
end .
136
160
161
+ find_additional_config_files (#{additional_config_files := Pattern })
162
+ when Pattern =/= undefined ->
163
+ Pattern1 = case filelib :is_dir (Pattern ) of
164
+ true -> filename :join (Pattern , " *" );
165
+ false -> Pattern
166
+ end ,
167
+ OnlyFiles = [File ||
168
+ File <- filelib :wildcard (Pattern1 ),
169
+ filelib :is_regular (File )],
170
+ lists :sort (OnlyFiles );
171
+ find_additional_config_files (_ ) ->
172
+ [].
173
+
137
174
find_actual_advanced_config_file (#{advanced_config_file := File }) ->
138
175
case filelib :is_regular (File ) of
139
176
true -> File ;
@@ -210,19 +247,20 @@ generate_config_from_cuttlefish_files(Context,
210
247
end , ConfigFiles ),
211
248
case cuttlefish_conf :files (ConfigFiles ) of
212
249
{errorlist , Errors } ->
213
- rabbit_log_prelaunch :error (" Error generating configuration:" , [] ),
250
+ rabbit_log_prelaunch :error (" Error parsing configuration:" ),
214
251
lists :foreach (
215
252
fun (Error ) ->
216
253
rabbit_log_prelaunch :error (" - ~ts " , [cuttlefish_error :xlate (Error )])
217
254
end , Errors ),
218
- throw ({error , failed_to_generate_configuration_file });
255
+ rabbit_log_prelaunch :error (" Are these files using the Cuttlefish format?" ),
256
+ throw ({error , failed_to_parse_configuration_file });
219
257
Config0 ->
220
258
% % Finalize configuration, based on the schema.
221
259
Config = case cuttlefish_generator :map (Schema , Config0 ) of
222
260
{error , Phase , {errorlist , Errors }} ->
223
261
% % TODO
224
262
rabbit_log_prelaunch :error (
225
- " Error generating configuration in phase ~ts :" ,
263
+ " Error preparing configuration in phase ~ts :" ,
226
264
[Phase ]),
227
265
lists :foreach (
228
266
fun (Error ) ->
@@ -231,7 +269,7 @@ generate_config_from_cuttlefish_files(Context,
231
269
[cuttlefish_error :xlate (Error )])
232
270
end , Errors ),
233
271
throw (
234
- {error , failed_to_generate_configuration_file });
272
+ {error , failed_to_prepare_configuration });
235
273
ValidConfig ->
236
274
proplists :delete (vm_args , ValidConfig )
237
275
end ,
0 commit comments