diff options
Diffstat (limited to 'modules/base_installation/lib')
-rw-r--r-- | modules/base_installation/lib/puppet/parser/functions/find_host.rb | 18 |
1 files changed, 18 insertions, 0 deletions
diff --git a/modules/base_installation/lib/puppet/parser/functions/find_host.rb b/modules/base_installation/lib/puppet/parser/functions/find_host.rb new file mode 100644 index 0000000..79aae5c --- /dev/null +++ b/modules/base_installation/lib/puppet/parser/functions/find_host.rb | |||
@@ -0,0 +1,18 @@ | |||
1 | module Puppet::Parser::Functions | ||
2 | newfunction(:find_host, :type => :rvalue, :doc => <<-EOS | ||
3 | This function searches through the hosts to find the one with matching cn | ||
4 | EOS | ||
5 | ) do |arguments| | ||
6 | |||
7 | if (arguments.size != 2) then | ||
8 | raise(Puppet::ParseError, "grep(): Wrong number of arguments given #{arguments.size} for 2") | ||
9 | end | ||
10 | |||
11 | hosts = arguments[0] | ||
12 | cn = arguments[1] | ||
13 | |||
14 | hosts.find { |host| host["cn"].any? { |cn_| cn_ == cn } } | ||
15 | end | ||
16 | end | ||
17 | |||
18 | # vim: set ts=2 sw=2 et : | ||