[chef] Re: Re: Re: LWRP for N00bs


Chronological Thread 
  • From: Joshua Timberman < >
  • To: Chef users < >
  • Subject: [chef] Re: Re: Re: LWRP for N00bs
  • Date: Wed, 27 Aug 2014 08:14:54 -0600

When writing Chef::Resource and Chef::Provider instead of using the LWRP DSL, you can more easily subclass other resources. For example, the homebrew cookbook does this to make homebrew a provider for the Chef::Resource::Package resource. Similarly, the runit cookbook does this to make runit_service a provider for Chef::Resource::Service.

The main advantage that the LWRP style ('resources' and 'providers' directories) brings is the DSL. This can be used in resources written in 'libraries' by subclassing Chef::Resource::LWRPBase and Chef::Provider::LWRPBase. For an example, see our chef-splunk cookbook. It's not a lot of extra code, and you get the DSL, which is nice.





On Wed, Aug 27, 2014 at 5:25 AM, Ameir Abdeldayem < " target="_blank"> > wrote:
While we're on the topic, what are some pros/cons to writing resources in the "libraries" directory vs "true" LWRP style in the "resources" and "providers" directories?  I see that a lot of Sean's contributions go the "libraries" route, but there's a pretty diverse mix community-wide (with most seeming to be "true" LWRP style).

-Ameir


On Wed, Aug 27, 2014 at 1:17 AM, Julian C. Dunn < " target="_blank"> > wrote:
The conversion logic is here:
https://github.com/opscode/chef/blob/master/lib/chef/mixin/convert_to_class_name.rb#L25-L43

TL;DR: "web_serverwebserver" is gonna get converted to
"WebServerwebserver", so the class you're looking for is
Chef::Resource::WebServerwebserver

- Julian
> I'm trying to figure out why Chef is not correctly loading my lwrps.
>
> So I'm trying to build a custom lwrp in my recipe.
>
> I have a cookbook named web_server. I have a resource called webserver. (real
> original, I know.).
>
> I'm getting a NameError when I try to use web_serverwebserver in a recipe.   I
> suspect I'm doing something wrong in my load_current_resource, but I don't know
> what.
>
> my load_current_resource
>
> def load_current_resource
= web_serverwebserver.new(@new_resource.AppName)
>     
> end
> I have tried
>
> web_server::webserver.
> Chef::Resource::webserver
> Chef::Resource::web_server::webserver
> and pretty much everything else I can think of. What am I doing wrong here?
>
> Is there a good way to get Chef to report why it can't seem to find my
> resource?
> -l debug doesn't seem to provide much in the way of detail as to why it can't
> find my lwrp.



--
[ Julian C. Dunn < " target="_blank"> >          * Sorry, I'm    ]
[ WWW: http://www.aquezada.com/staff/julian    * only Web 1.0  ]
[ gopher://sdf.org/1/users/keymaker/           * compliant!    ]
[ PGP: 91B3 7A9D 683C 7C16 715F 442C 6065 D533 FDC2 05B9       ]




--
Joshua Timberman, Chef.



Archive powered by MHonArc 2.6.16.

§