A correction to my last reply. You must use Pattern, not Regexp (a Regexp is for regexp instances whereas a Pattern matches strings).

- thomas


On 2015-09-01 14:28, Thomas Hallgren wrote:
On 2015-09-01 13:27, Martin Alfke wrote:
Hi Thomas,
On 01 Sep 2015, at 09:59, Thomas Hallgren<thomas.hallg...@puppetlabs.com>  
wrote:

Hi Martin,

The function API has evolved slightly since the blog entry that you're 
referring to was written. The arg_count was removed since it was redundant and 
confusing after we introduced the 'optional_param' and 'repeated_param'. You 
can find the documentation for Puppet 4.2 functions here:

https://docs.puppetlabs.com/references/4.2.latest/developer/Puppet/Functions.html
Many thanks for pointing to the new updated documentation.

My idea is to create a functions which has 3 use cases:
- no parameter: return hostname of puppet master
- ip as parameter: return DNS resolved name
- hostname/fqdn as parameter: return IP address from DNS

How to check for explizit “no parameter”?
Create two dispatch entries. One that require a parameter and one where no parameter is declared. The one without a parameter will be used when no argument is given. In this scenario, the check for ip or hostname must be done in the method targeted by the dispatch with one parameter.

Alternatively, you could use three dispatch entries. One without a parameter (as before) and then two with parameters using mutually exclusive regular expression types. One matching the IP and another matching hostname/fdqn. Something like this:

  dispatch :no_param do
  end

  dispatch :ip_param do
     param 'Regexp[/^(?:[0-9]{1,3}\.){3}[0-9]{1,3}$/]', :ip
  end

  dispatch :fqdn_param do
     param 'Regexp[/^([a-z0-9]+(-[a-z0-9]+)*\.)+[a-z]{2,}$/]', fdqn
  end

  def no_param
     return puppet master hostname
  def

  def ip_param(ip)
     ...
  end

  def fqdn_param(ip)
     ...
  end

- thomas


- thomas


--
You received this message because you are subscribed to the Google Groups "Puppet 
Developers" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to puppet-dev+unsubscr...@googlegroups.com.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/puppet-dev/55E59B25.7030604%40puppetlabs.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to