Thank you Dan and Henrik for taking the time to help. Henrik, your solution is what I am using in concert with common.yaml to add a default to the base_dir value.
Mahalo! -Jody On Sun, Oct 7, 2018 at 5:35 AM Henrik Lindberg <[email protected]> wrote: > If you are on a reasonably modern Puppet version you should do it like > this: > > class myclass( > String $base_dir, > Optional[String] $conf_dir = "${base_dir}/conf" > ) { > } > > I tested it as well: > > class myclass( > String $base_dir, > Optional[String] $conf_dir = "${base_dir}/conf" > ) { > notice "base_dir = ${base_dir}, conf_dir = ${conf_dir}" > } > class { myclass: base_dir => 'yay' } > > With the result: > > Notice: Scope(Class[Myclass]): base_dir = yay, conf_dir = yay/conf > > And when executed like this: > > class myclass( > String $base_dir, > Optional[String] $conf_dir = "${base_dir}/conf" > ) { > notice "base_dir = ${base_dir}, conf_dir = ${conf_dir}" > } > class { myclass: base_dir => 'yay', conf_dir => 'not yay' } > > The result is: > > Notice: Scope(Class[Myclass]): base_dir = yay, conf_dir = not_yay > > Which I think is what you wanted. > > If the logic you need for coming up with a default value is complex, it > can be written as a function to which you present the input as > arguments. The above could have been written: > > function mymodule::conf_default(String $base) { "${base}/conf" } > class myclass( > String $base_dir, > Optional[String] $conf_dir = mymodule::conf_default($base_dir) > ) { > } > > Which for the case you showed is total overkill, but good to know if > you need something more complex in another place in your code. > > Hope this helps. > Best, > - henrik > > > > > On 2018-10-06 18:15, 'Dan White' via Puppet Users wrote: > You need to > do like this: > > > > class myClass ( > > String $base_dir, > > Optional[String] $conf_dir, > > ) { > > if $myClass::conf_dir == undef { > > $myClass::actual_conf_dir = "$myClass::base_dir/conf” > > } else { > > $myClass::actual_conf_dir = $myClass::conf_dir > > } > > > > … and then use $myClass::actual_conf_dir in the template > > } > > > >> On Oct 3, 2018, at 12:41 PM, Jody Des Roches <[email protected]> wrote: > >> > >> I'd like to set default values for parameters that will be passed to > epp templates. However, the default value is based on another parameter. > I understand that variables are immutable but this is a parameter that > shouldn't be touched unless it wasn't set. > >> > >> Here is an example construct with a few of my syntax attempts. > >> > >> class myClass ( > >> String $base_dir, > >> Optional[String] $conf_dir, > >> ) { > >> #Attempt 1: Failed > >> if $myClass::conf_dir == undef { $myClass::conf_dir = > "$myClass::base_dir/conf" } > >> > >> #Attempt 2: Failed > >> if !$myClass::conf_dir { $myClass::conf_dir = "$myClass::base_dir/conf" > } > >> > >> #Attempt 3: Failed > >> unless $myClass::conf_dir { $myClass::conf_dir = > "$myClass::base_dir/conf" } > >> } > >> > >> -- > >> You received this message because you are subscribed to the Google > Groups "Puppet Users" group. > >> To unsubscribe from this group and stop receiving emails from it, send > an email to [email protected]. > >> To view this discussion on the web visit > https://groups.google.com/d/msgid/puppet-users/8e2db8c1-7353-4360-adc5-00713e1c0214%40googlegroups.com > . > >> For more options, visit https://groups.google.com/d/optout. > > > > > -- > > Visit my Blog "Puppet on the Edge" > http://puppet-on-the-edge.blogspot.se/ > > -- > You received this message because you are subscribed to the Google Groups > "Puppet Users" group. > To unsubscribe from this group and stop receiving emails from it, send an > email to [email protected]. > To view this discussion on the web visit > https://groups.google.com/d/msgid/puppet-users/ppcjse%24qmf%241%40blaine.gmane.org > . > For more options, visit https://groups.google.com/d/optout. > -- You received this message because you are subscribed to the Google Groups "Puppet Users" group. To unsubscribe from this group and stop receiving emails from it, send an email to [email protected]. To view this discussion on the web visit https://groups.google.com/d/msgid/puppet-users/CAB5NyExqLk%3DXmQuLVqPDr%2BpydZuVLW_EKb9S7mxQrVEtT%2Bqa9w%40mail.gmail.com. For more options, visit https://groups.google.com/d/optout.
