Reputation: 6888
I am building a cookbook that installs my node js files and then sets up initd scripts for them. Unfortunately I cannot call the non-default LWRP in the cookbook.
Here is the error from the chef-client run:
26>> blah_node_as_service 'setting up pricing service' do
27: directory '/var/blah/blah-pricing/'
28: script 'pricing-http-server-cluster.js'
29: resource_name 'blah-pricing'
30: end
31:
Running handlers:
[2015-06-05T14:57:40-04:00] ERROR: Running exception handlers
Running handlers complete
[2015-06-05T14:57:40-04:00] ERROR: Exception handlers complete
[2015-06-05T14:57:40-04:00] FATAL: Stacktrace dumped to /var/chef/cache/chef-stacktrace.out
Chef Client failed. 0 resources updated in 1.961443247 seconds
[2015-06-05T14:57:40-04:00] ERROR: No resource or method named `frt_node_as_service' for `Chef::Recipe "default"'
[2015-06-05T14:57:40-04:00] FATAL: Chef::Exceptions::ChildConvergeError: Chef run process exited unsuccessfully (exit code 1)
Here are the key files in cookbook.
blah@blah:~/chef-repo/cookbooks/blah-deploy$ ls resources/
default.rb blahNodeAsService.rb
blah@blah:~/chef-repo/cookbooks/blah-deploy$ cat resources/blahNodeAsService.rb
actions :install
default_action :install if defined?(default_action)
attribute :script, :kind_of => String, :required => true
attribute :directory, :kind_of => String, :required => true
attribute :resource_name, :kind_of => String, :required => true
blah@blah:~/chef-repo/cookbooks/blah-deploy$ cat providers/blahNodeAsService.rb
use_inline_resources
action :install do
converge_by("Installing.") do
resp = setUpService
@new_resource.updated_by_last_action(resp)
end
end
def load_current_resource
@current_resource = Chef::Resource::BlahNodeAsService.new(@new_resource.name)
@current_resource.directory(@new_resource.directory)
@current_resource.script(@new_resource.script)
@current_resource.resource_name(@new_resource.resource_name)
end
def setUpService
end
The cookbook is already included by the cookbook for the service AND the default LWRP (default.rb) in that cookbook is working fine. Its this second LWRP that cannot be found.
Thanks
Upvotes: 1
Views: 1048
Reputation: 6888
It turns out you reference the LWRP by using a combination of cookbook name and LWRP resource name:
<cookbook-name>_<resource-name>
In the case above:
blah_deploy_blah_node_as_service
SO it looks like i should name it better, but it is at least working.
Upvotes: 3