summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAnupama Singh <anupamasingh31@gmail.com>2020-07-09 15:14:06 +0200
committerMichael Klishin <michael@clojurewerkz.org>2020-09-02 04:28:59 +0300
commitf4650494784d096602cf999f57526e013bc1c74c (patch)
tree992b653895d4fd717724ffdfb0220cffd645cbfd
parentb236f41953845b82adad0bb55084fddca12b2f91 (diff)
downloadrabbitmq-server-git-f4650494784d096602cf999f57526e013bc1c74c.tar.gz
Added new user_limits feature flag
-rw-r--r--src/rabbit_core_ff.erl25
1 files changed, 24 insertions, 1 deletions
diff --git a/src/rabbit_core_ff.erl b/src/rabbit_core_ff.erl
index 63aa9b30f1..a251def11c 100644
--- a/src/rabbit_core_ff.erl
+++ b/src/rabbit_core_ff.erl
@@ -10,7 +10,8 @@
-export([quorum_queue_migration/3,
implicit_default_bindings_migration/3,
virtual_host_metadata_migration/3,
- maintenance_mode_status_migration/3]).
+ maintenance_mode_status_migration/3,
+ user_limits_migration/3]).
-rabbit_feature_flag(
{quorum_queue,
@@ -42,6 +43,13 @@
migration_fun => {?MODULE, maintenance_mode_status_migration}
}}).
+-rabbit_feature_flag(
+ {user_limits,
+ #{desc => "Configure connection and channel limits for a user",
+ stability => stable,
+ migration_fun => {?MODULE, user_limits_migration}
+ }}).
+
%% -------------------------------------------------------------------
%% Quorum queues.
%% -------------------------------------------------------------------
@@ -141,3 +149,18 @@ maintenance_mode_status_migration(FeatureName, _FeatureProps, enable) ->
end;
maintenance_mode_status_migration(_FeatureName, _FeatureProps, is_enabled) ->
rabbit_table:exists(rabbit_maintenance:status_table_name()).
+
+%% -------------------------------------------------------------------
+%% User limits.
+%% -------------------------------------------------------------------
+
+user_limits_migration(_FeatureName, _FeatureProps, enable) ->
+ Tab = rabbit_user,
+ rabbit_table:wait([Tab], _Retry = true),
+ Fun = fun(Row) -> internal_user:upgrade_to(internal_user_v2, Row) end,
+ case mnesia:transform_table(Tab, Fun, internal_user:fields(internal_user_v2)) of
+ {atomic, ok} -> ok;
+ {aborted, Reason} -> {error, Reason}
+ end;
+user_limits_migration(_FeatureName, _FeatureProps, is_enabled) ->
+ mnesia:table_info(rabbit_user, attributes) =:= internal_user:fields(internal_user_v2).