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
|
## This Source Code Form is subject to the terms of the Mozilla Public
## License, v. 2.0. If a copy of the MPL was not distributed with this
## file, You can obtain one at https://mozilla.org/MPL/2.0/.
##
## Copyright (c) 2007-2023 Broadcom. All Rights Reserved. The term “Broadcom” refers to Broadcom Inc. and/or its subsidiaries. All rights reserved.
defmodule RabbitMQ.CLI.Upgrade.Commands.ReviveCommand do
@moduledoc """
Puts the node out of maintenance and into regular operating mode.
Such nodes will again serve client traffic and be considered for
primary queue replica placement.
A node will automatically go into regular operational mode
after a restart.
This command is meant to be used when automating upgrades.
"""
@behaviour RabbitMQ.CLI.CommandBehaviour
alias RabbitMQ.CLI.Core.DocGuide
use RabbitMQ.CLI.Core.MergesNoDefaults
use RabbitMQ.CLI.Core.AcceptsNoPositionalArguments
def run([], %{node: node_name, timeout: timeout}) do
case :rabbit_misc.rpc_call(node_name, :rabbit_maintenance, :revive, [], timeout) do
# Server does not support maintenance mode
{:badrpc, {:EXIT, {:undef, _}}} -> {:error, :unsupported}
{:badrpc, _} = err -> err
other -> other
end
end
def output({:error, :unsupported}, %{node: node_name}) do
{:error, RabbitMQ.CLI.Core.ExitCodes.exit_usage(),
"Maintenance mode is not supported by node #{node_name}"}
end
use RabbitMQ.CLI.DefaultOutput
def usage, do: "revive"
def usage_doc_guides() do
[
DocGuide.upgrade()
]
end
def help_section(), do: :upgrade
def description(),
do:
"Puts the node out of maintenance and into regular operating mode. Such nodes will again serve client traffic and host primary queue replicas"
def banner(_, %{node: node_name}) do
"Will put node #{node_name} back into regular operating mode. " <>
"The node will again serve client traffic and host primary queue replicas."
end
end
|