summaryrefslogtreecommitdiff
path: root/lib/puppet/util/trocla_helper.rb
diff options
context:
space:
mode:
authormh <mh@immerda.ch>2011-07-27 18:41:27 +0200
committermh <mh@immerda.ch>2011-07-27 18:41:27 +0200
commit16b06320cd3bb3121446717c05b6bc13ae2ff133 (patch)
treee2680d36bc4282d85e97fc294b0942367273dbde /lib/puppet/util/trocla_helper.rb
init of trocla module
Diffstat (limited to 'lib/puppet/util/trocla_helper.rb')
-rw-r--r--lib/puppet/util/trocla_helper.rb31
1 files changed, 31 insertions, 0 deletions
diff --git a/lib/puppet/util/trocla_helper.rb b/lib/puppet/util/trocla_helper.rb
new file mode 100644
index 0000000..8187d08
--- /dev/null
+++ b/lib/puppet/util/trocla_helper.rb
@@ -0,0 +1,31 @@
+module Puppet::Util::TroclaHelper
+ def trocla(trocla_func,has_options,*args)
+ # Functions called from puppet manifests that look like this:
+ # lookup("foo", "bar")
+ # internally in puppet are invoked: func(["foo", "bar"])
+ #
+ # where as calling from templates should work like this:
+ # scope.function_lookup("foo", "bar")
+ #
+ # Therefore, declare this function with args '*args' to accept any number
+ # of arguments and deal with puppet's special calling mechanism now:
+ if args[0].is_a?(Array)
+ args = args[0]
+ end
+
+ key = args[0] || raise(Puppet::ParseError, "You need to pass at least a key as an argument!")
+ format = args[1] || 'plain'
+ options = args[2] || {}
+
+ configfile = File.join(File.dirname(Puppet.settings[:config]), "trocla.yaml")
+
+ raise(Puppet::ParseError, "Trocla config file #{configfile} not readable") unless File.exist?(configfile)
+ raise(Puppet::ParseError, "You need rubygems to use Trocla") unless Puppet.features.rubygems?
+
+ require 'rubygems'
+ require 'trocla'
+
+ has_options ? Trocla.new(configfile).send(trocla_func, key, format, options) : Trocla.new(configfile).send(trocla_func, key, format)
+ end
+ module_function :trocla
+end \ No newline at end of file