class

Meridian::Deploy::Orchestrator

Inherits Meridian::Deploy::HealthPolling < Reference < Object

Constants

DEFAULT_COLOR = Quadlet::Color::Green
DEFAULT_LOCAL_IMAGE_PROBE = ->(image : String) do begin (Process.run("podman", ["image", "exists", image])).success? rescue false end end
DEPLOY_LOCK_MESSAGE = "meridian deploy"
EMPTY_ACCESSORIES = {} of String => Config::AccessoryConfig
LEGACY_ACTIVE_COLOR_FILE = Runtime::Paths::LEGACY_ACTIVE_COLOR_FILE

Constructors

new(config : Config::DeployConfig, ssh_executor : SSH::Executor = SSH::Executor.new, quadlet_generator : Quadlet::Generator | Nil = nil, stream_transfer : Transfer::Stream | Nil = nil, incremental_transfer : Transfer::Incremental | Nil = nil, output : IO = STDOUT, batch_sleeper : Proc(Time::Span, Nil) = ->(duration : Time::Span) do sleep(duration) end, health_sleeper : Proc(Time::Span, Nil) = ->(duration : Time::Span) do sleep(duration) end, hook_runner : Proc(String, Hash(String, String), Int32) = ->(script : String, env : Hash(String, String)) do (Process.run(script, env: env, shell: true)).exit_code end, file_reader : Proc(String, String) = ->(path : String) do File.read(path) end, lock_manager : Lock::Manager | Nil = nil, audit_logger : Audit::Logger | Nil = nil, local_image_probe : LocalImageProbe | Nil = nil)
Source

Instance methods

deploy(targets : Array(CLI::TargetSelector::Target) | Nil = nil) : Nil
Source
deploy_to_host(host : String, role : String) : Nil
Source
zero_downtime_deploy_to_host(host : String, role : String) : Nil

ameba:disable Metrics/CyclomaticComplexity

Source

Nested types