app/models/concerns/fluentd/setting/registry_loader.rb
class Fluentd
module Setting
module RegistryLoader
extend ActiveSupport::Concern
module ClassMethods
def define_all_attributes(section_name)
registry = case section_name
when :buffer
Fluent::Plugin::BUFFER_REGISTRY
when :storage
Fluent::Plugin::STORAGE_REGISTRY
when :parse
Fluent::Plugin::PARSER_REGISTRY
when :format
Fluent::Plugin::FORMATTER_REGISTRY
end
registry.map.each do |key, plugin_class|
plugin_class.ancestors.reverse_each do |klass|
next unless klass.respond_to?(:dump_config_definition)
begin
dumped_config_definition = klass.dump_config_definition
self._dumped_config[klass.name] = dumped_config_definition unless dumped_config_definition.empty?
rescue NoMethodError
end
end
end
attribute(:type, :string)
self._types[:type] = :string
self._dumped_config.values.map(&:keys).flatten.uniq.each do |name|
attribute(name, :object)
self._types[name] = :object
end
end
end
end
end
end