Issue #4780 has been updated by Peter Meier.
what I meant is:
<pre>
# cat test.pp
define deftest_4780::via_undef($ensure=present, $source=undef, $content=undef)
{
$config_file="/tmp/$name"
file { $config_file:
owner => "root",
group => "root",
mode => 0644,
ensure => $ensure,
source => $source,
content => $content,
}
}
deftest_4780::via_undef{'aa': }
# puppet --trace --debug test.pp
info: Loading facts in configured_ntp_servers
info: Loading facts in acpi_available
info: Loading facts in mountpoints
info: Loading facts in interfaces
info: Loading facts in selinux
info: Loading facts in mysql
info: Loading facts in sshkeys
info: Loading facts in vserver
info: Loading facts in xen
debug: Failed to load library 'rubygems' for feature 'rubygems'
debug: Puppet::Type::File::ProviderMicrosoft_windows: feature microsoft_windows
is missing
debug: Creating default schedules
debug: Puppet::Type::User::ProviderUser_role_add: file rolemod does not exist
debug: Failed to load library 'ldap' for feature 'ldap'
debug: Puppet::Type::User::ProviderLdap: feature ldap is missing
debug: Puppet::Type::User::ProviderPw: file pw does not exist
debug: Puppet::Type::User::ProviderDirectoryservice: file /usr/bin/dscl does
not exist
debug: /File[/var/lib/puppet/ssl/public_keys/foo.bar.ch.pem]: Autorequiring
File[/var/lib/puppet/ssl/public_keys]
debug: /File[/var/lib/puppet/ssl/public_keys]: Autorequiring
File[/var/lib/puppet/ssl]
debug: /File[/var/lib/puppet/ssl/certs/ca.pem]: Autorequiring
File[/var/lib/puppet/ssl/certs]
debug: /File[/var/lib/puppet/state/graphs]: Autorequiring
File[/var/lib/puppet/state]
debug: /File[/var/lib/puppet/client_yaml]: Autorequiring File[/var/lib/puppet]
debug: /File[/var/lib/puppet/state]: Autorequiring File[/var/lib/puppet]
debug: /File[/var/lib/puppet/ssl/certs/foo.bar.ch.pem]: Autorequiring
File[/var/lib/puppet/ssl/certs]
debug: /File[/var/lib/puppet/ssl/private_keys/foo.bar.ch.pem]: Autorequiring
File[/var/lib/puppet/ssl/private_keys]
debug: /File[/var/lib/puppet/ssl/certificate_requests]: Autorequiring
File[/var/lib/puppet/ssl]
debug: /File[/var/lib/puppet/ssl/private]: Autorequiring
File[/var/lib/puppet/ssl]
debug: /File[/var/lib/puppet/ssl]: Autorequiring File[/var/lib/puppet]
debug: /File[/var/lib/puppet/state/classes.txt]: Autorequiring
File[/var/lib/puppet/state]
debug: /File[/var/lib/puppet/clientbucket]: Autorequiring File[/var/lib/puppet]
debug: /File[/var/lib/puppet/lib]: Autorequiring File[/var/lib/puppet]
debug: /File[/var/lib/puppet/client_data]: Autorequiring File[/var/lib/puppet]
debug: /File[/var/lib/puppet/facts]: Autorequiring File[/var/lib/puppet]
debug: /File[/var/lib/puppet/ssl/private_keys]: Autorequiring
File[/var/lib/puppet/ssl]
debug: /File[/var/lib/puppet/state/state.yaml]: Autorequiring
File[/var/lib/puppet/state]
debug: /File[/var/lib/puppet/ssl/crl.pem]: Autorequiring
File[/var/lib/puppet/ssl]
debug: /File[/var/lib/puppet/ssl/certs]: Autorequiring File[/var/lib/puppet/ssl]
debug: Finishing transaction 23566149157380
debug: Loaded state in 0.05 seconds
info: Applying configuration version '1284577384'
notice: /Stage[main]//Deftest_4780::Via_undef[aa]/File[/tmp/aa]/ensure: created
debug: Finishing transaction 23566147792940
debug: Storing state
debug: Stored state in 0.42 seconds
</pre>
so this works imho on 2.6.1, or did I get your test wrong?
----------------------------------------
Feature #4780: Allow $var=undef in define as parameter
http://projects.puppetlabs.com/issues/4780
Author: Nico Schottelius
Status: Needs more information
Priority: Normal
Assignee:
Category:
Target version:
Affected version:
Keywords:
Branch:
Hello!
When we encapsulate a simple type like file with a define, we would like to let
the simple type take care of errors and thus pass direct input to it. This does
not work however:
Current code:
define nginx::site($ensure=present, $source=false, $content=false) {
include nginx
$config_file="/etc/nginx/sites-enabled/$name"
file { $config_file:
owner => "root",
group => "root",
mode => 0644,
ensure => $ensure,
source => $source ? {
false => undef,
default => $source,
},
content => $content ? {
false => undef,
default => $content,
},
notify => Service['nginx'],
}
}
Expected code:
define site($ensure=present, $source=undef, $content=undef) {
include nginx
$config_file="/etc/nginx/sites-enabled/$name"
file { $config_file:
owner => "root",
group => "root",
mode => 0644,
ensure => $ensure,
source => $source,
content => $content,
notify => Service['nginx'],
}
}
If you allow specifying arguments for defined types, an optimised version would
look even smaller:
define site(__args_used=[file]) {
include nginx
$config_file="/etc/nginx/sites-enabled/$name"
file { $config_file:
owner => "root",
group => "root",
mode => 0644,
notify => Service['nginx'],
}
}
Whether the second or the third version or a complete different syntax would
fit best is one question. Clear is that the first version is code redundancy
and it should be possible to avoid it.
--
You have received this notification because you have either subscribed to it,
or are involved in it.
To change your notification preferences, please click here:
http://projects.puppetlabs.com/my/account
--
You received this message because you are subscribed to the Google Groups
"Puppet Bugs" group.
To post to this group, send email to [email protected].
To unsubscribe from this group, send email to
[email protected].
For more options, visit this group at
http://groups.google.com/group/puppet-bugs?hl=en.