[chef] Re: Could the resource guard documentation be clarified?


Chronological Thread 
  • From: Daniel DeLeo < >
  • To:
  • Subject: [chef] Re: Could the resource guard documentation be clarified?
  • Date: Wed, 4 Mar 2015 12:29:49 -0800



On Wednesday, March 4, 2015 at 10:27 AM, Joe Nuspl wrote:

> I recently helped a colleague through some confusion about how multiple 
> guards worked.
>  
> Greatly simplifying the code, the recipe looked like:
>  
> > file '/foo/bar' do
> > only_if { true }
> > only_if { false }
> > end
>  
>  
>  
> The chef code treats these as OR while they thought it was AND.
>  
> We remedied the situation be changing it to:
>  
> > file '/foo/bar' do
> > only_if do
> > true && false
> > end
> > end
>  

Do you have a typo or something? If I run this:

file '/tmp/one' do
  only_if { true }
   only_if { false }
end

file '/tmp/two' do
  only_if { true && false }
end



Then both are skipped:

$ chef-apply repro.rb

Recipe: (chef-apply cookbook)::(chef-apply recipe)
* file[/tmp/one] action create (skipped due to only_if)
* file[/tmp/two] action create (skipped due to only_if)


  
> While this case was straight forward, there is another case where 
> chef-rewind is being used to add an additional clause. This will be more 
> challenging.
>  
> So...
>  
> Is OR the correct behavior? Or should it be AND? Or do people not use 
> multiple guards?
Each guard is a precondition that must be met for the resource’s action to be 
applied, and all preconditions must be met.   
>  
> Could https://docs.chef.io/chef/resources.html#guards be clarified?
>  
> Thanks.
>  
> Joe  
--  
Daniel DeLeo






Archive powered by MHonArc 2.6.16.

§