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.

Reply via email to