diff --git a/manifests/plugin/protocols.pp b/manifests/plugin/protocols.pp
index fafa8d9a1..50b3e96d0 100644
--- a/manifests/plugin/protocols.pp
+++ b/manifests/plugin/protocols.pp
@@ -1,8 +1,8 @@
# See http://collectd.org/documentation/manpages/collectd.conf.5.shtml#plugin_protocols
class collectd::plugin::protocols (
- $ensure = 'present',
- Boolean $ignoreselected = false,
- Array $values = []
+ $ensure = 'present',
+ Optional[Boolean] $ignoreselected = undef,
+ Array $values = []
) {
include collectd
diff --git a/spec/classes/collectd_plugin_protocols_spec.rb b/spec/classes/collectd_plugin_protocols_spec.rb
index 0e5d2efe0..57344de28 100644
--- a/spec/classes/collectd_plugin_protocols_spec.rb
+++ b/spec/classes/collectd_plugin_protocols_spec.rb
@@ -32,6 +32,30 @@
end
end
+ describe 'ignoreselected' do
+ context ':ignoreselected => false' do
+ let :params do
+ {
+ values: %w[protocol1 protocol2],
+ ignoreselected: false
+ }
+ end
+
+ it { is_expected.to contain_file('protocols.load').with_content(%r{\n\s*Value "protocol1"\n\s*Value "protocol2"\n\s*IgnoreSelected false\n}) }
+ end
+
+ context ':ignoreselected => true' do
+ let :params do
+ {
+ values: %w[protocol1 protocol2],
+ ignoreselected: true
+ }
+ end
+
+ it { is_expected.to contain_file('protocols.load').with_content(%r{\n\s*Value "protocol1"\n\s*Value "protocol2"\n\s*IgnoreSelected true\n}) }
+ end
+ end
+
context ':ensure => absent' do
let :params do
{ ensure: 'absent' }
diff --git a/templates/plugin/protocols.conf.erb b/templates/plugin/protocols.conf.erb
index acdee21ca..90cad6ae9 100644
--- a/templates/plugin/protocols.conf.erb
+++ b/templates/plugin/protocols.conf.erb
@@ -1,16 +1,16 @@
<% if @values -%>
-<%
+<%
if @values
- @values.each do |value|
+ @values.each do |value|
-%>
Value "<%= value %>"
<%
end
end
-%>
-<% if @ignore_selected != nil -%>
- IgnoreSelected <%= @ignore_selected %>
+<% unless @ignoreselected == nil -%>
+ IgnoreSelected <%= @ignoreselected %>
<% end -%>
<% end -%>