aboutsummaryrefslogtreecommitdiffstats
path: root/lib/puppet/parser/functions/extract_id.rb
diff options
context:
space:
mode:
Diffstat (limited to 'lib/puppet/parser/functions/extract_id.rb')
-rw-r--r--lib/puppet/parser/functions/extract_id.rb14
1 files changed, 14 insertions, 0 deletions
diff --git a/lib/puppet/parser/functions/extract_id.rb b/lib/puppet/parser/functions/extract_id.rb
new file mode 100644
index 0000000..61734ab
--- /dev/null
+++ b/lib/puppet/parser/functions/extract_id.rb
@@ -0,0 +1,14 @@
+# Custom function to extract the index from a list.
+# The list are a list of hostname, and the index is the n'th
+# position of the host in list
+module Puppet::Parser::Functions
+ newfunction(:extract_id, :type => :rvalue) do |argv|
+ hosts = argv[0]
+ if hosts.class != Array
+ hosts = [hosts]
+ end
+ hostname = argv[1]
+ hash = Hash[hosts.map.with_index.to_a]
+ return hash[hostname].to_i + 1
+ end
+end