fluentd-ui/app/controllers/fluentd/settings_controller.rb
2014-06-18 13:57:22 +09:00

73 lines
1.9 KiB
Ruby

class Fluentd::SettingsController < ApplicationController
before_action :login_required
before_action :find_fluentd
def show
@config = File.read(@fluentd.agent.config_file) # TODO
end
def edit
@config = File.read(@fluentd.agent.config_file) # TODO
end
def update
File.open(@fluentd.agent.config_file, "w") do |f| # TODO: should update by agent class
f.write params[:config]
end
@fluentd.agent.restart if @fluentd.agent.running?
redirect_to fluentd_setting_path(@fluentd)
end
def in_tail_after_file_choose
@setting = Fluentd::Setting::InTail.new({
:path => params[:path],
:tag => nil,
})
end
def in_tail_after_format
@setting = Fluentd::Setting::InTail.new(setting_params)
end
def in_tail_confirm
@setting = Fluentd::Setting::InTail.new(setting_params)
if params[:back]
return render :in_tail_after_file_choose
end
unless @setting.valid?
return render :in_tail_after_format
end
end
def in_tail_finish
@setting = Fluentd::Setting::InTail.new(setting_params)
if params[:back]
return render :in_tail_after_format
end
unless @setting.valid?
return render "in_tail_after_format"
end
if @fluentd.agent.configuration.to_s.include?(@setting.to_conf.strip)
@setting.errors.add(:base, :duplicated_conf)
return render "in_tail_after_format"
end
File.open(@fluentd.agent.config_file, "a") do |f| # TODO: should update by agent class
f.write "\n"
f.write @setting.to_conf
end
@fluentd.agent.restart if @fluentd.agent.running?
redirect_to fluentd_setting_path(@fluentd)
end
private
def setting_params
{
:pos_file => "/tmp/fluentd-#{@fluentd.id}-#{Time.now.to_i}.pos",
}.merge params.require(:setting).permit(:path, :format, *Fluentd::Setting::InTail.known_formats, :tag, :rotate_wait, :pos_file, :read_from_head, :refresh_interval)
end
end