feature: add NAME=all option for accessory reboot

This commit is contained in:
dmitrytrager
2023-10-19 20:46:08 +02:00
parent 83a2d52ff4
commit 2d22143a24
2 changed files with 24 additions and 8 deletions

View File

@@ -49,17 +49,21 @@ class Kamal::Cli::Accessory < Kamal::Cli::Base
end end
end end
desc "reboot [NAME]", "Reboot existing accessory on host (stop container, remove container, start new container)" desc "reboot [NAME]", "Reboot existing accessory on host (stop container, remove container, start new container; use NAME=all to boot all accessories)"
def reboot(name) def reboot(name)
mutating do mutating do
with_accessory(name) do |accessory| if name == "all"
on(accessory.hosts) do KAMAL.accessory_names.each { |accessory_name| reboot(accessory_name) }
execute *KAMAL.registry.login else
end with_accessory(name) do |accessory|
on(accessory.hosts) do
execute *KAMAL.registry.login
end
stop(name) stop(name)
remove_container(name) remove_container(name)
boot(name, login: false) boot(name, login: false)
end
end end
end end
end end

View File

@@ -48,6 +48,18 @@ class CliAccessoryTest < CliTestCase
run_command("reboot", "mysql") run_command("reboot", "mysql")
end end
test "reboot all" do
Kamal::Commands::Registry.any_instance.expects(:login).times(3)
Kamal::Cli::Accessory.any_instance.expects(:stop).with("mysql")
Kamal::Cli::Accessory.any_instance.expects(:remove_container).with("mysql")
Kamal::Cli::Accessory.any_instance.expects(:boot).with("mysql", login: false)
Kamal::Cli::Accessory.any_instance.expects(:stop).with("redis")
Kamal::Cli::Accessory.any_instance.expects(:remove_container).with("redis")
Kamal::Cli::Accessory.any_instance.expects(:boot).with("redis", login: false)
run_command("reboot", "all")
end
test "start" do test "start" do
assert_match "docker container start app-mysql", run_command("start", "mysql") assert_match "docker container start app-mysql", run_command("start", "mysql")
end end