ctl add_vhost: check if relevant feature flags are enabled
This commit is contained in:
parent
5ecb546ef5
commit
2c4c51d62d
|
|
@ -5,11 +5,31 @@
|
|||
## Copyright (c) 2007-2022 VMware, Inc. or its affiliates. All rights reserved.
|
||||
|
||||
defmodule RabbitMQ.CLI.Core.FeatureFlags do
|
||||
alias RabbitMQ.CLI.Core.ExitCodes
|
||||
|
||||
#
|
||||
# API
|
||||
#
|
||||
|
||||
def is_enabled_remotely(node_name, feature_flag) do
|
||||
case :rabbit_misc.rpc_call(node_name, :rabbit_feature_flags, :is_enabled, [feature_flag]) do
|
||||
true -> true
|
||||
false -> false
|
||||
{:error, _} = error -> error
|
||||
end
|
||||
end
|
||||
|
||||
def assert_feature_flag_enabled(node_name, feature_flag, success_fun) do
|
||||
case is_enabled_remotely(node_name, feature_flag) do
|
||||
true ->
|
||||
success_fun.()
|
||||
false ->
|
||||
{:error, ExitCodes.exit_dataerr(), "The #{feature_flag} feature flag is not enabled on the target node"}
|
||||
{:error, _} = error ->
|
||||
error
|
||||
end
|
||||
end
|
||||
|
||||
def feature_flag_lines(feature_flags) do
|
||||
feature_flags
|
||||
|> Enum.map(fn %{name: name, state: state} ->
|
||||
|
|
|
|||
|
|
@ -5,7 +5,7 @@
|
|||
## Copyright (c) 2007-2022 VMware, Inc. or its affiliates. All rights reserved.
|
||||
|
||||
defmodule RabbitMQ.CLI.Ctl.Commands.AddVhostCommand do
|
||||
alias RabbitMQ.CLI.Core.{DocGuide, Helpers}
|
||||
alias RabbitMQ.CLI.Core.{DocGuide, ErrorCodes, FeatureFlags, Helpers}
|
||||
|
||||
@behaviour RabbitMQ.CLI.CommandBehaviour
|
||||
|
||||
|
|
@ -24,7 +24,19 @@ defmodule RabbitMQ.CLI.Ctl.Commands.AddVhostCommand do
|
|||
meta = %{description: desc,
|
||||
tags: parse_tags(tags),
|
||||
default_queue_type: default_qt}
|
||||
:rabbit_misc.rpc_call(node_name, :rabbit_vhost, :add, [vhost, meta, Helpers.cli_acting_user()])
|
||||
# check if the respective feature flag is enabled
|
||||
case default_qt do
|
||||
"quorum" ->
|
||||
FeatureFlags.assert_feature_flag_enabled(node_name, :quorum_queue, fn () ->
|
||||
:rabbit_misc.rpc_call(node_name, :rabbit_vhost, :add, [vhost, meta, Helpers.cli_acting_user()])
|
||||
end)
|
||||
"stream" ->
|
||||
FeatureFlags.assert_feature_flag_enabled(node_name, :stream_queue, fn () ->
|
||||
:rabbit_misc.rpc_call(node_name, :rabbit_vhost, :add, [vhost, meta, Helpers.cli_acting_user()])
|
||||
end)
|
||||
_ ->
|
||||
:rabbit_misc.rpc_call(node_name, :rabbit_vhost, :add, [vhost, meta, Helpers.cli_acting_user()])
|
||||
end
|
||||
end
|
||||
def run([vhost], %{node: node_name, description: desc, tags: tags}) do
|
||||
:rabbit_misc.rpc_call(node_name, :rabbit_vhost, :add, [vhost, description, tags, Helpers.cli_acting_user()])
|
||||
|
|
|
|||
Loading…
Reference in New Issue