From 756d4ef44fe0c57bbe17e210c54b429c644c222b Mon Sep 17 00:00:00 2001 From: David Hayes Date: Fri, 4 Dec 2015 11:33:40 +0000 Subject: [PATCH 1/2] dns::zone - Add support for delegation-only zone types --- manifests/zone.pp | 13 ++++++++++--- templates/zone.erb | 2 +- 2 files changed, 11 insertions(+), 4 deletions(-) diff --git a/manifests/zone.pp b/manifests/zone.pp index dfbae160..cd552691 100644 --- a/manifests/zone.pp +++ b/manifests/zone.pp @@ -127,9 +127,9 @@ # # [*zone_type*] # The type of DNS zone being described. Can be one of `master`, `slave` -# (requires *slave_masters* to be set), or `forward` (requires both -# *allow_forwarder* and *forward_policy* to be set). Defaults to -# `master`. +# (requires *slave_masters* to be set), `delegation-only`, or `forward` +# (requires both *allow_forwarder* and *forward_policy* to be set). +# Defaults to `master`. # define dns::zone ( $soa = $::fqdn, @@ -170,6 +170,13 @@ default => $name } + validate_string($zone_type) + $valid_zone_type_array = ['master', 'slave', 'forward', 'delegation-only'] + if !member($valid_zone_type_array, $zone_type) { + $valid_zone_type_array_str = join($valid_zone_type_array, ',') + fail("The zone_type must be one of [${valid_zone_type_array}]") + } + $zone_file = "${dns::server::params::data_dir}/db.${name}" $zone_file_stage = "${zone_file}.stage" diff --git a/templates/zone.erb b/templates/zone.erb index 321d0d6a..722fb5d5 100644 --- a/templates/zone.erb +++ b/templates/zone.erb @@ -10,7 +10,7 @@ type <%= @zone_type %>; <%- end -%> }; <% end -%> -<% if @zone_type != 'forward' -%> +<% if (@zone_type != 'forward') && (@zone_type != 'delegation-only')-%> file "<%= @zone_file %>"; <% end -%> <% if @zone_type == 'slave' -%> From afb06ad53a999089106732c67aec45c600dd852e Mon Sep 17 00:00:00 2001 From: David Hayes Date: Fri, 4 Dec 2015 11:38:57 +0000 Subject: [PATCH 2/2] Add rspec tests for delegation-only dns::zone --- spec/defines/dns__zone_spec.rb | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/spec/defines/dns__zone_spec.rb b/spec/defines/dns__zone_spec.rb index 5df5f4d9..3dd84297 100644 --- a/spec/defines/dns__zone_spec.rb +++ b/spec/defines/dns__zone_spec.rb @@ -76,6 +76,18 @@ end end + context 'with a delegation-only zone' do + let :params do + { :zone_type => 'delegation-only' + } + end + it 'should only have a type delegation-only entry' do + should contain_concat__fragment('named.conf.local.test.com.include'). + with_content(/zone \"test.com\" \{\s*type delegation-only;\s*\}/) + end + end + + context 'with a forward zone' do let :params do { :allow_transfer => ['123.123.123.123'],