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.

Reply via email to