Don't actually need reboot now that boot can do that

This commit is contained in:
David Heinemeier Hansson
2023-02-03 14:31:11 +01:00
parent 22bbedf298
commit 74c493def4

View File

@@ -1,11 +1,15 @@
require "mrsk/cli/base" require "mrsk/cli/base"
class Mrsk::Cli::App < Mrsk::Cli::Base class Mrsk::Cli::App < Mrsk::Cli::Base
desc "boot", "Boot app on servers (or start them if they've already been booted)" desc "boot", "Boot app on servers (or reboot app if already running)"
def boot def boot
cli = self cli = self
say "Ensure no other version of the app is running...", :magenta
stop
using_version(options[:version] || most_recent_version_available) do |version| using_version(options[:version] || most_recent_version_available) do |version|
say "Start container with version #{version} (or reboot if already running)...", :magenta
MRSK.config.roles.each do |role| MRSK.config.roles.each do |role|
on(role.hosts) do |host| on(role.hosts) do |host|
begin begin
@@ -14,9 +18,7 @@ class Mrsk::Cli::App < Mrsk::Cli::Base
if e.message =~ /already in use/ if e.message =~ /already in use/
error "Rebooting container with same version already deployed on #{host}" error "Rebooting container with same version already deployed on #{host}"
cli.stop
cli.remove_container version cli.remove_container version
execute *MRSK.app.run(role: role.name) execute *MRSK.app.run(role: role.name)
else else
raise raise
@@ -27,15 +29,6 @@ class Mrsk::Cli::App < Mrsk::Cli::Base
end end
end end
desc "reboot", "Reboot app on host (stop container, remove container, start new container with latest image)"
def reboot
old_version = current_running_version
stop
remove_container old_version
boot
end
desc "start", "Start existing app on servers (use --version=<git-hash> to designate specific version)" desc "start", "Start existing app on servers (use --version=<git-hash> to designate specific version)"
def start def start
on(MRSK.hosts) { execute *MRSK.app.start, raise_on_non_zero_exit: false } on(MRSK.hosts) { execute *MRSK.app.start, raise_on_non_zero_exit: false }
@@ -187,12 +180,14 @@ class Mrsk::Cli::App < Mrsk::Cli::Base
def most_recent_version_available(host: MRSK.primary_host) def most_recent_version_available(host: MRSK.primary_host)
version = nil version = nil
say "Retrieve most recent version available as an image...", :magenta
on(host) { version = capture_with_info(*MRSK.app.most_recent_version_from_available_images).strip } on(host) { version = capture_with_info(*MRSK.app.most_recent_version_from_available_images).strip }
version.presence version.presence
end end
def current_running_version(host: MRSK.primary_host) def current_running_version(host: MRSK.primary_host)
version = nil version = nil
say "Retrieve current running version...", :magenta
on(host) { version = capture_with_info(*MRSK.app.current_running_version).strip } on(host) { version = capture_with_info(*MRSK.app.current_running_version).strip }
version.presence version.presence
end end