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 <henrik.lindb...@puppet.com>
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 <dbm...@gmail.com> 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 puppet-users+unsubscr...@googlegroups.com.
> >> 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 puppet-users+unsubscr...@googlegroups.com.
> 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 puppet-users+unsubscr...@googlegroups.com.
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