From 03614bfb7942f9c81ecadc452c00afb49d049978 Mon Sep 17 00:00:00 2001 From: milk1000cc Date: Mon, 27 Mar 2023 23:08:46 +0900 Subject: [PATCH] Rolify app logs cli/command --- lib/mrsk/cli/app.rb | 21 +++++++++++++++------ test/cli/app_test.rb | 8 ++++---- 2 files changed, 19 insertions(+), 10 deletions(-) diff --git a/lib/mrsk/cli/app.rb b/lib/mrsk/cli/app.rb index a3b94412..94affbbe 100644 --- a/lib/mrsk/cli/app.rb +++ b/lib/mrsk/cli/app.rb @@ -142,18 +142,27 @@ class Mrsk::Cli::App < Mrsk::Cli::Base if options[:follow] run_locally do info "Following logs on #{MRSK.primary_host}..." - info MRSK.app.follow_logs(host: MRSK.primary_host, grep: grep) - exec MRSK.app.follow_logs(host: MRSK.primary_host, grep: grep) + + roles = MRSK.roles_on(MRSK.primary_host) + + roles.each do |role| + info MRSK.app(role: role).follow_logs(host: MRSK.primary_host, grep: grep) + exec MRSK.app(role: role).follow_logs(host: MRSK.primary_host, grep: grep) + end end else since = options[:since] lines = options[:lines].presence || ((since || grep) ? nil : 100) # Default to 100 lines if since or grep isn't set on(MRSK.hosts) do |host| - begin - puts_by_host host, capture_with_info(*MRSK.app.logs(since: since, lines: lines, grep: grep)) - rescue SSHKit::Command::Failed - puts_by_host host, "Nothing found" + roles = MRSK.roles_on(host) + + roles.each do |role| + begin + puts_by_host host, capture_with_info(*MRSK.app(role: role).logs(since: since, lines: lines, grep: grep)) + rescue SSHKit::Command::Failed + puts_by_host host, "Nothing found" + end end end end diff --git a/test/cli/app_test.rb b/test/cli/app_test.rb index f22cbaca..41d7ffd0 100644 --- a/test/cli/app_test.rb +++ b/test/cli/app_test.rb @@ -103,16 +103,16 @@ class CliAppTest < CliTestCase test "logs" do SSHKit::Backend::Abstract.any_instance.stubs(:exec) - .with("ssh -t root@1.1.1.1 'docker ps --quiet --filter label=service=app | xargs docker logs --timestamps --tail 10 2>&1'") + .with("ssh -t root@1.1.1.1 'docker ps --quiet --filter label=service=app --filter label=role=web | xargs docker logs --timestamps --tail 10 2>&1'") - assert_match "docker ps --quiet --filter label=service=app | xargs docker logs --tail 100 2>&1", run_command("logs") + assert_match "docker ps --quiet --filter label=service=app --filter label=role=web | xargs docker logs --tail 100 2>&1", run_command("logs") end test "logs with follow" do SSHKit::Backend::Abstract.any_instance.stubs(:exec) - .with("ssh -t root@1.1.1.1 'docker ps --quiet --filter label=service=app | xargs docker logs --timestamps --tail 10 --follow 2>&1'") + .with("ssh -t root@1.1.1.1 'docker ps --quiet --filter label=service=app --filter label=role=web | xargs docker logs --timestamps --tail 10 --follow 2>&1'") - assert_match "docker ps --quiet --filter label=service=app | xargs docker logs --timestamps --tail 10 --follow 2>&1", run_command("logs", "--follow") + assert_match "docker ps --quiet --filter label=service=app --filter label=role=web | xargs docker logs --timestamps --tail 10 --follow 2>&1", run_command("logs", "--follow") end test "version" do