mirror of
https://github.com/fluent/fluentd-ui.git
synced 2025-08-11 08:47:06 +02:00
66 lines
1.7 KiB
Ruby
66 lines
1.7 KiB
Ruby
class Fluentd::Settings::InTailController < ApplicationController
|
|
before_action :login_required
|
|
before_action :find_fluentd
|
|
|
|
def after_file_choose
|
|
@setting = Fluentd::Setting::InTail.new({
|
|
path: params[:path],
|
|
tag: nil
|
|
})
|
|
end
|
|
|
|
def after_format
|
|
# NOTE: pos_file form field doesn't exists before this action
|
|
attrs = setting_params
|
|
if attrs[:pos_file].blank?
|
|
attrs.merge!(pos_file: "/tmp/fluentd-#{@fluentd.id}-#{Time.now.to_i}.pos")
|
|
end
|
|
@setting = Fluentd::Setting::InTail.new(attrs)
|
|
end
|
|
|
|
def confirm
|
|
@setting = Fluentd::Setting::InTail.new(setting_params)
|
|
if params[:back]
|
|
return render :after_file_choose
|
|
end
|
|
unless @setting.valid?
|
|
return render :after_format
|
|
end
|
|
end
|
|
|
|
def finish
|
|
@setting = Fluentd::Setting::InTail.new(setting_params)
|
|
if params[:back]
|
|
return render :after_format
|
|
end
|
|
|
|
unless @setting.valid?
|
|
return render "after_format"
|
|
end
|
|
|
|
if @fluentd.agent.configuration.to_s.include?(@setting.to_config.to_s.strip)
|
|
@setting.errors.add(:base, :duplicated_conf)
|
|
return render "after_format"
|
|
end
|
|
|
|
@fluentd.agent.config_append @setting.to_config.to_s
|
|
@fluentd.agent.restart if @fluentd.agent.running?
|
|
redirect_to daemon_setting_path(@fluentd)
|
|
end
|
|
|
|
def target_class
|
|
Fluentd::Setting::InTail
|
|
end
|
|
|
|
private
|
|
|
|
def setting_params
|
|
permit_params = target_class._types.keys
|
|
permit_params << :parse_type
|
|
section_class = Fluentd::Setting.const_get("parser_#{params.dig(:setting, :parse_type)}".classify)
|
|
permit_params << { parse: section_class._types.keys + [:type] }
|
|
params.require(:setting).permit(*permit_params)
|
|
end
|
|
|
|
end
|