Current section
Files
Jump to
Current section
Files
lib/edeliver/relup/instructions/info.ex
defmodule Edeliver.Relup.Instructions.Info do
@moduledoc """
This upgrade instruction logs the given info
message on the node which runs the upgrade and
in the running upgrade script which was started
by the `$APP/bin/$APP upgarde $RELEASE` command.
Usage:
`Edeliver.Relup.Instructions.Info.modify_relup(config, _up_message="Synchronizing nodes", _down_message="Desynchronizing nodes", _insert_where = &append_after_point_of_no_return/2)`
Available sections are:
`:check` -> Checks whether upgrade is possible. Before "point of no return"
`:suspend` -> Suspends processes before the upgrade. Right after the "point of no return"
`:upgrade` -> Runs the upgrade by (un-)loading new(/old) code and updating processes and applications
`:resume` -> Resumes processes after the upgrade that were suspended in the `:suspend` section.
`:finished` -> The upgrade finished successfully
It uses the
"""
use Edeliver.Relup.RunnableInstruction
@spec modify_relup(instructions::%Instructions{}, config::%Config{}, up_message::String.t, down_message::String.t, insert_where::insert_fun) :: %Instructions{}
def modify_relup(instructions = %Instructions{}, _config = %Config{}, up_message \\ "", down_message \\ "", insert_where_fun \\ &append_after_point_of_no_return/2) do
up_instruction = call_this(up_message)
down_instruction = call_this(down_message)
%{instructions |
up_instructions: insert_where_fun.(instructions.up_instructions, up_instruction)
|> ensure_module_loaded_before_first_runnable_instructions(up_instruction),
down_instructions: insert_where_fun.(instructions.down_instructions, down_instruction)
|> ensure_module_unloaded_after_last_runnable_instruction(down_instruction)
}
end
@doc """
Logs the message on the node which is upgraded and
in the upgrade script which was started by the
`$APP/bin/$APP upgarde $RELEASE` command.
"""
@spec run(message::String.t) :: :ok
def run(message) do
Logger.info message
format_in_upgrade_script('~s~n', [String.to_char_list(message)])
end
end