Module: Fluentd::Setting::SectionParser::ClassMethods

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

Instance Method Summary collapse

Instance Method Details

#parse_section(name, definition) ⇒ 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
35
36
37
38
39
# File 'app/models/concerns/fluentd/setting/section_parser.rb', line 7

def parse_section(name, definition)
  config_section(name, **definition.slice(:required, :multi, :alias)) do
    if %i(buffer storage parse format).include?(name)
      define_all_attributes(name)
    else
      definition.except(:section, :argument, :required, :multi, :alias).each do |_param_name, _definition|
        if _definition[:section]
          parse_section(_param_name, _definition)
        else
          if self._types.key?(_param_name)
            if _definition.key?(:default) && self._required[_param_name] && _definition[:default].present?
              self._defaults[_param_name] = _definition[:default]
              self._required[_param_name] = false
            end
            self._secrets[_param_name] = _definition[:secret] if _definition.key?(:secret)
            self._aliases[name] = _definition[:alias] if _definition.key?(:alias)
            self._deprecated_params[name] = _definition[:deprecated] if _definition.key?(:deprecated)
            self._obsoleted_params[name] = _definition[:obsoleted] if _definition.key?(:obsoleted)
            self._list[name] = _definition[:list] if _definition.key?(:list)
            self._value_types[name] = _definition[:value_types] if _definition.key?(:value_types)
            self._symbolize_keys = _definition[:symbolize_keys] if _definition.key?(:symbolize_keys)
          else
            if _definition[:argument]
              config_argument(_param_name, _definition[:type], **_definition.except(:type))
            else
              config_param(_param_name, _definition[:type], **_definition.except(:type))
            end
          end
        end
      end
    end
  end
end