24
24
-export ([validate_plugins /1 , format_invalid_plugins /1 ]).
25
25
26
26
% Export for testing purpose.
27
- -export ([version_support /2 , validate_plugins /2 ]).
27
+ -export ([is_version_supported /2 , validate_plugins /2 ]).
28
28
29
29
% %----------------------------------------------------------------------------
30
30
-ifdef (use_specs ).
@@ -278,10 +278,10 @@ format_invalid_plugin({Name, Errors}) ->
278
278
279
279
format_invalid_plugin_error ({missing_dependency , Dep }) ->
280
280
io_lib :format (" Dependency is missing or invalid: ~p~n " , [Dep ]);
281
- format_invalid_plugin_error ({version_mismatch , { Version , Required } }) ->
281
+ format_invalid_plugin_error ({broker_version_mismatch , Version , Required }) ->
282
282
io_lib :format (" Broker version is invalid."
283
283
" Current version: ~p Required: ~p~n " , [Version , Required ]);
284
- format_invalid_plugin_error ({{version_mismatch , { Version , Required } }, Name }) ->
284
+ format_invalid_plugin_error ({{version_mismatch , Version , Required }, Name }) ->
285
285
io_lib :format (" ~p plugin version is invalid."
286
286
" Current version: ~p Required: ~p~n " ,
287
287
[Name , Version , Required ]);
@@ -298,17 +298,19 @@ validate_plugins(Plugins) ->
298
298
299
299
validate_plugins (Plugins , RabbitVersion ) ->
300
300
lists :foldl (
301
- fun (# plugin {name = Name ,
302
- rabbitmq_versions = RabbitmqVersions ,
303
- plugins_versions = PluginsVersions } = Plugin ,
301
+ fun (# plugin {name = Name ,
302
+ broker_version_requirements = RabbitmqVersions ,
303
+ dependency_version_requirements = DepsVersions } = Plugin ,
304
304
{Plugins0 , Errors }) ->
305
- case version_support (RabbitVersion , RabbitmqVersions ) of
306
- {error , Err } -> {Plugins0 , [{Name , [Err ]} | Errors ]};
307
- ok ->
308
- case check_plugins_versions (Plugins0 , PluginsVersions ) of
305
+ case is_version_supported (RabbitVersion , RabbitmqVersions ) of
306
+ true ->
307
+ case check_plugins_versions (Plugins0 , DepsVersions ) of
309
308
ok -> {[Plugin | Plugins0 ], Errors };
310
309
{error , Err } -> {Plugins0 , [{Name , Err } | Errors ]}
311
- end
310
+ end ;
311
+ false ->
312
+ Error = [{broker_version_mismatch , RabbitVersion , RabbitmqVersions }],
313
+ {Plugins0 , [{Name , Error } | Errors ]}
312
314
end
313
315
end ,
314
316
{[],[]},
@@ -322,9 +324,10 @@ check_plugins_versions(AllPlugins, RequiredVersions) ->
322
324
case proplists :get_value (Name , ExistingVersions ) of
323
325
undefined -> [{missing_dependency , Name } | Acc ];
324
326
Version ->
325
- case version_support (Version , Versions ) of
326
- {error , Err } -> [{Err , Name } | Acc ];
327
- ok -> Acc
327
+ case is_version_supported (Version , Versions ) of
328
+ true -> Acc ;
329
+ false ->
330
+ [{{version_mismatch , Version , Versions }, Name } | Acc ]
328
331
end
329
332
end
330
333
end ,
@@ -335,16 +338,16 @@ check_plugins_versions(AllPlugins, RequiredVersions) ->
335
338
_ -> {error , Problems }
336
339
end .
337
340
338
- version_support (_Version , []) -> ok ;
339
- version_support (Version , ExpectedVersions ) ->
341
+ is_version_supported (_Version , []) -> true ;
342
+ is_version_supported (Version , ExpectedVersions ) ->
340
343
case lists :any (fun (ExpectedVersion ) ->
341
344
rabbit_misc :version_minor_equivalent (ExpectedVersion , Version )
342
345
andalso
343
346
rabbit_misc :version_compare (ExpectedVersion , Version , lte )
344
347
end ,
345
348
ExpectedVersions ) of
346
- true -> ok ;
347
- false -> { error , { version_mismatch , { Version , ExpectedVersions }}}
349
+ true -> true ;
350
+ false -> false
348
351
end .
349
352
350
353
clean_plugins (Plugins ) ->
@@ -419,12 +422,12 @@ mkplugin(Name, Props, Type, Location) ->
419
422
Version = proplists :get_value (vsn , Props , " 0" ),
420
423
Description = proplists :get_value (description , Props , " " ),
421
424
Dependencies = proplists :get_value (applications , Props , []),
422
- RabbitmqVersions = proplists :get_value (rabbitmq_versions , Props , []),
423
- PluginsVersions = proplists :get_value (plugins_versions , Props , []),
425
+ RabbitmqVersions = proplists :get_value (broker_version_requirements , Props , []),
426
+ DepsVersions = proplists :get_value (dependency_version_requirements , Props , []),
424
427
# plugin {name = Name , version = Version , description = Description ,
425
428
dependencies = Dependencies , location = Location , type = Type ,
426
- rabbitmq_versions = RabbitmqVersions ,
427
- plugins_versions = PluginsVersions }.
429
+ broker_version_requirements = RabbitmqVersions ,
430
+ dependency_version_requirements = DepsVersions }.
428
431
429
432
read_app_file (EZ ) ->
430
433
case zip :list_dir (EZ ) of
0 commit comments