mirror of
https://github.com/fluent/fluentd-ui.git
synced 2025-08-12 09:17:05 +02:00
122 lines
3.0 KiB
Ruby
122 lines
3.0 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 desc(name)
|
|
self.class._descriptions[name]
|
|
end
|
|
|
|
def default(name)
|
|
reformat_value(name, self.class._defaults[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_buffer_section?
|
|
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
|
|
|
|
def have_format_section?
|
|
self.class._sections.key?(:format)
|
|
end
|
|
|
|
def create_buffer
|
|
return unless have_buffer_section?
|
|
buffer_class = Fluentd::Setting.const_get("buffer_#{buffer_type}".classify)
|
|
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)
|
|
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)
|
|
return value if type.nil? # name == :time_key
|
|
return value if type == :enum
|
|
return value if type == :regexp
|
|
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
|