Module: Fluentd::Setting::RegistryLoader::ClassMethods

Defined in:
app/models/concerns/fluentd/setting/registry_loader.rb

Instance Method Summary collapse

Instance Method Details

#define_all_attributes(section_name) ⇒ Object



7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
# File 'app/models/concerns/fluentd/setting/registry_loader.rb', line 7

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