Introduce cleanup steps enabling us to disable federation at runtime

This commit is contained in:
Tim Watson 2013-11-26 14:28:11 +00:00
parent d95c85c10a
commit 2bf36028ce
4 changed files with 40 additions and 7 deletions

View File

@ -24,6 +24,12 @@
{requires, rabbit_registry},
{enables, recovery}]}).
-rabbit_cleanup_step({?MODULE,
[{description, "federation exchange decorator"},
{mfa, {rabbit_registry, unregister,
[exchange_decorator, <<"federation">>]}},
{requires, rabbit_federation_supervisor}]}).
-include_lib("amqp_client/include/amqp_client.hrl").
-behaviour(rabbit_exchange_decorator).

View File

@ -21,7 +21,14 @@
-include_lib("rabbit_common/include/rabbit.hrl").
-export([validate/4, notify/4, notify_clear/3]).
-export([register/0, validate_policy/1]).
-export([register/0, unregister/0, validate_policy/1]).
-define(RUNTIME_PARAMETERS,
[{runtime_parameter, <<"federation">>},
{runtime_parameter, <<"federation-upstream">>},
{runtime_parameter, <<"federation-upstream-set">>},
{policy_validator, <<"federation-upstream">>},
{policy_validator, <<"federation-upstream-set">>}]).
-rabbit_boot_step({?MODULE,
[{description, "federation parameters"},
@ -29,13 +36,19 @@
{requires, rabbit_registry},
{enables, recovery}]}).
-rabbit_cleanup_step({?MODULE,
[{description, "federation parameters"},
{mfa, {rabbit_federation_parameters, unregister, []}},
{requires, rabbit_federation_supervisor}]}).
register() ->
[rabbit_registry:register(Class, Name, ?MODULE) ||
{Class, Name} <- [{runtime_parameter, <<"federation">>},
{runtime_parameter, <<"federation-upstream">>},
{runtime_parameter, <<"federation-upstream-set">>},
{policy_validator, <<"federation-upstream">>},
{policy_validator, <<"federation-upstream-set">>}]],
{Class, Name} <- ?RUNTIME_PARAMETERS],
ok.
unregister() ->
[rabbit_registry:unregister(Class, Name) ||
{Class, Name} <- ?RUNTIME_PARAMETERS],
ok.
validate(_VHost, <<"federation-upstream-set">>, Name, Term) ->

View File

@ -23,6 +23,12 @@
{requires, rabbit_registry},
{enables, recovery}]}).
-rabbit_cleanup_step({?MODULE,
[{description, "federation queue decorator"},
{mfa, {rabbit_registry, unregister,
[queue_decorator, <<"federation">>]}},
{requires, rabbit_federation_supervisor}]}).
-include_lib("amqp_client/include/amqp_client.hrl").
-include("rabbit_federation.hrl").

View File

@ -23,7 +23,7 @@
-include_lib("rabbit_common/include/rabbit.hrl").
-define(SUPERVISOR, rabbit_federation_sup).
-export([start_link/0]).
-export([start_link/0, stop/0]).
-export([init/1]).
@ -37,11 +37,19 @@
{requires, kernel_ready},
{enables, rabbit_federation_exchange}]}).
-rabbit_cleanup_step({rabbit_federation_supervisor,
[{description, "federation"},
{mfa, {?MODULE, stop, []}}]}).
%%----------------------------------------------------------------------------
start_link() ->
supervisor:start_link({local, ?SUPERVISOR}, ?MODULE, []).
stop() ->
ok = supervisor:terminate_child(rabbit_sup, ?MODULE),
ok = supervisor:delete_child(rabbit_sup, ?MODULE).
%%----------------------------------------------------------------------------
init([]) ->