[chef] Re: Does remote_file not support lazy attributes?


Chronological Thread 
  • From: Steven Danna < >
  • To:
  • Subject: [chef] Re: Does remote_file not support lazy attributes?
  • Date: Thu, 27 Mar 2014 23:26:11 -0700

Hi,

I've filed a bug on this here: https://tickets.opscode.com/browse/CHEF-5162

Cheers,

Steven

On Thu, Mar 27, 2014 at 9:48 PM, Steven Danna 
< >
 wrote:
> Hi,
>
> Unfortunately, this looks like a bug.  When the lazy method is called,
> it creates a Chef::DelayedEvaluator object.  This
> Chef::DelayedEvaluator is what gets passed to the source attribute's
> setter method in the resource.  Most resource attribute setter methods
> use the helper function set_or_return().  When Chef::DelayedEvaluator
> was introduced, set_or_return was patched to ignore validatons if it
> got a DelayedEvaluator.  The tradeoff for the power of lazy evaluation
> is no "compile phase" type checking of arguments.
>
> remote_file's source resource, however, uses a custom method for validation:
>
>       def validate_source(source)
>         raise ArgumentError, "#{resource_name} has an empty source" if
> source.empty?
>         source.each do |src|
>           unless absolute_uri?(src)
>             raise Exceptions::InvalidRemoteFileURI,
>               "#{src.inspect} is not a valid `source` parameter for
> #{resource_name}. `source` must be an absolute URI or an array of
> URIs."
>           end
>         end
>       end
>
> This function and others like it need to be patched to accept
> DelayedEvaluators. I shall make with the typing into JIRA.
>
> Sincerely,
>
> Steven
>
> On Tue, Mar 25, 2014 at 4:58 AM, Jeppe Nejsum Madsen 
> < >
>  wrote:
>> I get the following when trying to use a lazy attribute:
>>
>>
>> This is the chef-shell.
>>  Chef Version: 11.10.4
>>
>> chef:recipe > remote_file "/tmp/g2" do
>> chef:recipe > source lazy {"http://www.google.com"}
>> chef:recipe ?> end
>> Chef::Exceptions::InvalidRemoteFileURI:
>> #<Chef::DelayedEvaluator:0x007fd464c092a8@(irb#1):7> is not a valid 
>> `source`
>> parameter for remote_file. `source` must be an absolute URI or an array of
>> URIs.
>>
>> Any hints?
>>
>> /Jeppe
>>



Archive powered by MHonArc 2.6.16.

§