summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMichal Kuratczyk <mkuratczyk@pivotal.io>2020-11-15 19:05:22 +0100
committerMichael Klishin <michael@clojurewerkz.org>2020-11-17 14:17:35 +0300
commitce655864050a78f46005b8aa5e047394a6178cd6 (patch)
tree10205b572e8d5d38ad1b45e354f0a0ea1d5b592a
parent1ed8f76eed90bf45a6a3d12e1434b7831ec4fdcf (diff)
downloadrabbitmq-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.ex14
-rw-r--r--deps/rabbitmq_cli/test/ctl/enable_feature_flag_test.exs6
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]}\" \.\.\./