diff --git a/manifests/init.pp b/manifests/init.pp index 24aa91352..3374be986 100644 --- a/manifests/init.pp +++ b/manifests/init.pp @@ -24,6 +24,7 @@ $service_ensure = running, $globaloptions = '', $omapi_port = undef, + $authoritative = true, $extra_config = '', $dhcp_dir = $dhcp::params::dhcp_dir, $packagename = $dhcp::params::packagename, @@ -52,6 +53,7 @@ validate_array($nameservers) validate_array($ntpservers) + validate_bool($authoritative) if $pxeserver or $pxefilename { if ! $pxeserver or ! $pxefilename { diff --git a/spec/classes/dhcp_spec.rb b/spec/classes/dhcp_spec.rb index a315c3c22..aa12f6467 100644 --- a/spec/classes/dhcp_spec.rb +++ b/spec/classes/dhcp_spec.rb @@ -67,6 +67,10 @@ is_expected.to contain_concat__fragment('dhcp-conf-header') end + it 'contains authoritative statement' do + is_expected.to contain_concat__fragment('dhcp-conf-header').with_content(/^authoritative/) + end + context 'omapi_port => 7911' do let :params do default_params.merge( @@ -79,6 +83,19 @@ is_expected.to contain_concat__fragment('dhcp-conf-header') end end + + context 'authoritative => false' do + let :params do + default_params.merge( + interfaces: ['eth0'], + authoritative: false + ) + end + + it 'contains not authoritative statement' do + is_expected.to contain_concat__fragment('dhcp-conf-header').with_content(/^not authoritative/) + end + end end context 'ntp' do diff --git a/templates/dhcpd.conf-header.erb b/templates/dhcpd.conf-header.erb index 9f12b2afe..1e0d4fd43 100644 --- a/templates/dhcpd.conf-header.erb +++ b/templates/dhcpd.conf-header.erb @@ -2,7 +2,11 @@ # ---------- # dhcpd.conf # ---------- +<% if @authoritative -%> authoritative; +<% else -%> +not authoritative; +<% end -%> <% if @omapi_port -%> omapi-port <%= @omapi_port %>; <% end -%>