- From: Adam Jacob <
>
- To:
- Subject: [chef] Re: Modelling a collection of resources as an LWRP
- Date: Tue, 15 Feb 2011 17:01:12 -0800
On Mon, Feb 14, 2011 at 1:01 PM, Mark J. Reed
<
>
wrote:
>
I have a set of resources that I want to invoke as a single unit, that will
>
notify other resources if any of the sub-resources would do so.
>
One such set could be modeled as its own recipe, I want to be able to
>
include multiple instances in other recipes - and you can only include
>
another given recipe once.
>
So I was thinking an LWRP. Say I want to create a group, a user who belongs
>
to that group, a file owned by that user, and a service that requires that
>
file to exist, in one swell foop. The provider could look like this:
>
action :create do
>
resources = Hash.new []
>
resources[:create] <<
>
group "foo" do ... end <<
>
user "bar" do ... end <<
>
file "baz" do ... end
>
resources[:enable] = resources[:start] << service "zoo" do ... end
>
resources.each do |action, res|
>
res.run_action action
>
>
(
>
@new_resource.updated_by_last_action? || res.updated_by_last_action? )
>
end
>
end
>
It seems kind of hacky to force all the resources to run immediately just so
>
I can query their updated_by_last_action status. Is there a better way?
If the only real goal here is to fire a notification if a set of
resources change, you should just include the notification on all the
resources - either through being explicit about it (specifying it in
each resource declaration) or in a loop. No need to run the actions
in advance, Chef is smart enough to group together the notifications.
Adam
--
Opscode, Inc.
Adam Jacob, Chief Product Officer
T: (206) 619-7151 E:
Archive powered by MHonArc 2.6.16.