From ecd40a81f4b89ec71757e6e23eff3d5fa0809e2d Mon Sep 17 00:00:00 2001 From: Kenji Okimoto Date: Wed, 25 Apr 2018 14:36:53 +0900 Subject: [PATCH] Support reloading Fluentd/td-agent Signed-off-by: Kenji Okimoto --- app/controllers/fluentd/agents_controller.rb | 5 +++++ app/models/fluentd/agent/fluentd_gem.rb | 2 +- app/views/fluentd/show.html.haml | 1 + config/routes.rb | 1 + spec/controllers/fluentd/agents_controller_spec.rb | 12 ++++++++++++ 5 files changed, 20 insertions(+), 1 deletion(-) diff --git a/app/controllers/fluentd/agents_controller.rb b/app/controllers/fluentd/agents_controller.rb index 471e71c..72cd76b 100644 --- a/app/controllers/fluentd/agents_controller.rb +++ b/app/controllers/fluentd/agents_controller.rb @@ -16,6 +16,11 @@ class Fluentd::AgentsController < ApplicationController redirect_to daemon_path(@fluentd), status: 303 # 303 is change HTTP Verb GET end + def reload + run_action(__method__) { @fluentd.agent.log.tail(1).first } + redirect_to daemon_path(@fluentd), status: 303 # 303 is change HTTP Verb GET + end + def log_tail @logs = @fluentd.agent.log.tail(params[:limit]).reverse if @fluentd render json: @logs diff --git a/app/models/fluentd/agent/fluentd_gem.rb b/app/models/fluentd/agent/fluentd_gem.rb index ce38de3..e3cda16 100644 --- a/app/models/fluentd/agent/fluentd_gem.rb +++ b/app/models/fluentd/agent/fluentd_gem.rb @@ -36,7 +36,7 @@ class Fluentd end end - def reload # NOTE: does not used currently + def reload return false unless running? actual_reload end diff --git a/app/views/fluentd/show.html.haml b/app/views/fluentd/show.html.haml index f9cd02a..be0a2b8 100644 --- a/app/views/fluentd/show.html.haml +++ b/app/views/fluentd/show.html.haml @@ -17,6 +17,7 @@ = link_to icon("fa-play") << t("fluentd.common.start"), start_daemon_agent_path(@fluentd), method: :put, class: "btn #{@fluentd.agent.running? ? "disabled btn-outline-dark" : "btn-primary"}" = link_to icon("fa-pause") << t("fluentd.common.stop"), stop_daemon_agent_path(@fluentd), method: :put, class: "btn #{@fluentd.agent.running? ? "btn-danger" : "disabled btn-outline-dark"}" = link_to icon("fa-refresh") << t("fluentd.common.restart"), restart_daemon_agent_path(@fluentd), method: :put, class: "btn #{@fluentd.agent.running? ? "btn-warning" : "disabled btn-outline-dark"}" + = link_to icon("fa-refresh") << t("fluentd.common.reload"), reload_daemon_agent_path(@fluentd), method: :put, class: "btn #{@fluentd.agent.running? ? "btn-info" : "disabled btn-default"}" .col-xl-6.col-sm-6 .card.card-default .card-header diff --git a/config/routes.rb b/config/routes.rb index 90d43dc..c1eb8a1 100644 --- a/config/routes.rb +++ b/config/routes.rb @@ -11,6 +11,7 @@ Rails.application.routes.draw do put "start" put "stop" put "restart" + put "reload" get "log_tail" end diff --git a/spec/controllers/fluentd/agents_controller_spec.rb b/spec/controllers/fluentd/agents_controller_spec.rb index 28c2451..14820bc 100644 --- a/spec/controllers/fluentd/agents_controller_spec.rb +++ b/spec/controllers/fluentd/agents_controller_spec.rb @@ -24,6 +24,11 @@ describe Fluentd::AgentsController do expect(@agent).to receive(:restart).and_return true put :restart end + + it "reaload" do + expect(@agent).to receive(:reload).and_return true + put :reload + end end describe "when the action does not succeed" do @@ -45,5 +50,12 @@ describe Fluentd::AgentsController do expect(log).to receive(:tail).with(1) put :restart end + + it "reload" do + expect(@agent).to receive(:reload).and_return false + expect(@agent).to receive(:log).and_return(log) + expect(log).to receive(:tail).with(1) + put :reload + end end end