/
Elixir.RabbitMQ.CLI.Ctl.Commands.DeleteSuperStreamCommand.erl
93 lines (76 loc) · 2.73 KB
/
Elixir.RabbitMQ.CLI.Ctl.Commands.DeleteSuperStreamCommand.erl
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
%% The contents of this file are subject to the Mozilla Public License
%% Version 2.0 (the "License"); you may not use this file except in
%% compliance with the License. You may obtain a copy of the License
%% at https://www.mozilla.org/MPL/
%%
%% Software distributed under the License is distributed on an "AS IS"
%% basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See
%% the License for the specific language governing rights and
%% limitations under the License.
%%
%% The Original Code is RabbitMQ.
%%
%% The Initial Developer of the Original Code is GoPivotal, Inc.
%% Copyright (c) 2007-2024 Broadcom. All Rights Reserved. The term “Broadcom” refers to Broadcom Inc. and/or its subsidiaries. All rights reserved.
-module('Elixir.RabbitMQ.CLI.Ctl.Commands.DeleteSuperStreamCommand').
-include_lib("rabbitmq_stream_common/include/rabbit_stream.hrl").
-behaviour('Elixir.RabbitMQ.CLI.CommandBehaviour').
-export([scopes/0,
usage/0,
usage_additional/0,
usage_doc_guides/0,
banner/2,
validate/2,
merge_defaults/2,
run/2,
output/2,
description/0,
help_section/0]).
scopes() ->
[streams].
description() ->
<<"Delete a super stream">>.
help_section() ->
{plugin, stream}.
validate([], _Opts) ->
{validation_failure, not_enough_args};
validate([_Name], _Opts) ->
ok;
validate(_, _Opts) ->
{validation_failure, too_many_args}.
merge_defaults(_Args, Opts) ->
{_Args, maps:merge(#{vhost => <<"/">>}, Opts)}.
usage() ->
<<"delete_super_stream <name> [--vhost <vhost>]">>.
usage_additional() ->
[[<<"<name>">>, <<"The name of the super stream to delete.">>],
[<<"--vhost <vhost>">>, <<"The virtual host of the super stream.">>]].
usage_doc_guides() ->
[?STREAMS_GUIDE_URL].
run([SuperStream],
#{node := NodeName,
vhost := VHost,
timeout := Timeout}) ->
delete_super_stream(NodeName, Timeout, VHost, SuperStream).
delete_super_stream(NodeName, Timeout, VHost, SuperStream) ->
case rabbit_misc:rpc_call(NodeName,
rabbit_stream_manager,
delete_super_stream,
[VHost, SuperStream, cli_acting_user()],
Timeout)
of
ok ->
{ok,
rabbit_misc:format("Super stream ~ts has been deleted",
[SuperStream])};
Error ->
Error
end.
banner(_, _) ->
<<"Deleting a super stream...">>.
output({error, Msg}, _Opts) ->
{error, 'Elixir.RabbitMQ.CLI.Core.ExitCodes':exit_software(), Msg};
output({ok, Msg}, _Opts) ->
{ok, Msg}.
cli_acting_user() ->
'Elixir.RabbitMQ.CLI.Core.Helpers':cli_acting_user().