Loading manifests/virtual.pp +14 −10 Changes for manifests/virtual.pp: 14 added lines, 10 removed lines. Original line number Diff line number Diff line Loading @@ -5,9 +5,9 @@ # === Parameters # # [*name*] - name of address postfix will lookup. See virtual(8). # [*destination*] - where the emails will be delivered to. See virtual(8). # [*destination*] - a list of destinations where the emails will be delivered to. See virtual(8). # [*ensure*] - present/absent, defaults to present. # [*file*] - A string defining the location of the pre-hash map. # [*file*] - a string defining the location of the pre-hash map. # # === Requires # Loading @@ -21,8 +21,7 @@ # node "toto.example.com" { # # include postfix # # postfix::hash { "/etc/postfix/virtual": # # postfix::hash { "/etc/postfix/virtual": # ensure => present, # } # postfix::config { "virtual_alias_maps": Loading @@ -30,24 +29,29 @@ # } # postfix::virtual { "user@example.com": # ensure => present, # destination => "root", # destination => ['root', 'postmaster'], # } # } # define postfix::virtual ( String $destination, Variant[String, Array[String]] $destination, Stdlib::Absolutepath $file='/etc/postfix/virtual', Enum['present', 'absent'] $ensure='present' ) { include ::postfix::augeas $dest_sets = [$destination].flatten.map |$i, $d| { $idx = $i+1 "set \$entry/destination[${idx}] '${d}'" } case $ensure { 'present': { $changes = [ "set pattern[. = '${name}'] '${name}'", # TODO: support more than one destination "set pattern[. = '${name}']/destination '${destination}'", ] "defnode entry pattern[. = '${name}'] '${name}'", 'rm $entry/destination', $dest_sets, ].flatten } 'absent': { Loading spec/defines/postfix_virtual_spec.rb +27 −5 Changes for spec/defines/postfix_virtual_spec.rb: 27 added lines, 5 removed lines. Original line number Diff line number Diff line Loading @@ -26,7 +26,7 @@ describe 'postfix::virtual' do context 'when sending wrong type for destination' do let (:params) { { :destination => ['bar'], :destination => true, } } it 'should fail' do Loading Loading @@ -98,8 +98,9 @@ describe 'postfix::virtual' do :incl => '/etc/postfix/virtual', :lens => 'Postfix_Virtual.lns', :changes => [ "set pattern[. = 'foo'] 'foo'", "set pattern[. = 'foo']/destination 'bar'", "defnode entry pattern[. = 'foo'] 'foo'", "rm $entry/destination", "set $entry/destination[1] 'bar'", ]) } end Loading @@ -116,8 +117,29 @@ describe 'postfix::virtual' do :incl => '/tmp/virtual', :lens => 'Postfix_Virtual.lns', :changes => [ "set pattern[. = 'foo'] 'foo'", "set pattern[. = 'foo']/destination 'bar'", "defnode entry pattern[. = 'foo'] 'foo'", "rm $entry/destination", "set $entry/destination[1] 'bar'", ]) } end context 'when passing destination as array' do let (:params) { { :destination => ['bar', 'baz'], :file => '/tmp/virtual', :ensure => 'present', } } it { is_expected.to contain_class('postfix::augeas') } it { is_expected.to contain_augeas('Postfix virtual - foo').with( :incl => '/tmp/virtual', :lens => 'Postfix_Virtual.lns', :changes => [ "defnode entry pattern[. = 'foo'] 'foo'", "rm $entry/destination", "set $entry/destination[1] 'bar'", "set $entry/destination[2] 'baz'", ]) } end Loading Loading
manifests/virtual.pp +14 −10 Changes for manifests/virtual.pp: 14 added lines, 10 removed lines. Original line number Diff line number Diff line Loading @@ -5,9 +5,9 @@ # === Parameters # # [*name*] - name of address postfix will lookup. See virtual(8). # [*destination*] - where the emails will be delivered to. See virtual(8). # [*destination*] - a list of destinations where the emails will be delivered to. See virtual(8). # [*ensure*] - present/absent, defaults to present. # [*file*] - A string defining the location of the pre-hash map. # [*file*] - a string defining the location of the pre-hash map. # # === Requires # Loading @@ -21,8 +21,7 @@ # node "toto.example.com" { # # include postfix # # postfix::hash { "/etc/postfix/virtual": # # postfix::hash { "/etc/postfix/virtual": # ensure => present, # } # postfix::config { "virtual_alias_maps": Loading @@ -30,24 +29,29 @@ # } # postfix::virtual { "user@example.com": # ensure => present, # destination => "root", # destination => ['root', 'postmaster'], # } # } # define postfix::virtual ( String $destination, Variant[String, Array[String]] $destination, Stdlib::Absolutepath $file='/etc/postfix/virtual', Enum['present', 'absent'] $ensure='present' ) { include ::postfix::augeas $dest_sets = [$destination].flatten.map |$i, $d| { $idx = $i+1 "set \$entry/destination[${idx}] '${d}'" } case $ensure { 'present': { $changes = [ "set pattern[. = '${name}'] '${name}'", # TODO: support more than one destination "set pattern[. = '${name}']/destination '${destination}'", ] "defnode entry pattern[. = '${name}'] '${name}'", 'rm $entry/destination', $dest_sets, ].flatten } 'absent': { Loading
spec/defines/postfix_virtual_spec.rb +27 −5 Changes for spec/defines/postfix_virtual_spec.rb: 27 added lines, 5 removed lines. Original line number Diff line number Diff line Loading @@ -26,7 +26,7 @@ describe 'postfix::virtual' do context 'when sending wrong type for destination' do let (:params) { { :destination => ['bar'], :destination => true, } } it 'should fail' do Loading Loading @@ -98,8 +98,9 @@ describe 'postfix::virtual' do :incl => '/etc/postfix/virtual', :lens => 'Postfix_Virtual.lns', :changes => [ "set pattern[. = 'foo'] 'foo'", "set pattern[. = 'foo']/destination 'bar'", "defnode entry pattern[. = 'foo'] 'foo'", "rm $entry/destination", "set $entry/destination[1] 'bar'", ]) } end Loading @@ -116,8 +117,29 @@ describe 'postfix::virtual' do :incl => '/tmp/virtual', :lens => 'Postfix_Virtual.lns', :changes => [ "set pattern[. = 'foo'] 'foo'", "set pattern[. = 'foo']/destination 'bar'", "defnode entry pattern[. = 'foo'] 'foo'", "rm $entry/destination", "set $entry/destination[1] 'bar'", ]) } end context 'when passing destination as array' do let (:params) { { :destination => ['bar', 'baz'], :file => '/tmp/virtual', :ensure => 'present', } } it { is_expected.to contain_class('postfix::augeas') } it { is_expected.to contain_augeas('Postfix virtual - foo').with( :incl => '/tmp/virtual', :lens => 'Postfix_Virtual.lns', :changes => [ "defnode entry pattern[. = 'foo'] 'foo'", "rm $entry/destination", "set $entry/destination[1] 'bar'", "set $entry/destination[2] 'baz'", ]) } end Loading