Merge pull request #550 from dmitrytrager/feature-name-all-for-accessory-reboot

feature: add NAME=all option for accessory reboot
This commit is contained in:
Donal McBreen
2023-11-16 08:50:51 +00:00
committed by GitHub
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