- From: AJ Christensen <
>
- To:
- Subject: [chef] Re: Re: Re: Library function in recipe
- Date: Thu, 9 Aug 2012 10:34:19 +1200
Post the stack trace with log level set to :debug
You probably want something like below in your library file:
Chef::Recipe.send(:include, EventLogLib)
https://github.com/fujin/chef-discovery/blob/master/libraries/recipe.rb#L17
You could model this as an LWRP, or even one of the new conditional
output formatters in 10.14, similar to specdoc -- queuedoc or
something. :) (perhaps?)
--AJ
On 9 August 2012 08:11,
<
>
wrote:
>
I am getting a method not defined exception with the following code in the
>
recipe. I tried both the commented and un-commented lines in the ruby_block
>
below and both did not work.
>
The library is listed below as well.
>
>
<code>
>
class Chef::Recipe
>
include EventLogLib
>
end
>
>
ruby_block "mystart" do
>
block do
>
#EventLogLib.logEvent("def","START")
>
logEvent("def","START")
>
end
>
end
>
</code>
>
>
Here is the library defined in the cookbook.
>
<code>
>
module EventLogLib
>
def logEvent(msg, msgstatus)
>
require "rubygems"
>
require "stomp"
>
stomp_server = node[:chef_handler][:stomp_server]
>
stomp_port = node[:chef_handler][:stomp_port]
>
stomp_queue = node[:chef_handler][:stomp_queue]
>
stomp_user = node[:chef_handler][:stomp_user]
>
stomp_password = node[:chef_handler][:stomp_password]
>
eventQueue = "#{stomp_queue}"
>
>
summary = { :deploymentId => node.deployment_id,
>
:vmId => node.vm_id,
>
:vmHostname => node.hostname,
>
:vmIpaddress => node.ipaddress,
>
:stepMessage => msg,
>
:stepStatus => msgstatus
>
}
>
>
client = Stomp::Client.new(stomp_user, stomp_password, stomp_server,
>
stomp_port, true)
>
client.publish(eventQueue, summary.to_json, {:persistent => false})
>
client.close
>
Chef::Log.info ("message #{summary.to_json} sent to queue
>
#{eventQueue}")
>
end
>
end
>
</code>
Archive powered by MHonArc 2.6.16.