Pass role names for simplicity

This commit is contained in:
Tobias Bühlmann
2023-03-10 09:18:47 +01:00
parent fdb0c8ee91
commit 7d4dfc4c86
3 changed files with 24 additions and 24 deletions

View File

@@ -11,22 +11,22 @@ class Mrsk::Cli::App < Mrsk::Cli::Base
roles = MRSK.roles_on(host) roles = MRSK.roles_on(host)
roles.each do |role| roles.each do |role|
execute *MRSK.auditor(role: role.name).record("Booted app version #{version}"), verbosity: :debug execute *MRSK.auditor(role: role).record("Booted app version #{version}"), verbosity: :debug
begin begin
old_version = capture_with_info(*MRSK.app(role: role.name).current_running_version).strip old_version = capture_with_info(*MRSK.app(role: role).current_running_version).strip
execute *MRSK.app(role: role.name).run execute *MRSK.app(role: role).run
sleep MRSK.config.readiness_delay sleep MRSK.config.readiness_delay
execute *MRSK.app(role: role.name).stop(version: old_version), raise_on_non_zero_exit: false if old_version.present? execute *MRSK.app(role: role).stop(version: old_version), raise_on_non_zero_exit: false if old_version.present?
rescue SSHKit::Command::Failed => e rescue SSHKit::Command::Failed => e
if e.message =~ /already in use/ if e.message =~ /already in use/
error "Rebooting container with same version #{version} already deployed on #{host} (may cause gap in zero-downtime promise!)" error "Rebooting container with same version #{version} already deployed on #{host} (may cause gap in zero-downtime promise!)"
execute *MRSK.auditor(role: role.name).record("Rebooted app version #{version}"), verbosity: :debug execute *MRSK.auditor(role: role).record("Rebooted app version #{version}"), verbosity: :debug
execute *MRSK.app(role: role.name).stop(version: version) execute *MRSK.app(role: role).stop(version: version)
execute *MRSK.app(role: role.name).remove_container(version: version) execute *MRSK.app(role: role).remove_container(version: version)
execute *MRSK.app(role: role.name).run execute *MRSK.app(role: role).run
else else
raise raise
end end
@@ -42,8 +42,8 @@ class Mrsk::Cli::App < Mrsk::Cli::Base
roles = MRSK.roles_on(host) roles = MRSK.roles_on(host)
roles.each do |role| roles.each do |role|
execute *MRSK.auditor(role: role.name).record("Started app version #{MRSK.version}"), verbosity: :debug execute *MRSK.auditor(role: role).record("Started app version #{MRSK.version}"), verbosity: :debug
execute *MRSK.app(role: role.name).start, raise_on_non_zero_exit: false execute *MRSK.app(role: role).start, raise_on_non_zero_exit: false
end end
end end
end end
@@ -54,8 +54,8 @@ class Mrsk::Cli::App < Mrsk::Cli::Base
roles = MRSK.roles_on(host) roles = MRSK.roles_on(host)
roles.each do |role| roles.each do |role|
execute *MRSK.auditor(role: role.name).record("Stopped app"), verbosity: :debug execute *MRSK.auditor(role: role).record("Stopped app"), verbosity: :debug
execute *MRSK.app(role: role.name).stop, raise_on_non_zero_exit: false execute *MRSK.app(role: role).stop, raise_on_non_zero_exit: false
end end
end end
end end
@@ -67,7 +67,7 @@ class Mrsk::Cli::App < Mrsk::Cli::Base
roles = MRSK.roles_on(host) roles = MRSK.roles_on(host)
roles.each do |role| roles.each do |role|
puts_by_host host, capture_with_info(*MRSK.app(role: role.name).info) puts_by_host host, capture_with_info(*MRSK.app(role: role).info)
end end
end end
end end
@@ -81,7 +81,7 @@ class Mrsk::Cli::App < Mrsk::Cli::Base
say "Get current version of running container...", :magenta unless options[:version] say "Get current version of running container...", :magenta unless options[:version]
using_version(options[:version] || current_running_version) do |version| using_version(options[:version] || current_running_version) do |version|
say "Launching interactive command with version #{version} via SSH from existing container on #{MRSK.primary_host}...", :magenta say "Launching interactive command with version #{version} via SSH from existing container on #{MRSK.primary_host}...", :magenta
run_locally { exec MRSK.app(role: role.name).execute_in_existing_container_over_ssh(cmd, host: MRSK.primary_host) } run_locally { exec MRSK.app(role: role).execute_in_existing_container_over_ssh(cmd, host: MRSK.primary_host) }
end end
when options[:interactive] when options[:interactive]
@@ -100,8 +100,8 @@ class Mrsk::Cli::App < Mrsk::Cli::Base
roles = MRSK.roles_on(host) roles = MRSK.roles_on(host)
roles.each do |role| roles.each do |role|
execute *MRSK.auditor(role: role.name).record("Executed cmd '#{cmd}' on app version #{version}"), verbosity: :debug execute *MRSK.auditor(role: role).record("Executed cmd '#{cmd}' on app version #{version}"), verbosity: :debug
puts_by_host host, capture_with_info(*MRSK.app(role: role.name).execute_in_existing_container(cmd)) puts_by_host host, capture_with_info(*MRSK.app(role: role).execute_in_existing_container(cmd))
end end
end end
end end
@@ -171,8 +171,8 @@ class Mrsk::Cli::App < Mrsk::Cli::Base
roles = MRSK.roles_on(host) roles = MRSK.roles_on(host)
roles.each do |role| roles.each do |role|
execute *MRSK.auditor(role: role.name).record("Removed app container with version #{version}"), verbosity: :debug execute *MRSK.auditor(role: role).record("Removed app container with version #{version}"), verbosity: :debug
execute *MRSK.app(role: role.name).remove_container(version: version) execute *MRSK.app(role: role).remove_container(version: version)
end end
end end
end end
@@ -183,8 +183,8 @@ class Mrsk::Cli::App < Mrsk::Cli::Base
roles = MRSK.roles_on(host) roles = MRSK.roles_on(host)
roles.each do |role| roles.each do |role|
execute *MRSK.auditor(role: role.name).record("Removed all app containers"), verbosity: :debug execute *MRSK.auditor(role: role).record("Removed all app containers"), verbosity: :debug
execute *MRSK.app(role: role.name).remove_containers execute *MRSK.app(role: role).remove_containers
end end
end end
end end

View File

@@ -45,7 +45,7 @@ class Mrsk::Commander
end end
def roles_on(host) def roles_on(host)
roles.select { |role| role.hosts.include?(host.to_s) } roles.select { |role| role.hosts.include?(host.to_s) }.map(&:name)
end end
def traefik_hosts def traefik_hosts

View File

@@ -60,8 +60,8 @@ class CommanderTest < ActiveSupport::TestCase
end end
test "roles_on" do test "roles_on" do
assert_equal [ "web", "workers" ], @mrsk.roles_on("1.1.1.1").map(&:name) assert_equal [ "web", "workers" ], @mrsk.roles_on("1.1.1.1")
assert_equal [ "web" ], @mrsk.roles_on("1.1.1.2").map(&:name) assert_equal [ "web" ], @mrsk.roles_on("1.1.1.2")
assert_equal [ "workers" ], @mrsk.roles_on("1.1.1.3").map(&:name) assert_equal [ "workers" ], @mrsk.roles_on("1.1.1.3")
end end
end end