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
|
hash
|
||||||
end
|
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
|
def write_to_file
|
||||||
return unless Fluentd.instance
|
return unless Fluentd.instance
|
||||||
Fluentd.instance.agent.config_write formatted
|
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