From b14da4174fea2eb5928b81320fabde7b22c0ac4a Mon Sep 17 00:00:00 2001 From: Kenji Okimoto Date: Fri, 8 Jun 2018 09:40:00 +0900 Subject: [PATCH] Support storage section Signed-off-by: Kenji Okimoto --- app/controllers/concerns/setting_concern.rb | 2 ++ .../fluentd/setting/plugin_parameter.rb | 10 +++++++++ app/models/fluentd/setting/storage_local.rb | 22 +++++++++++++++++++ app/views/shared/settings/_form.html.haml | 3 +++ .../shared/settings/_storage_form.html.haml | 7 ++++++ 5 files changed, 44 insertions(+) create mode 100644 app/models/fluentd/setting/storage_local.rb create mode 100644 app/views/shared/settings/_storage_form.html.haml diff --git a/app/controllers/concerns/setting_concern.rb b/app/controllers/concerns/setting_concern.rb index 32854a9..c633601 100644 --- a/app/controllers/concerns/setting_concern.rb +++ b/app/controllers/concerns/setting_concern.rb @@ -11,6 +11,7 @@ module SettingConcern def show @setting = target_class.new(initial_params) @buffer = @setting.create_buffer + @storage = @setting.create_storage @parser = @setting.create_parser @formatter = @setting.create_formatter @_used_param = {} @@ -22,6 +23,7 @@ module SettingConcern owned_keys = %i(parse_type format_type) @setting = target_class.new(initial_params.merge(params.permit(*owned_keys).slice(*owned_keys))) @buffer = @setting.create_buffer + @storage = @setting.create_storage @parser = @setting.create_parser @formatter = @setting.create_formatter render "shared/settings/show" diff --git a/app/models/concerns/fluentd/setting/plugin_parameter.rb b/app/models/concerns/fluentd/setting/plugin_parameter.rb index f388525..26edeff 100644 --- a/app/models/concerns/fluentd/setting/plugin_parameter.rb +++ b/app/models/concerns/fluentd/setting/plugin_parameter.rb @@ -33,6 +33,10 @@ class Fluentd self.class._sections.key?(:buffer) end + def have_storage_section? + self.class._sections.key?(:storage) + end + def have_parse_section? self.class._sections.key?(:parse) end @@ -47,6 +51,12 @@ class Fluentd buffer_class.new(buffer["0"].except("type")) end + def create_storage + return unless have_storage_section? + storage_class = Fluentd::Setting.const_get("storage_#{storage_type}".classify) + storage_class.new(storage["0"].except("type")) + end + def create_parser return unless have_parse_section? parser_class = Fluentd::Setting.const_get("parser_#{parse_type}".classify) diff --git a/app/models/fluentd/setting/storage_local.rb b/app/models/fluentd/setting/storage_local.rb new file mode 100644 index 0000000..a6cc0f1 --- /dev/null +++ b/app/models/fluentd/setting/storage_local.rb @@ -0,0 +1,22 @@ +class Fluentd + module Setting + class StorageLocal + include Fluentd::Setting::Plugin + + register_plugin("storage", "local") + + def self.initial_params + {} + end + + def common_options + [ + :path, + :mode, + :dir_mode, + :pretty_print + ] + end + end + end +end diff --git a/app/views/shared/settings/_form.html.haml b/app/views/shared/settings/_form.html.haml index 514328d..d81f899 100644 --- a/app/views/shared/settings/_form.html.haml +++ b/app/views/shared/settings/_form.html.haml @@ -8,6 +8,9 @@ - if @setting.have_buffer_section? = render "shared/settings/buffer_form", form: form, buffer: @buffer + - if @setting.have_storage_section? + = render "shared/settings/storage_form", form: form, storage: @storage + - if @setting.have_parse_section? = render "shared/settings/parser_form", form: form, parser: @parser diff --git a/app/views/shared/settings/_storage_form.html.haml b/app/views/shared/settings/_storage_form.html.haml new file mode 100644 index 0000000..e91651f --- /dev/null +++ b/app/views/shared/settings/_storage_form.html.haml @@ -0,0 +1,7 @@ +#storage-section.form-group.card.bg-light.mb-3 + .card-body + = form.label(:storage_type, "Storage") + = form.select(:storage_type, Fluent::Plugin::STORAGE_REGISTRY.map.keys, {}, { class: "storage form-control" }) + = form.fields("storage[0]", model: storage, class: ".form-group", builder: FluentdFormBuilder) do |storage_form| + - storage_form.object.common_options.each do |key| + = storage_form.field(key)