mirror of
https://github.com/fluent/fluentd-ui.git
synced 2025-08-08 07:17:07 +02:00
Add Fluentd::Setting::Config#delete_element
Signed-off-by: Kenji Okimoto <okimoto@clear-code.com>
This commit is contained in:
parent
1657abf6eb
commit
ef56a23d1d
@ -63,6 +63,41 @@ class Fluentd
|
||||
hash
|
||||
end
|
||||
|
||||
def delete_element(name, arg, element)
|
||||
if name == "label"
|
||||
label_section = fl_config.elements(name: name, arg: arg).first
|
||||
original_size = label_section.elements.size
|
||||
remaining_elements = label_section.elements.reject do |e|
|
||||
element == e
|
||||
end
|
||||
if remaining_elements.empty?
|
||||
remaining_elements = fl_config.elements.reject do |e|
|
||||
label_section == e
|
||||
end
|
||||
fl_config.elements = remaining_elements
|
||||
return element
|
||||
else
|
||||
label_section.elements = remaining_elements
|
||||
if original_size == label_section.elements.size
|
||||
return nil
|
||||
else
|
||||
return element
|
||||
end
|
||||
end
|
||||
else
|
||||
original_size = fl_config.elements.size
|
||||
remaining_elements = fl_config.elements.reject do |e|
|
||||
element == e
|
||||
end
|
||||
fl_config.elements = remaining_elements
|
||||
if original_size == fl_config.elements.size
|
||||
return nil
|
||||
else
|
||||
return element
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
def write_to_file
|
||||
return unless Fluentd.instance
|
||||
Fluentd.instance.agent.config_write formatted
|
||||
|
98
test/models/fluentd/setting/config_test.rb
Normal file
98
test/models/fluentd/setting/config_test.rb
Normal file
@ -0,0 +1,98 @@
|
||||
require "test_helper"
|
||||
|
||||
class FluentdConfigTest < ActiveSupport::TestCase
|
||||
def create_config(fixture_name)
|
||||
::Fluentd::Setting::Config.new(fixture_path(fixture_name))
|
||||
end
|
||||
|
||||
sub_test_case "#delete_element" do
|
||||
test "delete a source" do
|
||||
config = create_config("config/simple.conf")
|
||||
element = config.elements(name: "source").first
|
||||
config.delete_element("source", nil, element)
|
||||
assert_equal(config.formatted.strip, <<CONFIG.chomp)
|
||||
<filter dummy>
|
||||
@type stdout
|
||||
</filter>
|
||||
|
||||
<match dummy>
|
||||
@type stdout
|
||||
</match>
|
||||
CONFIG
|
||||
end
|
||||
|
||||
test "delete a filter" do
|
||||
config = create_config("config/simple.conf")
|
||||
element = config.elements(name: "filter").first
|
||||
config.delete_element("filter", nil, element)
|
||||
assert_equal(config.formatted.strip, <<CONFIG.chomp)
|
||||
<source>
|
||||
@type dummy
|
||||
tag dummy
|
||||
</source>
|
||||
|
||||
<match dummy>
|
||||
@type stdout
|
||||
</match>
|
||||
CONFIG
|
||||
end
|
||||
|
||||
test "delete a match" do
|
||||
config = create_config("config/simple.conf")
|
||||
element = config.elements(name: "match").first
|
||||
config.delete_element("match", nil, element)
|
||||
assert_equal(config.formatted.strip, <<CONFIG.chomp)
|
||||
<source>
|
||||
@type dummy
|
||||
tag dummy
|
||||
</source>
|
||||
|
||||
<filter dummy>
|
||||
@type stdout
|
||||
</filter>
|
||||
CONFIG
|
||||
end
|
||||
|
||||
test "delete all elements under the label" do
|
||||
config = create_config("config/multi-label.conf")
|
||||
input = config.elements(name: "label", arg: "@INPUT").first
|
||||
input.elements.each do |element|
|
||||
config.delete_element("label", "@INPUT", element)
|
||||
end
|
||||
assert_equal(config.formatted.strip, <<CONFIG.chomp)
|
||||
<source>
|
||||
@type dummy
|
||||
tag dummy1
|
||||
@label @INPUT
|
||||
</source>
|
||||
|
||||
<source>
|
||||
@type dummy
|
||||
tag dummy2
|
||||
@label @INPUT
|
||||
</source>
|
||||
|
||||
<label @MAIN>
|
||||
<filter dummy1>
|
||||
@type stdout
|
||||
</filter>
|
||||
<filter dummy2>
|
||||
@type stdout
|
||||
</filter>
|
||||
<match dummy1>
|
||||
@type stdout
|
||||
</match>
|
||||
<match dummy2>
|
||||
@type stdout
|
||||
</match>
|
||||
</label>
|
||||
CONFIG
|
||||
end
|
||||
|
||||
test "cannot delete specified element" do
|
||||
config = create_config("config/simple.conf")
|
||||
element = ::Fluent::Config::Element.new("source", nil, { :@type => "dummy", :tag => "dummy" }, [])
|
||||
assert_nil(config.delete_element("source", nil, element))
|
||||
end
|
||||
end
|
||||
end
|
Loading…
Reference in New Issue
Block a user