- 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.