akaphenom
akaphenom

Reputation: 6888

Cannot find the LWRP in custom cookbook

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

Answers (1)

akaphenom
akaphenom

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

Related Questions