Skip to content

Commit

Permalink
Disable add/delete/shrink/grow QQ operations via HTTP api
Browse files Browse the repository at this point in the history
  • Loading branch information
SimonUnge committed Aug 22, 2023
1 parent 2b177e5 commit 66a254a
Show file tree
Hide file tree
Showing 6 changed files with 36 additions and 5 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -521,3 +521,10 @@ end}.
{datatype, {enum, [true, false]}},
{include_default, false}
]}.

%% Disables add/remove/grow/shrink over API.

{mapping, "management.restrictions.quorom_queue_replica_operations.disabled", "rabbitmq_management.restrictions.quorum_queue_replica_operations.disabled", [
{datatype, {enum, [true, false]}},
{include_default, false}
]}.
4 changes: 4 additions & 0 deletions deps/rabbitmq_management/src/rabbit_mgmt_features.erl
Original file line number Diff line number Diff line change
Expand Up @@ -8,8 +8,12 @@
-module(rabbit_mgmt_features).

-export([is_op_policy_updating_disabled/0,
is_qq_replica_operations_disabled/0,
are_stats_enabled/0]).

is_qq_replica_operations_disabled() ->
get_restriction([quorum_queue_replica_operations, disabled]).

is_op_policy_updating_disabled() ->
case get_restriction([operator_policy_changes, disabled]) of
true -> true;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -56,4 +56,9 @@ accept_content(ReqData, Context) ->


is_authorized(ReqData, Context) ->
rabbit_mgmt_util:is_authorized_admin(ReqData, Context).
case rabbit_mgmt_features:is_qq_replica_operations_disabled() of
true ->
rabbit_mgmt_util:method_not_allowed(<<"Broker settings disallow quorum queue replica operations.">>, ReqData, Context);
false ->
rabbit_mgmt_util:is_authorized_admin(ReqData, Context)
end.
Original file line number Diff line number Diff line change
Expand Up @@ -56,5 +56,11 @@ delete_completed(ReqData, Context) ->
%% return 202 Accepted since this is an inherently asynchronous operation
{false, ReqData, Context}.


is_authorized(ReqData, Context) ->
rabbit_mgmt_util:is_authorized_admin(ReqData, Context).
case rabbit_mgmt_features:is_qq_replica_operations_disabled() of
true ->
rabbit_mgmt_util:method_not_allowed(<<"Broker settings disallow quorum queue replica operations.">>, ReqData, Context);
false ->
rabbit_mgmt_util:is_authorized_admin(ReqData, Context)
end.
Original file line number Diff line number Diff line change
Expand Up @@ -48,6 +48,10 @@ accept_content(ReqData, Context) ->
end),
{true, ReqData, Context}.


is_authorized(ReqData, Context) ->
rabbit_mgmt_util:is_authorized_admin(ReqData, Context).
case rabbit_mgmt_features:is_qq_replica_operations_disabled() of
true ->
rabbit_mgmt_util:method_not_allowed(<<"Broker settings disallow quorum queue replica operations.">>, ReqData, Context);
false ->
rabbit_mgmt_util:is_authorized_admin(ReqData, Context)
end.
Original file line number Diff line number Diff line change
Expand Up @@ -35,4 +35,9 @@ delete_completed(ReqData, Context) ->
{false, ReqData, Context}.

is_authorized(ReqData, Context) ->
rabbit_mgmt_util:is_authorized_admin(ReqData, Context).
case rabbit_mgmt_features:is_qq_replica_operations_disabled() of
true ->
rabbit_mgmt_util:method_not_allowed(<<"Broker settings disallow quorum queue replica operations.">>, ReqData, Context);
false ->
rabbit_mgmt_util:is_authorized_admin(ReqData, Context)
end.

0 comments on commit 66a254a

Please sign in to comment.