diff options
-rw-r--r-- | README.md | 8 | ||||
-rw-r--r-- | manifests/failover.pp | 4 | ||||
-rw-r--r-- | manifests/server/config.pp | 7 | ||||
-rw-r--r-- | spec/acceptance/dhcp_failover_spec.rb | 38 | ||||
-rw-r--r-- | spec/defines/dhcp_failover_spec.rb | 24 | ||||
-rw-r--r-- | templates/subnet.conf.erb | 16 |
6 files changed, 75 insertions, 22 deletions
@@ -72,7 +72,7 @@ Creates a subnet: dhcp::subnet {"10.27.20.0": ensure => present, broadcast => "10.27.20.255", - other_opts => ['filename "pxelinux.0";', 'next-server 10.27.10.1;'], + other_opts => ['filename "pxelinux.0"', 'next-server 10.27.10.1'], } ## dhcp::failover @@ -95,9 +95,9 @@ Creates a failover peer: broadcast => "10.27.20.255", other_opts => [ 'pool {', - 'failover peer "my-failover-peer";', - 'max-lease-time 1800;', - 'range 10.27.20.100 10.27.20.250;', + 'failover peer "my-failover-peer"', + 'max-lease-time 1800', + 'range 10.27.20.100 10.27.20.250', '}', ], } diff --git a/manifests/failover.pp b/manifests/failover.pp index 6b465f2..cfcccb0 100644 --- a/manifests/failover.pp +++ b/manifests/failover.pp @@ -23,7 +23,7 @@ define dhcp::failover( default => $ensure, } - file {"${dhcp::params::config_dir}/failover/${name}.conf": + file {"${dhcp::params::config_dir}/failover.d/${name}.conf": ensure => $_ensure, content => template("${module_name}/failover.conf.erb"), group => 'root', @@ -34,7 +34,7 @@ define dhcp::failover( concat::fragment {"dhcp.failover.${name}": ensure => $ensure, - content => "include \"${dhcp::params::config_dir}/failover/${name}.conf\";\n", + content => "include \"${dhcp::params::config_dir}/failover.d/${name}.conf\";\n", target => "${dhcp::params::config_dir}/dhcpd.conf", } diff --git a/manifests/server/config.pp b/manifests/server/config.pp index eb2efa1..68e2104 100644 --- a/manifests/server/config.pp +++ b/manifests/server/config.pp @@ -52,4 +52,11 @@ class dhcp::server::config { purge => true, force => true, } + + file {"${dhcp::params::config_dir}/failover.d": + ensure => directory, + recurse => true, + purge => true, + force => true, + } } diff --git a/spec/acceptance/dhcp_failover_spec.rb b/spec/acceptance/dhcp_failover_spec.rb new file mode 100644 index 0000000..5e93c67 --- /dev/null +++ b/spec/acceptance/dhcp_failover_spec.rb @@ -0,0 +1,38 @@ +require 'spec_helper_acceptance' + +describe 'dhcp::failover' do + describe 'with defaults' do + it 'should work with no error' do + pp = <<-EOS + class { 'dhcp::server': } + dhcp::failover {'my-failover': + peer_address => '1.1.1.1', + options => { + 'max-response-delay' => 30, + 'max-unacked-updates' => 10, + 'load balance max seconds' => 3, + 'mclt' => 1800, + 'split' => 128, + } + } + $ipaddr = split($::networking['interfaces']['eth0']['ip'], '[.]') + $sub = "${ipaddr[0]}.${ipaddr[1]}.${ipaddr[2]}" + dhcp::subnet {$::networking['interfaces']['eth0']['network']: + broadcast => "${sub}.255", + subnet_mask => $::networking['interfaces']['eth0']['netmask'], + domain_name => 'test.com', + other_opts => [ + "option domain-name-servers ${sub}.1, ${sub}.2", + 'option domain-search "test.com", "internal.test.com"', + 'pool {', + 'failover peer "my-failover"', + "range ${sub}.100 ${sub}.250", + '}', + ] + } + EOS + apply_manifest(pp, :catch_failures => true) + apply_manifest(pp, :catch_changes => true) + end + end +end diff --git a/spec/defines/dhcp_failover_spec.rb b/spec/defines/dhcp_failover_spec.rb index d8400b0..75b30fb 100644 --- a/spec/defines/dhcp_failover_spec.rb +++ b/spec/defines/dhcp_failover_spec.rb @@ -21,7 +21,7 @@ describe 'dhcp::failover' do it 'should fail' do expect { - should contain_file('/etc/dhcp/failover/failover-dhcp.conf') + should contain_file('/etc/dhcp/failover.d/failover-dhcp.conf') }.to raise_error(Puppet::Error, /"foo" does not match \["present", "absent"\]/) end end @@ -34,7 +34,7 @@ describe 'dhcp::failover' do it 'should fail' do expect { - should contain_file('/etc/dhcp/failover/failover-dhcp.conf') + should contain_file('/etc/dhcp/failover.d/failover-dhcp.conf') }.to raise_error(Puppet::Error, /true is not a string\./) end end @@ -47,7 +47,7 @@ describe 'dhcp::failover' do it 'should fail' do expect { - should contain_file('/etc/dhcp/failover/failover-dhcp.conf') + should contain_file('/etc/dhcp/failover.d/failover-dhcp.conf') }.to raise_error(Puppet::Error, /is not a valid IPv4 address\./) end end @@ -55,7 +55,7 @@ describe 'dhcp::failover' do context 'when not passing peer_address' do it 'should fail' do expect { - should contain_file('/etc/dhcp/failover/failover-dhcp.conf') + should contain_file('/etc/dhcp/failover.d/failover-dhcp.conf') }.to raise_error(Puppet::Error, /Must pass peer_address to Dhcp::Failover/) end end @@ -67,7 +67,7 @@ describe 'dhcp::failover' do it 'should fail' do expect { - should contain_file('/etc/dhcp/failover/failover-dhcp.conf') + should contain_file('/etc/dhcp/failover.d/failover-dhcp.conf') }.to raise_error(Puppet::Error, /true is not a string\./) end end @@ -79,7 +79,7 @@ describe 'dhcp::failover' do it 'should fail' do expect { - should contain_file('/etc/dhcp/failover/failover-dhcp.conf') + should contain_file('/etc/dhcp/failover.d/failover-dhcp.conf') }.to raise_error(Puppet::Error, /is not a valid IPv4 address\./) end end @@ -92,7 +92,7 @@ describe 'dhcp::failover' do it 'should fail' do expect { - should contain_file('/etc/dhcp/failover/failover-dhcp.conf') + should contain_file('/etc/dhcp/failover.d/failover-dhcp.conf') }.to raise_error(Puppet::Error, /Expected first argument to be an Integer/) end end @@ -105,7 +105,7 @@ describe 'dhcp::failover' do it 'should fail' do expect { - should contain_file('/etc/dhcp/failover/failover-dhcp.conf') + should contain_file('/etc/dhcp/failover.d/failover-dhcp.conf') }.to raise_error(Puppet::Error, /Expected first argument to be an Integer/) end end @@ -117,7 +117,7 @@ describe 'dhcp::failover' do :peer_address => '1.2.3.4', } } - it { should contain_file('/etc/dhcp/failover/failover-dhcp.conf').with( + it { should contain_file('/etc/dhcp/failover.d/failover-dhcp.conf').with( :ensure => 'file', :owner => 'root', :group => 'root' @@ -135,7 +135,7 @@ describe 'dhcp::failover' do /peer port 647;\n/ ) } it { should contain_concat__fragment('dhcp.failover.failover-dhcp').with({ - :content => "include \"/etc/dhcp/failover/failover-dhcp.conf\";\n", + :content => "include \"/etc/dhcp/failover.d/failover-dhcp.conf\";\n", :target => '/etc/dhcp/dhcpd.conf', })} end @@ -152,7 +152,7 @@ describe 'dhcp::failover' do }, } } - it { should contain_file('/etc/dhcp/failover/failover-dhcp.conf').with({ + it { should contain_file('/etc/dhcp/failover.d/failover-dhcp.conf').with({ :ensure => 'file', :owner => 'root', :group => 'root' @@ -183,7 +183,7 @@ describe 'dhcp::failover' do :role => 'secondary', } } - it { should contain_file('/etc/dhcp/failover/failover-dhcp.conf').with({ + it { should contain_file('/etc/dhcp/failover.d/failover-dhcp.conf').with({ :ensure => 'file', :owner => 'root', :group => 'root' diff --git a/templates/subnet.conf.erb b/templates/subnet.conf.erb index 11f9ed4..9592a4c 100644 --- a/templates/subnet.conf.erb +++ b/templates/subnet.conf.erb @@ -19,10 +19,18 @@ subnet <%= @name %> netmask <%= _netmask %> { scope.function_validate_re([_domain_name, '^\S+$']) -%> option domain-name "<%= _domain_name %>"; <% unless @other_opts.empty? -%> - <% if @other_opts.is_a?(Array) -%> -<%= @other_opts.collect! {|i| " #{i};"}.join("\n") %> - <% else -%> +<% +if @other_opts.is_a?(Array) + @other_opts.each do |i| + if i =~ /(\{|\})/ +-%> + <%= i %> +<%- else -%> + <%= i %>; +<% end -%> +<% end -%> +<% else -%> <%= @other_opts %>; - <% end -%> +<% end -%> <% end -%> } |