fluentd-ui/app/models/concerns/fluentd/setting/plugin_parameter.rb
Kenji Okimoto f6a3d9de3d Add methods to support parse section and format section
Signed-off-by: Kenji Okimoto <okimoto@clear-code.com>
2018-06-07 16:56:55 +09:00

91 lines
2.1 KiB
Ruby

class Fluentd
module Setting
module PluginParameter
extend ActiveSupport::Concern
include Fluentd::Setting::Configurable
def column_type(name)
self.class._types[name]
end
def list_of(name)
self.class._list[name]
end
def common_options
[]
end
def advanced_options
all_options - common_options - hidden_options
end
def hidden_options
[]
end
def all_options
self.class._types.keys + self.class._sections.keys
end
def have_parse_section?
self.class._sections.key?(:parse)
end
def have_format_section?
self.class._sections.key?(:format)
end
def create_parser
return unless have_parse_section?
parser_class = Fluentd::Setting.const_get("parser_#{parse_type}".classify)
parser_class.new(parse["0"].except("type"))
end
def create_formatter
return unless have_format_section?
formatter_class = Fluentd::Setting.const_get("formatter_#{format_type}".classify)
formatter_class.new(format["0"].except("type"))
end
def reformat_value(name, value)
type = column_type(name)
type_name = if type.is_a?(Fluentd::Setting::Type::Time)
:time
else
type
end
Fluent::Config::REFORMAT_VALUE.call(type_name, value)
end
module ClassMethods
def column_type(name)
self._types[name]
end
def list_of(name)
self._list[name]
end
def permit_params
self.new # init
keys = self._types.keys
self._sections.each do |key, section|
keys << _permit_section(key, section)
end
keys
end
def _permit_section(key, section)
keys = { key => section._types.keys }
section._sections.each do |_key, _section|
keys << _permit_section(_key, _section)
end
keys
end
end
end
end
end