app/controllers/api/config_definitions_controller.rb in fluentd-ui-1.0.0.alpha.3 vs app/controllers/api/config_definitions_controller.rb in fluentd-ui-1.0.0.beta.1

- old
+ new

@@ -20,36 +20,60 @@ end target_class = Fluentd::Setting.const_get("#{prefix}_#{name}".classify) target = target_class.new - common_options = target.common_options.map do |key| - h = { - name: key, - type: target.column_type(key), - desc: target.desc(key), - default: target.default(key) + common_options = build_options(target, target.common_options) + advanced_options = build_options(target, target.advanced_options) + + options = { + type: type, + name: name, + commonOptions: common_options, + advancedOptions: advanced_options + } + + if type == "input" && ["forward", "syslog"].include?(name) + transport = target.class._sections[:transport] + transport_common_options = build_options(transport, target.transport_common_options) + transport_advanced_options = build_options(transport, target.transport_advanced_options) + options[:transport] = { + commonOptions: transport_common_options, + advancedOptions: transport_advanced_options } - h[:list] = target.list_of(key) if target.column_type(key) == :enum - h end - advanced_options = target.advanced_options.map do |key| + if type == "output" && name == "forward" + tls_options = build_options(target, target.tls_options) + options[:tlsOptions] = tls_options + end + + if target.respond_to?(:aws_credential_options) + aws_credential_options = build_options(target, target.aws_credential_options) + options[:awsCredentialOptions] = { + simple: aws_credential_options + } + target.aws_credential_sections.each do |key| + section = target._sections[key] + new_key = key.to_s.camelize(:lower).to_sym + options[:awsCredentialOptions][new_key] = build_options(section, section._types.keys) + end + end + + render json: options + end + + private + + def build_options(target, keys) + keys.map do |key| h = { name: key, type: target.column_type(key), desc: target.desc(key), default: target.default(key) } h[:list] = target.list_of(key) if target.column_type(key) == :enum h end - - options = { - type: type, - name: name, - commonOptions: common_options, - advancedOptions: advanced_options - } - render json: options end end