Skip to content

Commit 1bc721a

Browse files
Type specs around virtual host addition
(cherry picked from commit d478fad)
1 parent 5274723 commit 1bc721a

File tree

4 files changed

+35
-8
lines changed

4 files changed

+35
-8
lines changed

deps/rabbit/src/rabbit_queue_type.erl

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -57,6 +57,8 @@
5757
-type arguments() :: queue_arguments | consumer_arguments.
5858
-type queue_type() :: rabbit_classic_queue | rabbit_quorum_queue | rabbit_stream_queue.
5959

60+
-export_type([queue_type/0]).
61+
6062
-define(STATE, ?MODULE).
6163

6264
%% Recoverable mirrors shouldn't really be a generic one, but let's keep it here until

deps/rabbit/src/rabbit_vhost.erl

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -287,9 +287,22 @@ delete(VHost, ActingUser) ->
287287
rabbit_vhost_sup_sup:delete_on_all_nodes(VHost),
288288
ok.
289289

290+
-spec put_vhost(vhost:name(),
291+
binary(),
292+
vhost:tags(),
293+
boolean(),
294+
rabbit_types:username()) ->
295+
'ok' | {'error', any()} | {'EXIT', any()}.
290296
put_vhost(Name, Description, Tags0, Trace, Username) ->
291297
put_vhost(Name, Description, Tags0, undefined, Trace, Username).
292298

299+
-spec put_vhost(vhost:name(),
300+
binary(),
301+
vhost:unparsed_tags() | vhost:tags(),
302+
rabbit_queue_type:queue_type(),
303+
boolean(),
304+
rabbit_types:username()) ->
305+
'ok' | {'error', any()} | {'EXIT', any()}.
293306
put_vhost(Name, Description, Tags0, DefaultQueueType, Trace, Username) ->
294307
Tags = case Tags0 of
295308
undefined -> <<"">>;
@@ -334,10 +347,13 @@ put_vhost(Name, Description, Tags0, DefaultQueueType, Trace, Username) ->
334347
end,
335348
Result.
336349

350+
-spec is_over_vhost_limit(vhost:name()) -> 'ok' | no_return().
337351
is_over_vhost_limit(Name) ->
338352
Limit = rabbit_misc:get_env(rabbit, vhost_max, infinity),
339353
is_over_vhost_limit(Name, Limit).
340354

355+
-spec is_over_vhost_limit(vhost:name(), 'infinity' | non_neg_integer())
356+
-> 'ok' | no_return().
341357
is_over_vhost_limit(_Name, infinity) ->
342358
ok;
343359
is_over_vhost_limit(Name, Limit) when is_integer(Limit) ->

deps/rabbit/src/vhost.erl

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -42,6 +42,11 @@
4242
tags => [atom()],
4343
metadata_key() => any()} | undefined).
4444

45+
-type(description() :: binary()).
46+
-type(tag() :: atom()).
47+
-type(tags() :: [tag()]).
48+
-type(unparsed_tags() :: binary() | string() | atom()).
49+
4550
-type vhost() :: vhost_v2().
4651

4752
-record(vhost, {
@@ -68,6 +73,10 @@
6873
-export_type([name/0,
6974
metadata_key/0,
7075
metadata/0,
76+
description/0,
77+
tag/0,
78+
unparsed_tags/0,
79+
tags/0,
7180
vhost/0,
7281
vhost_v2/0,
7382
vhost_pattern/0,

deps/rabbitmq_management/src/rabbit_mgmt_wm_vhost.erl

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -10,14 +10,16 @@
1010
-export([init/2, resource_exists/2, to_json/2,
1111
content_types_provided/2, content_types_accepted/2,
1212
is_authorized/2, allowed_methods/2, accept_content/2,
13-
delete_resource/2, id/1, put_vhost/6]).
13+
delete_resource/2, id/1]).
1414
-export([variances/2]).
1515

1616
-import(rabbit_misc, [pget/2]).
1717

1818
-include_lib("rabbitmq_management_agent/include/rabbit_mgmt_records.hrl").
1919
-include_lib("rabbit_common/include/rabbit.hrl").
2020

21+
-dialyzer({nowarn_function, accept_content/2}).
22+
2123
%%--------------------------------------------------------------------
2224

2325
init(Req, _State) ->
@@ -67,20 +69,20 @@ accept_content(ReqData0, Context = #context{user = #user{username = Username}})
6769
%% so fall back to it. See rabbitmq/rabbitmq-server#7734.
6870
FallbackQT = maps:get(defaultqueuetype, BodyMap, undefined),
6971
DefaultQT = maps:get(default_queue_type, BodyMap, FallbackQT),
70-
case put_vhost(Name, Description, Tags, DefaultQT, Trace, Username) of
72+
case rabbit_vhost:put_vhost(Name, Description, Tags, DefaultQT, Trace, Username) of
7173
ok ->
7274
{true, ReqData, Context};
73-
{'EXIT', {vhost_limit_exceeded,
74-
Explanation}} ->
75-
rabbit_mgmt_util:bad_request(list_to_binary(Explanation), ReqData, Context);
7675
{error, timeout} = E ->
7776
rabbit_mgmt_util:internal_server_error(
7877
"Timed out while waiting for the vhost to initialise", E,
7978
ReqData0, Context);
8079
{error, E} ->
8180
rabbit_mgmt_util:internal_server_error(
8281
"Error occured while adding vhost", E,
83-
ReqData0, Context)
82+
ReqData0, Context);
83+
{'EXIT', {vhost_limit_exceeded,
84+
Explanation}} ->
85+
rabbit_mgmt_util:bad_request(list_to_binary(Explanation), ReqData, Context)
8486
end
8587
end).
8688

@@ -104,5 +106,3 @@ id(ReqData) ->
104106
Value -> Value
105107
end.
106108

107-
put_vhost(Name, Description, Tags, DefaultQT, Trace, Username) ->
108-
rabbit_vhost:put_vhost(Name, Description, Tags, DefaultQT, Trace, Username).

0 commit comments

Comments
 (0)