- From: Noah Kantrowitz <
>
- To:
- Subject: [chef] Re: Re: Re: Re: HWRP Array attribute not reset
- Date: Tue, 11 Mar 2014 16:23:10 -0700
If you want sane deep merge semantics, you have to not use arrays. Otherwise
just ensure only ever set things once and you should be fine.
--Noah
On Mar 11, 2014, at 4:14 PM, "Stewart, Curtis"
<
>
wrote:
>
Thanks for the article!
>
>
I attempted to add a helper method to convert the options before passing,
>
still no luck. I’d really like to stay away from setting these values to
>
hashes.
>
>
def mutable_arrray(attribute)
>
attribute.map { |value| value }
>
end
>
>
I’m surprised this behavior doesn’t come up more often when using built in
>
resources (i.e. path attribute for execute resource).
>
>
Curtis
>
>
On Mar 11, 2014, at 5:39 PM, Noah Kantrowitz
>
<
>
>
wrote:
>
>
> You are probably running in to the merge behavior of arrays in node
>
> attributes. Check out https://coderanger.net/2013/06/arrays-and-chef/ for
>
> more info.
>
>
>
> --Noah
>
>
>
> On Mar 11, 2014, at 3:35 PM, "Stewart, Curtis"
>
> <
>
>
> wrote:
>
>
>
>> Attribute Sample:
>
>>
>
>> node[‘servers’][‘main’][‘external_addresses’] = %w { 33.33.33.33 }
>
>>
>
>> Recipe Context:
>
>>
>
>> node[’servers'].each do |name, options|
>
>> server name do
>
>> external_addresses options['external_addresses']
>
>> end
>
>> end
>
>>
>
>> Then, if I update that attribute value to, say %w{ 33.33.33.30 }, the
>
>> resource loads with both addresses.
>
>>
>
>> Curtis
>
>>
>
>> On Mar 11, 2014, at 5:20 PM, Noah Kantrowitz
>
>> <
>
>
>> wrote:
>
>>
>
>>> Can you give an example of how you are using it?
>
>>>
>
>>> --Noah
>
>>>
>
>>> On Mar 11, 2014, at 3:19 PM, "Stewart, Curtis"
>
>>> <
>
>
>>> wrote:
>
>>>
>
>>>> I’m working with a custom HWRP, and I have an attribute of type Array.
>
>>>>
>
>>>> The definition is below, and the issue I’m trying to trouble shoot is
>
>>>> that if I update the value of my array, instead of resetting the array,
>
>>>> they new values are appended to the array.
>
>>>>
>
>>>>
>
>>>> def external_addresses(arg = nil)
>
>>>> set_or_return(:external_addresses, arg, :kind_of => Array)
>
>>>> end
>
>>>>
>
>>>>
>
>>>> Thanks for any feedback,
>
>>>> Curtis
>
>>>
>
>>
>
>
>
Attachment:
signature.asc
Description: Message signed with OpenPGP using GPGMail
Archive powered by MHonArc 2.6.16.