1## This Source Code Form is subject to the terms of the Mozilla Public 2## License, v. 2.0. If a copy of the MPL was not distributed with this 3## file, You can obtain one at https://mozilla.org/MPL/2.0/. 4## 5## Copyright (c) 2007-2021 VMware, Inc. or its affiliates. All rights reserved. 6 7defmodule RabbitMQ.CLI.Ctl.Commands.ForceResetCommand do 8 alias RabbitMQ.CLI.Core.{DocGuide, ExitCodes} 9 10 @behaviour RabbitMQ.CLI.CommandBehaviour 11 12 use RabbitMQ.CLI.Core.MergesNoDefaults 13 use RabbitMQ.CLI.Core.AcceptsNoPositionalArguments 14 use RabbitMQ.CLI.Core.RequiresRabbitAppStopped 15 16 def run([], %{node: node_name}) do 17 :rabbit_misc.rpc_call(node_name, :rabbit_mnesia, :force_reset, []) 18 end 19 20 def output({:error, :mnesia_unexpectedly_running}, %{node: node_name}) do 21 {:error, ExitCodes.exit_software(), 22 RabbitMQ.CLI.DefaultOutput.mnesia_running_error(node_name)} 23 end 24 25 use RabbitMQ.CLI.DefaultOutput 26 27 def usage, do: "force_reset" 28 29 def usage_doc_guides() do 30 [ 31 DocGuide.clustering() 32 ] 33 end 34 35 def help_section(), do: :cluster_management 36 37 def description(), do: "Forcefully returns a RabbitMQ node to its virgin state" 38 39 def banner(_, %{node: node_name}), do: "Forcefully resetting node #{node_name} ..." 40end 41