diff options
author | Michal Kuratczyk <mkuratczyk@pivotal.io> | 2020-11-15 19:05:22 +0100 |
---|---|---|
committer | Michael Klishin <michael@clojurewerkz.org> | 2020-11-17 14:17:35 +0300 |
commit | ce655864050a78f46005b8aa5e047394a6178cd6 (patch) | |
tree | 10205b572e8d5d38ad1b45e354f0a0ea1d5b592a | |
parent | 1ed8f76eed90bf45a6a3d12e1434b7831ec4fdcf (diff) | |
download | rabbitmq-server-git-ce655864050a78f46005b8aa5e047394a6178cd6.tar.gz |
Allow "all" as a feature flag name
`rabbitmqctl enable_feature_flag all` enables all currently disabled feature flags.
While https://github.com/rabbitmq/rabbitmq-cli/issues/455 asked for
`--all`, I decided to just use "all" for consistency with
`rabbitmq-queues rebalance all`.
Closes rabbitmq/rabbitmq-cli#455
(cherry picked from commit af9e877848cfe4434de697d756e64014d180a945)
-rw-r--r-- | deps/rabbitmq_cli/lib/rabbitmq/cli/ctl/commands/enable_feature_flag_command.ex | 14 | ||||
-rw-r--r-- | deps/rabbitmq_cli/test/ctl/enable_feature_flag_test.exs | 6 |
2 files changed, 19 insertions, 1 deletions
diff --git a/deps/rabbitmq_cli/lib/rabbitmq/cli/ctl/commands/enable_feature_flag_command.ex b/deps/rabbitmq_cli/lib/rabbitmq/cli/ctl/commands/enable_feature_flag_command.ex index ddcaec924d..b4108c7944 100644 --- a/deps/rabbitmq_cli/lib/rabbitmq/cli/ctl/commands/enable_feature_flag_command.ex +++ b/deps/rabbitmq_cli/lib/rabbitmq/cli/ctl/commands/enable_feature_flag_command.ex @@ -17,6 +17,16 @@ defmodule RabbitMQ.CLI.Ctl.Commands.EnableFeatureFlagCommand do use RabbitMQ.CLI.Core.RequiresRabbitAppRunning + def run(["all"], %{node: node_name}) do + case :rabbit_misc.rpc_call(node_name, :rabbit_feature_flags, :enable_all, []) do + # Server does not support feature flags, consider none are available. + # See rabbitmq/rabbitmq-cli#344 for context. MK. + {:badrpc, {:EXIT, {:undef, _}}} -> {:error, :unsupported} + {:badrpc, _} = err -> err + other -> other + end + end + def run([feature_flag], %{node: node_name}) do case :rabbit_misc.rpc_call(node_name, :rabbit_feature_flags, :enable, [String.to_atom(feature_flag)]) do # Server does not support feature flags, consider none are available. @@ -32,11 +42,13 @@ defmodule RabbitMQ.CLI.Ctl.Commands.EnableFeatureFlagCommand do end use RabbitMQ.CLI.DefaultOutput - def usage, do: "enable_feature_flag <feature_flag>" + def usage, do: "enable_feature_flag < all | feature_flag >" def help_section(), do: :feature_flags def description(), do: "Enables a feature flag on target node" + def banner(["all"], _), do: "Enabling all feature flags ..." + def banner([feature_flag], _), do: "Enabling feature flag \"#{feature_flag}\" ..." end diff --git a/deps/rabbitmq_cli/test/ctl/enable_feature_flag_test.exs b/deps/rabbitmq_cli/test/ctl/enable_feature_flag_test.exs index e9700c6c86..f8a3e62920 100644 --- a/deps/rabbitmq_cli/test/ctl/enable_feature_flag_test.exs +++ b/deps/rabbitmq_cli/test/ctl/enable_feature_flag_test.exs @@ -57,6 +57,12 @@ defmodule EnableFeatureFlagCommandTest do assert list_feature_flags(:enabled) |> Map.has_key?(context[:feature_flag]) end + test "run: enabling all feature flags succeeds", context do + enable_feature_flag context[:feature_flag] + assert @command.run(["all"], context[:opts]) == :ok + assert list_feature_flags(:enabled) |> Map.has_key?(context[:feature_flag]) + end + test "banner", context do assert @command.banner([context[:feature_flag]], context[:opts]) =~ ~r/Enabling feature flag \"#{context[:feature_flag]}\" \.\.\./ |