On 2013-27-06 6:33, Wil Cooley wrote:
+1 for the feature; I like Jeff's idea about using the existing sigil,
although I like Henrik's nested-function-like suggestion.

I think there is a particular case for this when it comes to lazy/busy
sysadmins integrating 3rd party modules from Puppet Forge (and for
encouraging writing internal modules with a general enough interface
that they can easily be contributed):

Let's say I've got modules for configuring nss_pam_ldapd in EL6 and for
configuring the native Solaris ldap_cachemgr. Both need, among other
things, the list of LDAP server URIs. If I am not too lazy and thinking
seriously about contributing them to PF, I'll write them to do a hiera
lookup using the correct name for automatic parameter lookups (we're
still on 2.7 & working towards 3 compatibility):

class nss_pam_ldapd::config {
   $server_uris = hiera('nss_pam_ldapd::config::server_uris', ...),
   ...

class ldap_cachemgr::conig {
   $server_uris = hiera('ldap_cachemgr::config::server_uris, ...),
   ...

and now I have made more work for myself because I have to duplicate
(correctly) all of the info in hiera:

nss_pam_ldapd::config::server_uris:
   - ldaps://ldap1.example.com <http://ldap1.example.com>
   - ldaps://ldap2.example.com <http://ldap2.example.com>
  ...

ldap_cachemgr::config::server_uris:
   - ldaps://ldap1..example.com <http://ldap1.example.com>
   - ldaps://ldap2.example.com <http://ldap2.example.com>
  ...

whereas what I would like is:

ldap_login_server_uris:
  - ldaps://...

nss_pam_ldapd::config::server_uris: %{ldap_login_server_uris}
ldap_cachemgr::config::server_uris: %{ldap_login_server_uris}

but since I cannot do this and I am really lazy/busy, I'm going to be
dumb and just lookup 'ldap_login_server_uris' and everyone else who
might have benefited from the module can go stuff it:

class nss_pam_ldapd::config {
   $server_uris = hiera('ldap_login_server_uris')
   ...

And I am over-simplifying, because there are more like 8 parameters,
almost all of which apply between both modules and all of which need to
be duplicated.

Then you will probably like the proposal in ARM-8 that allows mapping the parameters of one type onto another. This was added to support exactly the case you describe; i.e. binding the parameters for some main "entry point" class and the reusing all/subset of them in other classes (possible with mapping of names).

It is also much clearer that the intent is to use "the same set of parameters", then cherry picking them individually using interpolation.

- henrik



--
You received this message because you are subscribed to the Google Groups "Puppet 
Developers" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to puppet-dev+unsubscr...@googlegroups.com.
To post to this group, send email to puppet-dev@googlegroups.com.
Visit this group at http://groups.google.com/group/puppet-dev.
For more options, visit https://groups.google.com/groups/opt_out.


Reply via email to