From 744c6a18ea32e167a871c74df7a8f1bf0e0922de Mon Sep 17 00:00:00 2001 From: uu59 Date: Fri, 11 Jul 2014 12:50:39 +0900 Subject: [PATCH] Add in_syslog setting basis --- .../fluentd/settings/in_syslog_controller.rb | 34 +++++++++++++++++++ app/models/fluentd/setting/in_syslog.rb | 28 +++++++++++++++ .../settings/in_syslog/_form.html.haml | 19 +++++++++++ .../fluentd/settings/in_syslog/show.html.haml | 6 ++++ app/views/fluentd/settings/show.html.haml | 4 +++ config/locales/translation_en.yml | 6 ++++ config/locales/translation_ja.yml | 6 ++++ config/routes.rb | 4 +++ 8 files changed, 107 insertions(+) create mode 100644 app/controllers/fluentd/settings/in_syslog_controller.rb create mode 100644 app/models/fluentd/setting/in_syslog.rb create mode 100644 app/views/fluentd/settings/in_syslog/_form.html.haml create mode 100644 app/views/fluentd/settings/in_syslog/show.html.haml diff --git a/app/controllers/fluentd/settings/in_syslog_controller.rb b/app/controllers/fluentd/settings/in_syslog_controller.rb new file mode 100644 index 0000000..01cda0e --- /dev/null +++ b/app/controllers/fluentd/settings/in_syslog_controller.rb @@ -0,0 +1,34 @@ +class Fluentd::Settings::InSyslogController < ApplicationController + before_action :login_required + before_action :find_fluentd + + def show + @setting = Fluentd::Setting::InSyslog.new({ + bind: "0.0.0.0", + port: 5140, + }) + end + + def finish + @setting = Fluentd::Setting::InSyslog.new(setting_params) + unless @setting.valid? + return render "show" + end + + @fluentd.agent.config_append @setting.to_conf + if @fluentd.agent.running? + unless @fluentd.agent.restart + @setting.errors.add(:base, @fluentd.agent.log_tail(1).first) + return render "show" + end + end + redirect_to fluentd_setting_path(@fluentd) + end + + private + + def setting_params + params.require(:fluentd_setting_in_syslog).permit(*Fluentd::Setting::InSyslog::KEYS) + end + +end diff --git a/app/models/fluentd/setting/in_syslog.rb b/app/models/fluentd/setting/in_syslog.rb new file mode 100644 index 0000000..897f5bf --- /dev/null +++ b/app/models/fluentd/setting/in_syslog.rb @@ -0,0 +1,28 @@ +class Fluentd + module Setting + class InSyslog + include ActiveModel::Model + include Common + + KEYS = [ + :port, :bind, :tag, :types + ].freeze + + attr_accessor(*KEYS) + + validates :tag, presence: true + + def to_conf + <<-XML.strip_heredoc.gsub(/^[ ]*\n/m, "") + + type syslog + #{print_if_present :tag} + #{print_if_present :bind} + #{print_if_present :port} + #{print_if_present :types} + + XML + end + end + end +end diff --git a/app/views/fluentd/settings/in_syslog/_form.html.haml b/app/views/fluentd/settings/in_syslog/_form.html.haml new file mode 100644 index 0000000..86a5912 --- /dev/null +++ b/app/views/fluentd/settings/in_syslog/_form.html.haml @@ -0,0 +1,19 @@ +- @setting.errors.full_messages.each do |msg| + = msg + += form_for(@setting, url: finish_fluentd_setting_in_syslog_path(@fluentd), html: {class: "ignore-rails-error-div"}) do |f| + .form-group + = f.label :tag + = f.text_field :tag + .form-group + = f.label :bind + = f.text_field :bind + .form-group + = f.label :port + = f.text_field :port + .form-group + = f.label :types + = f.text_field :types + = f.submit t('fluentd.common.finish') , class: "btn btn-lg btn-primary pull-right" + = f.submit t('terms.prev'), class: "btn btn-lg btn-default", name: "back" + diff --git a/app/views/fluentd/settings/in_syslog/show.html.haml b/app/views/fluentd/settings/in_syslog/show.html.haml new file mode 100644 index 0000000..d6967bd --- /dev/null +++ b/app/views/fluentd/settings/in_syslog/show.html.haml @@ -0,0 +1,6 @@ +- page_title t(".page_title") + +.well + = raw t('fluentd.settings.in_syslog.option_guide') + += render "form" diff --git a/app/views/fluentd/settings/show.html.haml b/app/views/fluentd/settings/show.html.haml index 761312f..dc99ae5 100644 --- a/app/views/fluentd/settings/show.html.haml +++ b/app/views/fluentd/settings/show.html.haml @@ -19,6 +19,10 @@ = link_to(fluentd_setting_in_tail_path(@fluentd)) do = icon('fa-file-text-o fa-lg') = t("fluentd.common.setup_in_tail") + %p + = link_to(fluentd_setting_in_syslog_path(@fluentd)) do + = icon('fa-file-text-o fa-lg') + = t("fluentd.common.setup_in_syslog") .col-lg-6 .panel.panel-default .panel-heading diff --git a/config/locales/translation_en.yml b/config/locales/translation_en.yml index 50fe057..e7d9f4c 100644 --- a/config/locales/translation_en.yml +++ b/config/locales/translation_en.yml @@ -93,6 +93,7 @@ en: config_file: Config file page_title: "%{label}" setup_in_tail: Setting file reading + setup_in_syslog: Setting Syslog readling setup_out_td: Setting Treasure Data writing setup_out_mongo: Setting MongoDB writing finish: Update config @@ -138,6 +139,11 @@ en: See also out_mongo plugin. show: page_title: Write to MongoDB setting + in_syslog: + option_guide: | + See also in_syslog Plugin page. + show: + page_title: Syslog読み込み設定 in_tail_option_guide: | See in_tail Plugin or Fluentular for more details. diff --git a/config/locales/translation_ja.yml b/config/locales/translation_ja.yml index 71e05df..904fa28 100644 --- a/config/locales/translation_ja.yml +++ b/config/locales/translation_ja.yml @@ -93,6 +93,7 @@ ja: config_file: 設定ファイル page_title: "%{label}" setup_in_tail: ファイル読み込みの設定 + setup_in_syslog: syslog読み込みの設定 setup_out_td: Treasure Dataへの書き出し設定 setup_out_mongo: MongoDBへの書き出し設定 finish: 設定する @@ -139,6 +140,11 @@ ja: out_mongoプラグインの解説もご参照ください。 show: page_title: MongoDB書き出し設定 + in_syslog: + option_guide: | + in_syslogプラグイン解説ページもご参照ください。 + show: + page_title: Syslog読み込み設定 in_tail_option_guide: | in_tailプラグインの解説ページFluentularもご参照ください。 diff --git a/config/routes.rb b/config/routes.rb index 089ab61..788b1ce 100644 --- a/config/routes.rb +++ b/config/routes.rb @@ -18,6 +18,10 @@ Rails.application.routes.draw do post "finish" end + resource :in_syslog, only: ["show"], module: :settings, controller: :in_syslog do + post "finish" + end + resource :out_mongo, only: ["show"], module: :settings, controller: :out_mongo do post "finish" end