I like Henrik’s solution better than mine. I have been dealing with old versions of Puppet for too long.
> On Oct 7, 2018, at 9:47 PM, Jody Des Roches <[email protected]> wrote: > > 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. -- 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/CB4AD469-3074-4AD7-8547-BAFC14E661B3%40icloud.com. For more options, visit https://groups.google.com/d/optout.
